# 1 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.c" # 1 "" 1 # 1 "" 3 # 337 "" 3 # 1 "" 1 # 1 "" 2 # 1 "./../include/linux/kconfig.h" 1 # 1 "./include/generated/autoconf.h" 1 # 6 "./../include/linux/kconfig.h" 2 # 2 "" 2 # 1 "./../include/linux/compiler_types.h" 1 # 59 "./../include/linux/compiler_types.h" # 1 "../include/linux/compiler_attributes.h" 1 # 60 "./../include/linux/compiler_types.h" 2 # 1 "../include/linux/compiler-clang.h" 1 # 64 "./../include/linux/compiler_types.h" 2 # 85 "./../include/linux/compiler_types.h" struct ftrace_branch_data { const char *func; const char *file; unsigned line; union { struct { unsigned long correct; unsigned long incorrect; }; struct { unsigned long miss; unsigned long hit; }; unsigned long miss_hit[2]; }; }; struct ftrace_likely_data { struct ftrace_branch_data data; unsigned long constant; }; # 3 "" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.c" 2 # 64 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.c" # 1 "../include/linux/devcoredump.h" 1 # 1 "../include/linux/device.h" 1 # 15 "../include/linux/device.h" # 1 "../include/linux/ioport.h" 1 # 13 "../include/linux/ioport.h" # 1 "../include/linux/compiler.h" 1 # 180 "../include/linux/compiler.h" # 1 "../include/uapi/linux/types.h" 1 # 1 "../arch/x86/include/uapi/asm/types.h" 1 # 1 "../include/uapi/asm-generic/types.h" 1 # 1 "../include/asm-generic/int-ll64.h" 1 # 11 "../include/asm-generic/int-ll64.h" # 1 "../include/uapi/asm-generic/int-ll64.h" 1 # 12 "../include/uapi/asm-generic/int-ll64.h" # 1 "../arch/x86/include/uapi/asm/bitsperlong.h" 1 # 11 "../arch/x86/include/uapi/asm/bitsperlong.h" # 1 "../include/asm-generic/bitsperlong.h" 1 # 1 "../include/uapi/asm-generic/bitsperlong.h" 1 # 6 "../include/asm-generic/bitsperlong.h" 2 # 12 "../arch/x86/include/uapi/asm/bitsperlong.h" 2 # 13 "../include/uapi/asm-generic/int-ll64.h" 2 typedef __signed__ char __s8; typedef unsigned char __u8; typedef __signed__ short __s16; typedef unsigned short __u16; typedef __signed__ int __s32; typedef unsigned int __u32; __extension__ typedef __signed__ long long __s64; __extension__ typedef unsigned long long __u64; # 12 "../include/asm-generic/int-ll64.h" 2 typedef __s8 s8; typedef __u8 u8; typedef __s16 s16; typedef __u16 u16; typedef __s32 s32; typedef __u32 u32; typedef __s64 s64; typedef __u64 u64; # 8 "../include/uapi/asm-generic/types.h" 2 # 6 "../arch/x86/include/uapi/asm/types.h" 2 # 6 "../include/uapi/linux/types.h" 2 # 1 "../include/uapi/linux/posix_types.h" 1 # 1 "../include/linux/stddef.h" 1 # 1 "../include/uapi/linux/stddef.h" 1 # 6 "../include/linux/stddef.h" 2 enum { false = 0, true = 1 }; # 6 "../include/uapi/linux/posix_types.h" 2 # 25 "../include/uapi/linux/posix_types.h" typedef struct { unsigned long fds_bits[1024 / (8 * sizeof(long))]; } __kernel_fd_set; typedef void (*__kernel_sighandler_t)(int); typedef int __kernel_key_t; typedef int __kernel_mqd_t; # 1 "../arch/x86/include/asm/posix_types.h" 1 # 1 "../arch/x86/include/uapi/asm/posix_types_64.h" 1 # 11 "../arch/x86/include/uapi/asm/posix_types_64.h" typedef unsigned short __kernel_old_uid_t; typedef unsigned short __kernel_old_gid_t; typedef unsigned long __kernel_old_dev_t; # 1 "../include/uapi/asm-generic/posix_types.h" 1 # 15 "../include/uapi/asm-generic/posix_types.h" typedef long __kernel_long_t; typedef unsigned long __kernel_ulong_t; typedef __kernel_ulong_t __kernel_ino_t; typedef unsigned int __kernel_mode_t; typedef int __kernel_pid_t; typedef int __kernel_ipc_pid_t; typedef unsigned int __kernel_uid_t; typedef unsigned int __kernel_gid_t; typedef __kernel_long_t __kernel_suseconds_t; typedef int __kernel_daddr_t; typedef unsigned int __kernel_uid32_t; typedef unsigned int __kernel_gid32_t; # 72 "../include/uapi/asm-generic/posix_types.h" typedef __kernel_ulong_t __kernel_size_t; typedef __kernel_long_t __kernel_ssize_t; typedef __kernel_long_t __kernel_ptrdiff_t; typedef struct { int val[2]; } __kernel_fsid_t; typedef __kernel_long_t __kernel_off_t; typedef long long __kernel_loff_t; typedef __kernel_long_t __kernel_time_t; typedef long long __kernel_time64_t; typedef __kernel_long_t __kernel_clock_t; typedef int __kernel_timer_t; typedef int __kernel_clockid_t; typedef char * __kernel_caddr_t; typedef unsigned short __kernel_uid16_t; typedef unsigned short __kernel_gid16_t; # 19 "../arch/x86/include/uapi/asm/posix_types_64.h" 2 # 6 "../arch/x86/include/asm/posix_types.h" 2 # 37 "../include/uapi/linux/posix_types.h" 2 # 15 "../include/uapi/linux/types.h" 2 # 29 "../include/uapi/linux/types.h" typedef __u16 __le16; typedef __u16 __be16; typedef __u32 __le32; typedef __u32 __be32; typedef __u64 __le64; typedef __u64 __be64; typedef __u16 __sum16; typedef __u32 __wsum; # 52 "../include/uapi/linux/types.h" typedef unsigned __poll_t; # 181 "../include/linux/compiler.h" 2 # 196 "../include/linux/compiler.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((__no_instrument_function__)) __attribute__((__always_inline__)) void __read_once_size(const volatile void *p, void *res, int size) { ({ switch (size) { case 1: *(__u8 *)res = *(volatile __u8 *)p; break; case 2: *(__u16 *)res = *(volatile __u16 *)p; break; case 4: *(__u32 *)res = *(volatile __u32 *)p; break; case 8: *(__u64 *)res = *(volatile __u64 *)p; break; default: __asm__ __volatile__("" : : : "memory"); __builtin_memcpy((void *)res, (const void *)p, size); __asm__ __volatile__("" : : : "memory"); } }); } # 214 "../include/linux/compiler.h" static __attribute__((__no_instrument_function__)) __attribute__((__unused__)) void __read_once_size_nocheck(const volatile void *p, void *res, int size) { ({ switch (size) { case 1: *(__u8 *)res = *(volatile __u8 *)p; break; case 2: *(__u16 *)res = *(volatile __u16 *)p; break; case 4: *(__u32 *)res = *(volatile __u32 *)p; break; case 8: *(__u64 *)res = *(volatile __u64 *)p; break; default: __asm__ __volatile__("" : : : "memory"); __builtin_memcpy((void *)res, (const void *)p, size); __asm__ __volatile__("" : : : "memory"); } }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((__no_instrument_function__)) __attribute__((__always_inline__)) void __write_once_size(volatile void *p, void *res, int size) { switch (size) { case 1: *(volatile __u8 *)p = *(__u8 *)res; break; case 2: *(volatile __u16 *)p = *(__u16 *)res; break; case 4: *(volatile __u32 *)p = *(__u32 *)res; break; case 8: *(volatile __u64 *)p = *(__u64 *)res; break; default: __asm__ __volatile__("" : : : "memory"); __builtin_memcpy((void *)p, (const void *)res, size); __asm__ __volatile__("" : : : "memory"); } } # 256 "../include/linux/compiler.h" # 1 "../arch/x86/include/asm/barrier.h" 1 # 1 "../arch/x86/include/asm/alternative.h" 1 # 1 "../include/linux/types.h" 1 # 13 "../include/linux/types.h" typedef u32 __kernel_dev_t; typedef __kernel_fd_set fd_set; typedef __kernel_dev_t dev_t; typedef __kernel_ino_t ino_t; typedef __kernel_mode_t mode_t; typedef unsigned short umode_t; typedef u32 nlink_t; typedef __kernel_off_t off_t; typedef __kernel_pid_t pid_t; typedef __kernel_daddr_t daddr_t; typedef __kernel_key_t key_t; typedef __kernel_suseconds_t suseconds_t; typedef __kernel_timer_t timer_t; typedef __kernel_clockid_t clockid_t; typedef __kernel_mqd_t mqd_t; typedef _Bool bool; typedef __kernel_uid32_t uid_t; typedef __kernel_gid32_t gid_t; typedef __kernel_uid16_t uid16_t; typedef __kernel_gid16_t gid16_t; typedef unsigned long uintptr_t; typedef __kernel_old_uid_t old_uid_t; typedef __kernel_old_gid_t old_gid_t; typedef __kernel_loff_t loff_t; # 55 "../include/linux/types.h" typedef __kernel_size_t size_t; typedef __kernel_ssize_t ssize_t; typedef __kernel_ptrdiff_t ptrdiff_t; typedef __kernel_time_t time_t; typedef __kernel_clock_t clock_t; typedef __kernel_caddr_t caddr_t; typedef unsigned char u_char; typedef unsigned short u_short; typedef unsigned int u_int; typedef unsigned long u_long; typedef unsigned char unchar; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned long ulong; typedef u8 u_int8_t; typedef s8 int8_t; typedef u16 u_int16_t; typedef s16 int16_t; typedef u32 u_int32_t; typedef s32 int32_t; typedef u8 uint8_t; typedef u16 uint16_t; typedef u32 uint32_t; typedef u64 uint64_t; typedef u64 u_int64_t; typedef s64 int64_t; # 130 "../include/linux/types.h" typedef u64 sector_t; typedef u64 blkcnt_t; # 148 "../include/linux/types.h" typedef u64 dma_addr_t; typedef unsigned int gfp_t; typedef unsigned int slab_flags_t; typedef unsigned int fmode_t; typedef u64 phys_addr_t; typedef phys_addr_t resource_size_t; typedef unsigned long irq_hw_number_t; typedef struct { int counter; } atomic_t; typedef struct { s64 counter; } atomic64_t; struct list_head { struct list_head *next, *prev; }; struct hlist_head { struct hlist_node *first; }; struct hlist_node { struct hlist_node *next, **pprev; }; struct ustat { __kernel_daddr_t f_tfree; __kernel_ino_t f_tinode; char f_fname[6]; char f_fpack[6]; }; # 219 "../include/linux/types.h" struct callback_head { struct callback_head *next; void (*func)(struct callback_head *head); } __attribute__((aligned(sizeof(void *)))); typedef void (*rcu_callback_t)(struct callback_head *head); typedef void (*call_rcu_func_t)(struct callback_head *head, rcu_callback_t func); # 8 "../arch/x86/include/asm/alternative.h" 2 # 1 "../include/linux/stringify.h" 1 # 10 "../arch/x86/include/asm/alternative.h" 2 # 1 "../arch/x86/include/asm/asm.h" 1 # 186 "../arch/x86/include/asm/asm.h" register unsigned long current_stack_pointer asm("rsp"); # 11 "../arch/x86/include/asm/alternative.h" 2 # 58 "../arch/x86/include/asm/alternative.h" struct alt_instr { s32 instr_offset; s32 repl_offset; u16 cpuid; u8 instrlen; u8 replacementlen; u8 padlen; } __attribute__((__packed__)); extern int alternatives_patched; extern void alternative_instructions(void); extern void apply_alternatives(struct alt_instr *start, struct alt_instr *end); struct module; extern void alternatives_smp_module_add(struct module *mod, char *name, void *locks, void *locks_end, void *text, void *text_end); extern void alternatives_smp_module_del(struct module *mod); extern void alternatives_enable_smp(void); extern int alternatives_text_reserved(void *start, void *end); extern bool skip_smp_alternatives; # 6 "../arch/x86/include/asm/barrier.h" 2 # 1 "../arch/x86/include/asm/nops.h" 1 # 143 "../arch/x86/include/asm/nops.h" extern const unsigned char * const *ideal_nops; extern void arch_init_ideal_nops(void); # 7 "../arch/x86/include/asm/barrier.h" 2 # 36 "../arch/x86/include/asm/barrier.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((__no_instrument_function__)) unsigned long array_index_mask_nospec(unsigned long index, unsigned long size) { unsigned long mask; asm volatile ("cmp %1,%2; sbb %0,%0;" :"=r" (mask) :"g"(size),"r" (index) :"cc"); return mask; } # 86 "../arch/x86/include/asm/barrier.h" # 1 "../include/asm-generic/barrier.h" 1 # 16 "../include/asm-generic/barrier.h" # 1 "../include/linux/compiler.h" 1 # 17 "../include/asm-generic/barrier.h" 2 # 87 "../arch/x86/include/asm/barrier.h" 2 # 257 "../include/linux/compiler.h" 2 # 1 "../include/linux/kasan-checks.h" 1 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((__no_instrument_function__)) void kasan_check_read(const volatile void *p, unsigned int size) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((__no_instrument_function__)) void kasan_check_write(const volatile void *p, unsigned int size) { } # 258 "../include/linux/compiler.h" 2 # 277 "../include/linux/compiler.h" static __attribute__((__no_instrument_function__)) __attribute__((__unused__)) unsigned long read_word_at_a_time(const void *addr) { kasan_check_read(addr, 1); return *(unsigned long *)addr; } # 308 "../include/linux/compiler.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((__no_instrument_function__)) void *offset_to_ptr(const int *off) { return (void *)((unsigned long)off + *off); } # 14 "../include/linux/ioport.h" 2 # 1 "../include/linux/bits.h" 1 # 1 "../include/linux/const.h" 1 # 1 "../include/uapi/linux/const.h" 1 # 5 "../include/linux/const.h" 2 # 6 "../include/linux/bits.h" 2 # 16 "../include/linux/ioport.h" 2 struct resource { resource_size_t start; resource_size_t end; const char *name; unsigned long flags; unsigned long desc; struct resource *parent, *sibling, *child; }; # 128 "../include/linux/ioport.h" enum { IORES_DESC_NONE = 0, IORES_DESC_CRASH_KERNEL = 1, IORES_DESC_ACPI_TABLES = 2, IORES_DESC_ACPI_NV_STORAGE = 3, IORES_DESC_PERSISTENT_MEMORY = 4, IORES_DESC_PERSISTENT_MEMORY_LEGACY = 5, IORES_DESC_DEVICE_PRIVATE_MEMORY = 6, IORES_DESC_DEVICE_PUBLIC_MEMORY = 7, IORES_DESC_RESERVED = 8, }; enum { IORES_MAP_SYSTEM_RAM = ((((1UL))) << (0)), IORES_MAP_ENCRYPTED = ((((1UL))) << (1)), }; # 179 "../include/linux/ioport.h" extern struct resource ioport_resource; extern struct resource iomem_resource; extern struct resource *request_resource_conflict(struct resource *root, struct resource *new); extern int request_resource(struct resource *root, struct resource *new); extern int release_resource(struct resource *new); void release_child_resources(struct resource *new); extern void reserve_region_with_split(struct resource *root, resource_size_t start, resource_size_t end, const char *name); extern struct resource *insert_resource_conflict(struct resource *parent, struct resource *new); extern int insert_resource(struct resource *parent, struct resource *new); extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new); extern int remove_resource(struct resource *old); extern void arch_remove_reservations(struct resource *avail); extern int allocate_resource(struct resource *root, struct resource *new, resource_size_t size, resource_size_t min, resource_size_t max, resource_size_t align, resource_size_t (*alignf)(void *, const struct resource *, resource_size_t, resource_size_t), void *alignf_data); struct resource *lookup_resource(struct resource *root, resource_size_t start); int adjust_resource(struct resource *res, resource_size_t start, resource_size_t size); resource_size_t resource_alignment(struct resource *res); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((__no_instrument_function__)) resource_size_t resource_size(const struct resource *res) { return res->end - res->start + 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((__no_instrument_function__)) unsigned long resource_type(const struct resource *res) { return res->flags & 0x00001f00; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((__no_instrument_function__)) unsigned long resource_ext_type(const struct resource *res) { return res->flags & 0x01000000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((__no_instrument_function__)) bool resource_contains(struct resource *r1, struct resource *r2) { if (resource_type(r1) != resource_type(r2)) return false; if (r1->flags & 0x20000000 || r2->flags & 0x20000000) return false; return r1->start <= r2->start && r1->end >= r2->end; } # 238 "../include/linux/ioport.h" extern struct resource * __request_region(struct resource *, resource_size_t start, resource_size_t n, const char *name, int flags); extern void __release_region(struct resource *, resource_size_t, resource_size_t); extern int release_mem_region_adjustable(struct resource *, resource_size_t, resource_size_t); struct device; extern int devm_request_resource(struct device *dev, struct resource *root, struct resource *new); extern void devm_release_resource(struct device *dev, struct resource *new); extern struct resource * __devm_request_region(struct device *dev, struct resource *parent, resource_size_t start, resource_size_t n, const char *name); extern void __devm_release_region(struct device *dev, struct resource *parent, resource_size_t start, resource_size_t n); extern int iomem_map_sanity_check(resource_size_t addr, unsigned long size); extern bool iomem_is_exclusive(u64 addr); extern int walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages, void *arg, int (*func)(unsigned long, unsigned long, void *)); extern int walk_mem_res(u64 start, u64 end, void *arg, int (*func)(struct resource *, void *)); extern int walk_system_ram_res(u64 start, u64 end, void *arg, int (*func)(struct resource *, void *)); extern int walk_iomem_res_desc(unsigned long desc, unsigned long flags, u64 start, u64 end, void *arg, int (*func)(struct resource *, void *)); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((__no_instrument_function__)) bool resource_overlaps(struct resource *r1, struct resource *r2) { return (r1->start <= r2->end && r1->end >= r2->start); } # 16 "../include/linux/device.h" 2 # 1 "../include/linux/kobject.h" 1 # 19 "../include/linux/kobject.h" # 1 "../include/linux/list.h" 1 # 1 "../include/linux/poison.h" 1 # 8 "../include/linux/list.h" 2 # 1 "../include/linux/kernel.h" 1 # 1 "/root/tc-build/install/lib/clang/9.0.0/include/stdarg.h" 1 3 # 14 "/root/tc-build/install/lib/clang/9.0.0/include/stdarg.h" 3 typedef __builtin_va_list va_list; # 32 "/root/tc-build/install/lib/clang/9.0.0/include/stdarg.h" 3 typedef __builtin_va_list __gnuc_va_list; # 7 "../include/linux/kernel.h" 2 # 1 "../include/linux/limits.h" 1 # 1 "../include/uapi/linux/limits.h" 1 # 6 "../include/linux/limits.h" 2 # 8 "../include/linux/kernel.h" 2 # 1 "../include/linux/linkage.h" 1 # 1 "../include/linux/export.h" 1 # 61 "../include/linux/export.h" struct kernel_symbol { int value_offset; int name_offset; }; # 8 "../include/linux/linkage.h" 2 # 1 "../arch/x86/include/asm/linkage.h" 1 # 9 "../include/linux/linkage.h" 2 # 9 "../include/linux/kernel.h" 2 # 1 "../include/linux/bitops.h" 1 # 10 "../include/linux/bitops.h" extern unsigned int __sw_hweight8(unsigned int w); extern unsigned int __sw_hweight16(unsigned int w); extern unsigned int __sw_hweight32(unsigned int w); extern unsigned long __sw_hweight64(__u64 w); # 1 "../arch/x86/include/asm/bitops.h" 1 # 18 "../arch/x86/include/asm/bitops.h" # 1 "../arch/x86/include/asm/rmwcc.h" 1 # 19 "../arch/x86/include/asm/bitops.h" 2 # 52 "../arch/x86/include/asm/bitops.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch_set_bit(long nr, volatile unsigned long *addr) { if ((__builtin_constant_p(nr))) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "orb %1,%0" : "+m" (*(volatile char *) ((void *)(addr) + ((nr)>>3))) : "iq" ((u8)(1 << ((nr) & 7))) : "memory"); } else { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " " " "btsq" " " " %1,%0" : : "m" (*(volatile long *) (addr)), "Ir" (nr) : "memory"); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch___set_bit(long nr, volatile unsigned long *addr) { asm volatile(" " "btsq" " " " %1,%0" : : "m" (*(volatile long *) (addr)), "Ir" (nr) : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch_clear_bit(long nr, volatile unsigned long *addr) { if ((__builtin_constant_p(nr))) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "andb %1,%0" : "+m" (*(volatile char *) ((void *)(addr) + ((nr)>>3))) : "iq" ((u8)~(1 << ((nr) & 7)))); } else { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " " " "btrq" " " " %1,%0" : : "m" (*(volatile long *) (addr)), "Ir" (nr) : "memory"); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch_clear_bit_unlock(long nr, volatile unsigned long *addr) { __asm__ __volatile__("" : : : "memory"); arch_clear_bit(nr, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch___clear_bit(long nr, volatile unsigned long *addr) { asm volatile(" " "btrq" " " " %1,%0" : : "m" (*(volatile long *) (addr)), "Ir" (nr) : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch_clear_bit_unlock_is_negative_byte(long nr, volatile unsigned long *addr) { bool negative; asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "andb %2,%1" "\n\t/* output condition code " "s" "*/\n" : "=@cc" "s" (negative), "+m" (*(volatile char *) (addr)) : "ir" ((char) ~(1 << nr)) : "memory"); return negative; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch___clear_bit_unlock(long nr, volatile unsigned long *addr) { arch___clear_bit(nr, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch___change_bit(long nr, volatile unsigned long *addr) { asm volatile(" " "btcq" " " " %1,%0" : : "m" (*(volatile long *) (addr)), "Ir" (nr) : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch_change_bit(long nr, volatile unsigned long *addr) { if ((__builtin_constant_p(nr))) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xorb %1,%0" : "+m" (*(volatile char *) ((void *)(addr) + ((nr)>>3))) : "iq" ((u8)(1 << ((nr) & 7)))); } else { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " " " "btcq" " " " %1,%0" : : "m" (*(volatile long *) (addr)), "Ir" (nr) : "memory"); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch_test_and_set_bit(long nr, volatile unsigned long *addr) { return ({ bool c; asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " " " "btsq" " " " %[val], " "%[var]" "\n\t/* output condition code " "c" "*/\n" : [var] "+m" (*addr), "=@cc" "c" (c) : [val] "Ir" (nr) : "memory"); c; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch_test_and_set_bit_lock(long nr, volatile unsigned long *addr) { return arch_test_and_set_bit(nr, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch___test_and_set_bit(long nr, volatile unsigned long *addr) { bool oldbit; asm(" " "btsq" " " " %2,%1" "\n\t/* output condition code " "c" "*/\n" : "=@cc" "c" (oldbit) : "m" (*(volatile long *) (addr)), "Ir" (nr) : "memory"); return oldbit; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch_test_and_clear_bit(long nr, volatile unsigned long *addr) { return ({ bool c; asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " " " "btrq" " " " %[val], " "%[var]" "\n\t/* output condition code " "c" "*/\n" : [var] "+m" (*addr), "=@cc" "c" (c) : [val] "Ir" (nr) : "memory"); c; }); } # 174 "../arch/x86/include/asm/bitops.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch___test_and_clear_bit(long nr, volatile unsigned long *addr) { bool oldbit; asm volatile(" " "btrq" " " " %2,%1" "\n\t/* output condition code " "c" "*/\n" : "=@cc" "c" (oldbit) : "m" (*(volatile long *) (addr)), "Ir" (nr) : "memory"); return oldbit; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch___test_and_change_bit(long nr, volatile unsigned long *addr) { bool oldbit; asm volatile(" " "btcq" " " " %2,%1" "\n\t/* output condition code " "c" "*/\n" : "=@cc" "c" (oldbit) : "m" (*(volatile long *) (addr)), "Ir" (nr) : "memory"); return oldbit; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch_test_and_change_bit(long nr, volatile unsigned long *addr) { return ({ bool c; asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " " " "btcq" " " " %[val], " "%[var]" "\n\t/* output condition code " "c" "*/\n" : [var] "+m" (*addr), "=@cc" "c" (c) : [val] "Ir" (nr) : "memory"); c; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool constant_test_bit(long nr, const volatile unsigned long *addr) { return ((1UL << (nr & (64 -1))) & (addr[nr >> 6])) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool variable_test_bit(long nr, volatile const unsigned long *addr) { bool oldbit; asm volatile(" " "btq" " " " %2,%1" "\n\t/* output condition code " "c" "*/\n" : "=@cc" "c" (oldbit) : "m" (*(unsigned long *)addr), "Ir" (nr) : "memory"); return oldbit; } # 234 "../arch/x86/include/asm/bitops.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long __ffs(unsigned long word) { asm("rep; bsf %1,%0" : "=r" (word) : "rm" (word)); return word; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long ffz(unsigned long word) { asm("rep; bsf %1,%0" : "=r" (word) : "r" (~word)); return word; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long __fls(unsigned long word) { asm("bsr %1,%0" : "=r" (word) : "rm" (word)); return word; } # 284 "../arch/x86/include/asm/bitops.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int ffs(int x) { int r; # 298 "../arch/x86/include/asm/bitops.h" asm("bsfl %1,%0" : "=r" (r) : "rm" (x), "0" (-1)); # 311 "../arch/x86/include/asm/bitops.h" return r + 1; } # 325 "../arch/x86/include/asm/bitops.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int fls(unsigned int x) { int r; # 339 "../arch/x86/include/asm/bitops.h" asm("bsrl %1,%0" : "=r" (r) : "rm" (x), "0" (-1)); # 352 "../arch/x86/include/asm/bitops.h" return r + 1; } # 367 "../arch/x86/include/asm/bitops.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int fls64(__u64 x) { int bitpos = -1; asm("bsrq %1,%q0" : "+r" (bitpos) : "rm" (x)); return bitpos + 1; } # 1 "../include/asm-generic/bitops/find.h" 1 # 15 "../include/asm-generic/bitops/find.h" extern unsigned long find_next_bit(const unsigned long *addr, unsigned long size, unsigned long offset); # 30 "../include/asm-generic/bitops/find.h" extern unsigned long find_next_and_bit(const unsigned long *addr1, const unsigned long *addr2, unsigned long size, unsigned long offset); # 45 "../include/asm-generic/bitops/find.h" extern unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long size, unsigned long offset); # 59 "../include/asm-generic/bitops/find.h" extern unsigned long find_first_bit(const unsigned long *addr, unsigned long size); # 70 "../include/asm-generic/bitops/find.h" extern unsigned long find_first_zero_bit(const unsigned long *addr, unsigned long size); # 385 "../arch/x86/include/asm/bitops.h" 2 # 1 "../include/asm-generic/bitops/sched.h" 1 # 13 "../include/asm-generic/bitops/sched.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int sched_find_first_bit(const unsigned long *b) { if (b[0]) return __ffs(b[0]); return __ffs(b[1]) + 64; # 30 "../include/asm-generic/bitops/sched.h" } # 387 "../arch/x86/include/asm/bitops.h" 2 # 1 "../arch/x86/include/asm/arch_hweight.h" 1 # 1 "../arch/x86/include/asm/cpufeatures.h" 1 # 1 "../arch/x86/include/asm/required-features.h" 1 # 7 "../arch/x86/include/asm/cpufeatures.h" 2 # 1 "../arch/x86/include/asm/disabled-features.h" 1 # 11 "../arch/x86/include/asm/cpufeatures.h" 2 # 6 "../arch/x86/include/asm/arch_hweight.h" 2 # 15 "../arch/x86/include/asm/arch_hweight.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned int __arch_hweight32(unsigned int w) { unsigned int res; asm ("# ALT: oldnstr\n" "661:\n\t" "call __sw_hweight32" "\n662:\n" "# ALT: padding\n" ".skip -(((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")) > 0) * " "((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")),0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 4*32+23)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "popcntl %1, %0" "\n" "665""1" ":\n" ".popsection\n" : "=""a" (res) : "D" (w)); return res; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int __arch_hweight16(unsigned int w) { return __arch_hweight32(w & 0xffff); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int __arch_hweight8(unsigned int w) { return __arch_hweight32(w & 0xff); } # 43 "../arch/x86/include/asm/arch_hweight.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long __arch_hweight64(__u64 w) { unsigned long res; asm ("# ALT: oldnstr\n" "661:\n\t" "call __sw_hweight64" "\n662:\n" "# ALT: padding\n" ".skip -(((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")) > 0) * " "((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")),0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 4*32+23)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "popcntq %1, %0" "\n" "665""1" ":\n" ".popsection\n" : "=""a" (res) : "D" (w)); return res; } # 389 "../arch/x86/include/asm/bitops.h" 2 # 1 "../include/asm-generic/bitops/const_hweight.h" 1 # 391 "../arch/x86/include/asm/bitops.h" 2 # 1 "../include/asm-generic/bitops-instrumented.h" 1 # 26 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_bit(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); arch_set_bit(nr, addr); } # 41 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __set_bit(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); arch___set_bit(nr, addr); } # 54 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_bit(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); arch_clear_bit(nr, addr); } # 69 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __clear_bit(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); arch___clear_bit(nr, addr); } # 82 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_bit_unlock(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); arch_clear_bit_unlock(nr, addr); } # 97 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __clear_bit_unlock(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); arch___clear_bit_unlock(nr, addr); } # 113 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void change_bit(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); arch_change_bit(nr, addr); } # 128 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __change_bit(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); arch___change_bit(nr, addr); } # 141 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool test_and_set_bit(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); return arch_test_and_set_bit(nr, addr); } # 155 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __test_and_set_bit(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); return arch___test_and_set_bit(nr, addr); } # 170 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool test_and_set_bit_lock(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); return arch_test_and_set_bit_lock(nr, addr); } # 183 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool test_and_clear_bit(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); return arch_test_and_clear_bit(nr, addr); } # 197 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __test_and_clear_bit(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); return arch___test_and_clear_bit(nr, addr); } # 210 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool test_and_change_bit(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); return arch_test_and_change_bit(nr, addr); } # 224 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __test_and_change_bit(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); return arch___test_and_change_bit(nr, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool test_bit(long nr, const volatile unsigned long *addr) { kasan_check_read(addr + ((nr) / 64), sizeof(long)); return (__builtin_constant_p((nr)) ? constant_test_bit((nr), (addr)) : variable_test_bit((nr), (addr))); } # 253 "../include/asm-generic/bitops-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool clear_bit_unlock_is_negative_byte(long nr, volatile unsigned long *addr) { kasan_check_write(addr + ((nr) / 64), sizeof(long)); return arch_clear_bit_unlock_is_negative_byte(nr, addr); } # 393 "../arch/x86/include/asm/bitops.h" 2 # 1 "../include/asm-generic/bitops/le.h" 1 # 1 "../arch/x86/include/uapi/asm/byteorder.h" 1 # 1 "../include/linux/byteorder/little_endian.h" 1 # 1 "../include/uapi/linux/byteorder/little_endian.h" 1 # 13 "../include/uapi/linux/byteorder/little_endian.h" # 1 "../include/linux/swab.h" 1 # 1 "../include/uapi/linux/swab.h" 1 # 1 "../arch/x86/include/uapi/asm/swab.h" 1 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u32 __arch_swab32(__u32 val) { asm("bswapl %0" : "=r" (val) : "0" (val)); return val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u64 __arch_swab64(__u64 val) { # 31 "../arch/x86/include/uapi/asm/swab.h" asm("bswapq %0" : "=r" (val) : "0" (val)); return val; } # 8 "../include/uapi/linux/swab.h" 2 # 47 "../include/uapi/linux/swab.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u16 __fswab16(__u16 val) { return ((__u16)( (((__u16)(val) & (__u16)0x00ffU) << 8) | (((__u16)(val) & (__u16)0xff00U) >> 8))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u32 __fswab32(__u32 val) { return __arch_swab32(val); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u64 __fswab64(__u64 val) { return __arch_swab64(val); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u32 __fswahw32(__u32 val) { return ((__u32)( (((__u32)(val) & (__u32)0x0000ffffUL) << 16) | (((__u32)(val) & (__u32)0xffff0000UL) >> 16))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__const__)) __u32 __fswahb32(__u32 val) { return ((__u32)( (((__u32)(val) & (__u32)0x00ff00ffUL) << 8) | (((__u32)(val) & (__u32)0xff00ff00UL) >> 8))); } # 161 "../include/uapi/linux/swab.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u16 __swab16p(const __u16 *p) { return (__builtin_constant_p((__u16)(*p)) ? ((__u16)( (((__u16)(*p) & (__u16)0x00ffU) << 8) | (((__u16)(*p) & (__u16)0xff00U) >> 8))) : __fswab16(*p)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u32 __swab32p(const __u32 *p) { return (__builtin_constant_p((__u32)(*p)) ? ((__u32)( (((__u32)(*p) & (__u32)0x000000ffUL) << 24) | (((__u32)(*p) & (__u32)0x0000ff00UL) << 8) | (((__u32)(*p) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(*p) & (__u32)0xff000000UL) >> 24))) : __fswab32(*p)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u64 __swab64p(const __u64 *p) { return (__builtin_constant_p((__u64)(*p)) ? ((__u64)( (((__u64)(*p) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(*p) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(*p) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(*p) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(*p) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(*p) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(*p) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(*p) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(*p)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u32 __swahw32p(const __u32 *p) { return (__builtin_constant_p((__u32)(*p)) ? ((__u32)( (((__u32)(*p) & (__u32)0x0000ffffUL) << 16) | (((__u32)(*p) & (__u32)0xffff0000UL) >> 16))) : __fswahw32(*p)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u32 __swahb32p(const __u32 *p) { return (__builtin_constant_p((__u32)(*p)) ? ((__u32)( (((__u32)(*p) & (__u32)0x00ff00ffUL) << 8) | (((__u32)(*p) & (__u32)0xff00ff00UL) >> 8))) : __fswahb32(*p)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __swab16s(__u16 *p) { *p = __swab16p(p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __swab32s(__u32 *p) { *p = __swab32p(p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __swab64s(__u64 *p) { *p = __swab64p(p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __swahw32s(__u32 *p) { *p = __swahw32p(p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __swahb32s(__u32 *p) { *p = __swahb32p(p); } # 6 "../include/linux/swab.h" 2 # 14 "../include/uapi/linux/byteorder/little_endian.h" 2 # 44 "../include/uapi/linux/byteorder/little_endian.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __le64 __cpu_to_le64p(const __u64 *p) { return ( __le64)*p; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u64 __le64_to_cpup(const __le64 *p) { return ( __u64)*p; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __le32 __cpu_to_le32p(const __u32 *p) { return ( __le32)*p; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u32 __le32_to_cpup(const __le32 *p) { return ( __u32)*p; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __le16 __cpu_to_le16p(const __u16 *p) { return ( __le16)*p; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u16 __le16_to_cpup(const __le16 *p) { return ( __u16)*p; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __be64 __cpu_to_be64p(const __u64 *p) { return ( __be64)__swab64p(p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u64 __be64_to_cpup(const __be64 *p) { return __swab64p((__u64 *)p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __be32 __cpu_to_be32p(const __u32 *p) { return ( __be32)__swab32p(p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u32 __be32_to_cpup(const __be32 *p) { return __swab32p((__u32 *)p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __be16 __cpu_to_be16p(const __u16 *p) { return ( __be16)__swab16p(p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u16 __be16_to_cpup(const __be16 *p) { return __swab16p((__u16 *)p); } # 6 "../include/linux/byteorder/little_endian.h" 2 # 1 "../include/linux/byteorder/generic.h" 1 # 144 "../include/linux/byteorder/generic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void le16_add_cpu(__le16 *var, u16 val) { *var = (( __le16)(__u16)((( __u16)(__le16)(*var)) + val)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void le32_add_cpu(__le32 *var, u32 val) { *var = (( __le32)(__u32)((( __u32)(__le32)(*var)) + val)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void le64_add_cpu(__le64 *var, u64 val) { *var = (( __le64)(__u64)((( __u64)(__le64)(*var)) + val)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void le32_to_cpu_array(u32 *buf, unsigned int words) { while (words--) { do { (void)(buf); } while (0); buf++; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpu_to_le32_array(u32 *buf, unsigned int words) { while (words--) { do { (void)(buf); } while (0); buf++; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void be16_add_cpu(__be16 *var, u16 val) { *var = (( __be16)(__builtin_constant_p((__u16)(((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)(( __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(*var))) + val))) ? ((__u16)( (((__u16)(((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)(( __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(*var))) + val)) & (__u16)0x00ffU) << 8) | (((__u16)(((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)(( __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(*var))) + val)) & (__u16)0xff00U) >> 8))) : __fswab16(((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)(( __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(*var))) + val)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void be32_add_cpu(__be32 *var, u32 val) { *var = (( __be32)(__builtin_constant_p((__u32)(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + val))) ? ((__u32)( (((__u32)(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + val)) & (__u32)0x000000ffUL) << 24) | (((__u32)(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + val)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + val)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + val)) & (__u32)0xff000000UL) >> 24))) : __fswab32(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + val)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void be64_add_cpu(__be64 *var, u64 val) { *var = (( __be64)(__builtin_constant_p((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val))) ? ((__u64)( (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpu_to_be32_array(__be32 *dst, const u32 *src, size_t len) { int i; for (i = 0; i < len; i++) dst[i] = (( __be32)(__builtin_constant_p((__u32)((src[i]))) ? ((__u32)( (((__u32)((src[i])) & (__u32)0x000000ffUL) << 24) | (((__u32)((src[i])) & (__u32)0x0000ff00UL) << 8) | (((__u32)((src[i])) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((src[i])) & (__u32)0xff000000UL) >> 24))) : __fswab32((src[i])))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void be32_to_cpu_array(u32 *dst, const __be32 *src, size_t len) { int i; for (i = 0; i < len; i++) dst[i] = (__builtin_constant_p((__u32)(( __u32)(__be32)(src[i]))) ? ((__u32)( (((__u32)(( __u32)(__be32)(src[i])) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(src[i])) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(src[i])) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(src[i])) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(src[i]))); } # 12 "../include/linux/byteorder/little_endian.h" 2 # 6 "../arch/x86/include/uapi/asm/byteorder.h" 2 # 7 "../include/asm-generic/bitops/le.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long find_next_zero_bit_le(const void *addr, unsigned long size, unsigned long offset) { return find_next_zero_bit(addr, size, offset); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long find_next_bit_le(const void *addr, unsigned long size, unsigned long offset) { return find_next_bit(addr, size, offset); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long find_first_zero_bit_le(const void *addr, unsigned long size) { return find_first_zero_bit(addr, size); } # 53 "../include/asm-generic/bitops/le.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int test_bit_le(int nr, const void *addr) { return test_bit(nr ^ 0, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_bit_le(int nr, void *addr) { set_bit(nr ^ 0, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_bit_le(int nr, void *addr) { clear_bit(nr ^ 0, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __set_bit_le(int nr, void *addr) { __set_bit(nr ^ 0, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __clear_bit_le(int nr, void *addr) { __clear_bit(nr ^ 0, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int test_and_set_bit_le(int nr, void *addr) { return test_and_set_bit(nr ^ 0, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int test_and_clear_bit_le(int nr, void *addr) { return test_and_clear_bit(nr ^ 0, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __test_and_set_bit_le(int nr, void *addr) { return __test_and_set_bit(nr ^ 0, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __test_and_clear_bit_le(int nr, void *addr) { return __test_and_clear_bit(nr ^ 0, addr); } # 395 "../arch/x86/include/asm/bitops.h" 2 # 1 "../include/asm-generic/bitops/ext2-atomic-setbit.h" 1 # 397 "../arch/x86/include/asm/bitops.h" 2 # 20 "../include/linux/bitops.h" 2 # 43 "../include/linux/bitops.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_bitmask_order(unsigned int count) { int order; order = fls(count); return order; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long hweight_long(unsigned long w) { return sizeof(w) == 4 ? (__builtin_constant_p(w) ? ((((unsigned int) ((!!((w) & (1ULL << 0))) + (!!((w) & (1ULL << 1))) + (!!((w) & (1ULL << 2))) + (!!((w) & (1ULL << 3))) + (!!((w) & (1ULL << 4))) + (!!((w) & (1ULL << 5))) + (!!((w) & (1ULL << 6))) + (!!((w) & (1ULL << 7))))) + ((unsigned int) ((!!(((w) >> 8) & (1ULL << 0))) + (!!(((w) >> 8) & (1ULL << 1))) + (!!(((w) >> 8) & (1ULL << 2))) + (!!(((w) >> 8) & (1ULL << 3))) + (!!(((w) >> 8) & (1ULL << 4))) + (!!(((w) >> 8) & (1ULL << 5))) + (!!(((w) >> 8) & (1ULL << 6))) + (!!(((w) >> 8) & (1ULL << 7)))))) + (((unsigned int) ((!!(((w) >> 16) & (1ULL << 0))) + (!!(((w) >> 16) & (1ULL << 1))) + (!!(((w) >> 16) & (1ULL << 2))) + (!!(((w) >> 16) & (1ULL << 3))) + (!!(((w) >> 16) & (1ULL << 4))) + (!!(((w) >> 16) & (1ULL << 5))) + (!!(((w) >> 16) & (1ULL << 6))) + (!!(((w) >> 16) & (1ULL << 7))))) + ((unsigned int) ((!!((((w) >> 16) >> 8) & (1ULL << 0))) + (!!((((w) >> 16) >> 8) & (1ULL << 1))) + (!!((((w) >> 16) >> 8) & (1ULL << 2))) + (!!((((w) >> 16) >> 8) & (1ULL << 3))) + (!!((((w) >> 16) >> 8) & (1ULL << 4))) + (!!((((w) >> 16) >> 8) & (1ULL << 5))) + (!!((((w) >> 16) >> 8) & (1ULL << 6))) + (!!((((w) >> 16) >> 8) & (1ULL << 7))))))) : __arch_hweight32(w)) : (__builtin_constant_p(w) ? (((((unsigned int) ((!!((w) & (1ULL << 0))) + (!!((w) & (1ULL << 1))) + (!!((w) & (1ULL << 2))) + (!!((w) & (1ULL << 3))) + (!!((w) & (1ULL << 4))) + (!!((w) & (1ULL << 5))) + (!!((w) & (1ULL << 6))) + (!!((w) & (1ULL << 7))))) + ((unsigned int) ((!!(((w) >> 8) & (1ULL << 0))) + (!!(((w) >> 8) & (1ULL << 1))) + (!!(((w) >> 8) & (1ULL << 2))) + (!!(((w) >> 8) & (1ULL << 3))) + (!!(((w) >> 8) & (1ULL << 4))) + (!!(((w) >> 8) & (1ULL << 5))) + (!!(((w) >> 8) & (1ULL << 6))) + (!!(((w) >> 8) & (1ULL << 7)))))) + (((unsigned int) ((!!(((w) >> 16) & (1ULL << 0))) + (!!(((w) >> 16) & (1ULL << 1))) + (!!(((w) >> 16) & (1ULL << 2))) + (!!(((w) >> 16) & (1ULL << 3))) + (!!(((w) >> 16) & (1ULL << 4))) + (!!(((w) >> 16) & (1ULL << 5))) + (!!(((w) >> 16) & (1ULL << 6))) + (!!(((w) >> 16) & (1ULL << 7))))) + ((unsigned int) ((!!((((w) >> 16) >> 8) & (1ULL << 0))) + (!!((((w) >> 16) >> 8) & (1ULL << 1))) + (!!((((w) >> 16) >> 8) & (1ULL << 2))) + (!!((((w) >> 16) >> 8) & (1ULL << 3))) + (!!((((w) >> 16) >> 8) & (1ULL << 4))) + (!!((((w) >> 16) >> 8) & (1ULL << 5))) + (!!((((w) >> 16) >> 8) & (1ULL << 6))) + (!!((((w) >> 16) >> 8) & (1ULL << 7))))))) + ((((unsigned int) ((!!(((w) >> 32) & (1ULL << 0))) + (!!(((w) >> 32) & (1ULL << 1))) + (!!(((w) >> 32) & (1ULL << 2))) + (!!(((w) >> 32) & (1ULL << 3))) + (!!(((w) >> 32) & (1ULL << 4))) + (!!(((w) >> 32) & (1ULL << 5))) + (!!(((w) >> 32) & (1ULL << 6))) + (!!(((w) >> 32) & (1ULL << 7))))) + ((unsigned int) ((!!((((w) >> 32) >> 8) & (1ULL << 0))) + (!!((((w) >> 32) >> 8) & (1ULL << 1))) + (!!((((w) >> 32) >> 8) & (1ULL << 2))) + (!!((((w) >> 32) >> 8) & (1ULL << 3))) + (!!((((w) >> 32) >> 8) & (1ULL << 4))) + (!!((((w) >> 32) >> 8) & (1ULL << 5))) + (!!((((w) >> 32) >> 8) & (1ULL << 6))) + (!!((((w) >> 32) >> 8) & (1ULL << 7)))))) + (((unsigned int) ((!!((((w) >> 32) >> 16) & (1ULL << 0))) + (!!((((w) >> 32) >> 16) & (1ULL << 1))) + (!!((((w) >> 32) >> 16) & (1ULL << 2))) + (!!((((w) >> 32) >> 16) & (1ULL << 3))) + (!!((((w) >> 32) >> 16) & (1ULL << 4))) + (!!((((w) >> 32) >> 16) & (1ULL << 5))) + (!!((((w) >> 32) >> 16) & (1ULL << 6))) + (!!((((w) >> 32) >> 16) & (1ULL << 7))))) + ((unsigned int) ((!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 0))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 1))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 2))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 3))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 4))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 5))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 6))) + (!!(((((w) >> 32) >> 16) >> 8) & (1ULL << 7)))))))) : __arch_hweight64(w)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u64 rol64(__u64 word, unsigned int shift) { return (word << (shift & 63)) | (word >> ((-shift) & 63)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u64 ror64(__u64 word, unsigned int shift) { return (word >> (shift & 63)) | (word << ((-shift) & 63)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u32 rol32(__u32 word, unsigned int shift) { return (word << (shift & 31)) | (word >> ((-shift) & 31)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u32 ror32(__u32 word, unsigned int shift) { return (word >> (shift & 31)) | (word << ((-shift) & 31)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u16 rol16(__u16 word, unsigned int shift) { return (word << (shift & 15)) | (word >> ((-shift) & 15)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u16 ror16(__u16 word, unsigned int shift) { return (word >> (shift & 15)) | (word << ((-shift) & 15)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u8 rol8(__u8 word, unsigned int shift) { return (word << (shift & 7)) | (word >> ((-shift) & 7)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u8 ror8(__u8 word, unsigned int shift) { return (word >> (shift & 7)) | (word << ((-shift) & 7)); } # 143 "../include/linux/bitops.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __s32 sign_extend32(__u32 value, int index) { __u8 shift = 31 - index; return (__s32)(value << shift) >> shift; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __s64 sign_extend64(__u64 value, int index) { __u8 shift = 63 - index; return (__s64)(value << shift) >> shift; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned fls_long(unsigned long l) { if (sizeof(l) == 4) return fls(l); return fls64(l); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_count_order(unsigned int count) { int order; order = fls(count) - 1; if (count & (count - 1)) order++; return order; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_count_order_long(unsigned long l) { if (l == 0UL) return -1; else if (l & (l - 1UL)) return (int)fls_long(l); else return (int)fls_long(l) - 1; } # 201 "../include/linux/bitops.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long __ffs64(u64 word) { return __ffs((unsigned long)word); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void assign_bit(long nr, volatile unsigned long *addr, bool value) { if (value) set_bit(nr, addr); else clear_bit(nr, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __assign_bit(long nr, volatile unsigned long *addr, bool value) { if (value) __set_bit(nr, addr); else __clear_bit(nr, addr); } # 277 "../include/linux/bitops.h" extern unsigned long find_last_bit(const unsigned long *addr, unsigned long size); # 13 "../include/linux/kernel.h" 2 # 1 "../include/linux/log2.h" 1 # 21 "../include/linux/log2.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((const)) int __ilog2_u32(u32 n) { return fls(n) - 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((const)) int __ilog2_u64(u64 n) { return fls64(n) - 1; } # 44 "../include/linux/log2.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((const)) bool is_power_of_2(unsigned long n) { return (n != 0 && ((n & (n - 1)) == 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((const)) unsigned long __roundup_pow_of_two(unsigned long n) { return 1UL << fls_long(n - 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((const)) unsigned long __rounddown_pow_of_two(unsigned long n) { return 1UL << (fls_long(n) - 1); } # 197 "../include/linux/log2.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__const__)) int __order_base_2(unsigned long n) { return n > 1 ? ( __builtin_constant_p(n - 1) ? ( __builtin_constant_p(n - 1) ? ( (n - 1) < 2 ? 0 : (n - 1) & (1ULL << 63) ? 63 : (n - 1) & (1ULL << 62) ? 62 : (n - 1) & (1ULL << 61) ? 61 : (n - 1) & (1ULL << 60) ? 60 : (n - 1) & (1ULL << 59) ? 59 : (n - 1) & (1ULL << 58) ? 58 : (n - 1) & (1ULL << 57) ? 57 : (n - 1) & (1ULL << 56) ? 56 : (n - 1) & (1ULL << 55) ? 55 : (n - 1) & (1ULL << 54) ? 54 : (n - 1) & (1ULL << 53) ? 53 : (n - 1) & (1ULL << 52) ? 52 : (n - 1) & (1ULL << 51) ? 51 : (n - 1) & (1ULL << 50) ? 50 : (n - 1) & (1ULL << 49) ? 49 : (n - 1) & (1ULL << 48) ? 48 : (n - 1) & (1ULL << 47) ? 47 : (n - 1) & (1ULL << 46) ? 46 : (n - 1) & (1ULL << 45) ? 45 : (n - 1) & (1ULL << 44) ? 44 : (n - 1) & (1ULL << 43) ? 43 : (n - 1) & (1ULL << 42) ? 42 : (n - 1) & (1ULL << 41) ? 41 : (n - 1) & (1ULL << 40) ? 40 : (n - 1) & (1ULL << 39) ? 39 : (n - 1) & (1ULL << 38) ? 38 : (n - 1) & (1ULL << 37) ? 37 : (n - 1) & (1ULL << 36) ? 36 : (n - 1) & (1ULL << 35) ? 35 : (n - 1) & (1ULL << 34) ? 34 : (n - 1) & (1ULL << 33) ? 33 : (n - 1) & (1ULL << 32) ? 32 : (n - 1) & (1ULL << 31) ? 31 : (n - 1) & (1ULL << 30) ? 30 : (n - 1) & (1ULL << 29) ? 29 : (n - 1) & (1ULL << 28) ? 28 : (n - 1) & (1ULL << 27) ? 27 : (n - 1) & (1ULL << 26) ? 26 : (n - 1) & (1ULL << 25) ? 25 : (n - 1) & (1ULL << 24) ? 24 : (n - 1) & (1ULL << 23) ? 23 : (n - 1) & (1ULL << 22) ? 22 : (n - 1) & (1ULL << 21) ? 21 : (n - 1) & (1ULL << 20) ? 20 : (n - 1) & (1ULL << 19) ? 19 : (n - 1) & (1ULL << 18) ? 18 : (n - 1) & (1ULL << 17) ? 17 : (n - 1) & (1ULL << 16) ? 16 : (n - 1) & (1ULL << 15) ? 15 : (n - 1) & (1ULL << 14) ? 14 : (n - 1) & (1ULL << 13) ? 13 : (n - 1) & (1ULL << 12) ? 12 : (n - 1) & (1ULL << 11) ? 11 : (n - 1) & (1ULL << 10) ? 10 : (n - 1) & (1ULL << 9) ? 9 : (n - 1) & (1ULL << 8) ? 8 : (n - 1) & (1ULL << 7) ? 7 : (n - 1) & (1ULL << 6) ? 6 : (n - 1) & (1ULL << 5) ? 5 : (n - 1) & (1ULL << 4) ? 4 : (n - 1) & (1ULL << 3) ? 3 : (n - 1) & (1ULL << 2) ? 2 : 1) : -1) : (sizeof(n - 1) <= 4) ? __ilog2_u32(n - 1) : __ilog2_u64(n - 1) ) + 1 : 0; } # 224 "../include/linux/log2.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((const)) int __bits_per(unsigned long n) { if (n < 2) return 1; if (is_power_of_2(n)) return ( __builtin_constant_p(n) ? ( ((n) == 0 || (n) == 1) ? 0 : ( __builtin_constant_p((n) - 1) ? ( __builtin_constant_p((n) - 1) ? ( ((n) - 1) < 2 ? 0 : ((n) - 1) & (1ULL << 63) ? 63 : ((n) - 1) & (1ULL << 62) ? 62 : ((n) - 1) & (1ULL << 61) ? 61 : ((n) - 1) & (1ULL << 60) ? 60 : ((n) - 1) & (1ULL << 59) ? 59 : ((n) - 1) & (1ULL << 58) ? 58 : ((n) - 1) & (1ULL << 57) ? 57 : ((n) - 1) & (1ULL << 56) ? 56 : ((n) - 1) & (1ULL << 55) ? 55 : ((n) - 1) & (1ULL << 54) ? 54 : ((n) - 1) & (1ULL << 53) ? 53 : ((n) - 1) & (1ULL << 52) ? 52 : ((n) - 1) & (1ULL << 51) ? 51 : ((n) - 1) & (1ULL << 50) ? 50 : ((n) - 1) & (1ULL << 49) ? 49 : ((n) - 1) & (1ULL << 48) ? 48 : ((n) - 1) & (1ULL << 47) ? 47 : ((n) - 1) & (1ULL << 46) ? 46 : ((n) - 1) & (1ULL << 45) ? 45 : ((n) - 1) & (1ULL << 44) ? 44 : ((n) - 1) & (1ULL << 43) ? 43 : ((n) - 1) & (1ULL << 42) ? 42 : ((n) - 1) & (1ULL << 41) ? 41 : ((n) - 1) & (1ULL << 40) ? 40 : ((n) - 1) & (1ULL << 39) ? 39 : ((n) - 1) & (1ULL << 38) ? 38 : ((n) - 1) & (1ULL << 37) ? 37 : ((n) - 1) & (1ULL << 36) ? 36 : ((n) - 1) & (1ULL << 35) ? 35 : ((n) - 1) & (1ULL << 34) ? 34 : ((n) - 1) & (1ULL << 33) ? 33 : ((n) - 1) & (1ULL << 32) ? 32 : ((n) - 1) & (1ULL << 31) ? 31 : ((n) - 1) & (1ULL << 30) ? 30 : ((n) - 1) & (1ULL << 29) ? 29 : ((n) - 1) & (1ULL << 28) ? 28 : ((n) - 1) & (1ULL << 27) ? 27 : ((n) - 1) & (1ULL << 26) ? 26 : ((n) - 1) & (1ULL << 25) ? 25 : ((n) - 1) & (1ULL << 24) ? 24 : ((n) - 1) & (1ULL << 23) ? 23 : ((n) - 1) & (1ULL << 22) ? 22 : ((n) - 1) & (1ULL << 21) ? 21 : ((n) - 1) & (1ULL << 20) ? 20 : ((n) - 1) & (1ULL << 19) ? 19 : ((n) - 1) & (1ULL << 18) ? 18 : ((n) - 1) & (1ULL << 17) ? 17 : ((n) - 1) & (1ULL << 16) ? 16 : ((n) - 1) & (1ULL << 15) ? 15 : ((n) - 1) & (1ULL << 14) ? 14 : ((n) - 1) & (1ULL << 13) ? 13 : ((n) - 1) & (1ULL << 12) ? 12 : ((n) - 1) & (1ULL << 11) ? 11 : ((n) - 1) & (1ULL << 10) ? 10 : ((n) - 1) & (1ULL << 9) ? 9 : ((n) - 1) & (1ULL << 8) ? 8 : ((n) - 1) & (1ULL << 7) ? 7 : ((n) - 1) & (1ULL << 6) ? 6 : ((n) - 1) & (1ULL << 5) ? 5 : ((n) - 1) & (1ULL << 4) ? 4 : ((n) - 1) & (1ULL << 3) ? 3 : ((n) - 1) & (1ULL << 2) ? 2 : 1) : -1) : (sizeof((n) - 1) <= 4) ? __ilog2_u32((n) - 1) : __ilog2_u64((n) - 1) ) + 1) : __order_base_2(n) ) + 1; return ( __builtin_constant_p(n) ? ( ((n) == 0 || (n) == 1) ? 0 : ( __builtin_constant_p((n) - 1) ? ( __builtin_constant_p((n) - 1) ? ( ((n) - 1) < 2 ? 0 : ((n) - 1) & (1ULL << 63) ? 63 : ((n) - 1) & (1ULL << 62) ? 62 : ((n) - 1) & (1ULL << 61) ? 61 : ((n) - 1) & (1ULL << 60) ? 60 : ((n) - 1) & (1ULL << 59) ? 59 : ((n) - 1) & (1ULL << 58) ? 58 : ((n) - 1) & (1ULL << 57) ? 57 : ((n) - 1) & (1ULL << 56) ? 56 : ((n) - 1) & (1ULL << 55) ? 55 : ((n) - 1) & (1ULL << 54) ? 54 : ((n) - 1) & (1ULL << 53) ? 53 : ((n) - 1) & (1ULL << 52) ? 52 : ((n) - 1) & (1ULL << 51) ? 51 : ((n) - 1) & (1ULL << 50) ? 50 : ((n) - 1) & (1ULL << 49) ? 49 : ((n) - 1) & (1ULL << 48) ? 48 : ((n) - 1) & (1ULL << 47) ? 47 : ((n) - 1) & (1ULL << 46) ? 46 : ((n) - 1) & (1ULL << 45) ? 45 : ((n) - 1) & (1ULL << 44) ? 44 : ((n) - 1) & (1ULL << 43) ? 43 : ((n) - 1) & (1ULL << 42) ? 42 : ((n) - 1) & (1ULL << 41) ? 41 : ((n) - 1) & (1ULL << 40) ? 40 : ((n) - 1) & (1ULL << 39) ? 39 : ((n) - 1) & (1ULL << 38) ? 38 : ((n) - 1) & (1ULL << 37) ? 37 : ((n) - 1) & (1ULL << 36) ? 36 : ((n) - 1) & (1ULL << 35) ? 35 : ((n) - 1) & (1ULL << 34) ? 34 : ((n) - 1) & (1ULL << 33) ? 33 : ((n) - 1) & (1ULL << 32) ? 32 : ((n) - 1) & (1ULL << 31) ? 31 : ((n) - 1) & (1ULL << 30) ? 30 : ((n) - 1) & (1ULL << 29) ? 29 : ((n) - 1) & (1ULL << 28) ? 28 : ((n) - 1) & (1ULL << 27) ? 27 : ((n) - 1) & (1ULL << 26) ? 26 : ((n) - 1) & (1ULL << 25) ? 25 : ((n) - 1) & (1ULL << 24) ? 24 : ((n) - 1) & (1ULL << 23) ? 23 : ((n) - 1) & (1ULL << 22) ? 22 : ((n) - 1) & (1ULL << 21) ? 21 : ((n) - 1) & (1ULL << 20) ? 20 : ((n) - 1) & (1ULL << 19) ? 19 : ((n) - 1) & (1ULL << 18) ? 18 : ((n) - 1) & (1ULL << 17) ? 17 : ((n) - 1) & (1ULL << 16) ? 16 : ((n) - 1) & (1ULL << 15) ? 15 : ((n) - 1) & (1ULL << 14) ? 14 : ((n) - 1) & (1ULL << 13) ? 13 : ((n) - 1) & (1ULL << 12) ? 12 : ((n) - 1) & (1ULL << 11) ? 11 : ((n) - 1) & (1ULL << 10) ? 10 : ((n) - 1) & (1ULL << 9) ? 9 : ((n) - 1) & (1ULL << 8) ? 8 : ((n) - 1) & (1ULL << 7) ? 7 : ((n) - 1) & (1ULL << 6) ? 6 : ((n) - 1) & (1ULL << 5) ? 5 : ((n) - 1) & (1ULL << 4) ? 4 : ((n) - 1) & (1ULL << 3) ? 3 : ((n) - 1) & (1ULL << 2) ? 2 : 1) : -1) : (sizeof((n) - 1) <= 4) ? __ilog2_u32((n) - 1) : __ilog2_u64((n) - 1) ) + 1) : __order_base_2(n) ); } # 14 "../include/linux/kernel.h" 2 # 1 "../include/linux/typecheck.h" 1 # 15 "../include/linux/kernel.h" 2 # 1 "../include/linux/printk.h" 1 # 1 "../include/linux/init.h" 1 # 116 "../include/linux/init.h" typedef int (*initcall_t)(void); typedef void (*exitcall_t)(void); typedef int initcall_entry_t; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) initcall_t initcall_from_entry(initcall_entry_t *entry) { return offset_to_ptr(entry); } # 135 "../include/linux/init.h" extern initcall_entry_t __con_initcall_start[], __con_initcall_end[]; typedef void (*ctor_fn_t)(void); extern int do_one_initcall(initcall_t fn); extern char __attribute__((__section__(".init.data"))) boot_command_line[]; extern char *saved_command_line; extern unsigned int reset_devices; void setup_arch(char **); void prepare_namespace(void); int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) init_rootfs(void); extern bool rodata_enabled; void mark_rodata_ro(void); extern void (*late_time_init)(void); extern bool initcall_debug; # 238 "../include/linux/init.h" struct obs_kernel_param { const char *str; int (*setup_func)(char *); int early; }; # 287 "../include/linux/init.h" void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) parse_early_param(void); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) parse_early_options(char *cmdline); # 7 "../include/linux/printk.h" 2 # 1 "../include/linux/kern_levels.h" 1 # 8 "../include/linux/printk.h" 2 # 1 "../include/linux/cache.h" 1 # 1 "../include/uapi/linux/kernel.h" 1 # 1 "../include/uapi/linux/sysinfo.h" 1 struct sysinfo { __kernel_long_t uptime; __kernel_ulong_t loads[3]; __kernel_ulong_t totalram; __kernel_ulong_t freeram; __kernel_ulong_t sharedram; __kernel_ulong_t bufferram; __kernel_ulong_t totalswap; __kernel_ulong_t freeswap; __u16 procs; __u16 pad; __kernel_ulong_t totalhigh; __kernel_ulong_t freehigh; __u32 mem_unit; char _f[20-2*sizeof(__kernel_ulong_t)-sizeof(__u32)]; }; # 6 "../include/uapi/linux/kernel.h" 2 # 6 "../include/linux/cache.h" 2 # 1 "../arch/x86/include/asm/cache.h" 1 # 7 "../include/linux/cache.h" 2 # 10 "../include/linux/printk.h" 2 extern const char linux_banner[]; extern const char linux_proc_banner[]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int printk_get_level(const char *buffer) { if (buffer[0] == '\001' && buffer[1]) { switch (buffer[1]) { case '0' ... '7': case 'c': return buffer[1]; } } return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *printk_skip_level(const char *buffer) { if (printk_get_level(buffer)) return buffer + 2; return buffer; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *printk_skip_headers(const char *buffer) { while (printk_get_level(buffer)) buffer = printk_skip_level(buffer); return buffer; } # 62 "../include/linux/printk.h" extern int console_printk[]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void console_silent(void) { (console_printk[0]) = 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void console_verbose(void) { if ((console_printk[0])) (console_printk[0]) = 15; } extern char devkmsg_log_str[]; struct ctl_table; extern int suppress_printk; struct va_format { const char *fmt; va_list *va; }; # 142 "../include/linux/printk.h" extern __attribute__((__format__(printf, 1, 2))) void early_printk(const char *fmt, ...); extern void printk_nmi_enter(void); extern void printk_nmi_exit(void); extern void printk_nmi_direct_enter(void); extern void printk_nmi_direct_exit(void); # 162 "../include/linux/printk.h" __attribute__((__format__(printf, 5, 0))) int vprintk_emit(int facility, int level, const char *dict, size_t dictlen, const char *fmt, va_list args); __attribute__((__format__(printf, 1, 0))) int vprintk(const char *fmt, va_list args); __attribute__((__format__(printf, 1, 2))) __attribute__((__cold__)) int printk(const char *fmt, ...); __attribute__((__format__(printf, 1, 2))) __attribute__((__cold__)) int printk_deferred(const char *fmt, ...); extern int __printk_ratelimit(const char *func); extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, unsigned int interval_msec); extern int printk_delay_msec; extern int dmesg_restrict; extern int devkmsg_sysctl_set_loglvl(struct ctl_table *table, int write, void *buf, size_t *lenp, loff_t *ppos); extern void wake_up_klogd(void); char *log_buf_addr_get(void); u32 log_buf_len_get(void); void log_buf_vmcoreinfo_setup(void); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) setup_log_buf(int early); __attribute__((__format__(printf, 1, 2))) void dump_stack_set_arch_desc(const char *fmt, ...); void dump_stack_print_info(const char *log_lvl); void show_regs_print_info(const char *log_lvl); extern void dump_stack(void) __attribute__((__cold__)); extern void printk_safe_init(void); extern void printk_safe_flush(void); extern void printk_safe_flush_on_panic(void); # 285 "../include/linux/printk.h" extern int kptr_restrict; # 332 "../include/linux/printk.h" # 1 "../include/linux/dynamic_debug.h" 1 # 1 "../include/linux/jump_label.h" 1 # 79 "../include/linux/jump_label.h" extern bool static_key_initialized; struct static_key { atomic_t enabled; # 102 "../include/linux/jump_label.h" union { unsigned long type; struct jump_entry *entries; struct static_key_mod *next; }; }; # 117 "../include/linux/jump_label.h" # 1 "../arch/x86/include/asm/jump_label.h" 1 # 23 "../arch/x86/include/asm/jump_label.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch_static_branch(struct static_key *key, bool branch) { asm goto("1:" ".byte " "0x0f,0x1f,0x44,0x00,0" "\n\t" ".pushsection __jump_table, \"aw\" \n\t" " " ".balign 8" " " "\n\t" ".long 1b - ., %l[l_yes] - . \n\t" " " ".quad" " " "%c0 + %c1 - .\n\t" ".popsection \n\t" : : "i" (key), "i" (branch) : : l_yes); # 34 "../arch/x86/include/asm/jump_label.h" return false; l_yes: return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch_static_branch_jump(struct static_key *key, bool branch) { asm goto("1:" ".byte 0xe9\n\t .long %l[l_yes] - 2f\n\t" "2:\n\t" ".pushsection __jump_table, \"aw\" \n\t" " " ".balign 8" " " "\n\t" ".long 1b - ., %l[l_yes] - . \n\t" " " ".quad" " " "%c0 + %c1 - .\n\t" ".popsection \n\t" : : "i" (key), "i" (branch) : : l_yes); # 51 "../arch/x86/include/asm/jump_label.h" return false; l_yes: return true; } # 118 "../include/linux/jump_label.h" 2 struct jump_entry { s32 code; s32 target; long key; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long jump_entry_code(const struct jump_entry *entry) { return (unsigned long)&entry->code + entry->code; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long jump_entry_target(const struct jump_entry *entry) { return (unsigned long)&entry->target + entry->target; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct static_key *jump_entry_key(const struct jump_entry *entry) { long offset = entry->key & ~3L; return (struct static_key *)((unsigned long)&entry->key + offset); } # 164 "../include/linux/jump_label.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool jump_entry_is_branch(const struct jump_entry *entry) { return (unsigned long)entry->key & 1UL; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool jump_entry_is_init(const struct jump_entry *entry) { return (unsigned long)entry->key & 2UL; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void jump_entry_set_init(struct jump_entry *entry) { entry->key |= 2; } enum jump_label_type { JUMP_LABEL_NOP = 0, JUMP_LABEL_JMP, }; struct module; # 198 "../include/linux/jump_label.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool static_key_false(struct static_key *key) { return arch_static_branch(key, false); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool static_key_true(struct static_key *key) { return !arch_static_branch(key, true); } extern struct jump_entry __start___jump_table[]; extern struct jump_entry __stop___jump_table[]; extern void jump_label_init(void); extern void jump_label_lock(void); extern void jump_label_unlock(void); extern void arch_jump_label_transform(struct jump_entry *entry, enum jump_label_type type); extern void arch_jump_label_transform_static(struct jump_entry *entry, enum jump_label_type type); extern bool arch_jump_label_transform_queue(struct jump_entry *entry, enum jump_label_type type); extern void arch_jump_label_transform_apply(void); extern int jump_label_text_reserved(void *start, void *end); extern void static_key_slow_inc(struct static_key *key); extern void static_key_slow_dec(struct static_key *key); extern void static_key_slow_inc_cpuslocked(struct static_key *key); extern void static_key_slow_dec_cpuslocked(struct static_key *key); extern void jump_label_apply_nops(struct module *mod); extern int static_key_count(struct static_key *key); extern void static_key_enable(struct static_key *key); extern void static_key_disable(struct static_key *key); extern void static_key_enable_cpuslocked(struct static_key *key); extern void static_key_disable_cpuslocked(struct static_key *key); # 346 "../include/linux/jump_label.h" struct static_key_true { struct static_key key; }; struct static_key_false { struct static_key key; }; # 385 "../include/linux/jump_label.h" extern bool ____wrong_branch_error(void); # 7 "../include/linux/dynamic_debug.h" 2 struct _ddebug { const char *modname; const char *function; const char *filename; const char *format; unsigned int lineno:18; # 40 "../include/linux/dynamic_debug.h" unsigned int flags:8; union { struct static_key_true dd_key_true; struct static_key_false dd_key_false; } key; } __attribute__((aligned(8))); int ddebug_add_module(struct _ddebug *tab, unsigned int n, const char *modname); extern int ddebug_remove_module(const char *mod_name); extern __attribute__((__format__(printf, 2, 3))) void __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...); extern int ddebug_dyndbg_module_param_cb(char *param, char *val, const char *modname); struct device; extern __attribute__((__format__(printf, 3, 4))) void __dynamic_dev_dbg(struct _ddebug *descriptor, const struct device *dev, const char *fmt, ...); struct net_device; extern __attribute__((__format__(printf, 3, 4))) void __dynamic_netdev_dbg(struct _ddebug *descriptor, const struct net_device *dev, const char *fmt, ...); struct ib_device; extern __attribute__((__format__(printf, 3, 4))) void __dynamic_ibdev_dbg(struct _ddebug *descriptor, const struct ib_device *ibdev, const char *fmt, ...); # 333 "../include/linux/printk.h" 2 # 477 "../include/linux/printk.h" extern const struct file_operations kmsg_fops; enum { DUMP_PREFIX_NONE, DUMP_PREFIX_ADDRESS, DUMP_PREFIX_OFFSET }; extern int hex_dump_to_buffer(const void *buf, size_t len, int rowsize, int groupsize, char *linebuf, size_t linebuflen, bool ascii); extern void print_hex_dump(const char *level, const char *prefix_str, int prefix_type, int rowsize, int groupsize, const void *buf, size_t len, bool ascii); # 16 "../include/linux/kernel.h" 2 # 1 "../include/linux/build_bug.h" 1 # 17 "../include/linux/kernel.h" 2 # 1 "../arch/x86/include/asm/div64.h" 1 # 75 "../arch/x86/include/asm/div64.h" # 1 "../include/asm-generic/div64.h" 1 # 76 "../arch/x86/include/asm/div64.h" 2 # 19 "../include/linux/kernel.h" 2 # 200 "../include/linux/kernel.h" struct completion; struct pt_regs; struct user; # 212 "../include/linux/kernel.h" extern void ___might_sleep(const char *file, int line, int preempt_offset); extern void __might_sleep(const char *file, int line, int preempt_offset); extern void __cant_sleep(const char *file, int line, int preempt_offset); # 285 "../include/linux/kernel.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 reciprocal_scale(u32 val, u32 ep_ro) { return (u32)(((u64) val * ep_ro) >> 32); } void __might_fault(const char *file, int line); extern struct atomic_notifier_head panic_notifier_list; extern long (*panic_blink)(int state); __attribute__((__format__(printf, 1, 2))) void panic(const char *fmt, ...) __attribute__((__noreturn__)) __attribute__((__cold__)); void nmi_panic(struct pt_regs *regs, const char *msg); extern void oops_enter(void); extern void oops_exit(void); void print_oops_end_marker(void); extern int oops_may_print(void); void do_exit(long error_code) __attribute__((__noreturn__)); void complete_and_exit(struct completion *, long) __attribute__((__noreturn__)); void refcount_error_report(struct pt_regs *regs, const char *err); int __attribute__((__warn_unused_result__)) _kstrtoul(const char *s, unsigned int base, unsigned long *res); int __attribute__((__warn_unused_result__)) _kstrtol(const char *s, unsigned int base, long *res); int __attribute__((__warn_unused_result__)) kstrtoull(const char *s, unsigned int base, unsigned long long *res); int __attribute__((__warn_unused_result__)) kstrtoll(const char *s, unsigned int base, long long *res); # 340 "../include/linux/kernel.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) kstrtoul(const char *s, unsigned int base, unsigned long *res) { if (sizeof(unsigned long) == sizeof(unsigned long long) && __alignof__(unsigned long) == __alignof__(unsigned long long)) return kstrtoull(s, base, (unsigned long long *)res); else return _kstrtoul(s, base, res); } # 369 "../include/linux/kernel.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) kstrtol(const char *s, unsigned int base, long *res) { if (sizeof(long) == sizeof(long long) && __alignof__(long) == __alignof__(long long)) return kstrtoll(s, base, (long long *)res); else return _kstrtol(s, base, res); } int __attribute__((__warn_unused_result__)) kstrtouint(const char *s, unsigned int base, unsigned int *res); int __attribute__((__warn_unused_result__)) kstrtoint(const char *s, unsigned int base, int *res); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) kstrtou64(const char *s, unsigned int base, u64 *res) { return kstrtoull(s, base, res); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) kstrtos64(const char *s, unsigned int base, s64 *res) { return kstrtoll(s, base, res); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) kstrtou32(const char *s, unsigned int base, u32 *res) { return kstrtouint(s, base, res); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) kstrtos32(const char *s, unsigned int base, s32 *res) { return kstrtoint(s, base, res); } int __attribute__((__warn_unused_result__)) kstrtou16(const char *s, unsigned int base, u16 *res); int __attribute__((__warn_unused_result__)) kstrtos16(const char *s, unsigned int base, s16 *res); int __attribute__((__warn_unused_result__)) kstrtou8(const char *s, unsigned int base, u8 *res); int __attribute__((__warn_unused_result__)) kstrtos8(const char *s, unsigned int base, s8 *res); int __attribute__((__warn_unused_result__)) kstrtobool(const char *s, bool *res); int __attribute__((__warn_unused_result__)) kstrtoull_from_user(const char *s, size_t count, unsigned int base, unsigned long long *res); int __attribute__((__warn_unused_result__)) kstrtoll_from_user(const char *s, size_t count, unsigned int base, long long *res); int __attribute__((__warn_unused_result__)) kstrtoul_from_user(const char *s, size_t count, unsigned int base, unsigned long *res); int __attribute__((__warn_unused_result__)) kstrtol_from_user(const char *s, size_t count, unsigned int base, long *res); int __attribute__((__warn_unused_result__)) kstrtouint_from_user(const char *s, size_t count, unsigned int base, unsigned int *res); int __attribute__((__warn_unused_result__)) kstrtoint_from_user(const char *s, size_t count, unsigned int base, int *res); int __attribute__((__warn_unused_result__)) kstrtou16_from_user(const char *s, size_t count, unsigned int base, u16 *res); int __attribute__((__warn_unused_result__)) kstrtos16_from_user(const char *s, size_t count, unsigned int base, s16 *res); int __attribute__((__warn_unused_result__)) kstrtou8_from_user(const char *s, size_t count, unsigned int base, u8 *res); int __attribute__((__warn_unused_result__)) kstrtos8_from_user(const char *s, size_t count, unsigned int base, s8 *res); int __attribute__((__warn_unused_result__)) kstrtobool_from_user(const char *s, size_t count, bool *res); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) kstrtou64_from_user(const char *s, size_t count, unsigned int base, u64 *res) { return kstrtoull_from_user(s, count, base, res); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) kstrtos64_from_user(const char *s, size_t count, unsigned int base, s64 *res) { return kstrtoll_from_user(s, count, base, res); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) kstrtou32_from_user(const char *s, size_t count, unsigned int base, u32 *res) { return kstrtouint_from_user(s, count, base, res); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) kstrtos32_from_user(const char *s, size_t count, unsigned int base, s32 *res) { return kstrtoint_from_user(s, count, base, res); } extern unsigned long simple_strtoul(const char *,char **,unsigned int); extern long simple_strtol(const char *,char **,unsigned int); extern unsigned long long simple_strtoull(const char *,char **,unsigned int); extern long long simple_strtoll(const char *,char **,unsigned int); extern int num_to_str(char *buf, int size, unsigned long long num, unsigned int width); extern __attribute__((__format__(printf, 2, 3))) int sprintf(char *buf, const char * fmt, ...); extern __attribute__((__format__(printf, 2, 0))) int vsprintf(char *buf, const char *, va_list); extern __attribute__((__format__(printf, 3, 4))) int snprintf(char *buf, size_t size, const char *fmt, ...); extern __attribute__((__format__(printf, 3, 0))) int vsnprintf(char *buf, size_t size, const char *fmt, va_list args); extern __attribute__((__format__(printf, 3, 4))) int scnprintf(char *buf, size_t size, const char *fmt, ...); extern __attribute__((__format__(printf, 3, 0))) int vscnprintf(char *buf, size_t size, const char *fmt, va_list args); extern __attribute__((__format__(printf, 2, 3))) __attribute__((__malloc__)) char *kasprintf(gfp_t gfp, const char *fmt, ...); extern __attribute__((__format__(printf, 2, 0))) __attribute__((__malloc__)) char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); extern __attribute__((__format__(printf, 2, 0))) const char *kvasprintf_const(gfp_t gfp, const char *fmt, va_list args); extern __attribute__((__format__(scanf, 2, 3))) int sscanf(const char *, const char *, ...); extern __attribute__((__format__(scanf, 2, 0))) int vsscanf(const char *, const char *, va_list); extern int get_option(char **str, int *pint); extern char *get_options(const char *str, int nints, int *ints); extern unsigned long long memparse(const char *ptr, char **retptr); extern bool parse_option_str(const char *str, const char *option); extern char *next_arg(char *args, char **param, char **val); extern int core_kernel_text(unsigned long addr); extern int init_kernel_text(unsigned long addr); extern int core_kernel_data(unsigned long addr); extern int __kernel_text_address(unsigned long addr); extern int kernel_text_address(unsigned long addr); extern int func_ptr_is_kernel_text(void *ptr); u64 int_pow(u64 base, unsigned int exp); unsigned long int_sqrt(unsigned long); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 int_sqrt64(u64 x) { return (u32)int_sqrt(x); } extern void bust_spinlocks(int yes); extern int oops_in_progress; extern int panic_timeout; extern unsigned long panic_print; extern int panic_on_oops; extern int panic_on_unrecovered_nmi; extern int panic_on_io_nmi; extern int panic_on_warn; extern int sysctl_panic_on_rcu_stall; extern int sysctl_panic_on_stackoverflow; extern bool crash_kexec_post_notifiers; extern atomic_t panic_cpu; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_arch_panic_timeout(int timeout, int arch_default_timeout) { if (panic_timeout == arch_default_timeout) panic_timeout = timeout; } extern const char *print_tainted(void); enum lockdep_ok { LOCKDEP_STILL_OK, LOCKDEP_NOW_UNRELIABLE }; extern void add_taint(unsigned flag, enum lockdep_ok); extern int test_taint(unsigned flag); extern unsigned long get_taint(void); extern int root_mountflags; extern bool early_boot_irqs_disabled; extern enum system_states { SYSTEM_BOOTING, SYSTEM_SCHEDULING, SYSTEM_RUNNING, SYSTEM_HALT, SYSTEM_POWER_OFF, SYSTEM_RESTART, SYSTEM_SUSPEND, } system_state; # 579 "../include/linux/kernel.h" struct taint_flag { char c_true; char c_false; bool module; }; extern const struct taint_flag taint_flags[18]; extern const char hex_asc[]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) char *hex_byte_pack(char *buf, u8 byte) { *buf++ = hex_asc[((byte) & 0xf0) >> 4]; *buf++ = hex_asc[((byte) & 0x0f)]; return buf; } extern const char hex_asc_upper[]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) char *hex_byte_pack_upper(char *buf, u8 byte) { *buf++ = hex_asc_upper[((byte) & 0xf0) >> 4]; *buf++ = hex_asc_upper[((byte) & 0x0f)]; return buf; } extern int hex_to_bin(char ch); extern int __attribute__((__warn_unused_result__)) hex2bin(u8 *dst, const char *src, size_t count); extern char *bin2hex(char *dst, const void *src, size_t count); bool mac_pton(const char *s, u8 *mac); # 635 "../include/linux/kernel.h" enum ftrace_dump_mode { DUMP_NONE, DUMP_ALL, DUMP_ORIG, }; void tracing_on(void); void tracing_off(void); int tracing_is_on(void); void tracing_snapshot(void); void tracing_snapshot_alloc(void); extern void tracing_start(void); extern void tracing_stop(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__format__(printf, 1, 2))) void ____trace_printk_check_format(const char *fmt, ...) { } # 714 "../include/linux/kernel.h" extern __attribute__((__format__(printf, 2, 3))) int __trace_bprintk(unsigned long ip, const char *fmt, ...); extern __attribute__((__format__(printf, 2, 3))) int __trace_printk(unsigned long ip, const char *fmt, ...); # 755 "../include/linux/kernel.h" extern int __trace_bputs(unsigned long ip, const char *str); extern int __trace_puts(unsigned long ip, const char *str, int size); extern void trace_dump_stack(int skip); # 777 "../include/linux/kernel.h" extern __attribute__((__format__(printf, 2, 0))) int __ftrace_vbprintk(unsigned long ip, const char *fmt, va_list ap); extern __attribute__((__format__(printf, 2, 0))) int __ftrace_vprintk(unsigned long ip, const char *fmt, va_list ap); extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode); # 10 "../include/linux/list.h" 2 # 26 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void INIT_LIST_HEAD(struct list_head *list) { ({ union { typeof(list->next) __val; char __c[1]; } __u = { .__val = ( typeof(list->next)) (list) }; __write_once_size(&(list->next), __u.__c, sizeof(list->next)); __u.__val; }); list->prev = list; } extern bool __list_add_valid(struct list_head *new, struct list_head *prev, struct list_head *next); extern bool __list_del_entry_valid(struct list_head *entry); # 56 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next) { if (!__list_add_valid(new, prev, next)) return; next->prev = new; new->next = next; new->prev = prev; ({ union { typeof(prev->next) __val; char __c[1]; } __u = { .__val = ( typeof(prev->next)) (new) }; __write_once_size(&(prev->next), __u.__c, sizeof(prev->next)); __u.__val; }); } # 77 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_add(struct list_head *new, struct list_head *head) { __list_add(new, head, head->next); } # 91 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_add_tail(struct list_head *new, struct list_head *head) { __list_add(new, head->prev, head); } # 103 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __list_del(struct list_head * prev, struct list_head * next) { next->prev = prev; ({ union { typeof(prev->next) __val; char __c[1]; } __u = { .__val = ( typeof(prev->next)) (next) }; __write_once_size(&(prev->next), __u.__c, sizeof(prev->next)); __u.__val; }); } # 117 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __list_del_clearprev(struct list_head *entry) { __list_del(entry->prev, entry->next); entry->prev = ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __list_del_entry(struct list_head *entry) { if (!__list_del_entry_valid(entry)) return; __list_del(entry->prev, entry->next); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_del(struct list_head *entry) { __list_del_entry(entry); entry->next = ((void *) 0x100 + (0xdead000000000000UL)); entry->prev = ((void *) 0x122 + (0xdead000000000000UL)); } # 151 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_replace(struct list_head *old, struct list_head *new) { new->next = old->next; new->next->prev = new; new->prev = old->prev; new->prev->next = new; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_replace_init(struct list_head *old, struct list_head *new) { list_replace(old, new); INIT_LIST_HEAD(old); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_swap(struct list_head *entry1, struct list_head *entry2) { struct list_head *pos = entry2->prev; list_del(entry2); list_replace(entry1, entry2); if (pos == entry1) pos = entry2; list_add(entry1, pos); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_del_init(struct list_head *entry) { __list_del_entry(entry); INIT_LIST_HEAD(entry); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_move(struct list_head *list, struct list_head *head) { __list_del_entry(list); list_add(list, head); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_move_tail(struct list_head *list, struct list_head *head) { __list_del_entry(list); list_add_tail(list, head); } # 226 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_bulk_move_tail(struct list_head *head, struct list_head *first, struct list_head *last) { first->prev->next = last->next; last->next->prev = first->prev; head->prev->next = first; first->prev = head->prev; last->next = head; head->prev = last; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int list_is_first(const struct list_head *list, const struct list_head *head) { return list->prev == head; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int list_is_last(const struct list_head *list, const struct list_head *head) { return list->next == head; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int list_empty(const struct list_head *head) { return ({ union { typeof(head->next) __val; char __c[1]; } __u; if (1) __read_once_size(&(head->next), __u.__c, sizeof(head->next)); else __read_once_size_nocheck(&(head->next), __u.__c, sizeof(head->next)); do { } while (0); __u.__val; }) == head; } # 284 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int list_empty_careful(const struct list_head *head) { struct list_head *next = head->next; return (next == head) && (next == head->prev); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_rotate_left(struct list_head *head) { struct list_head *first; if (!list_empty(head)) { first = head->next; list_move_tail(first, head); } } # 311 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_rotate_to_front(struct list_head *list, struct list_head *head) { list_move_tail(head, list); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int list_is_singular(const struct list_head *head) { return !list_empty(head) && (head->next == head->prev); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __list_cut_position(struct list_head *list, struct list_head *head, struct list_head *entry) { struct list_head *new_first = entry->next; list->next = head->next; list->next->prev = list; list->prev = entry; entry->next = list; head->next = new_first; new_first->prev = head; } # 357 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_cut_position(struct list_head *list, struct list_head *head, struct list_head *entry) { if (list_empty(head)) return; if (list_is_singular(head) && (head->next != entry && head != entry)) return; if (entry == head) INIT_LIST_HEAD(list); else __list_cut_position(list, head, entry); } # 385 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_cut_before(struct list_head *list, struct list_head *head, struct list_head *entry) { if (head->next == entry) { INIT_LIST_HEAD(list); return; } list->next = head->next; list->next->prev = list; list->prev = entry->prev; list->prev->next = list; head->next = entry; entry->prev = head; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __list_splice(const struct list_head *list, struct list_head *prev, struct list_head *next) { struct list_head *first = list->next; struct list_head *last = list->prev; first->prev = prev; prev->next = first; last->next = next; next->prev = last; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_splice(const struct list_head *list, struct list_head *head) { if (!list_empty(list)) __list_splice(list, head, head->next); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_splice_tail(struct list_head *list, struct list_head *head) { if (!list_empty(list)) __list_splice(list, head->prev, head); } # 446 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_splice_init(struct list_head *list, struct list_head *head) { if (!list_empty(list)) { __list_splice(list, head, head->next); INIT_LIST_HEAD(list); } } # 463 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_splice_tail_init(struct list_head *list, struct list_head *head) { if (!list_empty(list)) { __list_splice(list, head->prev, head); INIT_LIST_HEAD(list); } } # 741 "../include/linux/list.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void INIT_HLIST_NODE(struct hlist_node *h) { h->next = ((void *)0); h->pprev = ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int hlist_unhashed(const struct hlist_node *h) { return !h->pprev; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int hlist_empty(const struct hlist_head *h) { return !({ union { typeof(h->first) __val; char __c[1]; } __u; if (1) __read_once_size(&(h->first), __u.__c, sizeof(h->first)); else __read_once_size_nocheck(&(h->first), __u.__c, sizeof(h->first)); do { } while (0); __u.__val; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __hlist_del(struct hlist_node *n) { struct hlist_node *next = n->next; struct hlist_node **pprev = n->pprev; ({ union { typeof(*pprev) __val; char __c[1]; } __u = { .__val = ( typeof(*pprev)) (next) }; __write_once_size(&(*pprev), __u.__c, sizeof(*pprev)); __u.__val; }); if (next) next->pprev = pprev; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_del(struct hlist_node *n) { __hlist_del(n); n->next = ((void *) 0x100 + (0xdead000000000000UL)); n->pprev = ((void *) 0x122 + (0xdead000000000000UL)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_del_init(struct hlist_node *n) { if (!hlist_unhashed(n)) { __hlist_del(n); INIT_HLIST_NODE(n); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_add_head(struct hlist_node *n, struct hlist_head *h) { struct hlist_node *first = h->first; n->next = first; if (first) first->pprev = &n->next; ({ union { typeof(h->first) __val; char __c[1]; } __u = { .__val = ( typeof(h->first)) (n) }; __write_once_size(&(h->first), __u.__c, sizeof(h->first)); __u.__val; }); n->pprev = &h->first; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_add_before(struct hlist_node *n, struct hlist_node *next) { n->pprev = next->pprev; n->next = next; next->pprev = &n->next; ({ union { typeof(*(n->pprev)) __val; char __c[1]; } __u = { .__val = ( typeof(*(n->pprev))) (n) }; __write_once_size(&(*(n->pprev)), __u.__c, sizeof(*(n->pprev))); __u.__val; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_add_behind(struct hlist_node *n, struct hlist_node *prev) { n->next = prev->next; prev->next = n; n->pprev = &prev->next; if (n->next) n->next->pprev = &n->next; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_add_fake(struct hlist_node *n) { n->pprev = &n->next; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool hlist_fake(struct hlist_node *h) { return h->pprev == &h->next; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool hlist_is_singular_node(struct hlist_node *n, struct hlist_head *h) { return !n->next && n->pprev == &h->first; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_move_list(struct hlist_head *old, struct hlist_head *new) { new->first = old->first; if (new->first) new->first->pprev = &new->first; old->first = ((void *)0); } # 20 "../include/linux/kobject.h" 2 # 1 "../include/linux/sysfs.h" 1 # 16 "../include/linux/sysfs.h" # 1 "../include/linux/kernfs.h" 1 # 10 "../include/linux/kernfs.h" # 1 "../include/linux/err.h" 1 # 1 "../arch/x86/include/uapi/asm/errno.h" 1 # 1 "../include/uapi/asm-generic/errno.h" 1 # 1 "../include/uapi/asm-generic/errno-base.h" 1 # 6 "../include/uapi/asm-generic/errno.h" 2 # 2 "../arch/x86/include/uapi/asm/errno.h" 2 # 9 "../include/linux/err.h" 2 # 24 "../include/linux/err.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void * __attribute__((__warn_unused_result__)) ERR_PTR(long error) { return (void *) error; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long __attribute__((__warn_unused_result__)) PTR_ERR( const void *ptr) { return (long) ptr; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __attribute__((__warn_unused_result__)) IS_ERR( const void *ptr) { return __builtin_expect(!!((unsigned long)(void *)((unsigned long)ptr) >= (unsigned long)-4095), 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __attribute__((__warn_unused_result__)) IS_ERR_OR_NULL( const void *ptr) { return __builtin_expect(!!(!ptr), 0) || __builtin_expect(!!((unsigned long)(void *)((unsigned long)ptr) >= (unsigned long)-4095), 0); } # 51 "../include/linux/err.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void * __attribute__((__warn_unused_result__)) ERR_CAST( const void *ptr) { return (void *) ptr; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) PTR_ERR_OR_ZERO( const void *ptr) { if (IS_ERR(ptr)) return PTR_ERR(ptr); else return 0; } # 11 "../include/linux/kernfs.h" 2 # 1 "../include/linux/mutex.h" 1 # 14 "../include/linux/mutex.h" # 1 "../arch/x86/include/asm/current.h" 1 # 1 "../arch/x86/include/asm/percpu.h" 1 # 88 "../arch/x86/include/asm/percpu.h" extern void __bad_percpu_size(void); # 524 "../arch/x86/include/asm/percpu.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool x86_this_cpu_constant_test_bit(unsigned int nr, const unsigned long *addr) { unsigned long *a = (unsigned long *)addr + nr / 64; return ((1UL << (nr % 64)) & ({ typeof(*a) pfo_ret__; switch (sizeof(*a)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (*a)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (*a)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (*a)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (*a)); break; default: __bad_percpu_size(); } pfo_ret__; })) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool x86_this_cpu_variable_test_bit(int nr, const unsigned long *addr) { bool oldbit; asm volatile("btl ""%%""gs"":" "%" "2"",%1" "\n\t/* output condition code " "c" "*/\n" : "=@cc" "c" (oldbit) : "m" (*(unsigned long *)addr), "Ir" (nr)); return oldbit; } # 1 "../include/asm-generic/percpu.h" 1 # 1 "../include/linux/threads.h" 1 # 7 "../include/asm-generic/percpu.h" 2 # 1 "../include/linux/percpu-defs.h" 1 # 309 "../include/linux/percpu-defs.h" extern void __bad_size_call_parameter(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __this_cpu_preempt_check(const char *op) { } # 8 "../include/asm-generic/percpu.h" 2 # 19 "../include/asm-generic/percpu.h" extern unsigned long __per_cpu_offset[8192]; # 48 "../include/asm-generic/percpu.h" extern void setup_per_cpu_areas(void); # 557 "../arch/x86/include/asm/percpu.h" 2 extern __attribute__((section(".discard"), unused)) char __pcpu_scope_this_cpu_off; extern __attribute__((section(".data..percpu" "..read_mostly"))) __typeof__(unsigned long) this_cpu_off; # 7 "../arch/x86/include/asm/current.h" 2 struct task_struct; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_current_task; extern __attribute__((section(".data..percpu" ""))) __typeof__(struct task_struct *) current_task; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) struct task_struct *get_current(void) { return ({ typeof(current_task) pfo_ret__; switch (sizeof(current_task)) { case 1: asm("mov" "b ""%%""gs"":" "%" "P1"",%0" : "=q" (pfo_ret__) : "p" (&(current_task))); break; case 2: asm("mov" "w ""%%""gs"":" "%" "P1"",%0" : "=r" (pfo_ret__) : "p" (&(current_task))); break; case 4: asm("mov" "l ""%%""gs"":" "%" "P1"",%0" : "=r" (pfo_ret__) : "p" (&(current_task))); break; case 8: asm("mov" "q ""%%""gs"":" "%" "P1"",%0" : "=r" (pfo_ret__) : "p" (&(current_task))); break; default: __bad_percpu_size(); } pfo_ret__; }); } # 15 "../include/linux/mutex.h" 2 # 1 "../include/linux/spinlock_types.h" 1 # 13 "../include/linux/spinlock_types.h" # 1 "../arch/x86/include/asm/spinlock_types.h" 1 # 19 "../arch/x86/include/asm/spinlock_types.h" typedef u16 __ticket_t; typedef u32 __ticketpair_t; # 1 "../include/asm-generic/qspinlock_types.h" 1 # 22 "../include/asm-generic/qspinlock_types.h" typedef struct qspinlock { union { atomic_t val; struct { u8 locked; u8 pending; }; struct { u16 locked_pending; u16 tail; }; # 51 "../include/asm-generic/qspinlock_types.h" }; } arch_spinlock_t; # 28 "../arch/x86/include/asm/spinlock_types.h" 2 # 1 "../include/asm-generic/qrwlock_types.h" 1 # 1 "../arch/x86/include/asm/spinlock_types.h" 1 # 8 "../include/asm-generic/qrwlock_types.h" 2 typedef struct qrwlock { union { atomic_t cnts; struct { u8 wlocked; u8 __lstate[3]; }; }; arch_spinlock_t wait_lock; } arch_rwlock_t; # 30 "../arch/x86/include/asm/spinlock_types.h" 2 # 14 "../include/linux/spinlock_types.h" 2 # 1 "../include/linux/lockdep.h" 1 # 13 "../include/linux/lockdep.h" struct task_struct; struct lockdep_map; extern int prove_locking; extern int lock_stat; # 28 "../include/linux/lockdep.h" # 1 "../include/linux/debug_locks.h" 1 # 1 "../include/linux/atomic.h" 1 # 1 "../arch/x86/include/asm/atomic.h" 1 # 1 "../arch/x86/include/asm/cmpxchg.h" 1 # 13 "../arch/x86/include/asm/cmpxchg.h" extern void __xchg_wrong_size(void) ; extern void __cmpxchg_wrong_size(void) ; extern void __xadd_wrong_size(void) ; extern void __add_wrong_size(void) ; # 145 "../arch/x86/include/asm/cmpxchg.h" # 1 "../arch/x86/include/asm/cmpxchg_64.h" 1 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_64bit(volatile u64 *ptr, u64 val) { *ptr = val; } # 146 "../arch/x86/include/asm/cmpxchg.h" 2 # 9 "../arch/x86/include/asm/atomic.h" 2 # 25 "../arch/x86/include/asm/atomic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int arch_atomic_read(const atomic_t *v) { return ({ union { typeof((v)->counter) __val; char __c[1]; } __u; if (1) __read_once_size(&((v)->counter), __u.__c, sizeof((v)->counter)); else __read_once_size_nocheck(&((v)->counter), __u.__c, sizeof((v)->counter)); do { } while (0); __u.__val; }); } # 41 "../arch/x86/include/asm/atomic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch_atomic_set(atomic_t *v, int i) { ({ union { typeof(v->counter) __val; char __c[1]; } __u = { .__val = ( typeof(v->counter)) (i) }; __write_once_size(&(v->counter), __u.__c, sizeof(v->counter)); __u.__val; }); } # 53 "../arch/x86/include/asm/atomic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch_atomic_add(int i, atomic_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "addl %1,%0" : "+m" (v->counter) : "ir" (i) : "memory"); } # 67 "../arch/x86/include/asm/atomic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch_atomic_sub(int i, atomic_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "subl %1,%0" : "+m" (v->counter) : "ir" (i) : "memory"); } # 83 "../arch/x86/include/asm/atomic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch_atomic_sub_and_test(int i, atomic_t *v) { return ({ bool c; asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "subl" " %[val], " "%[var]" "\n\t/* output condition code " "e" "*/\n" : [var] "+m" (v->counter), "=@cc" "e" (c) : [val] "er" (i) : "memory"); c; }); } # 95 "../arch/x86/include/asm/atomic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch_atomic_inc(atomic_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "incl %0" : "+m" (v->counter) :: "memory"); } # 108 "../arch/x86/include/asm/atomic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch_atomic_dec(atomic_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "decl %0" : "+m" (v->counter) :: "memory"); } # 123 "../arch/x86/include/asm/atomic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch_atomic_dec_and_test(atomic_t *v) { return ({ bool c; asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "decl" " " "%[var]" "\n\t/* output condition code " "e" "*/\n" : [var] "+m" (v->counter), "=@cc" "e" (c) : : "memory"); c; }); } # 137 "../arch/x86/include/asm/atomic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch_atomic_inc_and_test(atomic_t *v) { return ({ bool c; asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "incl" " " "%[var]" "\n\t/* output condition code " "e" "*/\n" : [var] "+m" (v->counter), "=@cc" "e" (c) : : "memory"); c; }); } # 152 "../arch/x86/include/asm/atomic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch_atomic_add_negative(int i, atomic_t *v) { return ({ bool c; asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "addl" " %[val], " "%[var]" "\n\t/* output condition code " "s" "*/\n" : [var] "+m" (v->counter), "=@cc" "s" (c) : [val] "er" (i) : "memory"); c; }); } # 165 "../arch/x86/include/asm/atomic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int arch_atomic_add_return(int i, atomic_t *v) { return i + ({ __typeof__ (*(((&v->counter)))) __ret = (((i))); switch (sizeof(*(((&v->counter))))) { case 1: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "b %b0, %1\n" : "+q" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 2: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "w %w0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 4: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "l %0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 8: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "q %q0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; default: __xadd_wrong_size(); } __ret; }); } # 177 "../arch/x86/include/asm/atomic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int arch_atomic_sub_return(int i, atomic_t *v) { return arch_atomic_add_return(-i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int arch_atomic_fetch_add(int i, atomic_t *v) { return ({ __typeof__ (*(((&v->counter)))) __ret = (((i))); switch (sizeof(*(((&v->counter))))) { case 1: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "b %b0, %1\n" : "+q" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 2: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "w %w0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 4: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "l %0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 8: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "q %q0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; default: __xadd_wrong_size(); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int arch_atomic_fetch_sub(int i, atomic_t *v) { return ({ __typeof__ (*(((&v->counter)))) __ret = (((-i))); switch (sizeof(*(((&v->counter))))) { case 1: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "b %b0, %1\n" : "+q" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 2: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "w %w0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 4: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "l %0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 8: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "q %q0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; default: __xadd_wrong_size(); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int arch_atomic_cmpxchg(atomic_t *v, int old, int new) { return ({ __typeof__(*((&v->counter))) __ret; __typeof__(*((&v->counter))) __old = ((old)); __typeof__(*((&v->counter))) __new = ((new)); switch ((sizeof(*(&v->counter)))) { case 1: { volatile u8 *__ptr = (volatile u8 *)((&v->counter)); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgb %2,%1" : "=a" (__ret), "+m" (*__ptr) : "q" (__new), "0" (__old) : "memory"); break; } case 2: { volatile u16 *__ptr = (volatile u16 *)((&v->counter)); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgw %2,%1" : "=a" (__ret), "+m" (*__ptr) : "r" (__new), "0" (__old) : "memory"); break; } case 4: { volatile u32 *__ptr = (volatile u32 *)((&v->counter)); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgl %2,%1" : "=a" (__ret), "+m" (*__ptr) : "r" (__new), "0" (__old) : "memory"); break; } case 8: { volatile u64 *__ptr = (volatile u64 *)((&v->counter)); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgq %2,%1" : "=a" (__ret), "+m" (*__ptr) : "r" (__new), "0" (__old) : "memory"); break; } default: __cmpxchg_wrong_size(); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch_atomic_try_cmpxchg(atomic_t *v, int *old, int new) { return ({ bool success; __typeof__(((&v->counter))) _old = (__typeof__(((&v->counter))))(((old))); __typeof__(*(((&v->counter)))) __old = *_old; __typeof__(*(((&v->counter)))) __new = (((new))); switch ((sizeof(*(&v->counter)))) { case 1: { volatile u8 *__ptr = (volatile u8 *)(((&v->counter))); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgb %[new], %[ptr]" "\n\t/* output condition code " "z" "*/\n" : "=@cc" "z" (success), [ptr] "+m" (*__ptr), [old] "+a" (__old) : [new] "q" (__new) : "memory"); break; } case 2: { volatile u16 *__ptr = (volatile u16 *)(((&v->counter))); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgw %[new], %[ptr]" "\n\t/* output condition code " "z" "*/\n" : "=@cc" "z" (success), [ptr] "+m" (*__ptr), [old] "+a" (__old) : [new] "r" (__new) : "memory"); break; } case 4: { volatile u32 *__ptr = (volatile u32 *)(((&v->counter))); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgl %[new], %[ptr]" "\n\t/* output condition code " "z" "*/\n" : "=@cc" "z" (success), [ptr] "+m" (*__ptr), [old] "+a" (__old) : [new] "r" (__new) : "memory"); break; } case 8: { volatile u64 *__ptr = (volatile u64 *)(((&v->counter))); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgq %[new], %[ptr]" "\n\t/* output condition code " "z" "*/\n" : "=@cc" "z" (success), [ptr] "+m" (*__ptr), [old] "+a" (__old) : [new] "r" (__new) : "memory"); break; } default: __cmpxchg_wrong_size(); } if (__builtin_expect(!!(!success), 0)) *_old = __old; __builtin_expect(!!(success), 1); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int arch_atomic_xchg(atomic_t *v, int new) { return ({ __typeof__ (*((&v->counter))) __ret = ((new)); switch (sizeof(*((&v->counter)))) { case 1: asm volatile ("" "xchg" "b %b0, %1\n" : "+q" (__ret), "+m" (*((&v->counter))) : : "memory", "cc"); break; case 2: asm volatile ("" "xchg" "w %w0, %1\n" : "+r" (__ret), "+m" (*((&v->counter))) : : "memory", "cc"); break; case 4: asm volatile ("" "xchg" "l %0, %1\n" : "+r" (__ret), "+m" (*((&v->counter))) : : "memory", "cc"); break; case 8: asm volatile ("" "xchg" "q %q0, %1\n" : "+r" (__ret), "+m" (*((&v->counter))) : : "memory", "cc"); break; default: __xchg_wrong_size(); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_atomic_and(int i, atomic_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "andl %1,%0" : "+m" (v->counter) : "ir" (i) : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int arch_atomic_fetch_and(int i, atomic_t *v) { int val = arch_atomic_read(v); do { } while (!arch_atomic_try_cmpxchg(v, &val, val & i)); return val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_atomic_or(int i, atomic_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "orl %1,%0" : "+m" (v->counter) : "ir" (i) : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int arch_atomic_fetch_or(int i, atomic_t *v) { int val = arch_atomic_read(v); do { } while (!arch_atomic_try_cmpxchg(v, &val, val | i)); return val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_atomic_xor(int i, atomic_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xorl %1,%0" : "+m" (v->counter) : "ir" (i) : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int arch_atomic_fetch_xor(int i, atomic_t *v) { int val = arch_atomic_read(v); do { } while (!arch_atomic_try_cmpxchg(v, &val, val ^ i)); return val; } # 1 "../arch/x86/include/asm/atomic64_64.h" 1 # 20 "../arch/x86/include/asm/atomic64_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 arch_atomic64_read(const atomic64_t *v) { return ({ union { typeof((v)->counter) __val; char __c[1]; } __u; if (1) __read_once_size(&((v)->counter), __u.__c, sizeof((v)->counter)); else __read_once_size_nocheck(&((v)->counter), __u.__c, sizeof((v)->counter)); do { } while (0); __u.__val; }); } # 32 "../arch/x86/include/asm/atomic64_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_atomic64_set(atomic64_t *v, s64 i) { ({ union { typeof(v->counter) __val; char __c[1]; } __u = { .__val = ( typeof(v->counter)) (i) }; __write_once_size(&(v->counter), __u.__c, sizeof(v->counter)); __u.__val; }); } # 44 "../arch/x86/include/asm/atomic64_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch_atomic64_add(s64 i, atomic64_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "addq %1,%0" : "=m" (v->counter) : "er" (i), "m" (v->counter) : "memory"); } # 58 "../arch/x86/include/asm/atomic64_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_atomic64_sub(s64 i, atomic64_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "subq %1,%0" : "=m" (v->counter) : "er" (i), "m" (v->counter) : "memory"); } # 74 "../arch/x86/include/asm/atomic64_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool arch_atomic64_sub_and_test(s64 i, atomic64_t *v) { return ({ bool c; asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "subq" " %[val], " "%[var]" "\n\t/* output condition code " "e" "*/\n" : [var] "+m" (v->counter), "=@cc" "e" (c) : [val] "er" (i) : "memory"); c; }); } # 86 "../arch/x86/include/asm/atomic64_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch_atomic64_inc(atomic64_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "incq %0" : "=m" (v->counter) : "m" (v->counter) : "memory"); } # 100 "../arch/x86/include/asm/atomic64_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void arch_atomic64_dec(atomic64_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "decq %0" : "=m" (v->counter) : "m" (v->counter) : "memory"); } # 116 "../arch/x86/include/asm/atomic64_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool arch_atomic64_dec_and_test(atomic64_t *v) { return ({ bool c; asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "decq" " " "%[var]" "\n\t/* output condition code " "e" "*/\n" : [var] "+m" (v->counter), "=@cc" "e" (c) : : "memory"); c; }); } # 130 "../arch/x86/include/asm/atomic64_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool arch_atomic64_inc_and_test(atomic64_t *v) { return ({ bool c; asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "incq" " " "%[var]" "\n\t/* output condition code " "e" "*/\n" : [var] "+m" (v->counter), "=@cc" "e" (c) : : "memory"); c; }); } # 145 "../arch/x86/include/asm/atomic64_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool arch_atomic64_add_negative(s64 i, atomic64_t *v) { return ({ bool c; asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "addq" " %[val], " "%[var]" "\n\t/* output condition code " "s" "*/\n" : [var] "+m" (v->counter), "=@cc" "s" (c) : [val] "er" (i) : "memory"); c; }); } # 158 "../arch/x86/include/asm/atomic64_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) s64 arch_atomic64_add_return(s64 i, atomic64_t *v) { return i + ({ __typeof__ (*(((&v->counter)))) __ret = (((i))); switch (sizeof(*(((&v->counter))))) { case 1: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "b %b0, %1\n" : "+q" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 2: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "w %w0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 4: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "l %0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 8: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "q %q0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; default: __xadd_wrong_size(); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 arch_atomic64_sub_return(s64 i, atomic64_t *v) { return arch_atomic64_add_return(-i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 arch_atomic64_fetch_add(s64 i, atomic64_t *v) { return ({ __typeof__ (*(((&v->counter)))) __ret = (((i))); switch (sizeof(*(((&v->counter))))) { case 1: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "b %b0, %1\n" : "+q" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 2: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "w %w0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 4: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "l %0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 8: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "q %q0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; default: __xadd_wrong_size(); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 arch_atomic64_fetch_sub(s64 i, atomic64_t *v) { return ({ __typeof__ (*(((&v->counter)))) __ret = (((-i))); switch (sizeof(*(((&v->counter))))) { case 1: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "b %b0, %1\n" : "+q" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 2: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "w %w0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 4: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "l %0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; case 8: asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xadd" "q %q0, %1\n" : "+r" (__ret), "+m" (*(((&v->counter)))) : : "memory", "cc"); break; default: __xadd_wrong_size(); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 arch_atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new) { return ({ __typeof__(*((&v->counter))) __ret; __typeof__(*((&v->counter))) __old = ((old)); __typeof__(*((&v->counter))) __new = ((new)); switch ((sizeof(*(&v->counter)))) { case 1: { volatile u8 *__ptr = (volatile u8 *)((&v->counter)); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgb %2,%1" : "=a" (__ret), "+m" (*__ptr) : "q" (__new), "0" (__old) : "memory"); break; } case 2: { volatile u16 *__ptr = (volatile u16 *)((&v->counter)); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgw %2,%1" : "=a" (__ret), "+m" (*__ptr) : "r" (__new), "0" (__old) : "memory"); break; } case 4: { volatile u32 *__ptr = (volatile u32 *)((&v->counter)); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgl %2,%1" : "=a" (__ret), "+m" (*__ptr) : "r" (__new), "0" (__old) : "memory"); break; } case 8: { volatile u64 *__ptr = (volatile u64 *)((&v->counter)); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgq %2,%1" : "=a" (__ret), "+m" (*__ptr) : "r" (__new), "0" (__old) : "memory"); break; } default: __cmpxchg_wrong_size(); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool arch_atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new) { return ({ bool success; __typeof__(((&v->counter))) _old = (__typeof__(((&v->counter))))(((old))); __typeof__(*(((&v->counter)))) __old = *_old; __typeof__(*(((&v->counter)))) __new = (((new))); switch ((sizeof(*(&v->counter)))) { case 1: { volatile u8 *__ptr = (volatile u8 *)(((&v->counter))); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgb %[new], %[ptr]" "\n\t/* output condition code " "z" "*/\n" : "=@cc" "z" (success), [ptr] "+m" (*__ptr), [old] "+a" (__old) : [new] "q" (__new) : "memory"); break; } case 2: { volatile u16 *__ptr = (volatile u16 *)(((&v->counter))); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgw %[new], %[ptr]" "\n\t/* output condition code " "z" "*/\n" : "=@cc" "z" (success), [ptr] "+m" (*__ptr), [old] "+a" (__old) : [new] "r" (__new) : "memory"); break; } case 4: { volatile u32 *__ptr = (volatile u32 *)(((&v->counter))); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgl %[new], %[ptr]" "\n\t/* output condition code " "z" "*/\n" : "=@cc" "z" (success), [ptr] "+m" (*__ptr), [old] "+a" (__old) : [new] "r" (__new) : "memory"); break; } case 8: { volatile u64 *__ptr = (volatile u64 *)(((&v->counter))); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgq %[new], %[ptr]" "\n\t/* output condition code " "z" "*/\n" : "=@cc" "z" (success), [ptr] "+m" (*__ptr), [old] "+a" (__old) : [new] "r" (__new) : "memory"); break; } default: __cmpxchg_wrong_size(); } if (__builtin_expect(!!(!success), 0)) *_old = __old; __builtin_expect(!!(success), 1); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 arch_atomic64_xchg(atomic64_t *v, s64 new) { return ({ __typeof__ (*((&v->counter))) __ret = ((new)); switch (sizeof(*((&v->counter)))) { case 1: asm volatile ("" "xchg" "b %b0, %1\n" : "+q" (__ret), "+m" (*((&v->counter))) : : "memory", "cc"); break; case 2: asm volatile ("" "xchg" "w %w0, %1\n" : "+r" (__ret), "+m" (*((&v->counter))) : : "memory", "cc"); break; case 4: asm volatile ("" "xchg" "l %0, %1\n" : "+r" (__ret), "+m" (*((&v->counter))) : : "memory", "cc"); break; case 8: asm volatile ("" "xchg" "q %q0, %1\n" : "+r" (__ret), "+m" (*((&v->counter))) : : "memory", "cc"); break; default: __xchg_wrong_size(); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_atomic64_and(s64 i, atomic64_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "andq %1,%0" : "+m" (v->counter) : "er" (i) : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 arch_atomic64_fetch_and(s64 i, atomic64_t *v) { s64 val = arch_atomic64_read(v); do { } while (!arch_atomic64_try_cmpxchg(v, &val, val & i)); return val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_atomic64_or(s64 i, atomic64_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "orq %1,%0" : "+m" (v->counter) : "er" (i) : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 arch_atomic64_fetch_or(s64 i, atomic64_t *v) { s64 val = arch_atomic64_read(v); do { } while (!arch_atomic64_try_cmpxchg(v, &val, val | i)); return val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_atomic64_xor(s64 i, atomic64_t *v) { asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "xorq %1,%0" : "+m" (v->counter) : "er" (i) : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 arch_atomic64_fetch_xor(s64 i, atomic64_t *v) { s64 val = arch_atomic64_read(v); do { } while (!arch_atomic64_try_cmpxchg(v, &val, val ^ i)); return val; } # 263 "../arch/x86/include/asm/atomic.h" 2 # 1 "../include/asm-generic/atomic-instrumented.h" 1 # 23 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_read(const atomic_t *v) { kasan_check_read(v, sizeof(*v)); return arch_atomic_read(v); } # 41 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_set(atomic_t *v, int i) { kasan_check_write(v, sizeof(*v)); arch_atomic_set(v, i); } # 59 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_add(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic_add(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_add_return(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic_add_return(i, v); } # 108 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_add(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic_fetch_add(i, v); } # 147 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_sub(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic_sub(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_sub_return(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic_sub_return(i, v); } # 196 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_sub(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic_fetch_sub(i, v); } # 236 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_inc(atomic_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic_inc(v); } # 326 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_dec(atomic_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic_dec(v); } # 415 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_and(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic_and(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_and(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic_fetch_and(i, v); } # 513 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_or(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic_or(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_or(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic_fetch_or(i, v); } # 561 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_xor(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic_xor(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_xor(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic_fetch_xor(i, v); } # 610 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_xchg(atomic_t *v, int i) { kasan_check_write(v, sizeof(*v)); return arch_atomic_xchg(v, i); } # 650 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_cmpxchg(atomic_t *v, int old, int new) { kasan_check_write(v, sizeof(*v)); return arch_atomic_cmpxchg(v, old, new); } # 690 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_try_cmpxchg(atomic_t *v, int *old, int new) { kasan_check_write(v, sizeof(*v)); kasan_check_write(old, sizeof(*old)); return arch_atomic_try_cmpxchg(v, old, new); } # 734 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_sub_and_test(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic_sub_and_test(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_dec_and_test(atomic_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic_dec_and_test(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_inc_and_test(atomic_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic_inc_and_test(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_add_negative(int i, atomic_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic_add_negative(i, v); } # 833 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_read(const atomic64_t *v) { kasan_check_read(v, sizeof(*v)); return arch_atomic64_read(v); } # 851 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic64_set(atomic64_t *v, s64 i) { kasan_check_write(v, sizeof(*v)); arch_atomic64_set(v, i); } # 869 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic64_add(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic64_add(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_add_return(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic64_add_return(i, v); } # 918 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_add(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic64_fetch_add(i, v); } # 957 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic64_sub(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic64_sub(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_sub_return(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic64_sub_return(i, v); } # 1006 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_sub(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic64_fetch_sub(i, v); } # 1046 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic64_inc(atomic64_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic64_inc(v); } # 1136 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic64_dec(atomic64_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic64_dec(v); } # 1225 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic64_and(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic64_and(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_and(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic64_fetch_and(i, v); } # 1323 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic64_or(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic64_or(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_or(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic64_fetch_or(i, v); } # 1371 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic64_xor(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); arch_atomic64_xor(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_xor(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic64_fetch_xor(i, v); } # 1420 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_xchg(atomic64_t *v, s64 i) { kasan_check_write(v, sizeof(*v)); return arch_atomic64_xchg(v, i); } # 1460 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new) { kasan_check_write(v, sizeof(*v)); return arch_atomic64_cmpxchg(v, old, new); } # 1500 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new) { kasan_check_write(v, sizeof(*v)); kasan_check_write(old, sizeof(*old)); return arch_atomic64_try_cmpxchg(v, old, new); } # 1544 "../include/asm-generic/atomic-instrumented.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic64_sub_and_test(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic64_sub_and_test(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic64_dec_and_test(atomic64_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic64_dec_and_test(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic64_inc_and_test(atomic64_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic64_inc_and_test(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic64_add_negative(s64 i, atomic64_t *v) { kasan_check_write(v, sizeof(*v)); return arch_atomic64_add_negative(i, v); } # 266 "../arch/x86/include/asm/atomic.h" 2 # 8 "../include/linux/atomic.h" 2 # 74 "../include/linux/atomic.h" # 1 "../include/linux/atomic-fallback.h" 1 # 79 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_read_acquire(const atomic_t *v) { return ({ typeof(*&(v)->counter) ___p1 = ({ union { typeof(*&(v)->counter) __val; char __c[1]; } __u; if (1) __read_once_size(&(*&(v)->counter), __u.__c, sizeof(*&(v)->counter)); else __read_once_size_nocheck(&(*&(v)->counter), __u.__c, sizeof(*&(v)->counter)); do { } while (0); __u.__val; }); do { extern void __compiletime_assert_82(void) ; if (!((sizeof(*&(v)->counter) == sizeof(char) || sizeof(*&(v)->counter) == sizeof(short) || sizeof(*&(v)->counter) == sizeof(int) || sizeof(*&(v)->counter) == sizeof(long)))) __compiletime_assert_82(); } while (0); __asm__ __volatile__("" : : : "memory"); ___p1; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_set_release(atomic_t *v, int i) { do { do { extern void __compiletime_assert_91(void) ; if (!((sizeof(*&(v)->counter) == sizeof(char) || sizeof(*&(v)->counter) == sizeof(short) || sizeof(*&(v)->counter) == sizeof(int) || sizeof(*&(v)->counter) == sizeof(long)))) __compiletime_assert_91(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&(v)->counter) __val; char __c[1]; } __u = { .__val = ( typeof(*&(v)->counter)) (i) }; __write_once_size(&(*&(v)->counter), __u.__c, sizeof(*&(v)->counter)); __u.__val; }); } while (0); } # 281 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_inc_return(atomic_t *v) { return atomic_add_return(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_inc_return_acquire(atomic_t *v) { return atomic_add_return(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_inc_return_release(atomic_t *v) { return atomic_add_return(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_inc_return_relaxed(atomic_t *v) { return atomic_add_return(1, v); } # 362 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_inc(atomic_t *v) { return atomic_fetch_add(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_inc_acquire(atomic_t *v) { return atomic_fetch_add(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_inc_release(atomic_t *v) { return atomic_fetch_add(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_inc_relaxed(atomic_t *v) { return atomic_fetch_add(1, v); } # 452 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_dec_return(atomic_t *v) { return atomic_sub_return(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_dec_return_acquire(atomic_t *v) { return atomic_sub_return(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_dec_return_release(atomic_t *v) { return atomic_sub_return(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_dec_return_relaxed(atomic_t *v) { return atomic_sub_return(1, v); } # 533 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_dec(atomic_t *v) { return atomic_fetch_sub(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_dec_acquire(atomic_t *v) { return atomic_fetch_sub(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_dec_release(atomic_t *v) { return atomic_fetch_sub(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_dec_relaxed(atomic_t *v) { return atomic_fetch_sub(1, v); } # 649 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_andnot(int i, atomic_t *v) { atomic_and(~i, v); } # 665 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_andnot(int i, atomic_t *v) { return atomic_fetch_and(~i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_andnot_acquire(int i, atomic_t *v) { return atomic_fetch_and(~i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_andnot_release(int i, atomic_t *v) { return atomic_fetch_and(~i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_andnot_relaxed(int i, atomic_t *v) { return atomic_fetch_and(~i, v); } # 1083 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_fetch_add_unless(atomic_t *v, int a, int u) { int c = atomic_read(v); do { if (__builtin_expect(!!(c == u), 0)) break; } while (!atomic_try_cmpxchg(v, &c, c + a)); return c; } # 1108 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_add_unless(atomic_t *v, int a, int u) { return atomic_fetch_add_unless(v, a, u) != u; } # 1124 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_inc_not_zero(atomic_t *v) { return atomic_add_unless(v, 1, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_inc_unless_negative(atomic_t *v) { int c = atomic_read(v); do { if (__builtin_expect(!!(c < 0), 0)) return false; } while (!atomic_try_cmpxchg(v, &c, c + 1)); return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_dec_unless_positive(atomic_t *v) { int c = atomic_read(v); do { if (__builtin_expect(!!(c > 0), 0)) return false; } while (!atomic_try_cmpxchg(v, &c, c - 1)); return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int atomic_dec_if_positive(atomic_t *v) { int dec, c = atomic_read(v); do { dec = c - 1; if (__builtin_expect(!!(dec < 0), 0)) break; } while (!atomic_try_cmpxchg(v, &c, dec)); return dec; } # 1189 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_read_acquire(const atomic64_t *v) { return ({ typeof(*&(v)->counter) ___p1 = ({ union { typeof(*&(v)->counter) __val; char __c[1]; } __u; if (1) __read_once_size(&(*&(v)->counter), __u.__c, sizeof(*&(v)->counter)); else __read_once_size_nocheck(&(*&(v)->counter), __u.__c, sizeof(*&(v)->counter)); do { } while (0); __u.__val; }); do { extern void __compiletime_assert_1192(void) ; if (!((sizeof(*&(v)->counter) == sizeof(char) || sizeof(*&(v)->counter) == sizeof(short) || sizeof(*&(v)->counter) == sizeof(int) || sizeof(*&(v)->counter) == sizeof(long)))) __compiletime_assert_1192(); } while (0); __asm__ __volatile__("" : : : "memory"); ___p1; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic64_set_release(atomic64_t *v, s64 i) { do { do { extern void __compiletime_assert_1201(void) ; if (!((sizeof(*&(v)->counter) == sizeof(char) || sizeof(*&(v)->counter) == sizeof(short) || sizeof(*&(v)->counter) == sizeof(int) || sizeof(*&(v)->counter) == sizeof(long)))) __compiletime_assert_1201(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&(v)->counter) __val; char __c[1]; } __u = { .__val = ( typeof(*&(v)->counter)) (i) }; __write_once_size(&(*&(v)->counter), __u.__c, sizeof(*&(v)->counter)); __u.__val; }); } while (0); } # 1391 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_inc_return(atomic64_t *v) { return atomic64_add_return(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_inc_return_acquire(atomic64_t *v) { return atomic64_add_return(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_inc_return_release(atomic64_t *v) { return atomic64_add_return(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_inc_return_relaxed(atomic64_t *v) { return atomic64_add_return(1, v); } # 1472 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_inc(atomic64_t *v) { return atomic64_fetch_add(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_inc_acquire(atomic64_t *v) { return atomic64_fetch_add(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_inc_release(atomic64_t *v) { return atomic64_fetch_add(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_inc_relaxed(atomic64_t *v) { return atomic64_fetch_add(1, v); } # 1562 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_dec_return(atomic64_t *v) { return atomic64_sub_return(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_dec_return_acquire(atomic64_t *v) { return atomic64_sub_return(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_dec_return_release(atomic64_t *v) { return atomic64_sub_return(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_dec_return_relaxed(atomic64_t *v) { return atomic64_sub_return(1, v); } # 1643 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_dec(atomic64_t *v) { return atomic64_fetch_sub(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_dec_acquire(atomic64_t *v) { return atomic64_fetch_sub(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_dec_release(atomic64_t *v) { return atomic64_fetch_sub(1, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_dec_relaxed(atomic64_t *v) { return atomic64_fetch_sub(1, v); } # 1759 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic64_andnot(s64 i, atomic64_t *v) { atomic64_and(~i, v); } # 1775 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_andnot(s64 i, atomic64_t *v) { return atomic64_fetch_and(~i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_andnot_acquire(s64 i, atomic64_t *v) { return atomic64_fetch_and(~i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_andnot_release(s64 i, atomic64_t *v) { return atomic64_fetch_and(~i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_andnot_relaxed(s64 i, atomic64_t *v) { return atomic64_fetch_and(~i, v); } # 2193 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u) { s64 c = atomic64_read(v); do { if (__builtin_expect(!!(c == u), 0)) break; } while (!atomic64_try_cmpxchg(v, &c, c + a)); return c; } # 2218 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic64_add_unless(atomic64_t *v, s64 a, s64 u) { return atomic64_fetch_add_unless(v, a, u) != u; } # 2234 "../include/linux/atomic-fallback.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic64_inc_not_zero(atomic64_t *v) { return atomic64_add_unless(v, 1, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic64_inc_unless_negative(atomic64_t *v) { s64 c = atomic64_read(v); do { if (__builtin_expect(!!(c < 0), 0)) return false; } while (!atomic64_try_cmpxchg(v, &c, c + 1)); return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic64_dec_unless_positive(atomic64_t *v) { s64 c = atomic64_read(v); do { if (__builtin_expect(!!(c > 0), 0)) return false; } while (!atomic64_try_cmpxchg(v, &c, c - 1)); return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 atomic64_dec_if_positive(atomic64_t *v) { s64 dec, c = atomic64_read(v); do { dec = c - 1; if (__builtin_expect(!!(dec < 0), 0)) break; } while (!atomic64_try_cmpxchg(v, &c, dec)); return dec; } # 75 "../include/linux/atomic.h" 2 # 1 "../include/asm-generic/atomic-long.h" 1 # 12 "../include/asm-generic/atomic-long.h" typedef atomic64_t atomic_long_t; # 25 "../include/asm-generic/atomic-long.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_read(const atomic_long_t *v) { return atomic64_read(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_read_acquire(const atomic_long_t *v) { return atomic64_read_acquire(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_long_set(atomic_long_t *v, long i) { atomic64_set(v, i); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_long_set_release(atomic_long_t *v, long i) { atomic64_set_release(v, i); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_long_add(long i, atomic_long_t *v) { atomic64_add(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_add_return(long i, atomic_long_t *v) { return atomic64_add_return(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_add_return_acquire(long i, atomic_long_t *v) { return atomic64_add_return(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_add_return_release(long i, atomic_long_t *v) { return atomic64_add_return(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_add_return_relaxed(long i, atomic_long_t *v) { return atomic64_add_return(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_add(long i, atomic_long_t *v) { return atomic64_fetch_add(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_add_acquire(long i, atomic_long_t *v) { return atomic64_fetch_add(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_add_release(long i, atomic_long_t *v) { return atomic64_fetch_add(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_add_relaxed(long i, atomic_long_t *v) { return atomic64_fetch_add(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_long_sub(long i, atomic_long_t *v) { atomic64_sub(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_sub_return(long i, atomic_long_t *v) { return atomic64_sub_return(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_sub_return_acquire(long i, atomic_long_t *v) { return atomic64_sub_return(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_sub_return_release(long i, atomic_long_t *v) { return atomic64_sub_return(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_sub_return_relaxed(long i, atomic_long_t *v) { return atomic64_sub_return(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_sub(long i, atomic_long_t *v) { return atomic64_fetch_sub(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_sub_acquire(long i, atomic_long_t *v) { return atomic64_fetch_sub(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_sub_release(long i, atomic_long_t *v) { return atomic64_fetch_sub(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v) { return atomic64_fetch_sub(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_long_inc(atomic_long_t *v) { atomic64_inc(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_inc_return(atomic_long_t *v) { return atomic64_inc_return(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_inc_return_acquire(atomic_long_t *v) { return atomic64_inc_return_acquire(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_inc_return_release(atomic_long_t *v) { return atomic64_inc_return_release(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_inc_return_relaxed(atomic_long_t *v) { return atomic64_inc_return_relaxed(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_inc(atomic_long_t *v) { return atomic64_fetch_inc(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_inc_acquire(atomic_long_t *v) { return atomic64_fetch_inc_acquire(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_inc_release(atomic_long_t *v) { return atomic64_fetch_inc_release(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_inc_relaxed(atomic_long_t *v) { return atomic64_fetch_inc_relaxed(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_long_dec(atomic_long_t *v) { atomic64_dec(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_dec_return(atomic_long_t *v) { return atomic64_dec_return(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_dec_return_acquire(atomic_long_t *v) { return atomic64_dec_return_acquire(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_dec_return_release(atomic_long_t *v) { return atomic64_dec_return_release(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_dec_return_relaxed(atomic_long_t *v) { return atomic64_dec_return_relaxed(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_dec(atomic_long_t *v) { return atomic64_fetch_dec(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_dec_acquire(atomic_long_t *v) { return atomic64_fetch_dec_acquire(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_dec_release(atomic_long_t *v) { return atomic64_fetch_dec_release(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_dec_relaxed(atomic_long_t *v) { return atomic64_fetch_dec_relaxed(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_long_and(long i, atomic_long_t *v) { atomic64_and(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_and(long i, atomic_long_t *v) { return atomic64_fetch_and(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_and_acquire(long i, atomic_long_t *v) { return atomic64_fetch_and(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_and_release(long i, atomic_long_t *v) { return atomic64_fetch_and(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_and_relaxed(long i, atomic_long_t *v) { return atomic64_fetch_and(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_long_andnot(long i, atomic_long_t *v) { atomic64_andnot(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_andnot(long i, atomic_long_t *v) { return atomic64_fetch_andnot(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v) { return atomic64_fetch_andnot_acquire(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_andnot_release(long i, atomic_long_t *v) { return atomic64_fetch_andnot_release(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v) { return atomic64_fetch_andnot_relaxed(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_long_or(long i, atomic_long_t *v) { atomic64_or(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_or(long i, atomic_long_t *v) { return atomic64_fetch_or(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_or_acquire(long i, atomic_long_t *v) { return atomic64_fetch_or(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_or_release(long i, atomic_long_t *v) { return atomic64_fetch_or(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_or_relaxed(long i, atomic_long_t *v) { return atomic64_fetch_or(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void atomic_long_xor(long i, atomic_long_t *v) { atomic64_xor(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_xor(long i, atomic_long_t *v) { return atomic64_fetch_xor(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_xor_acquire(long i, atomic_long_t *v) { return atomic64_fetch_xor(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_xor_release(long i, atomic_long_t *v) { return atomic64_fetch_xor(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v) { return atomic64_fetch_xor(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_xchg(atomic_long_t *v, long i) { return atomic64_xchg(v, i); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_xchg_acquire(atomic_long_t *v, long i) { return atomic64_xchg(v, i); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_xchg_release(atomic_long_t *v, long i) { return atomic64_xchg(v, i); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_xchg_relaxed(atomic_long_t *v, long i) { return atomic64_xchg(v, i); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_cmpxchg(atomic_long_t *v, long old, long new) { return atomic64_cmpxchg(v, old, new); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new) { return atomic64_cmpxchg(v, old, new); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new) { return atomic64_cmpxchg(v, old, new); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new) { return atomic64_cmpxchg(v, old, new); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new) { return atomic64_try_cmpxchg(v, (s64 *)old, new); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new) { return atomic64_try_cmpxchg(v, (s64 *)old, new); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new) { return atomic64_try_cmpxchg(v, (s64 *)old, new); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new) { return atomic64_try_cmpxchg(v, (s64 *)old, new); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_long_sub_and_test(long i, atomic_long_t *v) { return atomic64_sub_and_test(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_long_dec_and_test(atomic_long_t *v) { return atomic64_dec_and_test(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_long_inc_and_test(atomic_long_t *v) { return atomic64_inc_and_test(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_long_add_negative(long i, atomic_long_t *v) { return atomic64_add_negative(i, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u) { return atomic64_fetch_add_unless(v, a, u); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_long_add_unless(atomic_long_t *v, long a, long u) { return atomic64_add_unless(v, a, u); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_long_inc_not_zero(atomic_long_t *v) { return atomic64_inc_not_zero(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_long_inc_unless_negative(atomic_long_t *v) { return atomic64_inc_unless_negative(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool atomic_long_dec_unless_positive(atomic_long_t *v) { return atomic64_dec_unless_positive(v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long atomic_long_dec_if_positive(atomic_long_t *v) { return atomic64_dec_if_positive(v); } # 77 "../include/linux/atomic.h" 2 # 7 "../include/linux/debug_locks.h" 2 # 1 "../include/linux/bug.h" 1 # 1 "../arch/x86/include/asm/bug.h" 1 # 83 "../arch/x86/include/asm/bug.h" # 1 "../include/asm-generic/bug.h" 1 # 23 "../include/asm-generic/bug.h" struct bug_entry { signed int bug_addr_disp; signed int file_disp; unsigned short line; unsigned short flags; }; # 106 "../include/asm-generic/bug.h" extern __attribute__((__format__(printf, 1, 2))) void __warn_printk(const char *fmt, ...); # 116 "../include/asm-generic/bug.h" struct warn_args; struct pt_regs; void __warn(const char *file, int line, void *caller, unsigned taint, struct pt_regs *regs, struct warn_args *args); # 84 "../arch/x86/include/asm/bug.h" 2 # 6 "../include/linux/bug.h" 2 enum bug_trap_type { BUG_TRAP_TYPE_NONE = 0, BUG_TRAP_TYPE_WARN = 1, BUG_TRAP_TYPE_BUG = 2, }; struct pt_regs; # 34 "../include/linux/bug.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int is_warning_bug(const struct bug_entry *bug) { return bug->flags & (1 << 0); } struct bug_entry *find_bug(unsigned long bugaddr); enum bug_trap_type report_bug(unsigned long bug_addr, struct pt_regs *regs); int is_valid_bugaddr(unsigned long addr); void generic_bug_clear_once(void); # 65 "../include/linux/bug.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) bool check_data_corruption(bool v) { return v; } # 8 "../include/linux/debug_locks.h" 2 struct task_struct; extern int debug_locks __attribute__((__section__(".data..read_mostly"))); extern int debug_locks_silent __attribute__((__section__(".data..read_mostly"))); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __debug_locks_off(void) { return ({ typeof(&debug_locks) __ai_ptr = (&debug_locks); kasan_check_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__ (*((__ai_ptr))) __ret = ((0)); switch (sizeof(*((__ai_ptr)))) { case 1: asm volatile ("" "xchg" "b %b0, %1\n" : "+q" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 2: asm volatile ("" "xchg" "w %w0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 4: asm volatile ("" "xchg" "l %0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 8: asm volatile ("" "xchg" "q %q0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; default: __xchg_wrong_size(); } __ret; }); }); } extern int debug_locks_off(void); # 44 "../include/linux/debug_locks.h" extern void locking_selftest(void); struct task_struct; extern void debug_show_all_locks(void); extern void debug_show_held_locks(struct task_struct *task); extern void debug_check_no_locks_freed(const void *from, unsigned long len); extern void debug_check_no_locks_held(void); # 29 "../include/linux/lockdep.h" 2 # 1 "../include/linux/stacktrace.h" 1 # 1 "../arch/x86/include/uapi/asm/errno.h" 1 # 7 "../include/linux/stacktrace.h" 2 struct task_struct; struct pt_regs; void stack_trace_print(unsigned long *trace, unsigned int nr_entries, int spaces); int stack_trace_snprint(char *buf, size_t size, unsigned long *entries, unsigned int nr_entries, int spaces); unsigned int stack_trace_save(unsigned long *store, unsigned int size, unsigned int skipnr); unsigned int stack_trace_save_tsk(struct task_struct *task, unsigned long *store, unsigned int size, unsigned int skipnr); unsigned int stack_trace_save_regs(struct pt_regs *regs, unsigned long *store, unsigned int size, unsigned int skipnr); unsigned int stack_trace_save_user(unsigned long *store, unsigned int size); # 38 "../include/linux/stacktrace.h" typedef bool (*stack_trace_consume_fn)(void *cookie, unsigned long addr, bool reliable); # 56 "../include/linux/stacktrace.h" void arch_stack_walk(stack_trace_consume_fn consume_entry, void *cookie, struct task_struct *task, struct pt_regs *regs); int arch_stack_walk_reliable(stack_trace_consume_fn consume_entry, void *cookie, struct task_struct *task); void arch_stack_walk_user(stack_trace_consume_fn consume_entry, void *cookie, const struct pt_regs *regs); # 82 "../include/linux/stacktrace.h" int stack_trace_save_tsk_reliable(struct task_struct *tsk, unsigned long *store, unsigned int size); # 30 "../include/linux/lockdep.h" 2 # 55 "../include/linux/lockdep.h" struct lockdep_subclass_key { char __one_byte; } __attribute__ ((__packed__)); struct lock_class_key { union { struct hlist_node hash_entry; struct lockdep_subclass_key subkeys[8UL]; }; }; extern struct lock_class_key __lockdep_no_validate__; struct lock_trace { unsigned int nr_entries; unsigned int offset; }; struct lock_class { struct hlist_node hash_entry; struct list_head lock_entry; struct list_head locks_after, locks_before; struct lockdep_subclass_key *key; unsigned int subclass; unsigned int dep_gen_id; unsigned long usage_mask; struct lock_trace usage_traces[(1+2*4)]; int name_version; const char *name; unsigned long contention_point[4]; unsigned long contending_point[4]; } ; struct lock_time { s64 min; s64 max; s64 total; unsigned long nr; }; enum bounce_type { bounce_acquired_write, bounce_acquired_read, bounce_contended_write, bounce_contended_read, nr_bounce_types, bounce_acquired = bounce_acquired_write, bounce_contended = bounce_contended_write, }; struct lock_class_stats { unsigned long contention_point[4]; unsigned long contending_point[4]; struct lock_time read_waittime; struct lock_time write_waittime; struct lock_time read_holdtime; struct lock_time write_holdtime; unsigned long bounces[nr_bounce_types]; }; struct lock_class_stats lock_stats(struct lock_class *class); void clear_lock_stats(struct lock_class *class); struct lockdep_map { struct lock_class_key *key; struct lock_class *class_cache[2]; const char *name; int cpu; unsigned long ip; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void lockdep_copy_map(struct lockdep_map *to, struct lockdep_map *from) { int i; *to = *from; # 184 "../include/linux/lockdep.h" for (i = 0; i < 2; i++) to->class_cache[i] = ((void *)0); } struct lock_list { struct list_head entry; struct lock_class *class; struct lock_class *links_to; struct lock_trace trace; int distance; struct lock_list *parent; }; # 215 "../include/linux/lockdep.h" struct lock_chain { unsigned int irq_context : 2, depth : 6, base : 24; struct hlist_node entry; u64 chain_key; }; struct held_lock { # 244 "../include/linux/lockdep.h" u64 prev_chain_key; unsigned long acquire_ip; struct lockdep_map *instance; struct lockdep_map *nest_lock; u64 waittime_stamp; u64 holdtime_stamp; unsigned int class_idx:13; # 271 "../include/linux/lockdep.h" unsigned int irq_context:2; unsigned int trylock:1; unsigned int read:2; unsigned int check:1; unsigned int hardirqs_off:1; unsigned int references:12; unsigned int pin_count; }; extern void lockdep_init(void); extern void lockdep_reset(void); extern void lockdep_reset_lock(struct lockdep_map *lock); extern void lockdep_free_key_range(void *start, unsigned long size); extern void lockdep_sys_exit(void); extern void lockdep_set_selftest_task(struct task_struct *task); extern void lockdep_init_task(struct task_struct *task); extern void lockdep_off(void); extern void lockdep_on(void); extern void lockdep_register_key(struct lock_class_key *key); extern void lockdep_unregister_key(struct lock_class_key *key); extern void lockdep_init_map(struct lockdep_map *lock, const char *name, struct lock_class_key *key, int subclass); # 331 "../include/linux/lockdep.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int lockdep_match_key(struct lockdep_map *lock, struct lock_class_key *key) { return lock->key == key; } # 351 "../include/linux/lockdep.h" extern void lock_acquire(struct lockdep_map *lock, unsigned int subclass, int trylock, int read, int check, struct lockdep_map *nest_lock, unsigned long ip); extern void lock_release(struct lockdep_map *lock, int nested, unsigned long ip); extern int lock_is_held_type(const struct lockdep_map *lock, int read); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int lock_is_held(const struct lockdep_map *lock) { return lock_is_held_type(lock, -1); } extern void lock_set_class(struct lockdep_map *lock, const char *name, struct lock_class_key *key, unsigned int subclass, unsigned long ip); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void lock_set_subclass(struct lockdep_map *lock, unsigned int subclass, unsigned long ip) { lock_set_class(lock, lock->name, lock->key, subclass, ip); } extern void lock_downgrade(struct lockdep_map *lock, unsigned long ip); struct pin_cookie { unsigned int val; }; extern struct pin_cookie lock_pin_lock(struct lockdep_map *lock); extern void lock_repin_lock(struct lockdep_map *lock, struct pin_cookie); extern void lock_unpin_lock(struct lockdep_map *lock, struct pin_cookie); # 498 "../include/linux/lockdep.h" enum xhlock_context_t { XHLOCK_HARD, XHLOCK_SOFT, XHLOCK_CTX_NR, }; # 512 "../include/linux/lockdep.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void lockdep_invariant_state(bool force) {} static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void lockdep_free_task(struct task_struct *task) {} extern void lock_contended(struct lockdep_map *lock, unsigned long ip); extern void lock_acquired(struct lockdep_map *lock, unsigned long ip); # 572 "../include/linux/lockdep.h" extern void print_irqtrace_events(struct task_struct *curr); # 662 "../include/linux/lockdep.h" void lockdep_rcu_suspicious(const char *file, const int line, const char *s); # 19 "../include/linux/spinlock_types.h" 2 typedef struct raw_spinlock { arch_spinlock_t raw_lock; unsigned int magic, owner_cpu; void *owner; struct lockdep_map dep_map; } raw_spinlock_t; # 61 "../include/linux/spinlock_types.h" typedef struct spinlock { union { struct raw_spinlock rlock; struct { u8 __padding[(__builtin_offsetof(struct raw_spinlock, dep_map))]; struct lockdep_map dep_map; }; }; } spinlock_t; # 83 "../include/linux/spinlock_types.h" # 1 "../include/linux/rwlock_types.h" 1 # 11 "../include/linux/rwlock_types.h" typedef struct { arch_rwlock_t raw_lock; unsigned int magic, owner_cpu; void *owner; struct lockdep_map dep_map; } rwlock_t; # 84 "../include/linux/spinlock_types.h" 2 # 17 "../include/linux/mutex.h" 2 # 1 "../arch/x86/include/asm/processor.h" 1 # 1 "../arch/x86/include/asm/processor-flags.h" 1 # 1 "../arch/x86/include/uapi/asm/processor-flags.h" 1 # 6 "../arch/x86/include/asm/processor-flags.h" 2 # 1 "../include/linux/mem_encrypt.h" 1 # 17 "../include/linux/mem_encrypt.h" # 1 "../arch/x86/include/asm/mem_encrypt.h" 1 # 17 "../arch/x86/include/asm/mem_encrypt.h" # 1 "../arch/x86/include/uapi/asm/bootparam.h" 1 # 38 "../arch/x86/include/uapi/asm/bootparam.h" # 1 "../include/linux/screen_info.h" 1 # 1 "../include/uapi/linux/screen_info.h" 1 # 11 "../include/uapi/linux/screen_info.h" struct screen_info { __u8 orig_x; __u8 orig_y; __u16 ext_mem_k; __u16 orig_video_page; __u8 orig_video_mode; __u8 orig_video_cols; __u8 flags; __u8 unused2; __u16 orig_video_ega_bx; __u16 unused3; __u8 orig_video_lines; __u8 orig_video_isVGA; __u16 orig_video_points; __u16 lfb_width; __u16 lfb_height; __u16 lfb_depth; __u32 lfb_base; __u32 lfb_size; __u16 cl_magic, cl_offset; __u16 lfb_linelength; __u8 red_size; __u8 red_pos; __u8 green_size; __u8 green_pos; __u8 blue_size; __u8 blue_pos; __u8 rsvd_size; __u8 rsvd_pos; __u16 vesapm_seg; __u16 vesapm_off; __u16 pages; __u16 vesa_attributes; __u32 capabilities; __u32 ext_lfb_base; __u8 _reserved[2]; } __attribute__((packed)); # 6 "../include/linux/screen_info.h" 2 extern struct screen_info screen_info; # 39 "../arch/x86/include/uapi/asm/bootparam.h" 2 # 1 "../include/linux/apm_bios.h" 1 # 1 "../include/uapi/linux/apm_bios.h" 1 # 22 "../include/uapi/linux/apm_bios.h" typedef unsigned short apm_event_t; typedef unsigned short apm_eventinfo_t; struct apm_bios_info { __u16 version; __u16 cseg; __u32 offset; __u16 cseg_16; __u16 dseg; __u16 flags; __u16 cseg_len; __u16 cseg_16_len; __u16 dseg_len; }; # 133 "../include/uapi/linux/apm_bios.h" # 1 "../include/uapi/linux/ioctl.h" 1 # 1 "../arch/x86/include/uapi/asm/ioctl.h" 1 # 1 "../include/asm-generic/ioctl.h" 1 # 1 "../include/uapi/asm-generic/ioctl.h" 1 # 6 "../include/asm-generic/ioctl.h" 2 extern unsigned int __invalid_size_argument_for_IOC; # 2 "../arch/x86/include/uapi/asm/ioctl.h" 2 # 6 "../include/uapi/linux/ioctl.h" 2 # 134 "../include/uapi/linux/apm_bios.h" 2 # 10 "../include/linux/apm_bios.h" 2 # 26 "../include/linux/apm_bios.h" struct apm_info { struct apm_bios_info bios; unsigned short connection_version; int get_power_status_broken; int get_power_status_swabinminutes; int allow_ints; int forbid_idle; int realmode_power_off; int disabled; }; # 85 "../include/linux/apm_bios.h" extern struct apm_info apm_info; # 40 "../arch/x86/include/uapi/asm/bootparam.h" 2 # 1 "../include/linux/edd.h" 1 # 24 "../include/linux/edd.h" # 1 "../include/uapi/linux/edd.h" 1 # 72 "../include/uapi/linux/edd.h" struct edd_device_params { __u16 length; __u16 info_flags; __u32 num_default_cylinders; __u32 num_default_heads; __u32 sectors_per_track; __u64 number_of_sectors; __u16 bytes_per_sector; __u32 dpte_ptr; __u16 key; __u8 device_path_info_length; __u8 reserved2; __u16 reserved3; __u8 host_bus_type[4]; __u8 interface_type[8]; union { struct { __u16 base_address; __u16 reserved1; __u32 reserved2; } __attribute__ ((packed)) isa; struct { __u8 bus; __u8 slot; __u8 function; __u8 channel; __u32 reserved; } __attribute__ ((packed)) pci; struct { __u64 reserved; } __attribute__ ((packed)) ibnd; struct { __u64 reserved; } __attribute__ ((packed)) xprs; struct { __u64 reserved; } __attribute__ ((packed)) htpt; struct { __u64 reserved; } __attribute__ ((packed)) unknown; } interface_path; union { struct { __u8 device; __u8 reserved1; __u16 reserved2; __u32 reserved3; __u64 reserved4; } __attribute__ ((packed)) ata; struct { __u8 device; __u8 lun; __u8 reserved1; __u8 reserved2; __u32 reserved3; __u64 reserved4; } __attribute__ ((packed)) atapi; struct { __u16 id; __u64 lun; __u16 reserved1; __u32 reserved2; } __attribute__ ((packed)) scsi; struct { __u64 serial_number; __u64 reserved; } __attribute__ ((packed)) usb; struct { __u64 eui; __u64 reserved; } __attribute__ ((packed)) i1394; struct { __u64 wwid; __u64 lun; } __attribute__ ((packed)) fibre; struct { __u64 identity_tag; __u64 reserved; } __attribute__ ((packed)) i2o; struct { __u32 array_number; __u32 reserved1; __u64 reserved2; } __attribute__ ((packed)) raid; struct { __u8 device; __u8 reserved1; __u16 reserved2; __u32 reserved3; __u64 reserved4; } __attribute__ ((packed)) sata; struct { __u64 reserved1; __u64 reserved2; } __attribute__ ((packed)) unknown; } device_path; __u8 reserved4; __u8 checksum; } __attribute__ ((packed)); struct edd_info { __u8 device; __u8 version; __u16 interface_support; __u16 legacy_max_cylinder; __u8 legacy_max_head; __u8 legacy_sectors_per_track; struct edd_device_params params; } __attribute__ ((packed)); struct edd { unsigned int mbr_signature[16]; struct edd_info edd_info[6]; unsigned char mbr_signature_nr; unsigned char edd_info_nr; }; # 25 "../include/linux/edd.h" 2 extern struct edd edd; # 41 "../arch/x86/include/uapi/asm/bootparam.h" 2 # 1 "../arch/x86/include/asm/ist.h" 1 # 1 "../arch/x86/include/uapi/asm/ist.h" 1 # 23 "../arch/x86/include/uapi/asm/ist.h" struct ist_info { __u32 signature; __u32 command; __u32 event; __u32 perf_level; }; # 10 "../arch/x86/include/asm/ist.h" 2 extern struct ist_info ist_info; # 42 "../arch/x86/include/uapi/asm/bootparam.h" 2 # 1 "../include/video/edid.h" 1 # 1 "../include/uapi/video/edid.h" 1 struct edid_info { unsigned char dummy[128]; }; # 6 "../include/video/edid.h" 2 extern struct edid_info edid_info; # 43 "../arch/x86/include/uapi/asm/bootparam.h" 2 struct setup_data { __u64 next; __u32 type; __u32 len; __u8 data[0]; }; struct setup_header { __u8 setup_sects; __u16 root_flags; __u32 syssize; __u16 ram_size; __u16 vid_mode; __u16 root_dev; __u16 boot_flag; __u16 jump; __u32 header; __u16 version; __u32 realmode_swtch; __u16 start_sys_seg; __u16 kernel_version; __u8 type_of_loader; __u8 loadflags; __u16 setup_move_size; __u32 code32_start; __u32 ramdisk_image; __u32 ramdisk_size; __u32 bootsect_kludge; __u16 heap_end_ptr; __u8 ext_loader_ver; __u8 ext_loader_type; __u32 cmd_line_ptr; __u32 initrd_addr_max; __u32 kernel_alignment; __u8 relocatable_kernel; __u8 min_alignment; __u16 xloadflags; __u32 cmdline_size; __u32 hardware_subarch; __u64 hardware_subarch_data; __u32 payload_offset; __u32 payload_length; __u64 setup_data; __u64 pref_address; __u32 init_size; __u32 handover_offset; } __attribute__((packed)); struct sys_desc_table { __u16 length; __u8 table[14]; }; struct olpc_ofw_header { __u32 ofw_magic; __u32 ofw_version; __u32 cif_handler; __u32 irq_desc_table; } __attribute__((packed)); struct efi_info { __u32 efi_loader_signature; __u32 efi_systab; __u32 efi_memdesc_size; __u32 efi_memdesc_version; __u32 efi_memmap; __u32 efi_memmap_size; __u32 efi_systab_hi; __u32 efi_memmap_hi; }; # 126 "../arch/x86/include/uapi/asm/bootparam.h" struct boot_e820_entry { __u64 addr; __u64 size; __u32 type; } __attribute__((packed)); # 141 "../arch/x86/include/uapi/asm/bootparam.h" struct jailhouse_setup_data { __u16 version; __u16 compatible_version; __u16 pm_timer_address; __u16 num_cpus; __u64 pci_mmconfig_base; __u32 tsc_khz; __u32 apic_khz; __u8 standard_ioapic; __u8 cpu_ids[255]; } __attribute__((packed)); struct boot_params { struct screen_info screen_info; struct apm_bios_info apm_bios_info; __u8 _pad2[4]; __u64 tboot_addr; struct ist_info ist_info; __u64 acpi_rsdp_addr; __u8 _pad3[8]; __u8 hd0_info[16]; __u8 hd1_info[16]; struct sys_desc_table sys_desc_table; struct olpc_ofw_header olpc_ofw_header; __u32 ext_ramdisk_image; __u32 ext_ramdisk_size; __u32 ext_cmd_line_ptr; __u8 _pad4[116]; struct edid_info edid_info; struct efi_info efi_info; __u32 alt_mem_k; __u32 scratch; __u8 e820_entries; __u8 eddbuf_entries; __u8 edd_mbr_sig_buf_entries; __u8 kbd_status; __u8 secure_boot; __u8 _pad5[2]; # 191 "../arch/x86/include/uapi/asm/bootparam.h" __u8 sentinel; __u8 _pad6[1]; struct setup_header hdr; __u8 _pad7[0x290-0x1f1-sizeof(struct setup_header)]; __u32 edd_mbr_sig_buffer[16]; struct boot_e820_entry e820_table[128]; __u8 _pad8[48]; struct edd_info eddbuf[6]; __u8 _pad9[276]; } __attribute__((packed)); # 241 "../arch/x86/include/uapi/asm/bootparam.h" enum x86_hardware_subarch { X86_SUBARCH_PC = 0, X86_SUBARCH_LGUEST, X86_SUBARCH_XEN, X86_SUBARCH_INTEL_MID, X86_SUBARCH_CE4100, X86_NR_SUBARCHS, }; # 18 "../arch/x86/include/asm/mem_encrypt.h" 2 extern u64 sme_me_mask; extern bool sev_enabled; void sme_encrypt_execute(unsigned long encrypted_kernel_vaddr, unsigned long decrypted_kernel_vaddr, unsigned long kernel_len, unsigned long encryption_wa, unsigned long encryption_pgd); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) sme_early_encrypt(resource_size_t paddr, unsigned long size); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) sme_early_decrypt(resource_size_t paddr, unsigned long size); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) sme_map_bootdata(char *real_mode_data); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) sme_unmap_bootdata(char *real_mode_data); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) sme_early_init(void); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) sme_encrypt_kernel(struct boot_params *bp); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) sme_enable(struct boot_params *bp); int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) early_set_memory_decrypted(unsigned long vaddr, unsigned long size); int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) early_set_memory_encrypted(unsigned long vaddr, unsigned long size); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) mem_encrypt_init(void); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) mem_encrypt_free_decrypted_mem(void); bool sme_active(void); bool sev_active(void); # 93 "../arch/x86/include/asm/mem_encrypt.h" extern char __start_bss_decrypted[], __end_bss_decrypted[], __start_bss_decrypted_unused[]; # 18 "../include/linux/mem_encrypt.h" 2 # 28 "../include/linux/mem_encrypt.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool mem_encrypt_active(void) { return sme_me_mask; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 sme_get_me_mask(void) { return sme_me_mask; } # 7 "../arch/x86/include/asm/processor-flags.h" 2 # 6 "../arch/x86/include/asm/processor.h" 2 struct task_struct; struct mm_struct; struct vm86; # 1 "../arch/x86/include/asm/math_emu.h" 1 # 1 "../arch/x86/include/asm/ptrace.h" 1 # 1 "../arch/x86/include/asm/segment.h" 1 # 237 "../arch/x86/include/asm/segment.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long vdso_encode_cpunode(int cpu, unsigned long node) { return (node << 12) | cpu; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vdso_read_cpunode(unsigned *cpu, unsigned *node) { unsigned int p; # 254 "../arch/x86/include/asm/segment.h" asm volatile ("# ALT: oldnstr\n" "661:\n\t" "lsl %[seg],%[p]" "\n662:\n" "# ALT: padding\n" ".skip -(((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")) > 0) * " "((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")),0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "(16*32+22)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" ".byte 0xf3,0x0f,0xc7,0xf8" "\n" "665""1" ":\n" ".popsection\n" : [p] "=a" (p) : "i" (0), [seg] "r" ((15*8 + 3))); if (cpu) *cpu = (p & 0xfff); if (node) *node = (p >> 12); } # 289 "../arch/x86/include/asm/segment.h" extern const char early_idt_handler_array[32][9]; extern void early_ignore_irq(void); extern const char xen_early_idt_handler_array[32][8]; # 335 "../arch/x86/include/asm/segment.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __loadsegment_fs(unsigned short value) { asm volatile(" \n" "1: movw %0, %%fs \n" "2: \n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "2b" ") - .\n" " .long (" "ex_handler_clear_fs" ") - .\n" " .popsection\n" : : "rm" (value) : "memory"); } # 6 "../arch/x86/include/asm/ptrace.h" 2 # 1 "../arch/x86/include/asm/page_types.h" 1 # 48 "../arch/x86/include/asm/page_types.h" # 1 "../arch/x86/include/asm/page_64_types.h" 1 # 1 "../arch/x86/include/asm/kaslr.h" 1 unsigned long kaslr_get_random_long(const char *purpose); void kernel_randomize_memory(void); # 7 "../arch/x86/include/asm/page_64_types.h" 2 # 49 "../arch/x86/include/asm/page_types.h" 2 # 58 "../arch/x86/include/asm/page_types.h" extern phys_addr_t physical_mask; extern int devmem_is_allowed(unsigned long pagenr); extern unsigned long max_low_pfn_mapped; extern unsigned long max_pfn_mapped; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) phys_addr_t get_max_mapped(void) { return (phys_addr_t)max_pfn_mapped << 12; } bool pfn_range_is_mapped(unsigned long start_pfn, unsigned long end_pfn); extern unsigned long init_memory_mapping(unsigned long start, unsigned long end); extern void initmem_init(void); # 7 "../arch/x86/include/asm/ptrace.h" 2 # 1 "../arch/x86/include/uapi/asm/ptrace.h" 1 # 1 "../arch/x86/include/uapi/asm/ptrace-abi.h" 1 # 7 "../arch/x86/include/uapi/asm/ptrace.h" 2 # 8 "../arch/x86/include/asm/ptrace.h" 2 # 56 "../arch/x86/include/asm/ptrace.h" struct pt_regs { unsigned long r15; unsigned long r14; unsigned long r13; unsigned long r12; unsigned long bp; unsigned long bx; unsigned long r11; unsigned long r10; unsigned long r9; unsigned long r8; unsigned long ax; unsigned long cx; unsigned long dx; unsigned long si; unsigned long di; unsigned long orig_ax; unsigned long ip; unsigned long cs; unsigned long flags; unsigned long sp; unsigned long ss; }; # 1 "../arch/x86/include/asm/paravirt_types.h" 1 # 43 "../arch/x86/include/asm/paravirt_types.h" # 1 "../arch/x86/include/asm/desc_defs.h" 1 # 16 "../arch/x86/include/asm/desc_defs.h" struct desc_struct { u16 limit0; u16 base0; u16 base1: 8, type: 4, s: 1, dpl: 2, p: 1; u16 limit1: 4, avl: 1, l: 1, d: 1, g: 1, base2: 8; } __attribute__((packed)); # 40 "../arch/x86/include/asm/desc_defs.h" enum { GATE_INTERRUPT = 0xE, GATE_TRAP = 0xF, GATE_CALL = 0xC, GATE_TASK = 0x5, }; enum { DESC_TSS = 0x9, DESC_LDT = 0x2, DESCTYPE_S = 0x10, }; struct ldttss_desc { u16 limit0; u16 base0; u16 base1 : 8, type : 5, dpl : 2, p : 1; u16 limit1 : 4, zero0 : 3, g : 1, base2 : 8; u32 base3; u32 zero1; } __attribute__((packed)); typedef struct ldttss_desc ldt_desc; typedef struct ldttss_desc tss_desc; struct idt_bits { u16 ist : 3, zero : 5, type : 5, dpl : 2, p : 1; } __attribute__((packed)); struct gate_struct { u16 offset_low; u16 segment; struct idt_bits bits; u16 offset_middle; u32 offset_high; u32 reserved; } __attribute__((packed)); typedef struct gate_struct gate_desc; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long gate_offset(const gate_desc *g) { return g->offset_low | ((unsigned long)g->offset_middle << 16) | ((unsigned long) g->offset_high << 32); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long gate_segment(const gate_desc *g) { return g->segment; } struct desc_ptr { unsigned short size; unsigned long address; } __attribute__((packed)) ; # 44 "../arch/x86/include/asm/paravirt_types.h" 2 # 1 "../arch/x86/include/asm/kmap_types.h" 1 # 1 "../include/asm-generic/kmap_types.h" 1 # 10 "../arch/x86/include/asm/kmap_types.h" 2 # 45 "../arch/x86/include/asm/paravirt_types.h" 2 # 1 "../arch/x86/include/asm/pgtable_types.h" 1 # 138 "../arch/x86/include/asm/pgtable_types.h" enum page_cache_mode { _PAGE_CACHE_MODE_WB = 0, _PAGE_CACHE_MODE_WC = 1, _PAGE_CACHE_MODE_UC_MINUS = 2, _PAGE_CACHE_MODE_UC = 3, _PAGE_CACHE_MODE_WT = 4, _PAGE_CACHE_MODE_WP = 5, _PAGE_CACHE_MODE_NUM = 8 }; # 249 "../arch/x86/include/asm/pgtable_types.h" # 1 "../arch/x86/include/asm/pgtable_64_types.h" 1 # 1 "../arch/x86/include/asm/sparsemem.h" 1 # 6 "../arch/x86/include/asm/pgtable_64_types.h" 2 typedef unsigned long pteval_t; typedef unsigned long pmdval_t; typedef unsigned long pudval_t; typedef unsigned long p4dval_t; typedef unsigned long pgdval_t; typedef unsigned long pgprotval_t; typedef struct { pteval_t pte; } pte_t; extern unsigned int __pgtable_l5_enabled; # 43 "../arch/x86/include/asm/pgtable_64_types.h" extern unsigned int pgdir_shift; extern unsigned int ptrs_per_p4d; # 250 "../arch/x86/include/asm/pgtable_types.h" 2 # 265 "../arch/x86/include/asm/pgtable_types.h" typedef struct pgprot { pgprotval_t pgprot; } pgprot_t; typedef struct { pgdval_t pgd; } pgd_t; # 292 "../arch/x86/include/asm/pgtable_types.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgd_t native_make_pgd(pgdval_t val) { return (pgd_t) { val & (~0ULL) }; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgdval_t native_pgd_val(pgd_t pgd) { return pgd.pgd & (~0ULL); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgdval_t pgd_flags(pgd_t pgd) { return native_pgd_val(pgd) & (~((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask))); } typedef struct { p4dval_t p4d; } p4d_t; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) p4d_t native_make_p4d(pudval_t val) { return (p4d_t) { val }; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) p4dval_t native_p4d_val(p4d_t p4d) { return p4d.p4d; } # 334 "../arch/x86/include/asm/pgtable_types.h" typedef struct { pudval_t pud; } pud_t; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t native_make_pud(pmdval_t val) { return (pud_t) { val }; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pudval_t native_pud_val(pud_t pud) { return pud.pud; } # 360 "../arch/x86/include/asm/pgtable_types.h" typedef struct { pmdval_t pmd; } pmd_t; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t native_make_pmd(pmdval_t val) { return (pmd_t) { val }; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmdval_t native_pmd_val(pmd_t pmd) { return pmd.pmd; } # 385 "../arch/x86/include/asm/pgtable_types.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) p4dval_t p4d_pfn_mask(p4d_t p4d) { return ((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) p4dval_t p4d_flags_mask(p4d_t p4d) { return ~p4d_pfn_mask(p4d); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) p4dval_t p4d_flags(p4d_t p4d) { return native_p4d_val(p4d) & p4d_flags_mask(p4d); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pudval_t pud_pfn_mask(pud_t pud) { if (native_pud_val(pud) & (((pteval_t)(1)) << 7)) return (((signed long)(~(((1UL) << 30)-1))) & physical_mask); else return ((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pudval_t pud_flags_mask(pud_t pud) { return ~pud_pfn_mask(pud); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pudval_t pud_flags(pud_t pud) { return native_pud_val(pud) & pud_flags_mask(pud); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmdval_t pmd_pfn_mask(pmd_t pmd) { if (native_pmd_val(pmd) & (((pteval_t)(1)) << 7)) return (((signed long)(~(((1UL) << 21)-1))) & physical_mask); else return ((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmdval_t pmd_flags_mask(pmd_t pmd) { return ~pmd_pfn_mask(pmd); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmdval_t pmd_flags(pmd_t pmd) { return native_pmd_val(pmd) & pmd_flags_mask(pmd); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t native_make_pte(pteval_t val) { return (pte_t) { .pte = val }; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pteval_t native_pte_val(pte_t pte) { return pte.pte; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pteval_t pte_flags(pte_t pte) { return native_pte_val(pte) & (~((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask))); } extern uint16_t __cachemode2pte_tbl[_PAGE_CACHE_MODE_NUM]; extern uint8_t __pte2cachemode_tbl[8]; # 467 "../arch/x86/include/asm/pgtable_types.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long cachemode2protval(enum page_cache_mode pcm) { if (__builtin_expect(!!(pcm == 0), 1)) return 0; return __cachemode2pte_tbl[pcm]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgprot_t cachemode2pgprot(enum page_cache_mode pcm) { return ((pgprot_t) { (cachemode2protval(pcm)) } ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) enum page_cache_mode pgprot2cachemode(pgprot_t pgprot) { unsigned long masked; masked = ((pgprot).pgprot) & ((((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 4) | (((pteval_t)(1)) << 3)); if (__builtin_expect(!!(masked == 0), 1)) return 0; return __pte2cachemode_tbl[((((masked) >> (7 - 2)) & 4) | (((masked) >> (4 - 1)) & 2) | (((masked) >> 3) & 1))]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgprot_t pgprot_4k_2_large(pgprot_t pgprot) { pgprotval_t val = ((pgprot).pgprot); pgprot_t new; ((new).pgprot) = (val & ~((((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 12))) | ((val & (((pteval_t)(1)) << 7)) << (12 - 7)); return new; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgprot_t pgprot_large_2_4k(pgprot_t pgprot) { pgprotval_t val = ((pgprot).pgprot); pgprot_t new; ((new).pgprot) = (val & ~((((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 12))) | ((val & (((pteval_t)(1)) << 12)) >> (12 - 7)); return new; } typedef struct page *pgtable_t; extern pteval_t __supported_pte_mask; extern pteval_t __default_kernel_pte_mask; extern void set_nx(void); extern int nx_enabled; extern pgprot_t pgprot_writecombine(pgprot_t prot); extern pgprot_t pgprot_writethrough(pgprot_t prot); struct file; pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, unsigned long size, pgprot_t vma_prot); void set_pte_vaddr(unsigned long vaddr, pte_t pte); struct seq_file; extern void arch_report_meminfo(struct seq_file *m); enum pg_level { PG_LEVEL_NONE, PG_LEVEL_4K, PG_LEVEL_2M, PG_LEVEL_1G, PG_LEVEL_512G, PG_LEVEL_NUM }; extern void update_page_count(int level, unsigned long pages); # 561 "../arch/x86/include/asm/pgtable_types.h" extern pte_t *lookup_address(unsigned long address, unsigned int *level); extern pte_t *lookup_address_in_pgd(pgd_t *pgd, unsigned long address, unsigned int *level); extern pmd_t *lookup_pmd_address(unsigned long address); extern phys_addr_t slow_virt_to_phys(void *__address); extern int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) kernel_map_pages_in_pgd(pgd_t *pgd, u64 pfn, unsigned long address, unsigned numpages, unsigned long page_flags); extern int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) kernel_unmap_pages_in_pgd(pgd_t *pgd, unsigned long address, unsigned long numpages); # 46 "../arch/x86/include/asm/paravirt_types.h" 2 # 1 "../arch/x86/include/asm/nospec-branch.h" 1 # 1 "../include/linux/static_key.h" 1 # 7 "../arch/x86/include/asm/nospec-branch.h" 2 # 1 "../arch/x86/include/asm/alternative-asm.h" 1 # 10 "../arch/x86/include/asm/nospec-branch.h" 2 # 1 "../arch/x86/include/asm/msr-index.h" 1 # 12 "../arch/x86/include/asm/nospec-branch.h" 2 # 214 "../arch/x86/include/asm/nospec-branch.h" enum spectre_v2_mitigation { SPECTRE_V2_NONE, SPECTRE_V2_RETPOLINE_GENERIC, SPECTRE_V2_RETPOLINE_AMD, SPECTRE_V2_IBRS_ENHANCED, }; enum spectre_v2_user_mitigation { SPECTRE_V2_USER_NONE, SPECTRE_V2_USER_STRICT, SPECTRE_V2_USER_STRICT_PREFERRED, SPECTRE_V2_USER_PRCTL, SPECTRE_V2_USER_SECCOMP, }; enum ssb_mitigation { SPEC_STORE_BYPASS_NONE, SPEC_STORE_BYPASS_DISABLE, SPEC_STORE_BYPASS_PRCTL, SPEC_STORE_BYPASS_SECCOMP, }; extern char __indirect_thunk_start[]; extern char __indirect_thunk_end[]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vmexit_fill_RSB(void) { unsigned long loops; asm volatile ("999:\n\t" ".pushsection .discard.ignore_alts\n\t" ".long 999b - .\n\t" ".popsection\n\t" "# ALT: oldnstr\n" "661:\n\t" "jmp 910f" "\n662:\n" "# ALT: padding\n" ".skip -(((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")) > 0) * " "((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")),0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 7*32+12)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "mov $(32/2), %0; 771: call 772f; 773: pause; lfence; jmp 773b; 772: call 774f; 775: pause; lfence; jmp 775b; 774: dec %0; jnz 771b; add $(64/8) * 32, %1;" "\n" "665""1" ":\n" ".popsection\n" "910:" : "=r" (loops), "+r" (current_stack_pointer) : : "memory" ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void alternative_msr_write(unsigned int msr, u64 val, unsigned int feature) { asm volatile("# ALT: oldnstr\n" "661:\n\t" "" "\n662:\n" "# ALT: padding\n" ".skip -(((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")) > 0) * " "((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")),0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "%c[feature]" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "wrmsr" "\n" "665""1" ":\n" ".popsection\n" : : "c" (msr), "a" ((u32)val), "d" ((u32)(val >> 32)), [feature] "i" (feature) : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void indirect_branch_prediction_barrier(void) { u64 val = ((((1UL))) << (0)); alternative_msr_write(0x00000049, val, ( 7*32+21)); } extern u64 x86_spec_ctrl_base; # 307 "../arch/x86/include/asm/nospec-branch.h" extern struct static_key_false switch_to_cond_stibp; extern struct static_key_false switch_mm_cond_ibpb; extern struct static_key_false switch_mm_always_ibpb; extern struct static_key_false mds_user_clear; extern struct static_key_false mds_idle_clear; # 323 "../arch/x86/include/asm/nospec-branch.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mds_clear_cpu_buffers(void) { static const u16 ds = (3*8); # 336 "../arch/x86/include/asm/nospec-branch.h" asm volatile("verw %[ds]" : : [ds] "m" (ds) : "cc"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mds_user_clear_cpu_buffers(void) { if (({ bool branch; if (__builtin_types_compatible_p(typeof(*&mds_user_clear), struct static_key_true)) branch = !arch_static_branch(&(&mds_user_clear)->key, true); else if (__builtin_types_compatible_p(typeof(*&mds_user_clear), struct static_key_false)) branch = !arch_static_branch_jump(&(&mds_user_clear)->key, true); else branch = ____wrong_branch_error(); __builtin_expect(!!(branch), 1); })) mds_clear_cpu_buffers(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mds_idle_clear_cpu_buffers(void) { if (({ bool branch; if (__builtin_types_compatible_p(typeof(*&mds_idle_clear), struct static_key_true)) branch = !arch_static_branch(&(&mds_idle_clear)->key, true); else if (__builtin_types_compatible_p(typeof(*&mds_idle_clear), struct static_key_false)) branch = !arch_static_branch_jump(&(&mds_idle_clear)->key, true); else branch = ____wrong_branch_error(); __builtin_expect(!!(branch), 1); })) mds_clear_cpu_buffers(); } # 47 "../arch/x86/include/asm/paravirt_types.h" 2 struct page; struct thread_struct; struct desc_ptr; struct tss_struct; struct mm_struct; struct desc_struct; struct task_struct; struct cpumask; struct flush_tlb_info; struct mmu_gather; struct vm_area_struct; struct paravirt_callee_save { void *func; }; struct pv_info { unsigned int kernel_rpl; int shared_kernel_pmd; u16 extra_user_64bit_cs; const char *name; }; struct pv_init_ops { # 91 "../arch/x86/include/asm/paravirt_types.h" unsigned (*patch)(u8 type, void *insn_buff, unsigned long addr, unsigned len); } ; struct pv_lazy_ops { void (*enter)(void); void (*leave)(void); void (*flush)(void); } ; struct pv_time_ops { unsigned long long (*sched_clock)(void); unsigned long long (*steal_clock)(int cpu); } ; struct pv_cpu_ops { void (*io_delay)(void); unsigned long (*get_debugreg)(int regno); void (*set_debugreg)(int regno, unsigned long value); unsigned long (*read_cr0)(void); void (*write_cr0)(unsigned long); void (*write_cr4)(unsigned long); unsigned long (*read_cr8)(void); void (*write_cr8)(unsigned long); void (*load_tr_desc)(void); void (*load_gdt)(const struct desc_ptr *); void (*load_idt)(const struct desc_ptr *); void (*set_ldt)(const void *desc, unsigned entries); unsigned long (*store_tr)(void); void (*load_tls)(struct thread_struct *t, unsigned int cpu); void (*load_gs_index)(unsigned int idx); void (*write_ldt_entry)(struct desc_struct *ldt, int entrynum, const void *desc); void (*write_gdt_entry)(struct desc_struct *, int entrynum, const void *desc, int size); void (*write_idt_entry)(gate_desc *, int entrynum, const gate_desc *gate); void (*alloc_ldt)(struct desc_struct *ldt, unsigned entries); void (*free_ldt)(struct desc_struct *ldt, unsigned entries); void (*load_sp0)(unsigned long sp0); void (*set_iopl_mask)(unsigned mask); void (*wbinvd)(void); void (*cpuid)(unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx); u64 (*read_msr)(unsigned int msr); void (*write_msr)(unsigned int msr, unsigned low, unsigned high); u64 (*read_msr_safe)(unsigned int msr, int *err); int (*write_msr_safe)(unsigned int msr, unsigned low, unsigned high); u64 (*read_pmc)(int counter); void (*usergs_sysret64)(void); void (*iret)(void); void (*swapgs)(void); void (*start_context_switch)(struct task_struct *prev); void (*end_context_switch)(struct task_struct *next); } ; struct pv_irq_ops { # 199 "../arch/x86/include/asm/paravirt_types.h" struct paravirt_callee_save save_fl; struct paravirt_callee_save restore_fl; struct paravirt_callee_save irq_disable; struct paravirt_callee_save irq_enable; void (*safe_halt)(void); void (*halt)(void); } ; struct pv_mmu_ops { void (*flush_tlb_user)(void); void (*flush_tlb_kernel)(void); void (*flush_tlb_one_user)(unsigned long addr); void (*flush_tlb_others)(const struct cpumask *cpus, const struct flush_tlb_info *info); void (*tlb_remove_table)(struct mmu_gather *tlb, void *table); void (*exit_mmap)(struct mm_struct *mm); unsigned long (*read_cr2)(void); void (*write_cr2)(unsigned long); unsigned long (*read_cr3)(void); void (*write_cr3)(unsigned long); void (*activate_mm)(struct mm_struct *prev, struct mm_struct *next); void (*dup_mmap)(struct mm_struct *oldmm, struct mm_struct *mm); int (*pgd_alloc)(struct mm_struct *mm); void (*pgd_free)(struct mm_struct *mm, pgd_t *pgd); void (*alloc_pte)(struct mm_struct *mm, unsigned long pfn); void (*alloc_pmd)(struct mm_struct *mm, unsigned long pfn); void (*alloc_pud)(struct mm_struct *mm, unsigned long pfn); void (*alloc_p4d)(struct mm_struct *mm, unsigned long pfn); void (*release_pte)(unsigned long pfn); void (*release_pmd)(unsigned long pfn); void (*release_pud)(unsigned long pfn); void (*release_p4d)(unsigned long pfn); void (*set_pte)(pte_t *ptep, pte_t pteval); void (*set_pte_at)(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pteval); void (*set_pmd)(pmd_t *pmdp, pmd_t pmdval); pte_t (*ptep_modify_prot_start)(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep); void (*ptep_modify_prot_commit)(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte); struct paravirt_callee_save pte_val; struct paravirt_callee_save make_pte; struct paravirt_callee_save pgd_val; struct paravirt_callee_save make_pgd; # 278 "../arch/x86/include/asm/paravirt_types.h" void (*set_pud)(pud_t *pudp, pud_t pudval); struct paravirt_callee_save pmd_val; struct paravirt_callee_save make_pmd; struct paravirt_callee_save pud_val; struct paravirt_callee_save make_pud; void (*set_p4d)(p4d_t *p4dp, p4d_t p4dval); struct paravirt_callee_save p4d_val; struct paravirt_callee_save make_p4d; void (*set_pgd)(pgd_t *pgdp, pgd_t pgdval); struct pv_lazy_ops lazy_mode; void (*set_fixmap)(unsigned idx, phys_addr_t phys, pgprot_t flags); } ; struct arch_spinlock; struct qspinlock; struct pv_lock_ops { void (*queued_spin_lock_slowpath)(struct qspinlock *lock, u32 val); struct paravirt_callee_save queued_spin_unlock; void (*wait)(u8 *ptr, u8 val); void (*kick)(int cpu); struct paravirt_callee_save vcpu_is_preempted; } ; struct paravirt_patch_template { struct pv_init_ops init; struct pv_time_ops time; struct pv_cpu_ops cpu; struct pv_irq_ops irq; struct pv_mmu_ops mmu; struct pv_lock_ops lock; } ; extern struct pv_info pv_info; extern struct paravirt_patch_template pv_ops; # 373 "../arch/x86/include/asm/paravirt_types.h" unsigned paravirt_patch_ident_64(void *insn_buff, unsigned len); unsigned paravirt_patch_default(u8 type, void *insn_buff, unsigned long addr, unsigned len); unsigned paravirt_patch_insns(void *insn_buff, unsigned len, const char *start, const char *end); unsigned native_patch(u8 type, void *insn_buff, unsigned long addr, unsigned len); int paravirt_disable_iospace(void); # 654 "../arch/x86/include/asm/paravirt_types.h" enum paravirt_lazy_mode { PARAVIRT_LAZY_NONE, PARAVIRT_LAZY_MMU, PARAVIRT_LAZY_CPU, }; enum paravirt_lazy_mode paravirt_get_lazy_mode(void); void paravirt_start_context_switch(struct task_struct *prev); void paravirt_end_context_switch(struct task_struct *next); void paravirt_enter_lazy_mmu(void); void paravirt_leave_lazy_mmu(void); void paravirt_flush_lazy_mmu(void); void _paravirt_nop(void); u64 _paravirt_ident_64(u64); struct paravirt_patch_site { u8 *instr; u8 type; u8 len; }; extern struct paravirt_patch_site __parainstructions[], __parainstructions_end[]; # 95 "../arch/x86/include/asm/ptrace.h" 2 struct cpuinfo_x86; struct task_struct; extern unsigned long profile_pc(struct pt_regs *regs); extern unsigned long convert_ip_to_linear(struct task_struct *child, struct pt_regs *regs); extern void send_sigtrap(struct pt_regs *regs, int error_code, int si_code); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long regs_return_value(struct pt_regs *regs) { return regs->ax; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void regs_set_return_value(struct pt_regs *regs, unsigned long rc) { regs->ax = rc; } # 126 "../arch/x86/include/asm/ptrace.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int user_mode(struct pt_regs *regs) { return !!(regs->cs & 3); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int v8086_mode(struct pt_regs *regs) { return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool user_64bit_mode(struct pt_regs *regs) { # 155 "../arch/x86/include/asm/ptrace.h" return regs->cs == (6*8 + 3) || regs->cs == pv_info.extra_user_64bit_cs; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long kernel_stack_pointer(struct pt_regs *regs) { return regs->sp; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long instruction_pointer(struct pt_regs *regs) { return regs->ip; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void instruction_pointer_set(struct pt_regs *regs, unsigned long val) { regs->ip = val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long frame_pointer(struct pt_regs *regs) { return regs->bp; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long user_stack_pointer(struct pt_regs *regs) { return regs->sp; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void user_stack_pointer_set(struct pt_regs *regs, unsigned long val) { regs->sp = val; } extern int regs_query_register_offset(const char *name); extern const char *regs_query_register_name(unsigned int offset); # 213 "../arch/x86/include/asm/ptrace.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long regs_get_register(struct pt_regs *regs, unsigned int offset) { if (__builtin_expect(!!(offset > (__builtin_offsetof(struct pt_regs, ss))), 0)) return 0; # 230 "../arch/x86/include/asm/ptrace.h" return *(unsigned long *)((unsigned long)regs + offset); } # 241 "../arch/x86/include/asm/ptrace.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int regs_within_kernel_stack(struct pt_regs *regs, unsigned long addr) { return ((addr & ~((((1UL) << 12) << (2 + 1)) - 1)) == (regs->sp & ~((((1UL) << 12) << (2 + 1)) - 1))); } # 256 "../arch/x86/include/asm/ptrace.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long *regs_get_kernel_stack_nth_addr(struct pt_regs *regs, unsigned int n) { unsigned long *addr = (unsigned long *)regs->sp; addr += n; if (regs_within_kernel_stack(regs, (unsigned long)addr)) return addr; else return ((void *)0); } extern long probe_kernel_read(void *dst, const void *src, size_t size); # 279 "../arch/x86/include/asm/ptrace.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, unsigned int n) { unsigned long *addr; unsigned long val; long ret; addr = regs_get_kernel_stack_nth_addr(regs, n); if (addr) { ret = probe_kernel_read(&val, addr, sizeof(val)); if (!ret) return val; } return 0; } # 306 "../arch/x86/include/asm/ptrace.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long regs_get_kernel_argument(struct pt_regs *regs, unsigned int n) { static const unsigned int argument_offs[] = { __builtin_offsetof(struct pt_regs, di), __builtin_offsetof(struct pt_regs, si), __builtin_offsetof(struct pt_regs, dx), __builtin_offsetof(struct pt_regs, cx), __builtin_offsetof(struct pt_regs, r8), __builtin_offsetof(struct pt_regs, r9), }; if (n >= 6) { n -= 6 - 1; return regs_get_kernel_stack_nth(regs, n); } else return regs_get_register(regs, argument_offs[n]); } # 358 "../arch/x86/include/asm/ptrace.h" struct user_desc; extern int do_get_thread_area(struct task_struct *p, int idx, struct user_desc *info); extern int do_set_thread_area(struct task_struct *p, int idx, struct user_desc *info, int can_allocate); # 6 "../arch/x86/include/asm/math_emu.h" 2 struct math_emu_info { long ___orig_eip; struct pt_regs *regs; }; # 13 "../arch/x86/include/asm/processor.h" 2 # 1 "../arch/x86/include/uapi/asm/sigcontext.h" 1 # 40 "../arch/x86/include/uapi/asm/sigcontext.h" struct _fpx_sw_bytes { __u32 magic1; # 54 "../arch/x86/include/uapi/asm/sigcontext.h" __u32 extended_size; __u64 xfeatures; __u32 xstate_size; __u32 padding[7]; }; # 85 "../arch/x86/include/uapi/asm/sigcontext.h" struct _fpreg { __u16 significand[4]; __u16 exponent; }; struct _fpxreg { __u16 significand[4]; __u16 exponent; __u16 padding[3]; }; struct _xmmreg { __u32 element[4]; }; struct _fpstate_32 { __u32 cw; __u32 sw; __u32 tag; __u32 ipoff; __u32 cssel; __u32 dataoff; __u32 datasel; struct _fpreg _st[8]; __u16 status; __u16 magic; __u32 _fxsr_env[6]; __u32 mxcsr; __u32 reserved; struct _fpxreg _fxsr_st[8]; struct _xmmreg _xmm[8]; union { __u32 padding1[44]; __u32 padding[44]; }; union { __u32 padding2[12]; struct _fpx_sw_bytes sw_reserved; }; }; # 149 "../arch/x86/include/uapi/asm/sigcontext.h" struct _fpstate_64 { __u16 cwd; __u16 swd; __u16 twd; __u16 fop; __u64 rip; __u64 rdp; __u32 mxcsr; __u32 mxcsr_mask; __u32 st_space[32]; __u32 xmm_space[64]; __u32 reserved2[12]; union { __u32 reserved3[12]; struct _fpx_sw_bytes sw_reserved; }; }; struct _header { __u64 xfeatures; __u64 reserved1[2]; __u64 reserved2[5]; }; struct _ymmh_state { __u32 ymmh_space[64]; }; # 192 "../arch/x86/include/uapi/asm/sigcontext.h" struct _xstate { struct _fpstate_64 fpstate; struct _header xstate_hdr; struct _ymmh_state ymmh; }; struct sigcontext_32 { __u16 gs, __gsh; __u16 fs, __fsh; __u16 es, __esh; __u16 ds, __dsh; __u32 di; __u32 si; __u32 bp; __u32 sp; __u32 bx; __u32 dx; __u32 cx; __u32 ax; __u32 trapno; __u32 err; __u32 ip; __u16 cs, __csh; __u32 flags; __u32 sp_at_signal; __u16 ss, __ssh; # 230 "../arch/x86/include/uapi/asm/sigcontext.h" __u32 fpstate; __u32 oldmask; __u32 cr2; }; struct sigcontext_64 { __u64 r8; __u64 r9; __u64 r10; __u64 r11; __u64 r12; __u64 r13; __u64 r14; __u64 r15; __u64 di; __u64 si; __u64 bp; __u64 bx; __u64 dx; __u64 ax; __u64 cx; __u64 sp; __u64 ip; __u64 flags; __u16 cs; __u16 gs; __u16 fs; __u16 ss; __u64 err; __u64 trapno; __u64 oldmask; __u64 cr2; # 273 "../arch/x86/include/uapi/asm/sigcontext.h" __u64 fpstate; __u64 reserved1[8]; }; # 16 "../arch/x86/include/asm/processor.h" 2 # 1 "../arch/x86/include/asm/page.h" 1 # 12 "../arch/x86/include/asm/page.h" # 1 "../arch/x86/include/asm/page_64.h" 1 # 11 "../arch/x86/include/asm/page_64.h" extern unsigned long max_pfn; extern unsigned long phys_base; extern unsigned long page_offset_base; extern unsigned long vmalloc_base; extern unsigned long vmemmap_base; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long __phys_addr_nodebug(unsigned long x) { unsigned long y = x - (0xffffffff80000000UL); x = y + ((x > y) ? phys_base : ((0xffffffff80000000UL) - ((unsigned long)page_offset_base))); return x; } extern unsigned long __phys_addr(unsigned long); extern unsigned long __phys_addr_symbol(unsigned long); # 43 "../arch/x86/include/asm/page_64.h" void clear_page_orig(void *page); void clear_page_rep(void *page); void clear_page_erms(void *page); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_page(void *page) { asm volatile ("# ALT: oldinstr2\n" "661:\n\t" "call %P[old]" "\n662:\n" "# ALT: padding2\n" ".skip -((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")) > 0) * " "(" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")), 0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 3*32+16)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" " .long 661b - .\n" " .long " "664""2""f - .\n" " .word " "( 9*32+ 9)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""2""f-""664""2""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "call %P[new1]" "\n" "665""1" ":\n" "# ALT: replacement " "2" "\n" "664""2"":\n\t" "call %P[new2]" "\n" "665""2" ":\n" ".popsection\n" : "=D" (page), "+r" (current_stack_pointer) : [old] "i" (clear_page_orig), [new1] "i" (clear_page_rep), [new2] "i" (clear_page_erms), "0" (page) : "cc", "memory", "rax", "rcx"); } void copy_page(void *to, void *from); # 13 "../arch/x86/include/asm/page.h" 2 struct page; # 1 "../include/linux/range.h" 1 struct range { u64 start; u64 end; }; int add_range(struct range *range, int az, int nr_range, u64 start, u64 end); int add_range_with_merge(struct range *range, int az, int nr_range, u64 start, u64 end); void subtract_range(struct range *range, int az, u64 start, u64 end); int clean_sort_range(struct range *range, int az); void sort_range(struct range *range, int nr_range); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) resource_size_t cap_resource(u64 val) { if (val > ((resource_size_t)~0)) return ((resource_size_t)~0); return val; } # 22 "../arch/x86/include/asm/page.h" 2 extern struct range pfn_mapped[]; extern int nr_pfn_mapped; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_user_page(void *page, unsigned long vaddr, struct page *pg) { clear_page(page); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void copy_user_page(void *to, void *from, unsigned long vaddr, struct page *topage) { copy_page(to, from); } # 71 "../arch/x86/include/asm/page.h" extern bool __virt_addr_valid(unsigned long kaddr); # 1 "../include/asm-generic/memory_model.h" 1 # 1 "../include/linux/pfn.h" 1 # 13 "../include/linux/pfn.h" typedef struct { u64 val; } pfn_t; # 6 "../include/asm-generic/memory_model.h" 2 # 77 "../arch/x86/include/asm/page.h" 2 # 1 "../include/asm-generic/getorder.h" 1 # 13 "../include/asm-generic/getorder.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__const__)) int __get_order(unsigned long size) { int order; size--; size >>= 12; order = fls64(size); return order; } # 78 "../arch/x86/include/asm/page.h" 2 # 19 "../arch/x86/include/asm/processor.h" 2 # 1 "../arch/x86/include/asm/msr.h" 1 # 10 "../arch/x86/include/asm/msr.h" # 1 "../arch/x86/include/uapi/asm/errno.h" 1 # 11 "../arch/x86/include/asm/msr.h" 2 # 1 "../arch/x86/include/asm/cpumask.h" 1 # 1 "../include/linux/cpumask.h" 1 # 12 "../include/linux/cpumask.h" # 1 "../include/linux/bitmap.h" 1 # 1 "../include/linux/string.h" 1 # 10 "../include/linux/string.h" # 1 "../include/uapi/linux/string.h" 1 # 11 "../include/linux/string.h" 2 extern char *strndup_user(const char *, long); extern void *memdup_user(const void *, size_t); extern void *vmemdup_user(const void *, size_t); extern void *memdup_user_nul(const void *, size_t); # 1 "../arch/x86/include/asm/string.h" 1 # 1 "../arch/x86/include/asm/string_64.h" 1 # 14 "../arch/x86/include/asm/string_64.h" extern void *memcpy(void *to, const void *from, size_t len); extern void *__memcpy(void *to, const void *from, size_t len); void *memset(void *s, int c, size_t n); void *__memset(void *s, int c, size_t n); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *memset16(uint16_t *s, uint16_t v, size_t n) { long d0, d1; asm volatile("rep\n\t" "stosw" : "=&c" (d0), "=&D" (d1) : "a" (v), "1" (s), "0" (n) : "memory"); return s; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *memset32(uint32_t *s, uint32_t v, size_t n) { long d0, d1; asm volatile("rep\n\t" "stosl" : "=&c" (d0), "=&D" (d1) : "a" (v), "1" (s), "0" (n) : "memory"); return s; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *memset64(uint64_t *s, uint64_t v, size_t n) { long d0, d1; asm volatile("rep\n\t" "stosq" : "=&c" (d0), "=&D" (d1) : "a" (v), "1" (s), "0" (n) : "memory"); return s; } void *memmove(void *dest, const void *src, size_t count); void *__memmove(void *dest, const void *src, size_t count); int memcmp(const void *cs, const void *ct, size_t count); size_t strlen(const char *s); char *strcpy(char *dest, const char *src); char *strcat(char *dest, const char *src); int strcmp(const char *cs, const char *ct); # 86 "../arch/x86/include/asm/string_64.h" __attribute__((__warn_unused_result__)) unsigned long __memcpy_mcsafe(void *dst, const void *src, size_t cnt); extern struct static_key_false mcsafe_key; # 105 "../arch/x86/include/asm/string_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __attribute__((__warn_unused_result__)) unsigned long memcpy_mcsafe(void *dst, const void *src, size_t cnt) { if (({ bool branch; if (__builtin_types_compatible_p(typeof(*&mcsafe_key), struct static_key_true)) branch = arch_static_branch_jump(&(&mcsafe_key)->key, false); else if (__builtin_types_compatible_p(typeof(*&mcsafe_key), struct static_key_false)) branch = arch_static_branch(&(&mcsafe_key)->key, false); else branch = ____wrong_branch_error(); __builtin_expect(!!(branch), 0); })) return __memcpy_mcsafe(dst, src, cnt); else __memcpy(dst, src, cnt); return 0; } void __memcpy_flushcache(void *dst, const void *src, size_t cnt); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void memcpy_flushcache(void *dst, const void *src, size_t cnt) { if (__builtin_constant_p(cnt)) { switch (cnt) { case 4: asm ("movntil %1, %0" : "=m"(*(u32 *)dst) : "r"(*(u32 *)src)); return; case 8: asm ("movntiq %1, %0" : "=m"(*(u64 *)dst) : "r"(*(u64 *)src)); return; case 16: asm ("movntiq %1, %0" : "=m"(*(u64 *)dst) : "r"(*(u64 *)src)); asm ("movntiq %1, %0" : "=m"(*(u64 *)(dst + 8)) : "r"(*(u64 *)(src + 8))); return; } } __memcpy_flushcache(dst, src, cnt); } # 6 "../arch/x86/include/asm/string.h" 2 # 21 "../include/linux/string.h" 2 extern char * strcpy(char *,const char *); extern char * strncpy(char *,const char *, __kernel_size_t); size_t strlcpy(char *, const char *, size_t); ssize_t strscpy(char *, const char *, size_t); ssize_t strscpy_pad(char *dest, const char *src, size_t count); extern char * strcat(char *, const char *); extern char * strncat(char *, const char *, __kernel_size_t); extern size_t strlcat(char *, const char *, __kernel_size_t); extern int strcmp(const char *,const char *); extern int strncmp(const char *,const char *,__kernel_size_t); extern int strcasecmp(const char *s1, const char *s2); extern int strncasecmp(const char *s1, const char *s2, size_t n); extern char * strchr(const char *,int); extern char * strchrnul(const char *,int); extern char * strnchr(const char *, size_t, int); extern char * strrchr(const char *,int); extern char * __attribute__((__warn_unused_result__)) skip_spaces(const char *); extern char *strim(char *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) char *strstrip(char *str) { return strim(str); } extern char * strstr(const char *, const char *); extern char * strnstr(const char *, const char *, size_t); extern __kernel_size_t strlen(const char *); extern __kernel_size_t strnlen(const char *,__kernel_size_t); extern char * strpbrk(const char *,const char *); extern char * strsep(char **,const char *); extern __kernel_size_t strspn(const char *,const char *); extern __kernel_size_t strcspn(const char *,const char *); # 121 "../include/linux/string.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *memset_l(unsigned long *p, unsigned long v, __kernel_size_t n) { if (64 == 32) return memset32((uint32_t *)p, v, n); else return memset64((uint64_t *)p, v, n); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *memset_p(void **p, void *v, __kernel_size_t n) { if (64 == 32) return memset32((uint32_t *)p, (uintptr_t)v, n); else return memset64((uint64_t *)p, (uintptr_t)v, n); } extern void **__memcat_p(void **a, void **b); # 152 "../include/linux/string.h" extern void * memscan(void *,int,__kernel_size_t); extern int memcmp(const void *,const void *,__kernel_size_t); extern int bcmp(const void *,const void *,__kernel_size_t); extern void * memchr(const void *,int,__kernel_size_t); # 177 "../include/linux/string.h" void *memchr_inv(const void *s, int c, size_t n); char *strreplace(char *s, char old, char new); extern void kfree_const(const void *x); extern char *kstrdup(const char *s, gfp_t gfp) __attribute__((__malloc__)); extern const char *kstrdup_const(const char *s, gfp_t gfp); extern char *kstrndup(const char *s, size_t len, gfp_t gfp); extern void *kmemdup(const void *src, size_t len, gfp_t gfp); extern char *kmemdup_nul(const char *s, size_t len, gfp_t gfp); extern char **argv_split(gfp_t gfp, const char *str, int *argcp); extern void argv_free(char **argv); extern bool sysfs_streq(const char *s1, const char *s2); extern int kstrtobool(const char *s, bool *res); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int strtobool(const char *s, bool *res) { return kstrtobool(s, res); } int match_string(const char * const *array, size_t n, const char *string); int __sysfs_match_string(const char * const *array, size_t n, const char *s); # 211 "../include/linux/string.h" int vbin_printf(u32 *bin_buf, size_t size, const char *fmt, va_list args); int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf); int bprintf(u32 *bin_buf, size_t size, const char *fmt, ...) __attribute__((__format__(printf, 3, 4))); extern ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos, const void *from, size_t available); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool strstarts(const char *str, const char *prefix) { return strncmp(str, prefix, strlen(prefix)) == 0; } size_t memweight(const void *ptr, size_t bytes); void memzero_explicit(void *s, size_t count); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *kbasename(const char *path) { const char *tail = strrchr(path, '/'); return tail ? tail + 1 : path; } void fortify_panic(const char *name) __attribute__((__noreturn__)) __attribute__((__cold__)); void __read_overflow(void) ; void __read_overflow2(void) ; void __read_overflow3(void) ; void __write_overflow(void) ; # 456 "../include/linux/string.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void memcpy_and_pad(void *dest, size_t dest_len, const void *src, size_t count, int pad) { if (dest_len > count) { __memcpy(dest, src, count); __memset(dest + count, pad, dest_len - count); } else __memcpy(dest, src, dest_len); } # 480 "../include/linux/string.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) size_t str_has_prefix(const char *str, const char *prefix) { size_t len = strlen(prefix); return strncmp(str, prefix, len) == 0 ? len : 0; } # 10 "../include/linux/bitmap.h" 2 # 111 "../include/linux/bitmap.h" extern unsigned long *bitmap_alloc(unsigned int nbits, gfp_t flags); extern unsigned long *bitmap_zalloc(unsigned int nbits, gfp_t flags); extern void bitmap_free(const unsigned long *bitmap); extern int __bitmap_empty(const unsigned long *bitmap, unsigned int nbits); extern int __bitmap_full(const unsigned long *bitmap, unsigned int nbits); extern int __bitmap_equal(const unsigned long *bitmap1, const unsigned long *bitmap2, unsigned int nbits); extern void __bitmap_complement(unsigned long *dst, const unsigned long *src, unsigned int nbits); extern void __bitmap_shift_right(unsigned long *dst, const unsigned long *src, unsigned int shift, unsigned int nbits); extern void __bitmap_shift_left(unsigned long *dst, const unsigned long *src, unsigned int shift, unsigned int nbits); extern int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, unsigned int nbits); extern void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, unsigned int nbits); extern void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, unsigned int nbits); extern int __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1, const unsigned long *bitmap2, unsigned int nbits); extern int __bitmap_intersects(const unsigned long *bitmap1, const unsigned long *bitmap2, unsigned int nbits); extern int __bitmap_subset(const unsigned long *bitmap1, const unsigned long *bitmap2, unsigned int nbits); extern int __bitmap_weight(const unsigned long *bitmap, unsigned int nbits); extern void __bitmap_set(unsigned long *map, unsigned int start, int len); extern void __bitmap_clear(unsigned long *map, unsigned int start, int len); extern unsigned long bitmap_find_next_zero_area_off(unsigned long *map, unsigned long size, unsigned long start, unsigned int nr, unsigned long align_mask, unsigned long align_offset); # 164 "../include/linux/bitmap.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long bitmap_find_next_zero_area(unsigned long *map, unsigned long size, unsigned long start, unsigned int nr, unsigned long align_mask) { return bitmap_find_next_zero_area_off(map, size, start, nr, align_mask, 0); } extern int __bitmap_parse(const char *buf, unsigned int buflen, int is_user, unsigned long *dst, int nbits); extern int bitmap_parse_user(const char *ubuf, unsigned int ulen, unsigned long *dst, int nbits); extern int bitmap_parselist(const char *buf, unsigned long *maskp, int nmaskbits); extern int bitmap_parselist_user(const char *ubuf, unsigned int ulen, unsigned long *dst, int nbits); extern void bitmap_remap(unsigned long *dst, const unsigned long *src, const unsigned long *old, const unsigned long *new, unsigned int nbits); extern int bitmap_bitremap(int oldbit, const unsigned long *old, const unsigned long *new, int bits); extern void bitmap_onto(unsigned long *dst, const unsigned long *orig, const unsigned long *relmap, unsigned int bits); extern void bitmap_fold(unsigned long *dst, const unsigned long *orig, unsigned int sz, unsigned int nbits); extern int bitmap_find_free_region(unsigned long *bitmap, unsigned int bits, int order); extern void bitmap_release_region(unsigned long *bitmap, unsigned int pos, int order); extern int bitmap_allocate_region(unsigned long *bitmap, unsigned int pos, int order); extern unsigned int bitmap_ord_to_pos(const unsigned long *bitmap, unsigned int ord, unsigned int nbits); extern int bitmap_print_to_pagebuf(bool list, char *buf, const unsigned long *maskp, int nmaskbits); # 215 "../include/linux/bitmap.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bitmap_zero(unsigned long *dst, unsigned int nbits) { unsigned int len = (((nbits) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8))) * sizeof(unsigned long); __memset(dst, 0, len); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bitmap_fill(unsigned long *dst, unsigned int nbits) { unsigned int len = (((nbits) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8))) * sizeof(unsigned long); __memset(dst, 0xff, len); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bitmap_copy(unsigned long *dst, const unsigned long *src, unsigned int nbits) { unsigned int len = (((nbits) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8))) * sizeof(unsigned long); __memcpy(dst, src, len); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bitmap_copy_clear_tail(unsigned long *dst, const unsigned long *src, unsigned int nbits) { bitmap_copy(dst, src, nbits); if (nbits % 64) dst[nbits / 64] &= (~0UL >> (-(nbits) & (64 - 1))); } extern void bitmap_from_arr32(unsigned long *bitmap, const u32 *buf, unsigned int nbits); extern void bitmap_to_arr32(u32 *buf, const unsigned long *bitmap, unsigned int nbits); # 263 "../include/linux/bitmap.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int bitmap_and(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, unsigned int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64 && (nbits) > 0)) return (*dst = *src1 & *src2 & (~0UL >> (-(nbits) & (64 - 1)))) != 0; return __bitmap_and(dst, src1, src2, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bitmap_or(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, unsigned int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64 && (nbits) > 0)) *dst = *src1 | *src2; else __bitmap_or(dst, src1, src2, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bitmap_xor(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, unsigned int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64 && (nbits) > 0)) *dst = *src1 ^ *src2; else __bitmap_xor(dst, src1, src2, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int bitmap_andnot(unsigned long *dst, const unsigned long *src1, const unsigned long *src2, unsigned int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64 && (nbits) > 0)) return (*dst = *src1 & ~(*src2) & (~0UL >> (-(nbits) & (64 - 1)))) != 0; return __bitmap_andnot(dst, src1, src2, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bitmap_complement(unsigned long *dst, const unsigned long *src, unsigned int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64 && (nbits) > 0)) *dst = ~(*src); else __bitmap_complement(dst, src, nbits); } # 313 "../include/linux/bitmap.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int bitmap_equal(const unsigned long *src1, const unsigned long *src2, unsigned int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64 && (nbits) > 0)) return !((*src1 ^ *src2) & (~0UL >> (-(nbits) & (64 - 1)))); if (__builtin_constant_p(nbits & (8 - 1)) && (((nbits) & ((typeof(nbits))(8) - 1)) == 0)) return !memcmp(src1, src2, nbits / 8); return __bitmap_equal(src1, src2, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int bitmap_intersects(const unsigned long *src1, const unsigned long *src2, unsigned int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64 && (nbits) > 0)) return ((*src1 & *src2) & (~0UL >> (-(nbits) & (64 - 1)))) != 0; else return __bitmap_intersects(src1, src2, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int bitmap_subset(const unsigned long *src1, const unsigned long *src2, unsigned int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64 && (nbits) > 0)) return ! ((*src1 & ~(*src2)) & (~0UL >> (-(nbits) & (64 - 1)))); else return __bitmap_subset(src1, src2, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int bitmap_empty(const unsigned long *src, unsigned nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64 && (nbits) > 0)) return ! (*src & (~0UL >> (-(nbits) & (64 - 1)))); return find_first_bit(src, nbits) == nbits; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int bitmap_full(const unsigned long *src, unsigned int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64 && (nbits) > 0)) return ! (~(*src) & (~0UL >> (-(nbits) & (64 - 1)))); return find_first_zero_bit(src, nbits) == nbits; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int bitmap_weight(const unsigned long *src, unsigned int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64 && (nbits) > 0)) return hweight_long(*src & (~0UL >> (-(nbits) & (64 - 1)))); return __bitmap_weight(src, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void bitmap_set(unsigned long *map, unsigned int start, unsigned int nbits) { if (__builtin_constant_p(nbits) && nbits == 1) __set_bit(start, map); else if (__builtin_constant_p(start & (8 - 1)) && (((start) & ((typeof(start))(8) - 1)) == 0) && __builtin_constant_p(nbits & (8 - 1)) && (((nbits) & ((typeof(nbits))(8) - 1)) == 0)) __memset((char *)map + start / 8, 0xff, nbits / 8); else __bitmap_set(map, start, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void bitmap_clear(unsigned long *map, unsigned int start, unsigned int nbits) { if (__builtin_constant_p(nbits) && nbits == 1) __clear_bit(start, map); else if (__builtin_constant_p(start & (8 - 1)) && (((start) & ((typeof(start))(8) - 1)) == 0) && __builtin_constant_p(nbits & (8 - 1)) && (((nbits) & ((typeof(nbits))(8) - 1)) == 0)) __memset((char *)map + start / 8, 0, nbits / 8); else __bitmap_clear(map, start, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bitmap_shift_right(unsigned long *dst, const unsigned long *src, unsigned int shift, unsigned int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64 && (nbits) > 0)) *dst = (*src & (~0UL >> (-(nbits) & (64 - 1)))) >> shift; else __bitmap_shift_right(dst, src, shift, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bitmap_shift_left(unsigned long *dst, const unsigned long *src, unsigned int shift, unsigned int nbits) { if ((__builtin_constant_p(nbits) && (nbits) <= 64 && (nbits) > 0)) *dst = (*src << shift) & (~0UL >> (-(nbits) & (64 - 1))); else __bitmap_shift_left(dst, src, shift, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int bitmap_parse(const char *buf, unsigned int buflen, unsigned long *maskp, int nmaskbits) { return __bitmap_parse(buf, buflen, 0, maskp, nmaskbits); } # 460 "../include/linux/bitmap.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bitmap_from_u64(unsigned long *dst, u64 mask) { dst[0] = mask & (~0UL); if (sizeof(mask) > sizeof(unsigned long)) dst[1] = mask >> 32; } # 13 "../include/linux/cpumask.h" 2 typedef struct cpumask { unsigned long bits[(((8192) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8)))]; } cpumask_t; # 38 "../include/linux/cpumask.h" extern unsigned int nr_cpu_ids; # 89 "../include/linux/cpumask.h" extern struct cpumask __cpu_possible_mask; extern struct cpumask __cpu_online_mask; extern struct cpumask __cpu_present_mask; extern struct cpumask __cpu_active_mask; # 118 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpu_max_bits_warn(unsigned int cpu, unsigned int bits) { ({ int __ret_warn_on = !!(cpu >= bits); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/cpumask.h"), "i" (121), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (0)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int cpumask_check(unsigned int cpu) { cpu_max_bits_warn(cpu, nr_cpu_ids); return cpu; } # 196 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int cpumask_first(const struct cpumask *srcp) { return find_first_bit(((srcp)->bits), nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int cpumask_last(const struct cpumask *srcp) { return find_last_bit(((srcp)->bits), nr_cpu_ids); } unsigned int cpumask_next(int n, const struct cpumask *srcp); # 221 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int cpumask_next_zero(int n, const struct cpumask *srcp) { if (n != -1) cpumask_check(n); return find_next_zero_bit(((srcp)->bits), nr_cpu_ids, n+1); } int cpumask_next_and(int n, const struct cpumask *, const struct cpumask *); int cpumask_any_but(const struct cpumask *mask, unsigned int cpu); unsigned int cpumask_local_spread(unsigned int i, int node); # 257 "../include/linux/cpumask.h" extern int cpumask_next_wrap(int n, const struct cpumask *mask, int start, bool wrap); # 309 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp) { set_bit(cpumask_check(cpu), ((dstp)->bits)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp) { __set_bit(cpumask_check(cpu), ((dstp)->bits)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpumask_clear_cpu(int cpu, struct cpumask *dstp) { clear_bit(cpumask_check(cpu), ((dstp)->bits)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __cpumask_clear_cpu(int cpu, struct cpumask *dstp) { __clear_bit(cpumask_check(cpu), ((dstp)->bits)); } # 342 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpumask_test_cpu(int cpu, const struct cpumask *cpumask) { return test_bit(cpumask_check(cpu), (((cpumask))->bits)); } # 356 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpumask_test_and_set_cpu(int cpu, struct cpumask *cpumask) { return test_and_set_bit(cpumask_check(cpu), ((cpumask)->bits)); } # 370 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpumask_test_and_clear_cpu(int cpu, struct cpumask *cpumask) { return test_and_clear_bit(cpumask_check(cpu), ((cpumask)->bits)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpumask_setall(struct cpumask *dstp) { bitmap_fill(((dstp)->bits), nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpumask_clear(struct cpumask *dstp) { bitmap_zero(((dstp)->bits), nr_cpu_ids); } # 401 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpumask_and(struct cpumask *dstp, const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_and(((dstp)->bits), ((src1p)->bits), ((src2p)->bits), nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpumask_or(struct cpumask *dstp, const struct cpumask *src1p, const struct cpumask *src2p) { bitmap_or(((dstp)->bits), ((src1p)->bits), ((src2p)->bits), nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpumask_xor(struct cpumask *dstp, const struct cpumask *src1p, const struct cpumask *src2p) { bitmap_xor(((dstp)->bits), ((src1p)->bits), ((src2p)->bits), nr_cpu_ids); } # 444 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpumask_andnot(struct cpumask *dstp, const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_andnot(((dstp)->bits), ((src1p)->bits), ((src2p)->bits), nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpumask_complement(struct cpumask *dstp, const struct cpumask *srcp) { bitmap_complement(((dstp)->bits), ((srcp)->bits), nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cpumask_equal(const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_equal(((src1p)->bits), ((src2p)->bits), nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cpumask_intersects(const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_intersects(((src1p)->bits), ((src2p)->bits), nr_cpu_ids); } # 495 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpumask_subset(const struct cpumask *src1p, const struct cpumask *src2p) { return bitmap_subset(((src1p)->bits), ((src2p)->bits), nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cpumask_empty(const struct cpumask *srcp) { return bitmap_empty(((srcp)->bits), nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cpumask_full(const struct cpumask *srcp) { return bitmap_full(((srcp)->bits), nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int cpumask_weight(const struct cpumask *srcp) { return bitmap_weight(((srcp)->bits), nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpumask_shift_right(struct cpumask *dstp, const struct cpumask *srcp, int n) { bitmap_shift_right(((dstp)->bits), ((srcp)->bits), n, nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpumask_shift_left(struct cpumask *dstp, const struct cpumask *srcp, int n) { bitmap_shift_left(((dstp)->bits), ((srcp)->bits), n, nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpumask_copy(struct cpumask *dstp, const struct cpumask *srcp) { bitmap_copy(((dstp)->bits), ((srcp)->bits), nr_cpu_ids); } # 606 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpumask_parse_user(const char *buf, int len, struct cpumask *dstp) { return bitmap_parse_user(buf, len, ((dstp)->bits), nr_cpu_ids); } # 620 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpumask_parselist_user(const char *buf, int len, struct cpumask *dstp) { return bitmap_parselist_user(buf, len, ((dstp)->bits), nr_cpu_ids); } # 634 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpumask_parse(const char *buf, struct cpumask *dstp) { unsigned int len = strchrnul(buf, '\n') - buf; return bitmap_parse(buf, len, ((dstp)->bits), nr_cpu_ids); } # 648 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpulist_parse(const char *buf, struct cpumask *dstp) { return bitmap_parselist(buf, ((dstp)->bits), nr_cpu_ids); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int cpumask_size(void) { return (((nr_cpu_ids) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8))) * sizeof(long); } # 702 "../include/linux/cpumask.h" typedef struct cpumask *cpumask_var_t; bool alloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node); bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags); bool zalloc_cpumask_var_node(cpumask_var_t *mask, gfp_t flags, int node); bool zalloc_cpumask_var(cpumask_var_t *mask, gfp_t flags); void alloc_bootmem_cpumask_var(cpumask_var_t *mask); void free_cpumask_var(cpumask_var_t mask); void free_bootmem_cpumask_var(cpumask_var_t mask); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cpumask_available(cpumask_var_t mask) { return mask != ((void *)0); } # 770 "../include/linux/cpumask.h" extern const unsigned long cpu_all_bits[(((8192) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8)))]; # 781 "../include/linux/cpumask.h" void init_cpu_present(const struct cpumask *src); void init_cpu_possible(const struct cpumask *src); void init_cpu_online(const struct cpumask *src); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void reset_cpu_possible_mask(void) { bitmap_zero(((&__cpu_possible_mask)->bits), 8192); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_cpu_possible(unsigned int cpu, bool possible) { if (possible) cpumask_set_cpu(cpu, &__cpu_possible_mask); else cpumask_clear_cpu(cpu, &__cpu_possible_mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_cpu_present(unsigned int cpu, bool present) { if (present) cpumask_set_cpu(cpu, &__cpu_present_mask); else cpumask_clear_cpu(cpu, &__cpu_present_mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_cpu_online(unsigned int cpu, bool online) { if (online) cpumask_set_cpu(cpu, &__cpu_online_mask); else cpumask_clear_cpu(cpu, &__cpu_online_mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_cpu_active(unsigned int cpu, bool active) { if (active) cpumask_set_cpu(cpu, &__cpu_active_mask); else cpumask_clear_cpu(cpu, &__cpu_active_mask); } # 841 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __check_is_bitmap(const unsigned long *bitmap) { return 1; } # 853 "../include/linux/cpumask.h" extern const unsigned long cpu_bit_bitmap[64 +1][(((8192) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8)))]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct cpumask *get_cpu_mask(unsigned int cpu) { const unsigned long *p = cpu_bit_bitmap[1 + cpu % 64]; p -= cpu / 64; return ((struct cpumask *)(1 ? (p) : (void *)sizeof(__check_is_bitmap(p)))); } # 890 "../include/linux/cpumask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ssize_t cpumap_print_to_pagebuf(bool list, char *buf, const struct cpumask *mask) { return bitmap_print_to_pagebuf(list, buf, ((mask)->bits), nr_cpu_ids); } # 6 "../arch/x86/include/asm/cpumask.h" 2 extern cpumask_var_t cpu_callin_mask; extern cpumask_var_t cpu_callout_mask; extern cpumask_var_t cpu_initialized_mask; extern cpumask_var_t cpu_sibling_setup_mask; extern void setup_cpu_local_masks(void); # 12 "../arch/x86/include/asm/msr.h" 2 # 1 "../arch/x86/include/uapi/asm/msr.h" 1 # 13 "../arch/x86/include/asm/msr.h" 2 struct msr { union { struct { u32 l; u32 h; }; u64 q; }; }; struct msr_info { u32 msr_no; struct msr reg; struct msr *msrs; int err; }; struct msr_regs_info { u32 *regs; int err; }; struct saved_msr { bool valid; struct msr_info info; }; struct saved_msrs { unsigned int num; struct saved_msr *array; }; # 68 "../arch/x86/include/asm/msr.h" # 1 "../include/linux/tracepoint-defs.h" 1 # 12 "../include/linux/tracepoint-defs.h" # 1 "../include/linux/static_key.h" 1 # 13 "../include/linux/tracepoint-defs.h" 2 struct trace_print_flags { unsigned long mask; const char *name; }; struct trace_print_flags_u64 { unsigned long long mask; const char *name; }; struct tracepoint_func { void *func; void *data; int prio; }; struct tracepoint { const char *name; struct static_key key; int (*regfunc)(void); void (*unregfunc)(void); struct tracepoint_func *funcs; }; typedef const int tracepoint_ptr_t; struct bpf_raw_event_map { struct tracepoint *tp; void *bpf_func; u32 num_args; u32 writable_size; } __attribute__((__aligned__(32))); # 69 "../arch/x86/include/asm/msr.h" 2 extern struct tracepoint __tracepoint_read_msr; extern struct tracepoint __tracepoint_write_msr; extern struct tracepoint __tracepoint_rdpmc; extern void do_trace_write_msr(unsigned int msr, u64 val, int failed); extern void do_trace_read_msr(unsigned int msr, u64 val, int failed); extern void do_trace_rdpmc(unsigned int msr, u64 val, int failed); # 91 "../arch/x86/include/asm/msr.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long long __attribute__((no_instrument_function)) __rdmsr(unsigned int msr) { unsigned long low, high; asm volatile("1: rdmsr\n" "2:\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "2b" ") - .\n" " .long (" "ex_handler_rdmsr_unsafe" ") - .\n" " .popsection\n" : "=a" (low), "=d" (high) : "c" (msr)); return ((low) | (high) << 32); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __attribute__((no_instrument_function)) __wrmsr(unsigned int msr, u32 low, u32 high) { asm volatile("1: wrmsr\n" "2:\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "2b" ") - .\n" " .long (" "ex_handler_wrmsr_unsafe" ") - .\n" " .popsection\n" : : "c" (msr), "a"(low), "d" (high) : "memory"); } # 125 "../arch/x86/include/asm/msr.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long long native_read_msr(unsigned int msr) { unsigned long long val; val = __rdmsr(msr); if (static_key_false(&(__tracepoint_read_msr).key)) do_trace_read_msr(msr, val, 0); return val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long long native_read_msr_safe(unsigned int msr, int *err) { unsigned long low, high; asm volatile("2: rdmsr ; xor %[err],%[err]\n" "1:\n\t" ".section .fixup,\"ax\"\n\t" "3: mov %[fault],%[err]\n\t" "xorl %%eax, %%eax\n\t" "xorl %%edx, %%edx\n\t" "jmp 1b\n\t" ".previous\n\t" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "2b" ") - .\n" " .long (" "3b" ") - .\n" " .long (" "ex_handler_default" ") - .\n" " .popsection\n" : [err] "=r" (*err), "=a" (low), "=d" (high) : "c" (msr), [fault] "i" (-5)); if (static_key_false(&(__tracepoint_read_msr).key)) do_trace_read_msr(msr, ((low) | (high) << 32), *err); return ((low) | (high) << 32); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __attribute__((no_instrument_function)) native_write_msr(unsigned int msr, u32 low, u32 high) { __wrmsr(msr, low, high); if (static_key_false(&(__tracepoint_write_msr).key)) do_trace_write_msr(msr, ((u64)high << 32 | low), 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((no_instrument_function)) native_write_msr_safe(unsigned int msr, u32 low, u32 high) { int err; asm volatile("2: wrmsr ; xor %[err],%[err]\n" "1:\n\t" ".section .fixup,\"ax\"\n\t" "3: mov %[fault],%[err] ; jmp 1b\n\t" ".previous\n\t" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "2b" ") - .\n" " .long (" "3b" ") - .\n" " .long (" "ex_handler_default" ") - .\n" " .popsection\n" : [err] "=a" (err) : "c" (msr), "0" (low), "d" (high), [fault] "i" (-5) : "memory"); if (static_key_false(&(__tracepoint_write_msr).key)) do_trace_write_msr(msr, ((u64)high << 32 | low), err); return err; } extern int rdmsr_safe_regs(u32 regs[8]); extern int wrmsr_safe_regs(u32 regs[8]); # 201 "../arch/x86/include/asm/msr.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long long rdtsc(void) { unsigned long low, high; asm volatile("rdtsc" : "=a" (low), "=d" (high)); return ((low) | (high) << 32); } # 218 "../arch/x86/include/asm/msr.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long long rdtsc_ordered(void) { unsigned long low, high; # 236 "../arch/x86/include/asm/msr.h" asm volatile("# ALT: oldinstr3\n" "661:\n\t" "rdtsc" "\n662:\n" "# ALT: padding3\n" ".skip -((" "((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" ") ^ (((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" ") ^ (" "665""3""f-""664""3""f" ")) & -(-((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" ") < (" "665""3""f-""664""3""f" ")))))" " - (" "662b-661b" ")) > 0) * " "(" "((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" ") ^ (((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" ") ^ (" "665""3""f-""664""3""f" ")) & -(-((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" ") < (" "665""3""f-""664""3""f" ")))))" " - (" "662b-661b" ")), 0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 3*32+17)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" " .long 661b - .\n" " .long " "664""2""f - .\n" " .word " "( 3*32+18)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""2""f-""664""2""f" "\n" " .byte " "663""b-662b" "\n" " .long 661b - .\n" " .long " "664""3""f - .\n" " .word " "( 1*32+27)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""3""f-""664""3""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "mfence; rdtsc" "\n" "665""1" ":\n" "# ALT: replacement " "2" "\n" "664""2"":\n\t" "lfence; rdtsc" "\n" "665""2" ":\n" "# ALT: replacement " "3" "\n" "664""3"":\n\t" "rdtscp" "\n" "665""3" ":\n" ".popsection\n" : "=a" (low), "=d" (high) :: "ecx"); return ((low) | (high) << 32); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long long native_read_pmc(int counter) { unsigned long low, high; asm volatile("rdpmc" : "=a" (low), "=d" (high) : "c" (counter)); if (static_key_false(&(__tracepoint_rdpmc).key)) do_trace_rdpmc(counter, ((low) | (high) << 32), 0); return ((low) | (high) << 32); } # 1 "../arch/x86/include/asm/paravirt.h" 1 # 18 "../arch/x86/include/asm/paravirt.h" # 1 "../arch/x86/include/asm/frame.h" 1 # 19 "../arch/x86/include/asm/paravirt.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long long paravirt_sched_clock(void) { return ({ unsigned long long __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.time.sched_clock == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (22), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (1)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(unsigned long long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, time.sched_clock) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.time.sched_clock)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, time.sched_clock) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.time.sched_clock)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long long)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(unsigned long long)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } struct static_key; extern struct static_key paravirt_steal_enabled; extern struct static_key paravirt_steal_rq_enabled; void __native_queued_spin_unlock(struct qspinlock *lock); bool pv_is_native_spin_unlock(void); bool __native_vcpu_is_preempted(long cpu); bool pv_is_native_vcpu_is_preempted(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 paravirt_steal_clock(int cpu) { return ({ u64 __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.time.steal_clock == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (36), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (2)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(u64) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, time.steal_clock) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.time.steal_clock)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(cpu)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (u64)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, time.steal_clock) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.time.steal_clock)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(cpu)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (u64)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(u64)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void slow_down_io(void) { pv_ops.cpu.io_delay(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __flush_tlb(void) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.flush_tlb_user == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (52), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (3)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.flush_tlb_user) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.flush_tlb_user)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __flush_tlb_global(void) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.flush_tlb_kernel == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (57), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (4)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.flush_tlb_kernel) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.flush_tlb_kernel)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __flush_tlb_one_user(unsigned long addr) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.flush_tlb_one_user == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (62), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (5)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.flush_tlb_one_user) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.flush_tlb_one_user)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(addr)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void flush_tlb_others(const struct cpumask *cpumask, const struct flush_tlb_info *info) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.flush_tlb_others == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (68), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (6)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.flush_tlb_others) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.flush_tlb_others)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(cpumask)), "S" ((unsigned long)(info)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_tlb_remove_table(struct mmu_gather *tlb, void *table) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.tlb_remove_table == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (73), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (7)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.tlb_remove_table) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.tlb_remove_table)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(tlb)), "S" ((unsigned long)(table)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_arch_exit_mmap(struct mm_struct *mm) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.exit_mmap == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (78), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (8)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.exit_mmap) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.exit_mmap)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(mm)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void load_sp0(unsigned long sp0) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.load_sp0 == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (84), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (9)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.load_sp0) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.load_sp0)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(sp0)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __cpuid(unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.cpuid == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (91), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (10)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.cpuid) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.cpuid)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(eax)), "S" ((unsigned long)(ebx)), "d" ((unsigned long)(ecx)), "c" ((unsigned long)(edx)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long paravirt_get_debugreg(int reg) { return ({ unsigned long __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.get_debugreg == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (99), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (11)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.get_debugreg) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.get_debugreg)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(reg)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.get_debugreg) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.get_debugreg)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(reg)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(unsigned long)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_debugreg(unsigned long val, int reg) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.set_debugreg == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (104), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (12)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.set_debugreg) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.set_debugreg)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(reg)), "S" ((unsigned long)(val)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long read_cr0(void) { return ({ unsigned long __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.read_cr0 == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (109), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (13)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.read_cr0) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.read_cr0)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.read_cr0) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.read_cr0)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(unsigned long)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_cr0(unsigned long x) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.write_cr0 == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (114), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (14)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.write_cr0) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.write_cr0)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(x)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long read_cr2(void) { return ({ unsigned long __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.read_cr2 == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (119), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (15)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.read_cr2) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.read_cr2)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.read_cr2) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.read_cr2)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(unsigned long)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_cr2(unsigned long x) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.write_cr2 == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (124), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (16)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.write_cr2) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.write_cr2)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(x)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long __read_cr3(void) { return ({ unsigned long __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.read_cr3 == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (129), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (17)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.read_cr3) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.read_cr3)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.read_cr3) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.read_cr3)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(unsigned long)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_cr3(unsigned long x) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.write_cr3 == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (134), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (18)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.write_cr3) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.write_cr3)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(x)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __write_cr4(unsigned long x) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.write_cr4 == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (139), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (19)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.write_cr4) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.write_cr4)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(x)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long read_cr8(void) { return ({ unsigned long __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.read_cr8 == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (145), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (20)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.read_cr8) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.read_cr8)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.read_cr8) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.read_cr8)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(unsigned long)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_cr8(unsigned long x) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.write_cr8 == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (150), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (21)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.write_cr8) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.write_cr8)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(x)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_safe_halt(void) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.irq.safe_halt == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (156), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (22)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, irq.safe_halt) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.irq.safe_halt)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void halt(void) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.irq.halt == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (161), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (23)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, irq.halt) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.irq.halt)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void wbinvd(void) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.wbinvd == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (166), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (24)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.wbinvd) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.wbinvd)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 paravirt_read_msr(unsigned msr) { return ({ u64 __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.read_msr == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (173), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (25)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(u64) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.read_msr) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.read_msr)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(msr)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (u64)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.read_msr) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.read_msr)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(msr)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (u64)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(u64)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_write_msr(unsigned msr, unsigned low, unsigned high) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.write_msr == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (179), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (26)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.write_msr) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.write_msr)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(msr)), "S" ((unsigned long)(low)), "d" ((unsigned long)(high)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 paravirt_read_msr_safe(unsigned msr, int *err) { return ({ u64 __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.read_msr_safe == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (184), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (27)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(u64) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.read_msr_safe) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.read_msr_safe)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(msr)), "S" ((unsigned long)(err)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (u64)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.read_msr_safe) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.read_msr_safe)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(msr)), "S" ((unsigned long)(err)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (u64)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(u64)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int paravirt_write_msr_safe(unsigned msr, unsigned low, unsigned high) { return ({ int __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.write_msr_safe == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (190), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (28)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(int) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.write_msr_safe) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.write_msr_safe)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(msr)), "S" ((unsigned long)(low)), "d" ((unsigned long)(high)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (int)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.write_msr_safe) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.write_msr_safe)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(msr)), "S" ((unsigned long)(low)), "d" ((unsigned long)(high)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (int)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(int)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } # 210 "../arch/x86/include/asm/paravirt.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void wrmsrl(unsigned msr, u64 val) { do { paravirt_write_msr(msr, (u32)val, (u32)(val>>32)); } while (0); } # 227 "../arch/x86/include/asm/paravirt.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int rdmsrl_safe(unsigned msr, unsigned long long *p) { int err; *p = paravirt_read_msr_safe(msr, &err); return err; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long long paravirt_read_pmc(int counter) { return ({ u64 __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.read_pmc == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (237), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (29)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(u64) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.read_pmc) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.read_pmc)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(counter)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (u64)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.read_pmc) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.read_pmc)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(counter)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (u64)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(u64)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } # 249 "../arch/x86/include/asm/paravirt.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_alloc_ldt(struct desc_struct *ldt, unsigned entries) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.alloc_ldt == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (251), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (30)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.alloc_ldt) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.alloc_ldt)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(ldt)), "S" ((unsigned long)(entries)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_free_ldt(struct desc_struct *ldt, unsigned entries) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.free_ldt == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (256), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (31)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.free_ldt) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.free_ldt)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(ldt)), "S" ((unsigned long)(entries)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void load_TR_desc(void) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.load_tr_desc == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (261), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (32)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.load_tr_desc) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.load_tr_desc)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void load_gdt(const struct desc_ptr *dtr) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.load_gdt == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (265), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (33)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.load_gdt) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.load_gdt)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(dtr)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void load_idt(const struct desc_ptr *dtr) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.load_idt == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (269), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (34)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.load_idt) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.load_idt)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(dtr)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_ldt(const void *addr, unsigned entries) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.set_ldt == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (273), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (35)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.set_ldt) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.set_ldt)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(addr)), "S" ((unsigned long)(entries)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long paravirt_store_tr(void) { return ({ unsigned long __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.store_tr == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (277), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (36)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.store_tr) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.store_tr)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.store_tr) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.store_tr)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (unsigned long)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(unsigned long)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void load_TLS(struct thread_struct *t, unsigned cpu) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.load_tls == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (283), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (37)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.load_tls) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.load_tls)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(t)), "S" ((unsigned long)(cpu)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void load_gs_index(unsigned int gs) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.load_gs_index == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (289), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (38)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.load_gs_index) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.load_gs_index)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(gs)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_ldt_entry(struct desc_struct *dt, int entry, const void *desc) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.write_ldt_entry == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (296), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (39)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.write_ldt_entry) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.write_ldt_entry)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(dt)), "S" ((unsigned long)(entry)), "d" ((unsigned long)(desc)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_gdt_entry(struct desc_struct *dt, int entry, void *desc, int type) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.write_gdt_entry == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (302), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (40)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.write_gdt_entry) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.write_gdt_entry)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(dt)), "S" ((unsigned long)(entry)), "d" ((unsigned long)(desc)), "c" ((unsigned long)(type)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_idt_entry(gate_desc *dt, int entry, const gate_desc *g) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.write_idt_entry == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (307), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (41)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.write_idt_entry) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.write_idt_entry)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(dt)), "S" ((unsigned long)(entry)), "d" ((unsigned long)(g)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_iopl_mask(unsigned mask) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.set_iopl_mask == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (311), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (42)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.set_iopl_mask) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.set_iopl_mask)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(mask)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_activate_mm(struct mm_struct *prev, struct mm_struct *next) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.activate_mm == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (317), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (43)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.activate_mm) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.activate_mm)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(prev)), "S" ((unsigned long)(next)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_arch_dup_mmap(struct mm_struct *oldmm, struct mm_struct *mm) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.dup_mmap == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (323), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (44)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.dup_mmap) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.dup_mmap)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(oldmm)), "S" ((unsigned long)(mm)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int paravirt_pgd_alloc(struct mm_struct *mm) { return ({ int __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.pgd_alloc == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (328), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (45)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(int) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pgd_alloc) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pgd_alloc)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(mm)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (int)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pgd_alloc) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pgd_alloc)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(mm)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (int)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(int)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_pgd_free(struct mm_struct *mm, pgd_t *pgd) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.pgd_free == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (333), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (46)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pgd_free) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pgd_free)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(mm)), "S" ((unsigned long)(pgd)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_alloc_pte(struct mm_struct *mm, unsigned long pfn) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.alloc_pte == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (338), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (47)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.alloc_pte) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.alloc_pte)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(mm)), "S" ((unsigned long)(pfn)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_release_pte(unsigned long pfn) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.release_pte == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (342), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (48)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.release_pte) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.release_pte)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(pfn)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_alloc_pmd(struct mm_struct *mm, unsigned long pfn) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.alloc_pmd == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (347), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (49)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.alloc_pmd) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.alloc_pmd)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(mm)), "S" ((unsigned long)(pfn)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_release_pmd(unsigned long pfn) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.release_pmd == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (352), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (50)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.release_pmd) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.release_pmd)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(pfn)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_alloc_pud(struct mm_struct *mm, unsigned long pfn) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.alloc_pud == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (357), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (51)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.alloc_pud) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.alloc_pud)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(mm)), "S" ((unsigned long)(pfn)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_release_pud(unsigned long pfn) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.release_pud == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (361), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (52)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.release_pud) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.release_pud)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(pfn)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_alloc_p4d(struct mm_struct *mm, unsigned long pfn) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.alloc_p4d == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (366), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (53)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.alloc_p4d) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.alloc_p4d)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(mm)), "S" ((unsigned long)(pfn)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void paravirt_release_p4d(unsigned long pfn) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.release_p4d == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (371), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (54)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.release_p4d) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.release_p4d)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(pfn)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t __pte(pteval_t val) { pteval_t ret; if (sizeof(pteval_t) > sizeof(long)) ret = ({ pteval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.make_pte.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (379), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (55)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pteval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pte.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pte.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)), "S" ((unsigned long)((u64)val >> 32)) : "memory", "cc" ); __ret = (pteval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pte.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pte.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)), "S" ((unsigned long)((u64)val >> 32)) : "memory", "cc" ); __ret = (pteval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pteval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); else ret = ({ pteval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.make_pte.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (381), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (56)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pteval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pte.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pte.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)) : "memory", "cc" ); __ret = (pteval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pte.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pte.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)) : "memory", "cc" ); __ret = (pteval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pteval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); return (pte_t) { .pte = ret }; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pteval_t pte_val(pte_t pte) { pteval_t ret; if (sizeof(pteval_t) > sizeof(long)) ret = ({ pteval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.pte_val.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (392), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (57)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pteval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pte_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pte_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pte.pte)), "S" ((unsigned long)((u64)pte.pte >> 32)) : "memory", "cc" ); __ret = (pteval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pte_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pte_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pte.pte)), "S" ((unsigned long)((u64)pte.pte >> 32)) : "memory", "cc" ); __ret = (pteval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pteval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); else ret = ({ pteval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.pte_val.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (394), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (58)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pteval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pte_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pte_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pte.pte)) : "memory", "cc" ); __ret = (pteval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pte_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pte_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pte.pte)) : "memory", "cc" ); __ret = (pteval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pteval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgd_t __pgd(pgdval_t val) { pgdval_t ret; if (sizeof(pgdval_t) > sizeof(long)) ret = ({ pgdval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.make_pgd.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (404), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (59)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pgdval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pgd.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pgd.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)), "S" ((unsigned long)((u64)val >> 32)) : "memory", "cc" ); __ret = (pgdval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pgd.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pgd.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)), "S" ((unsigned long)((u64)val >> 32)) : "memory", "cc" ); __ret = (pgdval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pgdval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); else ret = ({ pgdval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.make_pgd.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (406), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (60)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pgdval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pgd.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pgd.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)) : "memory", "cc" ); __ret = (pgdval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pgd.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pgd.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)) : "memory", "cc" ); __ret = (pgdval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pgdval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); return (pgd_t) { ret }; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgdval_t pgd_val(pgd_t pgd) { pgdval_t ret; if (sizeof(pgdval_t) > sizeof(long)) ret = ({ pgdval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.pgd_val.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (417), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (61)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pgdval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pgd_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pgd_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pgd.pgd)), "S" ((unsigned long)((u64)pgd.pgd >> 32)) : "memory", "cc" ); __ret = (pgdval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pgd_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pgd_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pgd.pgd)), "S" ((unsigned long)((u64)pgd.pgd >> 32)) : "memory", "cc" ); __ret = (pgdval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pgdval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); else ret = ({ pgdval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.pgd_val.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (419), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (62)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pgdval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pgd_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pgd_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pgd.pgd)) : "memory", "cc" ); __ret = (pgdval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pgd_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pgd_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pgd.pgd)) : "memory", "cc" ); __ret = (pgdval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pgdval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) { pteval_t ret; ret = ({ pteval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.ptep_modify_prot_start == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (430), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (63)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pteval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.ptep_modify_prot_start) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.ptep_modify_prot_start)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(vma)), "S" ((unsigned long)(addr)), "d" ((unsigned long)(ptep)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (pteval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.ptep_modify_prot_start) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.ptep_modify_prot_start)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(vma)), "S" ((unsigned long)(addr)), "d" ((unsigned long)(ptep)) : "memory", "cc" , "r8", "r9", "r10", "r11"); __ret = (pteval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pteval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); return (pte_t) { .pte = ret }; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t old_pte, pte_t pte) { if (sizeof(pteval_t) > sizeof(long)) pv_ops.mmu.ptep_modify_prot_commit(vma, addr, ptep, pte); else ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.ptep_modify_prot_commit == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (444), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (64)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.ptep_modify_prot_commit) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.ptep_modify_prot_commit)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(vma)), "S" ((unsigned long)(addr)), "d" ((unsigned long)(ptep)), "c" ((unsigned long)(pte.pte)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_pte(pte_t *ptep, pte_t pte) { if (sizeof(pteval_t) > sizeof(long)) ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.set_pte == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (450), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (65)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.set_pte) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.set_pte)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(ptep)), "S" ((unsigned long)(pte.pte)), "d" ((unsigned long)((u64)pte.pte >> 32)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); else ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.set_pte == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (452), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (66)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.set_pte) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.set_pte)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(ptep)), "S" ((unsigned long)(pte.pte)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte) { if (sizeof(pteval_t) > sizeof(long)) pv_ops.mmu.set_pte_at(mm, addr, ptep, pte); else ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.set_pte_at == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (462), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (67)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.set_pte_at) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.set_pte_at)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(mm)), "S" ((unsigned long)(addr)), "d" ((unsigned long)(ptep)), "c" ((unsigned long)(pte.pte)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_pmd(pmd_t *pmdp, pmd_t pmd) { pmdval_t val = native_pmd_val(pmd); if (sizeof(pmdval_t) > sizeof(long)) ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.set_pmd == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (470), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (68)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.set_pmd) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.set_pmd)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(pmdp)), "S" ((unsigned long)(val)), "d" ((unsigned long)((u64)val >> 32)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); else ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.set_pmd == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (472), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (69)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.set_pmd) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.set_pmd)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(pmdp)), "S" ((unsigned long)(val)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t __pmd(pmdval_t val) { pmdval_t ret; if (sizeof(pmdval_t) > sizeof(long)) ret = ({ pmdval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.make_pmd.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (481), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (70)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pmdval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pmd.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pmd.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)), "S" ((unsigned long)((u64)val >> 32)) : "memory", "cc" ); __ret = (pmdval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pmd.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pmd.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)), "S" ((unsigned long)((u64)val >> 32)) : "memory", "cc" ); __ret = (pmdval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pmdval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); else ret = ({ pmdval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.make_pmd.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (483), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (71)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pmdval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pmd.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pmd.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)) : "memory", "cc" ); __ret = (pmdval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pmd.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pmd.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)) : "memory", "cc" ); __ret = (pmdval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pmdval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); return (pmd_t) { ret }; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmdval_t pmd_val(pmd_t pmd) { pmdval_t ret; if (sizeof(pmdval_t) > sizeof(long)) ret = ({ pmdval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.pmd_val.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (494), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (72)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pmdval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pmd_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pmd_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pmd.pmd)), "S" ((unsigned long)((u64)pmd.pmd >> 32)) : "memory", "cc" ); __ret = (pmdval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pmd_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pmd_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pmd.pmd)), "S" ((unsigned long)((u64)pmd.pmd >> 32)) : "memory", "cc" ); __ret = (pmdval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pmdval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); else ret = ({ pmdval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.pmd_val.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (496), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (73)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pmdval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pmd_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pmd_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pmd.pmd)) : "memory", "cc" ); __ret = (pmdval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pmd_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pmd_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pmd.pmd)) : "memory", "cc" ); __ret = (pmdval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pmdval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_pud(pud_t *pudp, pud_t pud) { pudval_t val = native_pud_val(pud); if (sizeof(pudval_t) > sizeof(long)) ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.set_pud == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (506), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (74)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.set_pud) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.set_pud)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(pudp)), "S" ((unsigned long)(val)), "d" ((unsigned long)((u64)val >> 32)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); else ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.set_pud == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (508), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (75)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.set_pud) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.set_pud)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(pudp)), "S" ((unsigned long)(val)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t __pud(pudval_t val) { pudval_t ret; ret = ({ pudval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.make_pud.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (515), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (76)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pudval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pud.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pud.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)) : "memory", "cc" ); __ret = (pudval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_pud.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_pud.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)) : "memory", "cc" ); __ret = (pudval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pudval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); return (pud_t) { ret }; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pudval_t pud_val(pud_t pud) { return ({ pudval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.pud_val.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (522), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (77)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(pudval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pud_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pud_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pud.pud)) : "memory", "cc" ); __ret = (pudval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.pud_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.pud_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(pud.pud)) : "memory", "cc" ); __ret = (pudval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(pudval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pud_clear(pud_t *pudp) { set_pud(pudp, __pud(0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_p4d(p4d_t *p4dp, p4d_t p4d) { p4dval_t val = native_p4d_val(p4d); ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.set_p4d == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (534), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (78)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.set_p4d) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.set_p4d)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(p4dp)), "S" ((unsigned long)(val)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) p4d_t __p4d(p4dval_t val) { p4dval_t ret = ({ p4dval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.make_p4d.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (541), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (79)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(p4dval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_p4d.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_p4d.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)) : "memory", "cc" ); __ret = (p4dval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.make_p4d.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.make_p4d.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(val)) : "memory", "cc" ); __ret = (p4dval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(p4dval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); return (p4d_t) { ret }; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) p4dval_t p4d_val(p4d_t p4d) { return ({ p4dval_t __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.p4d_val.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (548), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (80)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(p4dval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.p4d_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.p4d_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(p4d.p4d)) : "memory", "cc" ); __ret = (p4dval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.p4d_val.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.p4d_val.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(p4d.p4d)) : "memory", "cc" ); __ret = (p4dval_t)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(p4dval_t)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __set_pgd(pgd_t *pgdp, pgd_t pgd) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.set_pgd == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (553), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (81)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.set_pgd) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.set_pgd)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(pgdp)), "S" ((unsigned long)(native_pgd_val(pgd))) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } # 570 "../arch/x86/include/asm/paravirt.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void p4d_clear(p4d_t *p4dp) { set_p4d(p4dp, __p4d(0)); } # 598 "../arch/x86/include/asm/paravirt.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_pte_atomic(pte_t *ptep, pte_t pte) { set_pte(ptep, pte); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { set_pte_at(mm, addr, ptep, __pte(0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pmd_clear(pmd_t *pmdp) { set_pmd(pmdp, __pmd(0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_start_context_switch(struct task_struct *prev) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.start_context_switch == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (618), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (82)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.start_context_switch) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.start_context_switch)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(prev)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_end_context_switch(struct task_struct *next) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.cpu.end_context_switch == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (623), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (83)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, cpu.end_context_switch) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.cpu.end_context_switch)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(next)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_enter_lazy_mmu_mode(void) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.lazy_mode.enter == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (629), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (84)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.lazy_mode.enter) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.lazy_mode.enter)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_leave_lazy_mmu_mode(void) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.lazy_mode.leave == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (634), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (85)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.lazy_mode.leave) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.lazy_mode.leave)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_flush_lazy_mmu_mode(void) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.mmu.lazy_mode.flush == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (639), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (86)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, mmu.lazy_mode.flush) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.mmu.lazy_mode.flush)), [paravirt_clobber] "i" (((1 << 9) - 1)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t flags) { pv_ops.mmu.set_fixmap(idx, phys, flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void pv_queued_spin_lock_slowpath(struct qspinlock *lock, u32 val) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.lock.queued_spin_lock_slowpath == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (654), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (87)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, lock.queued_spin_lock_slowpath) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.lock.queued_spin_lock_slowpath)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(lock)), "S" ((unsigned long)(val)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void pv_queued_spin_unlock(struct qspinlock *lock) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.lock.queued_spin_unlock.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (659), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (88)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, lock.queued_spin_unlock.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.lock.queued_spin_unlock.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(lock)) : "memory", "cc" ); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void pv_wait(u8 *ptr, u8 val) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.lock.wait == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (664), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (89)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, lock.wait) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.lock.wait)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(ptr)), "S" ((unsigned long)(val)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void pv_kick(int cpu) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.lock.kick == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (669), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (90)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=D" (__edi), "=S" (__esi), "=d" (__edx), "=c" (__ecx), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, lock.kick) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.lock.kick)), [paravirt_clobber] "i" (((1 << 9) - 1)), "D" ((unsigned long)(cpu)) : "memory", "cc" , "rax", "r8", "r9", "r10", "r11"); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool pv_vcpu_is_preempted(long cpu) { return ({ bool __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.lock.vcpu_is_preempted.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (674), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (91)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(bool) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, lock.vcpu_is_preempted.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.lock.vcpu_is_preempted.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(cpu)) : "memory", "cc" ); __ret = (bool)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, lock.vcpu_is_preempted.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.lock.vcpu_is_preempted.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(cpu)) : "memory", "cc" ); __ret = (bool)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(bool)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } void __raw_callee_save___native_queued_spin_unlock(struct qspinlock *lock); bool __raw_callee_save___native_vcpu_is_preempted(long cpu); # 760 "../arch/x86/include/asm/paravirt.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((no_instrument_function)) unsigned long arch_local_save_flags(void) { return ({ unsigned long __ret; unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.irq.save_fl.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (762), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (92)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, irq.save_fl.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.irq.save_fl.func)), [paravirt_clobber] "i" (((1 << 0))) : "memory", "cc" ); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, irq.save_fl.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.irq.save_fl.func)), [paravirt_clobber] "i" (((1 << 0))) : "memory", "cc" ); __ret = (unsigned long)(__eax & ({ unsigned long __mask = ~0UL; switch (sizeof(unsigned long)) { case 1: __mask = 0xffUL; break; case 2: __mask = 0xffffUL; break; case 4: __mask = 0xffffffffUL; break; default: break; } __mask; })); } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((no_instrument_function)) void arch_local_irq_restore(unsigned long f) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.irq.restore_fl.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (767), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (93)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, irq.restore_fl.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.irq.restore_fl.func)), [paravirt_clobber] "i" (((1 << 0))), "D" ((unsigned long)(f)) : "memory", "cc" ); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((no_instrument_function)) void arch_local_irq_disable(void) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.irq.irq_disable.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (772), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (94)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, irq.irq_disable.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.irq.irq_disable.func)), [paravirt_clobber] "i" (((1 << 0))) : "memory", "cc" ); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((no_instrument_function)) void arch_local_irq_enable(void) { ({ unsigned long __edi = __edi, __esi = __esi, __edx = __edx, __ecx = __ecx, __eax = __eax;; do { if (__builtin_expect(!!(pv_ops.irq.irq_enable.func == ((void *)0)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/paravirt.h"), "i" (777), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (95)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); asm volatile("" "771:\n\t" "999:\n\t" ".pushsection .discard.retpoline_safe\n\t" " " ".quad" " " " 999b\n\t" ".popsection\n\t" "call *%c[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 8" " " "\n" " " ".quad" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "+r" (current_stack_pointer) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template, irq.irq_enable.func) / sizeof(void *))), [paravirt_opptr] "i" (&(pv_ops.irq.irq_enable.func)), [paravirt_clobber] "i" (((1 << 0))) : "memory", "cc" ); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((no_instrument_function)) unsigned long arch_local_irq_save(void) { unsigned long f; f = arch_local_save_flags(); arch_local_irq_disable(); return f; } # 806 "../arch/x86/include/asm/paravirt.h" extern void default_banner(void); # 259 "../arch/x86/include/asm/msr.h" 2 # 325 "../arch/x86/include/asm/msr.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int wrmsrl_safe(u32 msr, u64 val) { return paravirt_write_msr_safe(msr, (u32)val, (u32)(val >> 32)); } struct msr *msrs_alloc(void); void msrs_free(struct msr *msrs); int msr_set_bit(u32 msr, u8 bit); int msr_clear_bit(u32 msr, u8 bit); int rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h); int wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h); int rdmsrl_on_cpu(unsigned int cpu, u32 msr_no, u64 *q); int wrmsrl_on_cpu(unsigned int cpu, u32 msr_no, u64 q); void rdmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs); void wrmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs); int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h); int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h); int rdmsrl_safe_on_cpu(unsigned int cpu, u32 msr_no, u64 *q); int wrmsrl_safe_on_cpu(unsigned int cpu, u32 msr_no, u64 q); int rdmsr_safe_regs_on_cpu(unsigned int cpu, u32 regs[8]); int wrmsr_safe_regs_on_cpu(unsigned int cpu, u32 regs[8]); # 22 "../arch/x86/include/asm/processor.h" 2 # 1 "../arch/x86/include/asm/special_insns.h" 1 # 19 "../arch/x86/include/asm/special_insns.h" extern unsigned long __force_order; extern struct static_key_false cr_pinning; extern unsigned long cr4_pinned_bits; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long native_read_cr0(void) { unsigned long val; asm volatile("mov %%cr0,%0\n\t" : "=r" (val), "=m" (__force_order)); return val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_write_cr0(unsigned long val) { unsigned long bits_missing = 0; set_register: asm volatile("mov %0,%%cr0": "+r" (val), "+m" (__force_order)); if (({ bool branch; if (__builtin_types_compatible_p(typeof(*&cr_pinning), struct static_key_true)) branch = !arch_static_branch(&(&cr_pinning)->key, true); else if (__builtin_types_compatible_p(typeof(*&cr_pinning), struct static_key_false)) branch = !arch_static_branch_jump(&(&cr_pinning)->key, true); else branch = ____wrong_branch_error(); __builtin_expect(!!(branch), 1); })) { if (__builtin_expect(!!((val & (((1UL)) << (16))) != (((1UL)) << (16))), 0)) { bits_missing = (((1UL)) << (16)); val |= bits_missing; goto set_register; } ({ static bool __attribute__((__section__(".data.once"))) __warned; int __ret_warn_once = !!(bits_missing); if (__builtin_expect(!!(__ret_warn_once && !__warned), 0)) { __warned = true; ({ int __ret_warn_on = !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __warn_printk("CR0 WP bit went missing!?\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/special_insns.h"), "i" (46), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (96)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } __builtin_expect(!!(__ret_warn_once), 0); }); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long native_read_cr2(void) { unsigned long val; asm volatile("mov %%cr2,%0\n\t" : "=r" (val), "=m" (__force_order)); return val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_write_cr2(unsigned long val) { asm volatile("mov %0,%%cr2": : "r" (val), "m" (__force_order)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long __native_read_cr3(void) { unsigned long val; asm volatile("mov %%cr3,%0\n\t" : "=r" (val), "=m" (__force_order)); return val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_write_cr3(unsigned long val) { asm volatile("mov %0,%%cr3": : "r" (val), "m" (__force_order)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long native_read_cr4(void) { unsigned long val; # 89 "../arch/x86/include/asm/special_insns.h" asm volatile("mov %%cr4,%0\n\t" : "=r" (val), "=m" (__force_order)); return val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_write_cr4(unsigned long val) { unsigned long bits_missing = 0; set_register: asm volatile("mov %0,%%cr4": "+r" (val), "+m" (cr4_pinned_bits)); if (({ bool branch; if (__builtin_types_compatible_p(typeof(*&cr_pinning), struct static_key_true)) branch = !arch_static_branch(&(&cr_pinning)->key, true); else if (__builtin_types_compatible_p(typeof(*&cr_pinning), struct static_key_false)) branch = !arch_static_branch_jump(&(&cr_pinning)->key, true); else branch = ____wrong_branch_error(); __builtin_expect(!!(branch), 1); })) { if (__builtin_expect(!!((val & cr4_pinned_bits) != cr4_pinned_bits), 0)) { bits_missing = ~val & cr4_pinned_bits; val |= bits_missing; goto set_register; } ({ static bool __attribute__((__section__(".data.once"))) __warned; int __ret_warn_once = !!(bits_missing); if (__builtin_expect(!!(__ret_warn_once && !__warned), 0)) { __warned = true; ({ int __ret_warn_on = !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __warn_printk("CR4 bits went missing: %lx!?\n", bits_missing); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/special_insns.h"), "i" (109), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (97)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } __builtin_expect(!!(__ret_warn_once), 0); }); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long native_read_cr8(void) { unsigned long cr8; asm volatile("movq %%cr8,%0" : "=r" (cr8)); return cr8; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_write_cr8(unsigned long val) { asm volatile("movq %0,%%cr8" :: "r" (val) : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 rdpkru(void) { u32 ecx = 0; u32 edx, pkru; asm volatile(".byte 0x0f,0x01,0xee\n\t" : "=a" (pkru), "=d" (edx) : "c" (ecx)); return pkru; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void wrpkru(u32 pkru) { u32 ecx = 0, edx = 0; asm volatile(".byte 0x0f,0x01,0xef\n\t" : : "a" (pkru), "c"(ecx), "d"(edx)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __write_pkru(u32 pkru) { if (pkru == rdpkru()) return; wrpkru(pkru); } # 178 "../arch/x86/include/asm/special_insns.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_wbinvd(void) { asm volatile("wbinvd": : :"memory"); } extern void native_load_gs_index(unsigned); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long __read_cr4(void) { return native_read_cr4(); } # 259 "../arch/x86/include/asm/special_insns.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clflush(volatile void *__p) { asm volatile("clflush %0" : "+m" (*(volatile char *)__p)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clflushopt(volatile void *__p) { asm volatile ("# ALT: oldnstr\n" "661:\n\t" ".byte " "0x3e" "; clflush %P0" "\n662:\n" "# ALT: padding\n" ".skip -(((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")) > 0) * " "((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")),0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 9*32+23)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" ".byte 0x66; clflush %P0" "\n" "665""1" ":\n" ".popsection\n" : "+m" (*(volatile char *)__p) : "i" (0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clwb(volatile void *__p) { volatile struct { char x[64]; } *p = __p; asm volatile("# ALT: oldinstr2\n" "661:\n\t" ".byte " "0x3e" "; clflush (%[pax])" "\n662:\n" "# ALT: padding2\n" ".skip -((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")) > 0) * " "(" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")), 0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 9*32+23)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" " .long 661b - .\n" " .long " "664""2""f - .\n" " .word " "( 9*32+24)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""2""f-""664""2""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" ".byte 0x66; clflush (%[pax])" "\n" "665""1" ":\n" "# ALT: replacement " "2" "\n" "664""2"":\n\t" ".byte 0x66, 0x0f, 0xae, 0x30" "\n" "665""2" ":\n" ".popsection\n" : [p] "+m" (*p) : [pax] "a" (p)); } # 25 "../arch/x86/include/asm/processor.h" 2 # 1 "../arch/x86/include/asm/fpu/types.h" 1 # 12 "../arch/x86/include/asm/fpu/types.h" struct fregs_state { u32 cwd; u32 swd; u32 twd; u32 fip; u32 fcs; u32 foo; u32 fos; u32 st_space[20]; u32 status; }; struct fxregs_state { u16 cwd; u16 swd; u16 twd; u16 fop; union { struct { u64 rip; u64 rdp; }; struct { u32 fip; u32 fcs; u32 foo; u32 fos; }; }; u32 mxcsr; u32 mxcsr_mask; u32 st_space[32]; u32 xmm_space[64]; u32 padding[12]; union { u32 padding1[12]; u32 sw_reserved[12]; }; } __attribute__((aligned(16))); # 79 "../arch/x86/include/asm/fpu/types.h" struct swregs_state { u32 cwd; u32 swd; u32 twd; u32 fip; u32 fcs; u32 foo; u32 fos; u32 st_space[20]; u8 ftop; u8 changed; u8 lookahead; u8 no_update; u8 rm; u8 alimit; struct math_emu_info *info; u32 entry_eip; }; enum xfeature { XFEATURE_FP, XFEATURE_SSE, XFEATURE_YMM, XFEATURE_BNDREGS, XFEATURE_BNDCSR, XFEATURE_OPMASK, XFEATURE_ZMM_Hi256, XFEATURE_Hi16_ZMM, XFEATURE_PT_UNIMPLEMENTED_SO_FAR, XFEATURE_PKRU, XFEATURE_MAX, }; # 139 "../arch/x86/include/asm/fpu/types.h" struct reg_128_bit { u8 regbytes[128/8]; }; struct reg_256_bit { u8 regbytes[256/8]; }; struct reg_512_bit { u8 regbytes[512/8]; }; # 159 "../arch/x86/include/asm/fpu/types.h" struct ymmh_struct { struct reg_128_bit hi_ymm[16]; } __attribute__((__packed__)); struct mpx_bndreg { u64 lower_bound; u64 upper_bound; } __attribute__((__packed__)); struct mpx_bndreg_state { struct mpx_bndreg bndreg[4]; } __attribute__((__packed__)); struct mpx_bndcsr { u64 bndcfgu; u64 bndstatus; } __attribute__((__packed__)); struct mpx_bndcsr_state { union { struct mpx_bndcsr bndcsr; u8 pad_to_64_bytes[64]; }; } __attribute__((__packed__)); struct avx_512_opmask_state { u64 opmask_reg[8]; } __attribute__((__packed__)); struct avx_512_zmm_uppers_state { struct reg_256_bit zmm_upper[16]; } __attribute__((__packed__)); struct avx_512_hi16_state { struct reg_512_bit hi16_zmm[16]; } __attribute__((__packed__)); struct pkru_state { u32 pkru; u32 pad; } __attribute__((__packed__)); struct xstate_header { u64 xfeatures; u64 xcomp_bv; u64 reserved[6]; } __attribute__((packed)); # 253 "../arch/x86/include/asm/fpu/types.h" struct xregs_state { struct fxregs_state i387; struct xstate_header header; u8 extended_state_area[0]; } __attribute__ ((packed, aligned (64))); # 268 "../arch/x86/include/asm/fpu/types.h" union fpregs_state { struct fregs_state fsave; struct fxregs_state fxsave; struct swregs_state soft; struct xregs_state xsave; u8 __padding[((1UL) << 12)]; }; struct fpu { # 294 "../arch/x86/include/asm/fpu/types.h" unsigned int last_cpu; unsigned long avx512_timestamp; # 312 "../arch/x86/include/asm/fpu/types.h" union fpregs_state state; }; # 26 "../arch/x86/include/asm/processor.h" 2 # 1 "../arch/x86/include/asm/unwind_hints.h" 1 # 1 "../arch/x86/include/asm/orc_types.h" 1 # 73 "../arch/x86/include/asm/orc_types.h" struct orc_entry { s16 sp_offset; s16 bp_offset; unsigned sp_reg:4; unsigned bp_reg:4; unsigned type:2; unsigned end:1; } __attribute__((__packed__)); struct unwind_hint { u32 ip; s16 sp_offset; u8 sp_reg; u8 type; u8 end; }; # 5 "../arch/x86/include/asm/unwind_hints.h" 2 # 27 "../arch/x86/include/asm/processor.h" 2 # 1 "../include/linux/personality.h" 1 # 1 "../include/uapi/linux/personality.h" 1 # 11 "../include/uapi/linux/personality.h" enum { UNAME26 = 0x0020000, ADDR_NO_RANDOMIZE = 0x0040000, FDPIC_FUNCPTRS = 0x0080000, MMAP_PAGE_ZERO = 0x0100000, ADDR_COMPAT_LAYOUT = 0x0200000, READ_IMPLIES_EXEC = 0x0400000, ADDR_LIMIT_32BIT = 0x0800000, SHORT_INODE = 0x1000000, WHOLE_SECONDS = 0x2000000, STICKY_TIMEOUTS = 0x4000000, ADDR_LIMIT_3GB = 0x8000000, }; # 42 "../include/uapi/linux/personality.h" enum { PER_LINUX = 0x0000, PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT, PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS, PER_SVR4 = 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO, PER_SVR3 = 0x0002 | STICKY_TIMEOUTS | SHORT_INODE, PER_SCOSVR3 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS | SHORT_INODE, PER_OSR5 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS, PER_WYSEV386 = 0x0004 | STICKY_TIMEOUTS | SHORT_INODE, PER_ISCR4 = 0x0005 | STICKY_TIMEOUTS, PER_BSD = 0x0006, PER_SUNOS = 0x0006 | STICKY_TIMEOUTS, PER_XENIX = 0x0007 | STICKY_TIMEOUTS | SHORT_INODE, PER_LINUX32 = 0x0008, PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB, PER_IRIX32 = 0x0009 | STICKY_TIMEOUTS, PER_IRIXN32 = 0x000a | STICKY_TIMEOUTS, PER_IRIX64 = 0x000b | STICKY_TIMEOUTS, PER_RISCOS = 0x000c, PER_SOLARIS = 0x000d | STICKY_TIMEOUTS, PER_UW7 = 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO, PER_OSF4 = 0x000f, PER_HPUX = 0x0010, PER_MASK = 0x00ff, }; # 6 "../include/linux/personality.h" 2 # 29 "../arch/x86/include/asm/processor.h" 2 # 1 "../include/linux/math64.h" 1 # 24 "../include/linux/math64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder) { *remainder = dividend % divisor; return dividend / divisor; } # 38 "../include/linux/math64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 div_s64_rem(s64 dividend, s32 divisor, s32 *remainder) { *remainder = dividend % divisor; return dividend / divisor; } # 52 "../include/linux/math64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 div64_u64_rem(u64 dividend, u64 divisor, u64 *remainder) { *remainder = dividend % divisor; return dividend / divisor; } # 65 "../include/linux/math64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 div64_u64(u64 dividend, u64 divisor) { return dividend / divisor; } # 77 "../include/linux/math64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 div64_s64(s64 dividend, s64 divisor) { return dividend / divisor; } # 123 "../include/linux/math64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 div_u64(u64 dividend, u32 divisor) { u32 remainder; return div_u64_rem(dividend, divisor, &remainder); } # 136 "../include/linux/math64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 div_s64(s64 dividend, s32 divisor) { s32 remainder; return div_s64_rem(dividend, divisor, &remainder); } u32 iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u32 __iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder) { u32 ret = 0; while (dividend >= divisor) { asm("" : "+rm"(dividend)); dividend -= divisor; ret++; } *remainder = dividend; return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 mul_u32_u32(u32 a, u32 b) { return (u64)a * b; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 mul_u64_u32_shr(u64 a, u32 mul, unsigned int shift) { return (u64)(((unsigned __int128)a * mul) >> shift); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 mul_u64_u64_shr(u64 a, u64 mul, unsigned int shift) { return (u64)(((unsigned __int128)a * mul) >> shift); } # 256 "../include/linux/math64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 mul_u64_u32_div(u64 a, u32 mul, u32 divisor) { union { u64 ll; struct { u32 low, high; } l; } u, rl, rh; u.ll = a; rl.ll = mul_u32_u32(u.l.low, mul); rh.ll = mul_u32_u32(u.l.high, mul) + rl.l.high; rl.l.high = ({ uint32_t __base = (divisor); uint32_t __rem; __rem = ((uint64_t)(rh.ll)) % __base; (rh.ll) = ((uint64_t)(rh.ll)) / __base; __rem; }); ({ uint32_t __base = (divisor); uint32_t __rem; __rem = ((uint64_t)(rl.ll)) % __base; (rl.ll) = ((uint64_t)(rl.ll)) / __base; __rem; }); rl.l.high = rh.l.low; return rl.ll; } # 32 "../arch/x86/include/asm/processor.h" 2 # 1 "../include/linux/irqflags.h" 1 # 16 "../include/linux/irqflags.h" # 1 "../arch/x86/include/asm/irqflags.h" 1 # 19 "../arch/x86/include/asm/irqflags.h" extern inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long native_save_fl(void); extern inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long native_save_fl(void) { unsigned long flags; asm volatile("# __raw_save_flags\n\t" "pushf ; pop %0" : "=rm" (flags) : : "memory"); return flags; } extern inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_restore_fl(unsigned long flags); extern inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_restore_fl(unsigned long flags) { asm volatile("push %0 ; popf" : :"g" (flags) :"memory", "cc"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_irq_disable(void) { asm volatile("cli": : :"memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_irq_enable(void) { asm volatile("sti": : :"memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__section__(".cpuidle.text"))) void native_safe_halt(void) { mds_idle_clear_cpu_buffers(); asm volatile("sti; hlt": : :"memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__section__(".cpuidle.text"))) void native_halt(void) { mds_idle_clear_cpu_buffers(); asm volatile("hlt": : :"memory"); } # 162 "../arch/x86/include/asm/irqflags.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int arch_irqs_disabled_flags(unsigned long flags) { return !(flags & (((1UL)) << (9))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int arch_irqs_disabled(void) { unsigned long flags = arch_local_save_flags(); return arch_irqs_disabled_flags(flags); } # 17 "../include/linux/irqflags.h" 2 extern void trace_softirqs_on(unsigned long ip); extern void trace_softirqs_off(unsigned long ip); extern void lockdep_hardirqs_on(unsigned long ip); extern void lockdep_hardirqs_off(unsigned long ip); # 32 "../include/linux/irqflags.h" extern void trace_hardirqs_on(void); extern void trace_hardirqs_off(void); # 69 "../include/linux/irqflags.h" extern void stop_critical_timings(void); extern void start_critical_timings(void); # 34 "../arch/x86/include/asm/processor.h" 2 # 59 "../arch/x86/include/asm/processor.h" enum tlb_infos { ENTRIES, NR_INFO }; extern u16 __attribute__((__section__(".data..read_mostly"))) tlb_lli_4k[NR_INFO]; extern u16 __attribute__((__section__(".data..read_mostly"))) tlb_lli_2m[NR_INFO]; extern u16 __attribute__((__section__(".data..read_mostly"))) tlb_lli_4m[NR_INFO]; extern u16 __attribute__((__section__(".data..read_mostly"))) tlb_lld_4k[NR_INFO]; extern u16 __attribute__((__section__(".data..read_mostly"))) tlb_lld_2m[NR_INFO]; extern u16 __attribute__((__section__(".data..read_mostly"))) tlb_lld_4m[NR_INFO]; extern u16 __attribute__((__section__(".data..read_mostly"))) tlb_lld_1g[NR_INFO]; struct cpuinfo_x86 { __u8 x86; __u8 x86_vendor; __u8 x86_model; __u8 x86_stepping; int x86_tlbsize; __u8 x86_virt_bits; __u8 x86_phys_bits; __u8 x86_coreid_bits; __u8 cu_id; __u32 extended_cpuid_level; int cpuid_level; __u32 x86_capability[19 + 1]; char x86_vendor_id[16]; char x86_model_id[64]; unsigned int x86_cache_size; int x86_cache_alignment; int x86_cache_max_rmid; int x86_cache_occ_scale; int x86_power; unsigned long loops_per_jiffy; u16 x86_max_cores; u16 apicid; u16 initial_apicid; u16 x86_clflush_size; u16 booted_cores; u16 phys_proc_id; u16 logical_proc_id; u16 cpu_core_id; u16 cpu_die_id; u16 logical_die_id; u16 cpu_index; u32 microcode; u8 x86_cache_bits; unsigned initialized : 1; } ; struct cpuid_regs { u32 eax, ebx, ecx, edx; }; enum cpuid_regs_idx { CPUID_EAX = 0, CPUID_EBX, CPUID_ECX, CPUID_EDX, }; # 157 "../arch/x86/include/asm/processor.h" extern struct cpuinfo_x86 boot_cpu_data; extern struct cpuinfo_x86 new_cpu_data; extern struct x86_hw_tss doublefault_tss; extern __u32 cpu_caps_cleared[19 + 1]; extern __u32 cpu_caps_set[19 + 1]; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_cpu_info; extern __attribute__((section(".data..percpu" "..read_mostly"))) __typeof__(struct cpuinfo_x86) cpu_info; extern const struct seq_operations cpuinfo_op; extern void cpu_detect(struct cpuinfo_x86 *c); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long long l1tf_pfn_limit(void) { return ((((1ULL))) << (boot_cpu_data.x86_cache_bits - 1 - 12)); } extern void early_cpu_init(void); extern void identify_boot_cpu(void); extern void identify_secondary_cpu(struct cpuinfo_x86 *); extern void print_cpu_info(struct cpuinfo_x86 *); void print_cpu_msr(struct cpuinfo_x86 *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int have_cpuid_p(void) { return 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_cpuid(unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) { asm volatile("cpuid" : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "0" (*eax), "2" (*ecx) : "memory"); } # 223 "../arch/x86/include/asm/processor.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int native_cpuid_eax(unsigned int op) { unsigned int eax = op, ebx, ecx = 0, edx; native_cpuid(&eax, &ebx, &ecx, &edx); return eax; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int native_cpuid_ebx(unsigned int op) { unsigned int eax = op, ebx, ecx = 0, edx; native_cpuid(&eax, &ebx, &ecx, &edx); return ebx; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int native_cpuid_ecx(unsigned int op) { unsigned int eax = op, ebx, ecx = 0, edx; native_cpuid(&eax, &ebx, &ecx, &edx); return ecx; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int native_cpuid_edx(unsigned int op) { unsigned int eax = op, ebx, ecx = 0, edx; native_cpuid(&eax, &ebx, &ecx, &edx); return edx; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long read_cr3_pa(void) { return __read_cr3() & ((0x7FFFFFFFFFFFF000ull) & ~sme_me_mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long native_read_cr3_pa(void) { return __native_read_cr3() & ((0x7FFFFFFFFFFFF000ull) & ~sme_me_mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void load_cr3(pgd_t *pgdir) { write_cr3((__phys_addr((unsigned long)(pgdir)) | sme_me_mask)); } # 300 "../arch/x86/include/asm/processor.h" struct x86_hw_tss { u32 reserved1; u64 sp0; u64 sp1; u64 sp2; u64 reserved2; u64 ist[7]; u32 reserved3; u32 reserved4; u16 reserved5; u16 io_bitmap_base; } __attribute__((packed)); # 336 "../arch/x86/include/asm/processor.h" struct entry_stack { unsigned long words[64]; }; struct entry_stack_page { struct entry_stack stack; } __attribute__((__aligned__(((1UL) << 12)))); struct tss_struct { struct x86_hw_tss x86_tss; unsigned long io_bitmap[((65536/8)/sizeof(long)) + 1]; } __attribute__((__aligned__(((1UL) << 12)))); extern __attribute__((section(".discard"), unused)) char __pcpu_scope_cpu_tss_rw; extern __attribute__((section(".data..percpu" "..page_aligned"))) __typeof__(struct tss_struct) cpu_tss_rw __attribute__((__aligned__(((1UL) << 12)))); # 374 "../arch/x86/include/asm/processor.h" struct irq_stack { char stack[(((1UL) << 12) << (2 + 1))]; } __attribute__((__aligned__((((1UL) << 12) << (2 + 1))))); extern __attribute__((section(".discard"), unused)) char __pcpu_scope_hardirq_stack_ptr; extern __attribute__((section(".data..percpu" ""))) __typeof__(struct irq_stack *) hardirq_stack_ptr; # 388 "../arch/x86/include/asm/processor.h" struct fixed_percpu_data { char gs_base[40]; unsigned long stack_canary; }; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_fixed_percpu_data; extern __attribute__((section(".data..percpu" "..first"))) __typeof__(struct fixed_percpu_data) fixed_percpu_data ; extern typeof(fixed_percpu_data) init_per_cpu__fixed_percpu_data; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long cpu_kernelmode_gs_base(int cpu) { return (unsigned long)(*({ do { const void *__vpp_verify = (typeof((&(fixed_percpu_data.gs_base)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = (unsigned long) ((typeof(*((&(fixed_percpu_data.gs_base)))) *)((&(fixed_percpu_data.gs_base)))); (typeof((typeof(*((&(fixed_percpu_data.gs_base)))) *)((&(fixed_percpu_data.gs_base))))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); })); } extern __attribute__((section(".discard"), unused)) char __pcpu_scope_irq_count; extern __attribute__((section(".data..percpu" ""))) __typeof__(unsigned int) irq_count; extern void ignore_sysret(void); void save_fsgs_for_kvm(void); # 431 "../arch/x86/include/asm/processor.h" extern unsigned int fpu_kernel_xstate_size; extern unsigned int fpu_user_xstate_size; struct perf_event; typedef struct { unsigned long seg; } mm_segment_t; struct thread_struct { struct desc_struct tls_array[3]; unsigned long sp; unsigned short es; unsigned short ds; unsigned short fsindex; unsigned short gsindex; unsigned long fsbase; unsigned long gsbase; # 469 "../arch/x86/include/asm/processor.h" struct perf_event *ptrace_bps[4]; unsigned long debugreg6; unsigned long ptrace_dr7; unsigned long cr2; unsigned long trap_nr; unsigned long error_code; unsigned long *io_bitmap_ptr; unsigned long iopl; unsigned io_bitmap_max; mm_segment_t addr_limit; unsigned int sig_on_uaccess_err:1; unsigned int uaccess_err:1; struct fpu fpu; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_thread_struct_whitelist(unsigned long *offset, unsigned long *size) { *offset = __builtin_offsetof(struct thread_struct, fpu.state); *size = fpu_kernel_xstate_size; } # 521 "../arch/x86/include/asm/processor.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_set_iopl_mask(unsigned mask) { # 535 "../arch/x86/include/asm/processor.h" } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_load_sp0(unsigned long sp0) { do { do { const void *__vpp_verify = (typeof((&(cpu_tss_rw.x86_tss.sp0)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_tss_rw.x86_tss.sp0)) { case 1: do { typedef typeof((cpu_tss_rw.x86_tss.sp0)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (sp0); (void)pto_tmp__; } switch (sizeof((cpu_tss_rw.x86_tss.sp0))) { case 1: asm volatile ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "qi" ((pto_T__)(sp0))); break; case 2: asm volatile ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "ri" ((pto_T__)(sp0))); break; case 4: asm volatile ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "ri" ((pto_T__)(sp0))); break; case 8: asm volatile ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "re" ((pto_T__)(sp0))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((cpu_tss_rw.x86_tss.sp0)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (sp0); (void)pto_tmp__; } switch (sizeof((cpu_tss_rw.x86_tss.sp0))) { case 1: asm volatile ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "qi" ((pto_T__)(sp0))); break; case 2: asm volatile ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "ri" ((pto_T__)(sp0))); break; case 4: asm volatile ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "ri" ((pto_T__)(sp0))); break; case 8: asm volatile ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "re" ((pto_T__)(sp0))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((cpu_tss_rw.x86_tss.sp0)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (sp0); (void)pto_tmp__; } switch (sizeof((cpu_tss_rw.x86_tss.sp0))) { case 1: asm volatile ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "qi" ((pto_T__)(sp0))); break; case 2: asm volatile ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "ri" ((pto_T__)(sp0))); break; case 4: asm volatile ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "ri" ((pto_T__)(sp0))); break; case 8: asm volatile ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "re" ((pto_T__)(sp0))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((cpu_tss_rw.x86_tss.sp0)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (sp0); (void)pto_tmp__; } switch (sizeof((cpu_tss_rw.x86_tss.sp0))) { case 1: asm volatile ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "qi" ((pto_T__)(sp0))); break; case 2: asm volatile ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "ri" ((pto_T__)(sp0))); break; case 4: asm volatile ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "ri" ((pto_T__)(sp0))); break; case 8: asm volatile ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((cpu_tss_rw.x86_tss.sp0)) : "re" ((pto_T__)(sp0))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_swapgs(void) { asm volatile("swapgs" ::: "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long current_top_of_stack(void) { return ({ typeof(cpu_tss_rw.x86_tss.sp1) pfo_ret__; switch (sizeof(cpu_tss_rw.x86_tss.sp1)) { case 1: asm("mov" "b ""%%""gs"":" "%" "P1"",%0" : "=q" (pfo_ret__) : "p" (&(cpu_tss_rw.x86_tss.sp1))); break; case 2: asm("mov" "w ""%%""gs"":" "%" "P1"",%0" : "=r" (pfo_ret__) : "p" (&(cpu_tss_rw.x86_tss.sp1))); break; case 4: asm("mov" "l ""%%""gs"":" "%" "P1"",%0" : "=r" (pfo_ret__) : "p" (&(cpu_tss_rw.x86_tss.sp1))); break; case 8: asm("mov" "q ""%%""gs"":" "%" "P1"",%0" : "=r" (pfo_ret__) : "p" (&(cpu_tss_rw.x86_tss.sp1))); break; default: __bad_percpu_size(); } pfo_ret__; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool on_thread_stack(void) { return (unsigned long)(current_top_of_stack() - current_stack_pointer) < (((1UL) << 12) << (2 + 1)); } # 580 "../arch/x86/include/asm/processor.h" extern void release_thread(struct task_struct *); unsigned long get_wchan(struct task_struct *p); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpuid(unsigned int op, unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) { *eax = op; *ecx = 0; __cpuid(eax, ebx, ecx, edx); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cpuid_count(unsigned int op, int count, unsigned int *eax, unsigned int *ebx, unsigned int *ecx, unsigned int *edx) { *eax = op; *ecx = count; __cpuid(eax, ebx, ecx, edx); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int cpuid_eax(unsigned int op) { unsigned int eax, ebx, ecx, edx; cpuid(op, &eax, &ebx, &ecx, &edx); return eax; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int cpuid_ebx(unsigned int op) { unsigned int eax, ebx, ecx, edx; cpuid(op, &eax, &ebx, &ecx, &edx); return ebx; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int cpuid_ecx(unsigned int op) { unsigned int eax, ebx, ecx, edx; cpuid(op, &eax, &ebx, &ecx, &edx); return ecx; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int cpuid_edx(unsigned int op) { unsigned int eax, ebx, ecx, edx; cpuid(op, &eax, &ebx, &ecx, &edx); return edx; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void rep_nop(void) { asm volatile("rep; nop" ::: "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void cpu_relax(void) { rep_nop(); } # 672 "../arch/x86/include/asm/processor.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sync_core(void) { # 705 "../arch/x86/include/asm/processor.h" unsigned int tmp; asm volatile ( "987: \n\t" ".pushsection .discard.unwind_hints\n\t" ".long 987b - .\n\t" ".short " "0" "\n\t" ".byte " "0" "\n\t" ".byte " "3" "\n\t" ".byte " "0" "\n\t" ".balign 4 \n\t" ".popsection\n\t" "mov %%ss, %0\n\t" "pushq %q0\n\t" "pushq %%rsp\n\t" "addq $8, (%%rsp)\n\t" "pushfq\n\t" "mov %%cs, %0\n\t" "pushq %q0\n\t" "pushq $1f\n\t" "iretq\n\t" "987: \n\t" ".pushsection .discard.unwind_hints\n\t" ".long 987b - .\n\t" ".short " "0" "\n\t" ".byte " "0" "\n\t" ".byte " "4" "\n\t" ".byte " "0" "\n\t" ".balign 4 \n\t" ".popsection\n\t" "1:" : "=&r" (tmp), "+r" (current_stack_pointer) : : "cc", "memory"); } extern void select_idle_routine(const struct cpuinfo_x86 *c); extern void amd_e400_c1e_apic_setup(void); extern unsigned long boot_option_idle_override; enum idle_boot_override {IDLE_NO_OVERRIDE=0, IDLE_HALT, IDLE_NOMWAIT, IDLE_POLL}; extern void enable_sep_cpu(void); extern int sysenter_setup(void); extern struct desc_ptr early_gdt_descr; extern void switch_to_new_gdt(int); extern void load_direct_gdt(int); extern void load_fixmap_gdt(int); extern void load_percpu_segment(int); extern void cpu_init(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long get_debugctlmsr(void) { unsigned long debugctlmsr = 0; do { debugctlmsr = paravirt_read_msr(0x000001d9); } while (0); return debugctlmsr; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void update_debugctlmsr(unsigned long debugctlmsr) { wrmsrl(0x000001d9, debugctlmsr); } extern void set_task_blockstep(struct task_struct *task, bool on); extern int bootloader_type; extern int bootloader_version; extern char ignore_fpu_irq; # 792 "../arch/x86/include/asm/processor.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void prefetch(const void *x) { asm volatile ("# ALT: oldnstr\n" "661:\n\t" "prefetcht0 %P1" "\n662:\n" "# ALT: padding\n" ".skip -(((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")) > 0) * " "((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")),0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 0*32+25)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "prefetchnta %P1" "\n" "665""1" ":\n" ".popsection\n" : : "i" (0), "m" (*(const char *)x)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void prefetchw(const void *x) { asm volatile ("# ALT: oldnstr\n" "661:\n\t" "prefetcht0 %P1" "\n662:\n" "# ALT: padding\n" ".skip -(((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")) > 0) * " "((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")),0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 6*32+ 8)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "prefetchw %P1" "\n" "665""1" ":\n" ".popsection\n" : : "i" (0), "m" (*(const char *)x)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void spin_lock_prefetch(const void *x) { prefetchw(x); } # 892 "../arch/x86/include/asm/processor.h" extern unsigned long KSTK_ESP(struct task_struct *task); extern void start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp); # 912 "../arch/x86/include/asm/processor.h" extern int get_tsc_mode(unsigned long adr); extern int set_tsc_mode(unsigned int val); extern __attribute__((section(".discard"), unused)) char __pcpu_scope_msr_misc_features_shadow; extern __attribute__((section(".data..percpu" ""))) __typeof__(u64) msr_misc_features_shadow; extern int mpx_enable_management(void); extern int mpx_disable_management(void); # 936 "../arch/x86/include/asm/processor.h" extern u16 amd_get_nb_id(int cpu); extern u32 amd_get_nodes_per_socket(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) uint32_t hypervisor_cpuid_base(const char *sig, uint32_t leaves) { uint32_t base, eax, signature[3]; for (base = 0x40000000; base < 0x40010000; base += 0x100) { cpuid(base, &eax, &signature[0], &signature[1], &signature[2]); if (!memcmp(sig, signature, 12) && (leaves == 0 || ((eax - base) >= leaves))) return base; } return 0; } extern unsigned long arch_align_stack(unsigned long sp); void free_init_pages(const char *what, unsigned long begin, unsigned long end); extern void free_kernel_image_pages(void *begin, void *end); void default_idle(void); bool xen_set_default_idle(void); void stop_this_cpu(void *dummy); void df_debug(struct pt_regs *regs, long error_code); void microcode_check(void); enum l1tf_mitigations { L1TF_MITIGATION_OFF, L1TF_MITIGATION_FLUSH_NOWARN, L1TF_MITIGATION_FLUSH, L1TF_MITIGATION_FLUSH_NOSMT, L1TF_MITIGATION_FULL, L1TF_MITIGATION_FULL_FORCE }; extern enum l1tf_mitigations l1tf_mitigation; enum mds_mitigations { MDS_MITIGATION_OFF, MDS_MITIGATION_FULL, MDS_MITIGATION_VMWERV, }; # 20 "../include/linux/mutex.h" 2 # 1 "../include/linux/osq_lock.h" 1 struct optimistic_spin_node { struct optimistic_spin_node *next, *prev; int locked; int cpu; }; struct optimistic_spin_queue { atomic_t tail; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void osq_lock_init(struct optimistic_spin_queue *lock) { atomic_set(&lock->tail, (0)); } extern bool osq_lock(struct optimistic_spin_queue *lock); extern void osq_unlock(struct optimistic_spin_queue *lock); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool osq_is_locked(struct optimistic_spin_queue *lock) { return atomic_read(&lock->tail) != (0); } # 21 "../include/linux/mutex.h" 2 struct ww_acquire_ctx; # 53 "../include/linux/mutex.h" struct mutex { atomic_long_t owner; spinlock_t wait_lock; struct optimistic_spin_queue osq; struct list_head wait_list; void *magic; struct lockdep_map dep_map; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct task_struct *__mutex_owner(struct mutex *lock) { return (struct task_struct *)(atomic_long_read(&lock->owner) & ~0x07); } struct mutex_waiter { struct list_head list; struct task_struct *task; struct ww_acquire_ctx *ww_ctx; void *magic; }; extern void mutex_destroy(struct mutex *lock); # 138 "../include/linux/mutex.h" extern void __mutex_init(struct mutex *lock, const char *name, struct lock_class_key *key); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool mutex_is_locked(struct mutex *lock) { return __mutex_owner(lock) != ((void *)0); } extern void mutex_lock_nested(struct mutex *lock, unsigned int subclass); extern void _mutex_lock_nest_lock(struct mutex *lock, struct lockdep_map *nest_lock); extern int __attribute__((__warn_unused_result__)) mutex_lock_interruptible_nested(struct mutex *lock, unsigned int subclass); extern int __attribute__((__warn_unused_result__)) mutex_lock_killable_nested(struct mutex *lock, unsigned int subclass); extern void mutex_lock_io_nested(struct mutex *lock, unsigned int subclass); # 196 "../include/linux/mutex.h" extern int mutex_trylock(struct mutex *lock); extern void mutex_unlock(struct mutex *lock); extern int atomic_dec_and_mutex_lock(atomic_t *cnt, struct mutex *lock); enum mutex_trylock_recursive_enum { MUTEX_TRYLOCK_FAILED = 0, MUTEX_TRYLOCK_SUCCESS = 1, MUTEX_TRYLOCK_RECURSIVE, }; # 223 "../include/linux/mutex.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) enum mutex_trylock_recursive_enum mutex_trylock_recursive(struct mutex *lock) { if (__builtin_expect(!!(__mutex_owner(lock) == get_current()), 0)) return MUTEX_TRYLOCK_RECURSIVE; return mutex_trylock(lock); } # 13 "../include/linux/kernfs.h" 2 # 1 "../include/linux/idr.h" 1 # 15 "../include/linux/idr.h" # 1 "../include/linux/radix-tree.h" 1 # 14 "../include/linux/radix-tree.h" # 1 "../include/linux/preempt.h" 1 # 78 "../include/linux/preempt.h" # 1 "../arch/x86/include/asm/preempt.h" 1 # 1 "../include/linux/thread_info.h" 1 # 13 "../include/linux/thread_info.h" # 1 "../include/linux/restart_block.h" 1 # 10 "../include/linux/restart_block.h" # 1 "../include/linux/time64.h" 1 typedef __s64 time64_t; typedef __u64 timeu64_t; # 1 "../include/uapi/linux/time.h" 1 # 1 "../include/uapi/linux/time_types.h" 1 struct __kernel_timespec { __kernel_time64_t tv_sec; long long tv_nsec; }; struct __kernel_itimerspec { struct __kernel_timespec it_interval; struct __kernel_timespec it_value; }; # 25 "../include/uapi/linux/time_types.h" struct __kernel_old_timeval { __kernel_long_t tv_sec; __kernel_long_t tv_usec; }; struct __kernel_sock_timeval { __s64 tv_sec; __s64 tv_usec; }; # 7 "../include/uapi/linux/time.h" 2 struct timespec { __kernel_time_t tv_sec; long tv_nsec; }; struct timeval { __kernel_time_t tv_sec; __kernel_suseconds_t tv_usec; }; struct timezone { int tz_minuteswest; int tz_dsttime; }; # 34 "../include/uapi/linux/time.h" struct itimerspec { struct timespec it_interval; struct timespec it_value; }; struct itimerval { struct timeval it_interval; struct timeval it_value; }; # 11 "../include/linux/time64.h" 2 struct timespec64 { time64_t tv_sec; long tv_nsec; }; struct itimerspec64 { struct timespec64 it_interval; struct timespec64 it_value; }; # 47 "../include/linux/time64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int timespec64_equal(const struct timespec64 *a, const struct timespec64 *b) { return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int timespec64_compare(const struct timespec64 *lhs, const struct timespec64 *rhs) { if (lhs->tv_sec < rhs->tv_sec) return -1; if (lhs->tv_sec > rhs->tv_sec) return 1; return lhs->tv_nsec - rhs->tv_nsec; } extern void set_normalized_timespec64(struct timespec64 *ts, time64_t sec, s64 nsec); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct timespec64 timespec64_add(struct timespec64 lhs, struct timespec64 rhs) { struct timespec64 ts_delta; set_normalized_timespec64(&ts_delta, lhs.tv_sec + rhs.tv_sec, lhs.tv_nsec + rhs.tv_nsec); return ts_delta; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct timespec64 timespec64_sub(struct timespec64 lhs, struct timespec64 rhs) { struct timespec64 ts_delta; set_normalized_timespec64(&ts_delta, lhs.tv_sec - rhs.tv_sec, lhs.tv_nsec - rhs.tv_nsec); return ts_delta; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool timespec64_valid(const struct timespec64 *ts) { if (ts->tv_sec < 0) return false; if ((unsigned long)ts->tv_nsec >= 1000000000L) return false; return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool timespec64_valid_strict(const struct timespec64 *ts) { if (!timespec64_valid(ts)) return false; if ((unsigned long long)ts->tv_sec >= (((s64)~((u64)1 << 63)) / 1000000000L)) return false; return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool timespec64_valid_settod(const struct timespec64 *ts) { if (!timespec64_valid(ts)) return false; if ((unsigned long long)ts->tv_sec >= ((((s64)~((u64)1 << 63)) / 1000000000L) - (30LL * 365 * 24 *3600))) return false; return true; } # 131 "../include/linux/time64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 timespec64_to_ns(const struct timespec64 *ts) { return ((s64) ts->tv_sec * 1000000000L) + ts->tv_nsec; } extern struct timespec64 ns_to_timespec64(const s64 nsec); # 152 "../include/linux/time64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void timespec64_add_ns(struct timespec64 *a, u64 ns) { a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, 1000000000L, &ns); a->tv_nsec = ns; } extern struct timespec64 timespec64_add_safe(const struct timespec64 lhs, const struct timespec64 rhs); # 11 "../include/linux/restart_block.h" 2 struct timespec; struct old_timespec32; struct pollfd; enum timespec_type { TT_NONE = 0, TT_NATIVE = 1, TT_COMPAT = 2, }; struct restart_block { long (*fn)(struct restart_block *); union { struct { u32 *uaddr; u32 val; u32 flags; u32 bitset; u64 time; u32 *uaddr2; } futex; struct { clockid_t clockid; enum timespec_type type; union { struct __kernel_timespec *rmtp; struct old_timespec32 *compat_rmtp; }; u64 expires; } nanosleep; struct { struct pollfd *ufds; int nfds; int has_timeout; unsigned long tv_sec; unsigned long tv_nsec; } poll; }; }; extern long do_no_restart_syscall(struct restart_block *parm); # 14 "../include/linux/thread_info.h" 2 # 31 "../include/linux/thread_info.h" enum { BAD_STACK = -1, NOT_STACK = 0, GOOD_FRAME, GOOD_STACK, }; # 1 "../arch/x86/include/asm/thread_info.h" 1 # 52 "../arch/x86/include/asm/thread_info.h" struct task_struct; # 1 "../arch/x86/include/asm/cpufeature.h" 1 # 12 "../arch/x86/include/asm/cpufeature.h" enum cpuid_leafs { CPUID_1_EDX = 0, CPUID_8000_0001_EDX, CPUID_8086_0001_EDX, CPUID_LNX_1, CPUID_1_ECX, CPUID_C000_0001_EDX, CPUID_8000_0001_ECX, CPUID_LNX_2, CPUID_LNX_3, CPUID_7_0_EBX, CPUID_D_1_EAX, CPUID_LNX_4, CPUID_7_1_EAX, CPUID_8000_0008_EBX, CPUID_6_EAX, CPUID_8000_000A_EDX, CPUID_7_ECX, CPUID_8000_0007_EBX, CPUID_7_EDX, }; extern const char * const x86_cap_flags[19*32]; extern const char * const x86_power_flags[32]; # 49 "../arch/x86/include/asm/cpufeature.h" extern const char * const x86_bug_flags[1*32]; # 134 "../arch/x86/include/asm/cpufeature.h" extern void setup_clear_cpu_cap(unsigned int bit); extern void clear_cpu_cap(struct cpuinfo_x86 *c, unsigned int bit); # 166 "../arch/x86/include/asm/cpufeature.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool _static_cpu_has(u16 bit) { asm goto("1: jmp 6f\n" "2:\n" ".skip -(((5f-4f) - (2b-1b)) > 0) * " "((5f-4f) - (2b-1b)),0x90\n" "3:\n" ".section .altinstructions,\"a\"\n" " .long 1b - .\n" " .long 4f - .\n" " .word %P[always]\n" " .byte 3b - 1b\n" " .byte 5f - 4f\n" " .byte 3b - 2b\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "4: jmp %l[t_no]\n" "5:\n" ".previous\n" ".section .altinstructions,\"a\"\n" " .long 1b - .\n" " .long 0\n" " .word %P[feature]\n" " .byte 3b - 1b\n" " .byte 0\n" " .byte 0\n" ".previous\n" ".section .altinstr_aux,\"ax\"\n" "6:\n" " testb %[bitnum],%[cap_byte]\n" " jnz %l[t_yes]\n" " jmp %l[t_no]\n" ".previous\n" : : [feature] "i" (bit), [always] "i" (( 3*32+21)), [bitnum] "i" (1 << (bit & 7)), [cap_byte] "m" (((const char *)boot_cpu_data.x86_capability)[bit >> 3]) : : t_yes, t_no); # 204 "../arch/x86/include/asm/cpufeature.h" t_yes: return true; t_no: return false; } # 54 "../arch/x86/include/asm/thread_info.h" 2 struct thread_info { unsigned long flags; u32 status; }; # 180 "../arch/x86/include/asm/thread_info.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int arch_within_stack_frames(const void * const stack, const void * const stackend, const void *obj, unsigned long len) { # 212 "../arch/x86/include/asm/thread_info.h" return NOT_STACK; } # 245 "../arch/x86/include/asm/thread_info.h" extern void arch_task_cache_init(void); extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src); extern void arch_release_task_struct(struct task_struct *tsk); extern void arch_setup_new_exec(void); # 39 "../include/linux/thread_info.h" 2 # 53 "../include/linux/thread_info.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_ti_thread_flag(struct thread_info *ti, int flag) { set_bit(flag, (unsigned long *)&ti->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_ti_thread_flag(struct thread_info *ti, int flag) { clear_bit(flag, (unsigned long *)&ti->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void update_ti_thread_flag(struct thread_info *ti, int flag, bool value) { if (value) set_ti_thread_flag(ti, flag); else clear_ti_thread_flag(ti, flag); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int test_and_set_ti_thread_flag(struct thread_info *ti, int flag) { return test_and_set_bit(flag, (unsigned long *)&ti->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int test_and_clear_ti_thread_flag(struct thread_info *ti, int flag) { return test_and_clear_bit(flag, (unsigned long *)&ti->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int test_ti_thread_flag(struct thread_info *ti, int flag) { return test_bit(flag, (unsigned long *)&ti->flags); } # 112 "../include/linux/thread_info.h" extern void __check_object_size(const void *ptr, unsigned long n, bool to_user); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void check_object_size(const void *ptr, unsigned long n, bool to_user) { if (!__builtin_constant_p(n)) __check_object_size(ptr, n, to_user); } extern void __bad_copy_from(void); extern void __bad_copy_to(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void copy_overflow(int size, unsigned long count) { ({ int __ret_warn_on = !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __warn_printk("Buffer overflow detected (%d < %lu)!\n", size, count); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/thread_info.h"), "i" (134), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (98)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool check_copy_size(const void *addr, size_t bytes, bool is_source) { int sz = -1; if (__builtin_expect(!!(sz >= 0 && sz < bytes), 0)) { if (!__builtin_constant_p(bytes)) copy_overflow(sz, bytes); else if (is_source) __bad_copy_from(); else __bad_copy_to(); return false; } check_object_size(addr, bytes, is_source); return true; } # 8 "../arch/x86/include/asm/preempt.h" 2 extern __attribute__((section(".discard"), unused)) char __pcpu_scope___preempt_count; extern __attribute__((section(".data..percpu" ""))) __typeof__(int) __preempt_count; # 24 "../arch/x86/include/asm/preempt.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int preempt_count(void) { return ({ typeof(__preempt_count) pfo_ret__; switch (sizeof(__preempt_count)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (__preempt_count)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (__preempt_count)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (__preempt_count)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (__preempt_count)); break; default: __bad_percpu_size(); } pfo_ret__; }) & ~0x80000000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void preempt_count_set(int pc) { int old, new; do { old = ({ typeof(__preempt_count) pfo_ret__; switch (sizeof(__preempt_count)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (__preempt_count)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (__preempt_count)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (__preempt_count)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (__preempt_count)); break; default: __bad_percpu_size(); } pfo_ret__; }); new = (old & 0x80000000) | (pc & ~0x80000000); } while (({ typeof(__preempt_count) pco_ret__; typeof(__preempt_count) pco_old__ = (old); typeof(__preempt_count) pco_new__ = (new); switch (sizeof(__preempt_count)) { case 1: asm ("cmpxchgb %2, ""%%""gs"":" "%" "1" : "=a" (pco_ret__), "+m" (__preempt_count) : "q" (pco_new__), "0" (pco_old__) : "memory"); break; case 2: asm ("cmpxchgw %2, ""%%""gs"":" "%" "1" : "=a" (pco_ret__), "+m" (__preempt_count) : "r" (pco_new__), "0" (pco_old__) : "memory"); break; case 4: asm ("cmpxchgl %2, ""%%""gs"":" "%" "1" : "=a" (pco_ret__), "+m" (__preempt_count) : "r" (pco_new__), "0" (pco_old__) : "memory"); break; case 8: asm ("cmpxchgq %2, ""%%""gs"":" "%" "1" : "=a" (pco_ret__), "+m" (__preempt_count) : "r" (pco_new__), "0" (pco_old__) : "memory"); break; default: __bad_percpu_size(); } pco_ret__; }) != old); } # 58 "../arch/x86/include/asm/preempt.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void set_preempt_need_resched(void) { do { typedef typeof((__preempt_count)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (~0x80000000); (void)pto_tmp__; } switch (sizeof((__preempt_count))) { case 1: asm ("and" "b %1,""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "qi" ((pto_T__)(~0x80000000))); break; case 2: asm ("and" "w %1,""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "ri" ((pto_T__)(~0x80000000))); break; case 4: asm ("and" "l %1,""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "ri" ((pto_T__)(~0x80000000))); break; case 8: asm ("and" "q %1,""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "re" ((pto_T__)(~0x80000000))); break; default: __bad_percpu_size(); } } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void clear_preempt_need_resched(void) { do { typedef typeof((__preempt_count)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (0x80000000); (void)pto_tmp__; } switch (sizeof((__preempt_count))) { case 1: asm ("or" "b %1,""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "qi" ((pto_T__)(0x80000000))); break; case 2: asm ("or" "w %1,""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "ri" ((pto_T__)(0x80000000))); break; case 4: asm ("or" "l %1,""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "ri" ((pto_T__)(0x80000000))); break; case 8: asm ("or" "q %1,""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "re" ((pto_T__)(0x80000000))); break; default: __bad_percpu_size(); } } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool test_preempt_need_resched(void) { return !(({ typeof(__preempt_count) pfo_ret__; switch (sizeof(__preempt_count)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (__preempt_count)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (__preempt_count)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (__preempt_count)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (__preempt_count)); break; default: __bad_percpu_size(); } pfo_ret__; }) & 0x80000000); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __preempt_count_add(int val) { do { typedef typeof((__preempt_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(val) && ((val) == 1 || (val) == -1)) ? (int)(val) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (val); (void)pao_tmp__; } switch (sizeof((__preempt_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "qi" ((pao_T__)(val))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "ri" ((pao_T__)(val))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "ri" ((pao_T__)(val))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "re" ((pao_T__)(val))); break; default: __bad_percpu_size(); } } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __preempt_count_sub(int val) { do { typedef typeof((__preempt_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-val) && ((-val) == 1 || (-val) == -1)) ? (int)(-val) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-val); (void)pao_tmp__; } switch (sizeof((__preempt_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "qi" ((pao_T__)(-val))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "ri" ((pao_T__)(-val))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "ri" ((pao_T__)(-val))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((__preempt_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((__preempt_count)) : "re" ((pao_T__)(-val))); break; default: __bad_percpu_size(); } } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool __preempt_count_dec_and_test(void) { return ({ bool c; asm volatile ("decl" " " "%%""gs"":" "%" "[var]" "\n\t/* output condition code " "e" "*/\n" : [var] "+m" (__preempt_count), "=@cc" "e" (c) : : "memory"); c; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool should_resched(int preempt_offset) { return __builtin_expect(!!(({ typeof(__preempt_count) pfo_ret__; switch (sizeof(__preempt_count)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (__preempt_count)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (__preempt_count)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (__preempt_count)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (__preempt_count)); break; default: __bad_percpu_size(); } pfo_ret__; }) == preempt_offset), 0); } # 79 "../include/linux/preempt.h" 2 # 277 "../include/linux/preempt.h" struct preempt_notifier; # 293 "../include/linux/preempt.h" struct preempt_ops { void (*sched_in)(struct preempt_notifier *notifier, int cpu); void (*sched_out)(struct preempt_notifier *notifier, struct task_struct *next); }; # 306 "../include/linux/preempt.h" struct preempt_notifier { struct hlist_node link; struct preempt_ops *ops; }; void preempt_notifier_inc(void); void preempt_notifier_dec(void); void preempt_notifier_register(struct preempt_notifier *notifier); void preempt_notifier_unregister(struct preempt_notifier *notifier); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void preempt_notifier_init(struct preempt_notifier *notifier, struct preempt_ops *ops) { INIT_HLIST_NODE(¬ifier->link); notifier->ops = ops; } # 15 "../include/linux/radix-tree.h" 2 # 1 "../include/linux/rcupdate.h" 1 # 28 "../include/linux/rcupdate.h" # 1 "../include/linux/bottom_half.h" 1 extern void __local_bh_disable_ip(unsigned long ip, unsigned int cnt); # 17 "../include/linux/bottom_half.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void local_bh_disable(void) { __local_bh_disable_ip(({ __label__ __here; __here: (unsigned long)&&__here; }), (2 * (1UL << (0 + 8)))); } extern void _local_bh_enable(void); extern void __local_bh_enable_ip(unsigned long ip, unsigned int cnt); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void local_bh_enable_ip(unsigned long ip) { __local_bh_enable_ip(ip, (2 * (1UL << (0 + 8)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void local_bh_enable(void) { __local_bh_enable_ip(({ __label__ __here; __here: (unsigned long)&&__here; }), (2 * (1UL << (0 + 8)))); } # 29 "../include/linux/rcupdate.h" 2 # 38 "../include/linux/rcupdate.h" void call_rcu(struct callback_head *head, rcu_callback_t func); void rcu_barrier_tasks(void); void synchronize_rcu(void); # 57 "../include/linux/rcupdate.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __rcu_read_lock(void) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __rcu_read_unlock(void) { do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int rcu_preempt_depth(void) { return 0; } void rcu_init(void); extern int rcu_scheduler_active __attribute__((__section__(".data..read_mostly"))); void rcu_sched_clock_irq(int user); void rcu_report_dead(unsigned int cpu); void rcutree_migrate_callbacks(int cpu); void rcu_sysrq_start(void); void rcu_sysrq_end(void); # 93 "../include/linux/rcupdate.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rcu_user_enter(void) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rcu_user_exit(void) { } void rcu_init_nohz(void); # 139 "../include/linux/rcupdate.h" void call_rcu_tasks(struct callback_head *head, rcu_callback_t func); void synchronize_rcu_tasks(void); void exit_tasks_rcu_start(void); void exit_tasks_rcu_finish(void); # 171 "../include/linux/rcupdate.h" # 1 "../include/linux/rcutree.h" 1 # 20 "../include/linux/rcutree.h" void rcu_softirq_qs(void); void rcu_note_context_switch(bool preempt); int rcu_needs_cpu(u64 basem, u64 *nextevt); void rcu_cpu_stall_reset(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rcu_virt_note_context_switch(int cpu) { rcu_note_context_switch(false); } void synchronize_rcu_expedited(void); void kfree_call_rcu(struct callback_head *head, rcu_callback_t func); void rcu_barrier(void); bool rcu_eqs_special_set(int cpu); unsigned long get_state_synchronize_rcu(void); void cond_synchronize_rcu(unsigned long oldstate); void rcu_idle_enter(void); void rcu_idle_exit(void); void rcu_irq_enter(void); void rcu_irq_exit(void); void rcu_irq_enter_irqson(void); void rcu_irq_exit_irqson(void); void exit_rcu(void); void rcu_scheduler_starting(void); extern int rcu_scheduler_active __attribute__((__section__(".data..read_mostly"))); void rcu_end_inkernel_boot(void); bool rcu_is_watching(void); void rcu_all_qs(void); int rcutree_prepare_cpu(unsigned int cpu); int rcutree_online_cpu(unsigned int cpu); int rcutree_offline_cpu(unsigned int cpu); int rcutree_dead_cpu(unsigned int cpu); int rcutree_dying_cpu(unsigned int cpu); void rcu_cpu_starting(unsigned int cpu); # 172 "../include/linux/rcupdate.h" 2 # 187 "../include/linux/rcupdate.h" void init_rcu_head(struct callback_head *head); void destroy_rcu_head(struct callback_head *head); void init_rcu_head_on_stack(struct callback_head *head); void destroy_rcu_head_on_stack(struct callback_head *head); # 199 "../include/linux/rcupdate.h" bool rcu_lockdep_current_cpu_online(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rcu_lock_acquire(struct lockdep_map *map) { lock_acquire(map, 0, 0, 2, 0, ((void *)0), ({ __label__ __here; __here: (unsigned long)&&__here; })); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rcu_lock_release(struct lockdep_map *map) { lock_release(map, 1, ({ __label__ __here; __here: (unsigned long)&&__here; })); } extern struct lockdep_map rcu_lock_map; extern struct lockdep_map rcu_bh_lock_map; extern struct lockdep_map rcu_sched_lock_map; extern struct lockdep_map rcu_callback_map; int debug_lockdep_rcu_enabled(void); int rcu_read_lock_held(void); int rcu_read_lock_bh_held(void); int rcu_read_lock_sched_held(void); # 263 "../include/linux/rcupdate.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rcu_preempt_sleep_check(void) { do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (lock_is_held(&rcu_lock_map))) { __warned = true; lockdep_rcu_suspicious("../include/linux/rcupdate.h", 266, "Illegal context switch in RCU read-side critical section"); } } while (0); } # 588 "../include/linux/rcupdate.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void rcu_read_lock(void) { __rcu_read_lock(); (void)0; rcu_lock_acquire(&rcu_lock_map); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!rcu_is_watching())) { __warned = true; lockdep_rcu_suspicious("../include/linux/rcupdate.h", 594, "rcu_read_lock() used illegally while idle"); } } while (0); } # 640 "../include/linux/rcupdate.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rcu_read_unlock(void) { do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!rcu_is_watching())) { __warned = true; lockdep_rcu_suspicious("../include/linux/rcupdate.h", 643, "rcu_read_unlock() used illegally while idle"); } } while (0); (void)0; __rcu_read_unlock(); rcu_lock_release(&rcu_lock_map); } # 661 "../include/linux/rcupdate.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rcu_read_lock_bh(void) { local_bh_disable(); (void)0; rcu_lock_acquire(&rcu_bh_lock_map); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!rcu_is_watching())) { __warned = true; lockdep_rcu_suspicious("../include/linux/rcupdate.h", 667, "rcu_read_lock_bh() used illegally while idle"); } } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rcu_read_unlock_bh(void) { do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!rcu_is_watching())) { __warned = true; lockdep_rcu_suspicious("../include/linux/rcupdate.h", 678, "rcu_read_unlock_bh() used illegally while idle"); } } while (0); rcu_lock_release(&rcu_bh_lock_map); (void)0; local_bh_enable(); } # 696 "../include/linux/rcupdate.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rcu_read_lock_sched(void) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); (void)0; rcu_lock_acquire(&rcu_sched_lock_map); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!rcu_is_watching())) { __warned = true; lockdep_rcu_suspicious("../include/linux/rcupdate.h", 702, "rcu_read_lock_sched() used illegally while idle"); } } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((no_instrument_function)) void rcu_read_lock_sched_notrace(void) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); (void)0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rcu_read_unlock_sched(void) { do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!rcu_is_watching())) { __warned = true; lockdep_rcu_suspicious("../include/linux/rcupdate.h", 720, "rcu_read_unlock_sched() used illegally while idle"); } } while (0); rcu_lock_release(&rcu_sched_lock_map); (void)0; do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((no_instrument_function)) void rcu_read_unlock_sched_notrace(void) { (void)0; do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } # 861 "../include/linux/rcupdate.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rcu_head_init(struct callback_head *rhp) { rhp->func = (rcu_callback_t)~0L; } # 879 "../include/linux/rcupdate.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool rcu_head_after_call_rcu(struct callback_head *rhp, rcu_callback_t f) { rcu_callback_t func = ({ union { typeof(rhp->func) __val; char __c[1]; } __u; if (1) __read_once_size(&(rhp->func), __u.__c, sizeof(rhp->func)); else __read_once_size_nocheck(&(rhp->func), __u.__c, sizeof(rhp->func)); do { } while (0); __u.__val; }); if (func == f) return true; ({ int __ret_warn_on = !!(func != (rcu_callback_t)~0L); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/rcupdate.h"), "i" (886), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (99)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); return false; } # 16 "../include/linux/radix-tree.h" 2 # 1 "../include/linux/spinlock.h" 1 # 60 "../include/linux/spinlock.h" # 1 "./arch/x86/include/generated/asm/mmiowb.h" 1 # 1 "../include/asm-generic/mmiowb.h" 1 # 2 "./arch/x86/include/generated/asm/mmiowb.h" 2 # 61 "../include/linux/spinlock.h" 2 # 89 "../include/linux/spinlock.h" # 1 "../arch/x86/include/asm/spinlock.h" 1 # 27 "../arch/x86/include/asm/spinlock.h" # 1 "../arch/x86/include/asm/qspinlock.h" 1 # 14 "../arch/x86/include/asm/qspinlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u32 queued_fetch_set_pending_acquire(struct qspinlock *lock) { u32 val; val = ({ bool c; asm volatile (".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "btsl" " %[val], " "%[var]" "\n\t/* output condition code " "c" "*/\n" : [var] "+m" (lock->val.counter), "=@cc" "c" (c) : [val] "I" ((0 + 8)) : "memory"); c; }) * (1U << (0 + 8)); val |= atomic_read(&lock->val) & ~(((1U << 8) - 1) << (0 + 8)); return val; } extern void native_queued_spin_lock_slowpath(struct qspinlock *lock, u32 val); extern void __pv_init_lock_hash(void); extern void __pv_queued_spin_lock_slowpath(struct qspinlock *lock, u32 val); extern void __raw_callee_save___pv_queued_spin_unlock(struct qspinlock *lock); # 43 "../arch/x86/include/asm/qspinlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_queued_spin_unlock(struct qspinlock *lock) { do { do { extern void __compiletime_assert_45(void) ; if (!((sizeof(*&lock->locked) == sizeof(char) || sizeof(*&lock->locked) == sizeof(short) || sizeof(*&lock->locked) == sizeof(int) || sizeof(*&lock->locked) == sizeof(long)))) __compiletime_assert_45(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&lock->locked) __val; char __c[1]; } __u = { .__val = ( typeof(*&lock->locked)) (0) }; __write_once_size(&(*&lock->locked), __u.__c, sizeof(*&lock->locked)); __u.__val; }); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void queued_spin_lock_slowpath(struct qspinlock *lock, u32 val) { pv_queued_spin_lock_slowpath(lock, val); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void queued_spin_unlock(struct qspinlock *lock) { pv_queued_spin_unlock(lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool vcpu_is_preempted(long cpu) { return pv_vcpu_is_preempted(cpu); } extern struct static_key_true virt_spin_lock_key; void native_pv_lock_init(void) __attribute__((__section__(".init.text"))) __attribute__((__cold__)) ; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool virt_spin_lock(struct qspinlock *lock) { if (!({ bool branch; if (__builtin_types_compatible_p(typeof(*&virt_spin_lock_key), struct static_key_true)) branch = !arch_static_branch(&(&virt_spin_lock_key)->key, true); else if (__builtin_types_compatible_p(typeof(*&virt_spin_lock_key), struct static_key_false)) branch = !arch_static_branch_jump(&(&virt_spin_lock_key)->key, true); else branch = ____wrong_branch_error(); __builtin_expect(!!(branch), 1); })) return false; do { while (atomic_read(&lock->val) != 0) cpu_relax(); } while (atomic_cmpxchg(&lock->val, 0, (1U << 0)) != 0); return true; } # 1 "../include/asm-generic/qspinlock.h" 1 # 20 "../include/asm-generic/qspinlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int queued_spin_is_locked(struct qspinlock *lock) { return atomic_read(&lock->val); } # 39 "../include/asm-generic/qspinlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int queued_spin_value_unlocked(struct qspinlock lock) { return !atomic_read(&lock.val); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int queued_spin_is_contended(struct qspinlock *lock) { return atomic_read(&lock->val) & ~(((1U << 8) - 1) << 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int queued_spin_trylock(struct qspinlock *lock) { u32 val = atomic_read(&lock->val); if (__builtin_expect(!!(val), 0)) return 0; return __builtin_expect(!!(atomic_try_cmpxchg(&lock->val, &val, (1U << 0))), 1); } extern void queued_spin_lock_slowpath(struct qspinlock *lock, u32 val); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void queued_spin_lock(struct qspinlock *lock) { u32 val = 0; if (__builtin_expect(!!(atomic_try_cmpxchg(&lock->val, &val, (1U << 0))), 1)) return; queued_spin_lock_slowpath(lock, val); } # 96 "../arch/x86/include/asm/qspinlock.h" 2 # 28 "../arch/x86/include/asm/spinlock.h" 2 # 43 "../arch/x86/include/asm/spinlock.h" # 1 "../arch/x86/include/asm/qrwlock.h" 1 # 1 "../include/asm-generic/qrwlock.h" 1 # 30 "../include/asm-generic/qrwlock.h" extern void queued_read_lock_slowpath(struct qrwlock *lock); extern void queued_write_lock_slowpath(struct qrwlock *lock); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int queued_read_trylock(struct qrwlock *lock) { u32 cnts; cnts = atomic_read(&lock->cnts); if (__builtin_expect(!!(!(cnts & 0x1ff)), 1)) { cnts = (u32)atomic_add_return((1U << 9), &lock->cnts); if (__builtin_expect(!!(!(cnts & 0x1ff)), 1)) return 1; atomic_sub((1U << 9), &lock->cnts); } return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int queued_write_trylock(struct qrwlock *lock) { u32 cnts; cnts = atomic_read(&lock->cnts); if (__builtin_expect(!!(cnts), 0)) return 0; return __builtin_expect(!!(atomic_try_cmpxchg(&lock->cnts, &cnts, 0x0ff)), 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void queued_read_lock(struct qrwlock *lock) { u32 cnts; cnts = atomic_add_return((1U << 9), &lock->cnts); if (__builtin_expect(!!(!(cnts & 0x1ff)), 1)) return; queued_read_lock_slowpath(lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void queued_write_lock(struct qrwlock *lock) { u32 cnts = 0; if (__builtin_expect(!!(atomic_try_cmpxchg(&lock->cnts, &cnts, 0x0ff)), 1)) return; queued_write_lock_slowpath(lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void queued_read_unlock(struct qrwlock *lock) { (void)atomic_sub_return((1U << 9), &lock->cnts); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void queued_write_unlock(struct qrwlock *lock) { do { do { extern void __compiletime_assert_116(void) ; if (!((sizeof(*&lock->wlocked) == sizeof(char) || sizeof(*&lock->wlocked) == sizeof(short) || sizeof(*&lock->wlocked) == sizeof(int) || sizeof(*&lock->wlocked) == sizeof(long)))) __compiletime_assert_116(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&lock->wlocked) __val; char __c[1]; } __u = { .__val = ( typeof(*&lock->wlocked)) (0) }; __write_once_size(&(*&lock->wlocked), __u.__c, sizeof(*&lock->wlocked)); __u.__val; }); } while (0); } # 7 "../arch/x86/include/asm/qrwlock.h" 2 # 44 "../arch/x86/include/asm/spinlock.h" 2 # 90 "../include/linux/spinlock.h" 2 extern void __raw_spin_lock_init(raw_spinlock_t *lock, const char *name, struct lock_class_key *key); # 173 "../include/linux/spinlock.h" extern void do_raw_spin_lock(raw_spinlock_t *lock) ; extern int do_raw_spin_trylock(raw_spinlock_t *lock); extern void do_raw_spin_unlock(raw_spinlock_t *lock) ; # 310 "../include/linux/spinlock.h" # 1 "../include/linux/rwlock.h" 1 # 18 "../include/linux/rwlock.h" extern void __rwlock_init(rwlock_t *lock, const char *name, struct lock_class_key *key); # 32 "../include/linux/rwlock.h" extern void do_raw_read_lock(rwlock_t *lock) ; extern int do_raw_read_trylock(rwlock_t *lock); extern void do_raw_read_unlock(rwlock_t *lock) ; extern void do_raw_write_lock(rwlock_t *lock) ; extern int do_raw_write_trylock(rwlock_t *lock); extern void do_raw_write_unlock(rwlock_t *lock) ; # 311 "../include/linux/spinlock.h" 2 # 1 "../include/linux/spinlock_api_smp.h" 1 # 18 "../include/linux/spinlock_api_smp.h" int in_lock_functions(unsigned long addr); void __attribute__((section(".spinlock.text"))) _raw_spin_lock(raw_spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_spin_lock_nested(raw_spinlock_t *lock, int subclass) ; void __attribute__((section(".spinlock.text"))) _raw_spin_lock_nest_lock(raw_spinlock_t *lock, struct lockdep_map *map) ; void __attribute__((section(".spinlock.text"))) _raw_spin_lock_bh(raw_spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_spin_lock_irq(raw_spinlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _raw_spin_lock_irqsave(raw_spinlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _raw_spin_lock_irqsave_nested(raw_spinlock_t *lock, int subclass) ; int __attribute__((section(".spinlock.text"))) _raw_spin_trylock(raw_spinlock_t *lock); int __attribute__((section(".spinlock.text"))) _raw_spin_trylock_bh(raw_spinlock_t *lock); void __attribute__((section(".spinlock.text"))) _raw_spin_unlock(raw_spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_spin_unlock_bh(raw_spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_spin_unlock_irq(raw_spinlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_spin_unlock_irqrestore(raw_spinlock_t *lock, unsigned long flags) ; # 86 "../include/linux/spinlock_api_smp.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __raw_spin_trylock(raw_spinlock_t *lock) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (do_raw_spin_trylock(lock)) { lock_acquire(&lock->dep_map, 0, 1, 0, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); return 1; } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); return 0; } # 104 "../include/linux/spinlock_api_smp.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long __raw_spin_lock_irqsave(raw_spinlock_t *lock) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); trace_hardirqs_off(); } while (0); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); do { if (!do_raw_spin_trylock(lock)) { lock_contended(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); do_raw_spin_lock(lock); } lock_acquired(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); } while (0); return flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_spin_lock_irq(raw_spinlock_t *lock) { do { arch_local_irq_disable(); trace_hardirqs_off(); } while (0); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); do { if (!do_raw_spin_trylock(lock)) { lock_contended(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); do_raw_spin_lock(lock); } lock_acquired(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_spin_lock_bh(raw_spinlock_t *lock) { __local_bh_disable_ip((unsigned long)__builtin_return_address(0), ((2 * (1UL << (0 + 8))) + (1UL << 0))); lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); do { if (!do_raw_spin_trylock(lock)) { lock_contended(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); do_raw_spin_lock(lock); } lock_acquired(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_spin_lock(raw_spinlock_t *lock) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); do { if (!do_raw_spin_trylock(lock)) { lock_contended(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); do_raw_spin_lock(lock); } lock_acquired(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_spin_unlock(raw_spinlock_t *lock) { lock_release(&lock->dep_map, 1, (unsigned long)__builtin_return_address(0)); do_raw_spin_unlock(lock); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_spin_unlock_irqrestore(raw_spinlock_t *lock, unsigned long flags) { lock_release(&lock->dep_map, 1, (unsigned long)__builtin_return_address(0)); do_raw_spin_unlock(lock); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); trace_hardirqs_off(); } else { trace_hardirqs_on(); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_spin_unlock_irq(raw_spinlock_t *lock) { lock_release(&lock->dep_map, 1, (unsigned long)__builtin_return_address(0)); do_raw_spin_unlock(lock); do { trace_hardirqs_on(); arch_local_irq_enable(); } while (0); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_spin_unlock_bh(raw_spinlock_t *lock) { lock_release(&lock->dep_map, 1, (unsigned long)__builtin_return_address(0)); do_raw_spin_unlock(lock); __local_bh_enable_ip((unsigned long)__builtin_return_address(0), ((2 * (1UL << (0 + 8))) + (1UL << 0))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __raw_spin_trylock_bh(raw_spinlock_t *lock) { __local_bh_disable_ip((unsigned long)__builtin_return_address(0), ((2 * (1UL << (0 + 8))) + (1UL << 0))); if (do_raw_spin_trylock(lock)) { lock_acquire(&lock->dep_map, 0, 1, 0, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); return 1; } __local_bh_enable_ip((unsigned long)__builtin_return_address(0), ((2 * (1UL << (0 + 8))) + (1UL << 0))); return 0; } # 1 "../include/linux/rwlock_api_smp.h" 1 # 18 "../include/linux/rwlock_api_smp.h" void __attribute__((section(".spinlock.text"))) _raw_read_lock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_write_lock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_read_lock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_write_lock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_read_lock_irq(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_write_lock_irq(rwlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _raw_read_lock_irqsave(rwlock_t *lock) ; unsigned long __attribute__((section(".spinlock.text"))) _raw_write_lock_irqsave(rwlock_t *lock) ; int __attribute__((section(".spinlock.text"))) _raw_read_trylock(rwlock_t *lock); int __attribute__((section(".spinlock.text"))) _raw_write_trylock(rwlock_t *lock); void __attribute__((section(".spinlock.text"))) _raw_read_unlock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_write_unlock(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_read_unlock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_write_unlock_bh(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_read_unlock_irq(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_write_unlock_irq(rwlock_t *lock) ; void __attribute__((section(".spinlock.text"))) _raw_read_unlock_irqrestore(rwlock_t *lock, unsigned long flags) ; void __attribute__((section(".spinlock.text"))) _raw_write_unlock_irqrestore(rwlock_t *lock, unsigned long flags) ; # 117 "../include/linux/rwlock_api_smp.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __raw_read_trylock(rwlock_t *lock) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (do_raw_read_trylock(lock)) { lock_acquire(&lock->dep_map, 0, 1, 2, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); return 1; } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __raw_write_trylock(rwlock_t *lock) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (do_raw_write_trylock(lock)) { lock_acquire(&lock->dep_map, 0, 1, 0, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); return 1; } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); return 0; } # 146 "../include/linux/rwlock_api_smp.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_read_lock(rwlock_t *lock) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); lock_acquire(&lock->dep_map, 0, 0, 2, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); do { if (!do_raw_read_trylock(lock)) { lock_contended(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); do_raw_read_lock(lock); } lock_acquired(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long __raw_read_lock_irqsave(rwlock_t *lock) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); trace_hardirqs_off(); } while (0); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); lock_acquire(&lock->dep_map, 0, 0, 2, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); do { if (!(do_raw_read_trylock)((lock))) { lock_contended(&((lock))->dep_map, (unsigned long)__builtin_return_address(0)); (do_raw_read_lock)((lock)); } lock_acquired(&((lock))->dep_map, (unsigned long)__builtin_return_address(0)); } while (0); return flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_read_lock_irq(rwlock_t *lock) { do { arch_local_irq_disable(); trace_hardirqs_off(); } while (0); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); lock_acquire(&lock->dep_map, 0, 0, 2, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); do { if (!do_raw_read_trylock(lock)) { lock_contended(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); do_raw_read_lock(lock); } lock_acquired(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_read_lock_bh(rwlock_t *lock) { __local_bh_disable_ip((unsigned long)__builtin_return_address(0), ((2 * (1UL << (0 + 8))) + (1UL << 0))); lock_acquire(&lock->dep_map, 0, 0, 2, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); do { if (!do_raw_read_trylock(lock)) { lock_contended(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); do_raw_read_lock(lock); } lock_acquired(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long __raw_write_lock_irqsave(rwlock_t *lock) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); trace_hardirqs_off(); } while (0); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); do { if (!(do_raw_write_trylock)((lock))) { lock_contended(&((lock))->dep_map, (unsigned long)__builtin_return_address(0)); (do_raw_write_lock)((lock)); } lock_acquired(&((lock))->dep_map, (unsigned long)__builtin_return_address(0)); } while (0); return flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_write_lock_irq(rwlock_t *lock) { do { arch_local_irq_disable(); trace_hardirqs_off(); } while (0); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); do { if (!do_raw_write_trylock(lock)) { lock_contended(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); do_raw_write_lock(lock); } lock_acquired(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_write_lock_bh(rwlock_t *lock) { __local_bh_disable_ip((unsigned long)__builtin_return_address(0), ((2 * (1UL << (0 + 8))) + (1UL << 0))); lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); do { if (!do_raw_write_trylock(lock)) { lock_contended(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); do_raw_write_lock(lock); } lock_acquired(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_write_lock(rwlock_t *lock) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); do { if (!do_raw_write_trylock(lock)) { lock_contended(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); do_raw_write_lock(lock); } lock_acquired(&(lock)->dep_map, (unsigned long)__builtin_return_address(0)); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_write_unlock(rwlock_t *lock) { lock_release(&lock->dep_map, 1, (unsigned long)__builtin_return_address(0)); do_raw_write_unlock(lock); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_read_unlock(rwlock_t *lock) { lock_release(&lock->dep_map, 1, (unsigned long)__builtin_return_address(0)); do_raw_read_unlock(lock); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_read_unlock_irqrestore(rwlock_t *lock, unsigned long flags) { lock_release(&lock->dep_map, 1, (unsigned long)__builtin_return_address(0)); do_raw_read_unlock(lock); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); trace_hardirqs_off(); } else { trace_hardirqs_on(); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_read_unlock_irq(rwlock_t *lock) { lock_release(&lock->dep_map, 1, (unsigned long)__builtin_return_address(0)); do_raw_read_unlock(lock); do { trace_hardirqs_on(); arch_local_irq_enable(); } while (0); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_read_unlock_bh(rwlock_t *lock) { lock_release(&lock->dep_map, 1, (unsigned long)__builtin_return_address(0)); do_raw_read_unlock(lock); __local_bh_enable_ip((unsigned long)__builtin_return_address(0), ((2 * (1UL << (0 + 8))) + (1UL << 0))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_write_unlock_irqrestore(rwlock_t *lock, unsigned long flags) { lock_release(&lock->dep_map, 1, (unsigned long)__builtin_return_address(0)); do_raw_write_unlock(lock); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); trace_hardirqs_off(); } else { trace_hardirqs_on(); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_write_unlock_irq(rwlock_t *lock) { lock_release(&lock->dep_map, 1, (unsigned long)__builtin_return_address(0)); do_raw_write_unlock(lock); do { trace_hardirqs_on(); arch_local_irq_enable(); } while (0); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __raw_write_unlock_bh(rwlock_t *lock) { lock_release(&lock->dep_map, 1, (unsigned long)__builtin_return_address(0)); do_raw_write_unlock(lock); __local_bh_enable_ip((unsigned long)__builtin_return_address(0), ((2 * (1UL << (0 + 8))) + (1UL << 0))); } # 191 "../include/linux/spinlock_api_smp.h" 2 # 317 "../include/linux/spinlock.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) raw_spinlock_t *spinlock_check(spinlock_t *lock) { return &lock->rlock; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void spin_lock(spinlock_t *lock) { _raw_spin_lock(&lock->rlock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void spin_lock_bh(spinlock_t *lock) { _raw_spin_lock_bh(&lock->rlock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int spin_trylock(spinlock_t *lock) { return (_raw_spin_trylock(&lock->rlock)); } # 361 "../include/linux/spinlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void spin_lock_irq(spinlock_t *lock) { _raw_spin_lock_irq(&lock->rlock); } # 376 "../include/linux/spinlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void spin_unlock(spinlock_t *lock) { _raw_spin_unlock(&lock->rlock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void spin_unlock_bh(spinlock_t *lock) { _raw_spin_unlock_bh(&lock->rlock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void spin_unlock_irq(spinlock_t *lock) { _raw_spin_unlock_irq(&lock->rlock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); _raw_spin_unlock_irqrestore(&lock->rlock, flags); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int spin_trylock_bh(spinlock_t *lock) { return (_raw_spin_trylock_bh(&lock->rlock)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int spin_trylock_irq(spinlock_t *lock) { return ({ do { arch_local_irq_disable(); trace_hardirqs_off(); } while (0); (_raw_spin_trylock(&lock->rlock)) ? 1 : ({ do { trace_hardirqs_on(); arch_local_irq_enable(); } while (0); 0; }); }); } # 429 "../include/linux/spinlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int spin_is_locked(spinlock_t *lock) { return queued_spin_is_locked(&(&lock->rlock)->raw_lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int spin_is_contended(spinlock_t *lock) { return queued_spin_is_contended(&(&lock->rlock)->raw_lock); } # 454 "../include/linux/spinlock.h" extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); extern int _atomic_dec_and_lock_irqsave(atomic_t *atomic, spinlock_t *lock, unsigned long *flags); int __alloc_bucket_spinlocks(spinlock_t **locks, unsigned int *lock_mask, size_t max_size, unsigned int cpu_mult, gfp_t gfp, const char *name, struct lock_class_key *key); # 478 "../include/linux/spinlock.h" void free_bucket_spinlocks(spinlock_t *locks); # 17 "../include/linux/radix-tree.h" 2 # 1 "../include/linux/xarray.h" 1 # 14 "../include/linux/xarray.h" # 1 "../include/linux/gfp.h" 1 # 1 "../include/linux/mmdebug.h" 1 struct page; struct vm_area_struct; struct mm_struct; extern void dump_page(struct page *page, const char *reason); extern void __dump_page(struct page *page, const char *reason); void dump_vma(const struct vm_area_struct *vma); void dump_mm(const struct mm_struct *mm); # 6 "../include/linux/gfp.h" 2 # 1 "../include/linux/mmzone.h" 1 # 10 "../include/linux/mmzone.h" # 1 "../include/linux/wait.h" 1 # 12 "../include/linux/wait.h" # 1 "../include/uapi/linux/wait.h" 1 # 13 "../include/linux/wait.h" 2 typedef struct wait_queue_entry wait_queue_entry_t; typedef int (*wait_queue_func_t)(struct wait_queue_entry *wq_entry, unsigned mode, int flags, void *key); int default_wake_function(struct wait_queue_entry *wq_entry, unsigned mode, int flags, void *key); # 27 "../include/linux/wait.h" struct wait_queue_entry { unsigned int flags; void *private; wait_queue_func_t func; struct list_head entry; }; struct wait_queue_head { spinlock_t lock; struct list_head head; }; typedef struct wait_queue_head wait_queue_head_t; struct task_struct; # 61 "../include/linux/wait.h" extern void __init_waitqueue_head(struct wait_queue_head *wq_head, const char *name, struct lock_class_key *); # 79 "../include/linux/wait.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void init_waitqueue_entry(struct wait_queue_entry *wq_entry, struct task_struct *p) { wq_entry->flags = 0; wq_entry->private = p; wq_entry->func = default_wake_function; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void init_waitqueue_func_entry(struct wait_queue_entry *wq_entry, wait_queue_func_t func) { wq_entry->flags = 0; wq_entry->private = ((void *)0); wq_entry->func = func; } # 124 "../include/linux/wait.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int waitqueue_active(struct wait_queue_head *wq_head) { return !list_empty(&wq_head->head); } # 137 "../include/linux/wait.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool wq_has_sleeper(struct wait_queue_head *wq_head) { asm volatile("lock; addl $0,-4(%%rsp)" ::: "memory", "cc"); return waitqueue_active(wq_head); } extern void add_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry); extern void add_wait_queue_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry); extern void remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __add_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry) { list_add(&wq_entry->entry, &wq_head->head); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __add_wait_queue_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry) { wq_entry->flags |= 0x01; __add_wait_queue(wq_head, wq_entry); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __add_wait_queue_entry_tail(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry) { list_add_tail(&wq_entry->entry, &wq_head->head); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __add_wait_queue_entry_tail_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry) { wq_entry->flags |= 0x01; __add_wait_queue_entry_tail(wq_head, wq_entry); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry) { list_del(&wq_entry->entry); } void __wake_up(struct wait_queue_head *wq_head, unsigned int mode, int nr, void *key); void __wake_up_locked_key(struct wait_queue_head *wq_head, unsigned int mode, void *key); void __wake_up_locked_key_bookmark(struct wait_queue_head *wq_head, unsigned int mode, void *key, wait_queue_entry_t *bookmark); void __wake_up_sync_key(struct wait_queue_head *wq_head, unsigned int mode, int nr, void *key); void __wake_up_locked(struct wait_queue_head *wq_head, unsigned int mode, int nr); void __wake_up_sync(struct wait_queue_head *wq_head, unsigned int mode, int nr); # 232 "../include/linux/wait.h" extern void init_wait_entry(struct wait_queue_entry *wq_entry, int flags); # 716 "../include/linux/wait.h" extern int do_wait_intr(wait_queue_head_t *, wait_queue_entry_t *); extern int do_wait_intr_irq(wait_queue_head_t *, wait_queue_entry_t *); # 1110 "../include/linux/wait.h" void prepare_to_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state); void prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state); long prepare_to_wait_event(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry, int state); void finish_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry); long wait_woken(struct wait_queue_entry *wq_entry, unsigned mode, long timeout); int woken_wake_function(struct wait_queue_entry *wq_entry, unsigned mode, int sync, void *key); int autoremove_wake_function(struct wait_queue_entry *wq_entry, unsigned mode, int sync, void *key); # 11 "../include/linux/mmzone.h" 2 # 1 "../include/linux/numa.h" 1 # 15 "../include/linux/mmzone.h" 2 # 1 "../include/linux/seqlock.h" 1 # 48 "../include/linux/seqlock.h" typedef struct seqcount { unsigned sequence; struct lockdep_map dep_map; } seqcount_t; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __seqcount_init(seqcount_t *s, const char *name, struct lock_class_key *key) { lockdep_init_map(&s->dep_map, name, key, 0); s->sequence = 0; } # 75 "../include/linux/seqlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void seqcount_lockdep_reader_access(const seqcount_t *s) { seqcount_t *l = (seqcount_t *)s; unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = arch_local_irq_save(); } while (0); trace_hardirqs_off(); } while (0); lock_acquire(&l->dep_map, 0, 0, 2, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); lock_release(&l->dep_map, 1, (unsigned long)__builtin_return_address(0)); do { if (({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); trace_hardirqs_off(); } else { trace_hardirqs_on(); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(flags); } while (0); } } while (0); } # 108 "../include/linux/seqlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned __read_seqcount_begin(const seqcount_t *s) { unsigned ret; repeat: ret = ({ union { typeof(s->sequence) __val; char __c[1]; } __u; if (1) __read_once_size(&(s->sequence), __u.__c, sizeof(s->sequence)); else __read_once_size_nocheck(&(s->sequence), __u.__c, sizeof(s->sequence)); do { } while (0); __u.__val; }); if (__builtin_expect(!!(ret & 1), 0)) { cpu_relax(); goto repeat; } return ret; } # 130 "../include/linux/seqlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned raw_read_seqcount(const seqcount_t *s) { unsigned ret = ({ union { typeof(s->sequence) __val; char __c[1]; } __u; if (1) __read_once_size(&(s->sequence), __u.__c, sizeof(s->sequence)); else __read_once_size_nocheck(&(s->sequence), __u.__c, sizeof(s->sequence)); do { } while (0); __u.__val; }); __asm__ __volatile__("" : : : "memory"); return ret; } # 146 "../include/linux/seqlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned raw_read_seqcount_begin(const seqcount_t *s) { unsigned ret = __read_seqcount_begin(s); __asm__ __volatile__("" : : : "memory"); return ret; } # 162 "../include/linux/seqlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned read_seqcount_begin(const seqcount_t *s) { seqcount_lockdep_reader_access(s); return raw_read_seqcount_begin(s); } # 182 "../include/linux/seqlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned raw_seqcount_begin(const seqcount_t *s) { unsigned ret = ({ union { typeof(s->sequence) __val; char __c[1]; } __u; if (1) __read_once_size(&(s->sequence), __u.__c, sizeof(s->sequence)); else __read_once_size_nocheck(&(s->sequence), __u.__c, sizeof(s->sequence)); do { } while (0); __u.__val; }); __asm__ __volatile__("" : : : "memory"); return ret & ~1; } # 203 "../include/linux/seqlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __read_seqcount_retry(const seqcount_t *s, unsigned start) { return __builtin_expect(!!(s->sequence != start), 0); } # 218 "../include/linux/seqlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int read_seqcount_retry(const seqcount_t *s, unsigned start) { __asm__ __volatile__("" : : : "memory"); return __read_seqcount_retry(s, start); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void raw_write_seqcount_begin(seqcount_t *s) { s->sequence++; __asm__ __volatile__("" : : : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void raw_write_seqcount_end(seqcount_t *s) { __asm__ __volatile__("" : : : "memory"); s->sequence++; } # 272 "../include/linux/seqlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void raw_write_seqcount_barrier(seqcount_t *s) { s->sequence++; __asm__ __volatile__("" : : : "memory"); s->sequence++; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int raw_read_seqcount_latch(seqcount_t *s) { int seq = ({ union { typeof(s->sequence) __val; char __c[1]; } __u; if (1) __read_once_size(&(s->sequence), __u.__c, sizeof(s->sequence)); else __read_once_size_nocheck(&(s->sequence), __u.__c, sizeof(s->sequence)); do { } while (0); __u.__val; }); return seq; } # 363 "../include/linux/seqlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void raw_write_seqcount_latch(seqcount_t *s) { __asm__ __volatile__("" : : : "memory"); s->sequence++; __asm__ __volatile__("" : : : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_seqcount_begin_nested(seqcount_t *s, int subclass) { raw_write_seqcount_begin(s); lock_acquire(&s->dep_map, subclass, 0, 0, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_seqcount_begin(seqcount_t *s) { write_seqcount_begin_nested(s, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_seqcount_end(seqcount_t *s) { lock_release(&s->dep_map, 1, (unsigned long)__builtin_return_address(0)); raw_write_seqcount_end(s); } # 398 "../include/linux/seqlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_seqcount_invalidate(seqcount_t *s) { __asm__ __volatile__("" : : : "memory"); s->sequence+=2; } typedef struct { struct seqcount seqcount; spinlock_t lock; } seqlock_t; # 431 "../include/linux/seqlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned read_seqbegin(const seqlock_t *sl) { return read_seqcount_begin(&sl->seqcount); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned read_seqretry(const seqlock_t *sl, unsigned start) { return read_seqcount_retry(&sl->seqcount, start); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_seqlock(seqlock_t *sl) { spin_lock(&sl->lock); write_seqcount_begin(&sl->seqcount); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_sequnlock(seqlock_t *sl) { write_seqcount_end(&sl->seqcount); spin_unlock(&sl->lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_seqlock_bh(seqlock_t *sl) { spin_lock_bh(&sl->lock); write_seqcount_begin(&sl->seqcount); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_sequnlock_bh(seqlock_t *sl) { write_seqcount_end(&sl->seqcount); spin_unlock_bh(&sl->lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_seqlock_irq(seqlock_t *sl) { spin_lock_irq(&sl->lock); write_seqcount_begin(&sl->seqcount); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_sequnlock_irq(seqlock_t *sl) { write_seqcount_end(&sl->seqcount); spin_unlock_irq(&sl->lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long __write_seqlock_irqsave(seqlock_t *sl) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = _raw_spin_lock_irqsave(spinlock_check(&sl->lock)); } while (0); } while (0); write_seqcount_begin(&sl->seqcount); return flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_sequnlock_irqrestore(seqlock_t *sl, unsigned long flags) { write_seqcount_end(&sl->seqcount); spin_unlock_irqrestore(&sl->lock, flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void read_seqlock_excl(seqlock_t *sl) { spin_lock(&sl->lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void read_sequnlock_excl(seqlock_t *sl) { spin_unlock(&sl->lock); } # 526 "../include/linux/seqlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void read_seqbegin_or_lock(seqlock_t *lock, int *seq) { if (!(*seq & 1)) *seq = read_seqbegin(lock); else read_seqlock_excl(lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int need_seqretry(seqlock_t *lock, int seq) { return !(seq & 1) && read_seqretry(lock, seq); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void done_seqretry(seqlock_t *lock, int seq) { if (seq & 1) read_sequnlock_excl(lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void read_seqlock_excl_bh(seqlock_t *sl) { spin_lock_bh(&sl->lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void read_sequnlock_excl_bh(seqlock_t *sl) { spin_unlock_bh(&sl->lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void read_seqlock_excl_irq(seqlock_t *sl) { spin_lock_irq(&sl->lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void read_sequnlock_excl_irq(seqlock_t *sl) { spin_unlock_irq(&sl->lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long __read_seqlock_excl_irqsave(seqlock_t *sl) { unsigned long flags; do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = _raw_spin_lock_irqsave(spinlock_check(&sl->lock)); } while (0); } while (0); return flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void read_sequnlock_excl_irqrestore(seqlock_t *sl, unsigned long flags) { spin_unlock_irqrestore(&sl->lock, flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long read_seqbegin_or_lock_irqsave(seqlock_t *lock, int *seq) { unsigned long flags = 0; if (!(*seq & 1)) *seq = read_seqbegin(lock); else do { flags = __read_seqlock_excl_irqsave(lock); } while (0); return flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void done_seqretry_irqrestore(seqlock_t *lock, int seq, unsigned long flags) { if (seq & 1) read_sequnlock_excl_irqrestore(lock, flags); } # 17 "../include/linux/mmzone.h" 2 # 1 "../include/linux/nodemask.h" 1 # 98 "../include/linux/nodemask.h" typedef struct { unsigned long bits[((((1 << 10)) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8)))]; } nodemask_t; extern nodemask_t _unused_nodemask_arg_; # 109 "../include/linux/nodemask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int __nodemask_pr_numnodes(const nodemask_t *m) { return m ? (1 << 10) : 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const unsigned long *__nodemask_pr_bits(const nodemask_t *m) { return m ? m->bits : ((void *)0); } # 128 "../include/linux/nodemask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __node_set(int node, volatile nodemask_t *dstp) { set_bit(node, dstp->bits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __node_clear(int node, volatile nodemask_t *dstp) { clear_bit(node, dstp->bits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __nodes_setall(nodemask_t *dstp, unsigned int nbits) { bitmap_fill(dstp->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __nodes_clear(nodemask_t *dstp, unsigned int nbits) { bitmap_zero(dstp->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __node_test_and_set(int node, nodemask_t *addr) { return test_and_set_bit(node, addr->bits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __nodes_and(nodemask_t *dstp, const nodemask_t *src1p, const nodemask_t *src2p, unsigned int nbits) { bitmap_and(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __nodes_or(nodemask_t *dstp, const nodemask_t *src1p, const nodemask_t *src2p, unsigned int nbits) { bitmap_or(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __nodes_xor(nodemask_t *dstp, const nodemask_t *src1p, const nodemask_t *src2p, unsigned int nbits) { bitmap_xor(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __nodes_andnot(nodemask_t *dstp, const nodemask_t *src1p, const nodemask_t *src2p, unsigned int nbits) { bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __nodes_complement(nodemask_t *dstp, const nodemask_t *srcp, unsigned int nbits) { bitmap_complement(dstp->bits, srcp->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __nodes_equal(const nodemask_t *src1p, const nodemask_t *src2p, unsigned int nbits) { return bitmap_equal(src1p->bits, src2p->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __nodes_intersects(const nodemask_t *src1p, const nodemask_t *src2p, unsigned int nbits) { return bitmap_intersects(src1p->bits, src2p->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __nodes_subset(const nodemask_t *src1p, const nodemask_t *src2p, unsigned int nbits) { return bitmap_subset(src1p->bits, src2p->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __nodes_empty(const nodemask_t *srcp, unsigned int nbits) { return bitmap_empty(srcp->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __nodes_full(const nodemask_t *srcp, unsigned int nbits) { return bitmap_full(srcp->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __nodes_weight(const nodemask_t *srcp, unsigned int nbits) { return bitmap_weight(srcp->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __nodes_shift_right(nodemask_t *dstp, const nodemask_t *srcp, int n, int nbits) { bitmap_shift_right(dstp->bits, srcp->bits, n, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __nodes_shift_left(nodemask_t *dstp, const nodemask_t *srcp, int n, int nbits) { bitmap_shift_left(dstp->bits, srcp->bits, n, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __first_node(const nodemask_t *srcp) { return __builtin_choose_expr(((!!(sizeof((typeof((int)((1 << 10))) *)1 == (typeof((int)(find_first_bit(srcp->bits, (1 << 10)))) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)((int)((1 << 10))) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)((int)(find_first_bit(srcp->bits, (1 << 10)))) * 0l)) : (int *)8))))), (((int)((1 << 10))) < ((int)(find_first_bit(srcp->bits, (1 << 10)))) ? ((int)((1 << 10))) : ((int)(find_first_bit(srcp->bits, (1 << 10))))), ({ typeof((int)((1 << 10))) __UNIQUE_ID___x100 = ((int)((1 << 10))); typeof((int)(find_first_bit(srcp->bits, (1 << 10)))) __UNIQUE_ID___y101 = ((int)(find_first_bit(srcp->bits, (1 << 10)))); ((__UNIQUE_ID___x100) < (__UNIQUE_ID___y101) ? (__UNIQUE_ID___x100) : (__UNIQUE_ID___y101)); })); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __next_node(int n, const nodemask_t *srcp) { return __builtin_choose_expr(((!!(sizeof((typeof((int)((1 << 10))) *)1 == (typeof((int)(find_next_bit(srcp->bits, (1 << 10), n+1))) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)((int)((1 << 10))) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)((int)(find_next_bit(srcp->bits, (1 << 10), n+1))) * 0l)) : (int *)8))))), (((int)((1 << 10))) < ((int)(find_next_bit(srcp->bits, (1 << 10), n+1))) ? ((int)((1 << 10))) : ((int)(find_next_bit(srcp->bits, (1 << 10), n+1)))), ({ typeof((int)((1 << 10))) __UNIQUE_ID___x102 = ((int)((1 << 10))); typeof((int)(find_next_bit(srcp->bits, (1 << 10), n+1))) __UNIQUE_ID___y103 = ((int)(find_next_bit(srcp->bits, (1 << 10), n+1))); ((__UNIQUE_ID___x102) < (__UNIQUE_ID___y103) ? (__UNIQUE_ID___x102) : (__UNIQUE_ID___y103)); })); } int __next_node_in(int node, const nodemask_t *srcp); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void init_nodemask_of_node(nodemask_t *mask, int node) { __nodes_clear(&(*mask), (1 << 10)); __node_set((node), &(*mask)); } # 299 "../include/linux/nodemask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __first_unset_node(const nodemask_t *maskp) { return __builtin_choose_expr(((!!(sizeof((typeof((int)((1 << 10))) *)1 == (typeof((int)(find_first_zero_bit(maskp->bits, (1 << 10)))) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)((int)((1 << 10))) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)((int)(find_first_zero_bit(maskp->bits, (1 << 10)))) * 0l)) : (int *)8))))), (((int)((1 << 10))) < ((int)(find_first_zero_bit(maskp->bits, (1 << 10)))) ? ((int)((1 << 10))) : ((int)(find_first_zero_bit(maskp->bits, (1 << 10))))), ({ typeof((int)((1 << 10))) __UNIQUE_ID___x104 = ((int)((1 << 10))); typeof((int)(find_first_zero_bit(maskp->bits, (1 << 10)))) __UNIQUE_ID___y105 = ((int)(find_first_zero_bit(maskp->bits, (1 << 10)))); ((__UNIQUE_ID___x104) < (__UNIQUE_ID___y105) ? (__UNIQUE_ID___x104) : (__UNIQUE_ID___y105)); })); } # 333 "../include/linux/nodemask.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __nodemask_parse_user(const char *buf, int len, nodemask_t *dstp, int nbits) { return bitmap_parse_user(buf, len, dstp->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __nodelist_parse(const char *buf, nodemask_t *dstp, int nbits) { return bitmap_parselist(buf, dstp->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __node_remap(int oldbit, const nodemask_t *oldp, const nodemask_t *newp, int nbits) { return bitmap_bitremap(oldbit, oldp->bits, newp->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __nodes_remap(nodemask_t *dstp, const nodemask_t *srcp, const nodemask_t *oldp, const nodemask_t *newp, int nbits) { bitmap_remap(dstp->bits, srcp->bits, oldp->bits, newp->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __nodes_onto(nodemask_t *dstp, const nodemask_t *origp, const nodemask_t *relmapp, int nbits) { bitmap_onto(dstp->bits, origp->bits, relmapp->bits, nbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __nodes_fold(nodemask_t *dstp, const nodemask_t *origp, int sz, int nbits) { bitmap_fold(dstp->bits, origp->bits, sz, nbits); } # 391 "../include/linux/nodemask.h" enum node_states { N_POSSIBLE, N_ONLINE, N_NORMAL_MEMORY, N_HIGH_MEMORY = N_NORMAL_MEMORY, N_MEMORY, N_CPU, NR_NODE_STATES }; extern nodemask_t node_states[NR_NODE_STATES]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int node_state(int node, enum node_states state) { return test_bit((node), (node_states[state]).bits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void node_set_state(int node, enum node_states state) { __node_set(node, &node_states[state]); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void node_clear_state(int node, enum node_states state) { __node_clear(node, &node_states[state]); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int num_node_state(enum node_states state) { return __nodes_weight(&(node_states[state]), (1 << 10)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int next_online_node(int nid) { return __next_node((nid), &(node_states[N_ONLINE])); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int next_memory_node(int nid) { return __next_node((nid), &(node_states[N_MEMORY])); } extern unsigned int nr_node_ids; extern unsigned int nr_online_nodes; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void node_set_online(int nid) { node_set_state(nid, N_ONLINE); nr_online_nodes = num_node_state(N_ONLINE); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void node_set_offline(int nid) { node_clear_state(nid, N_ONLINE); nr_online_nodes = num_node_state(N_ONLINE); } # 497 "../include/linux/nodemask.h" extern int node_random(const nodemask_t *maskp); # 531 "../include/linux/nodemask.h" struct nodemask_scratch { nodemask_t mask1; nodemask_t mask2; }; # 18 "../include/linux/mmzone.h" 2 # 1 "../include/linux/pageblock-flags.h" 1 # 18 "../include/linux/pageblock-flags.h" enum pageblock_bits { PB_migrate, PB_migrate_end = PB_migrate + 3 - 1, PB_migrate_skip, NR_PAGEBLOCK_BITS }; # 55 "../include/linux/pageblock-flags.h" struct page; unsigned long get_pfnblock_flags_mask(struct page *page, unsigned long pfn, unsigned long end_bitidx, unsigned long mask); void set_pfnblock_flags_mask(struct page *page, unsigned long flags, unsigned long pfn, unsigned long end_bitidx, unsigned long mask); # 19 "../include/linux/mmzone.h" 2 # 1 "../include/linux/page-flags-layout.h" 1 # 1 "./include/generated/bounds.h" 1 # 7 "../include/linux/page-flags-layout.h" 2 # 20 "../include/linux/mmzone.h" 2 # 1 "../include/linux/mm_types.h" 1 # 1 "../include/linux/mm_types_task.h" 1 # 19 "../include/linux/mm_types_task.h" # 1 "../arch/x86/include/asm/tlbbatch.h" 1 struct arch_tlbflush_unmap_batch { struct cpumask cpumask; }; # 20 "../include/linux/mm_types_task.h" 2 # 34 "../include/linux/mm_types_task.h" struct vmacache { u64 seqnum; struct vm_area_struct *vmas[(1U << 2)]; }; enum { MM_FILEPAGES, MM_ANONPAGES, MM_SWAPENTS, MM_SHMEMPAGES, NR_MM_COUNTERS }; struct task_rss_stat { int events; int count[NR_MM_COUNTERS]; }; struct mm_rss_stat { atomic_long_t count[NR_MM_COUNTERS]; }; struct page_frag { struct page *page; __u32 offset; __u32 size; }; struct tlbflush_unmap_batch { # 81 "../include/linux/mm_types_task.h" struct arch_tlbflush_unmap_batch arch; bool flush_required; bool writable; }; # 6 "../include/linux/mm_types.h" 2 # 1 "../include/linux/auxvec.h" 1 # 1 "../include/uapi/linux/auxvec.h" 1 # 1 "../arch/x86/include/uapi/asm/auxvec.h" 1 # 6 "../include/uapi/linux/auxvec.h" 2 # 6 "../include/linux/auxvec.h" 2 # 8 "../include/linux/mm_types.h" 2 # 1 "../include/linux/rbtree.h" 1 # 24 "../include/linux/rbtree.h" struct rb_node { unsigned long __rb_parent_color; struct rb_node *rb_right; struct rb_node *rb_left; } __attribute__((aligned(sizeof(long)))); struct rb_root { struct rb_node *rb_node; }; # 45 "../include/linux/rbtree.h" struct rb_root_cached { struct rb_root rb_root; struct rb_node *rb_leftmost; }; # 65 "../include/linux/rbtree.h" extern void rb_insert_color(struct rb_node *, struct rb_root *); extern void rb_erase(struct rb_node *, struct rb_root *); extern struct rb_node *rb_next(const struct rb_node *); extern struct rb_node *rb_prev(const struct rb_node *); extern struct rb_node *rb_first(const struct rb_root *); extern struct rb_node *rb_last(const struct rb_root *); extern void rb_insert_color_cached(struct rb_node *, struct rb_root_cached *, bool); extern void rb_erase_cached(struct rb_node *node, struct rb_root_cached *); extern struct rb_node *rb_first_postorder(const struct rb_root *); extern struct rb_node *rb_next_postorder(const struct rb_node *); extern void rb_replace_node(struct rb_node *victim, struct rb_node *new, struct rb_root *root); extern void rb_replace_node_rcu(struct rb_node *victim, struct rb_node *new, struct rb_root *root); extern void rb_replace_node_cached(struct rb_node *victim, struct rb_node *new, struct rb_root_cached *root); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rb_link_node(struct rb_node *node, struct rb_node *parent, struct rb_node **rb_link) { node->__rb_parent_color = (unsigned long)parent; node->rb_left = node->rb_right = ((void *)0); *rb_link = node; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rb_link_node_rcu(struct rb_node *node, struct rb_node *parent, struct rb_node **rb_link) { node->__rb_parent_color = (unsigned long)parent; node->rb_left = node->rb_right = ((void *)0); do { uintptr_t _r_a_p__v = (uintptr_t)(node); ; if (__builtin_constant_p(node) && (_r_a_p__v) == (uintptr_t)((void *)0)) ({ union { typeof((*rb_link)) __val; char __c[1]; } __u = { .__val = ( typeof((*rb_link))) ((typeof(*rb_link))(_r_a_p__v)) }; __write_once_size(&((*rb_link)), __u.__c, sizeof((*rb_link))); __u.__val; }); else do { do { extern void __compiletime_assert_108(void) ; if (!((sizeof(*&*rb_link) == sizeof(char) || sizeof(*&*rb_link) == sizeof(short) || sizeof(*&*rb_link) == sizeof(int) || sizeof(*&*rb_link) == sizeof(long)))) __compiletime_assert_108(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&*rb_link) __val; char __c[1]; } __u = { .__val = ( typeof(*&*rb_link)) ((typeof(*((typeof(*rb_link))_r_a_p__v)) *)((typeof(*rb_link))_r_a_p__v)) }; __write_once_size(&(*&*rb_link), __u.__c, sizeof(*&*rb_link)); __u.__val; }); } while (0); } while (0); } # 11 "../include/linux/mm_types.h" 2 # 1 "../include/linux/rwsem.h" 1 # 35 "../include/linux/rwsem.h" struct rw_semaphore { atomic_long_t count; atomic_long_t owner; struct optimistic_spin_queue osq; raw_spinlock_t wait_lock; struct list_head wait_list; struct lockdep_map dep_map; }; # 60 "../include/linux/rwsem.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int rwsem_is_locked(struct rw_semaphore *sem) { return atomic_long_read(&sem->count) != 0; } # 93 "../include/linux/rwsem.h" extern void __init_rwsem(struct rw_semaphore *sem, const char *name, struct lock_class_key *key); # 109 "../include/linux/rwsem.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int rwsem_is_contended(struct rw_semaphore *sem) { return !list_empty(&sem->wait_list); } extern void down_read(struct rw_semaphore *sem); extern int __attribute__((__warn_unused_result__)) down_read_killable(struct rw_semaphore *sem); extern int down_read_trylock(struct rw_semaphore *sem); extern void down_write(struct rw_semaphore *sem); extern int __attribute__((__warn_unused_result__)) down_write_killable(struct rw_semaphore *sem); extern int down_write_trylock(struct rw_semaphore *sem); extern void up_read(struct rw_semaphore *sem); extern void up_write(struct rw_semaphore *sem); extern void downgrade_write(struct rw_semaphore *sem); # 165 "../include/linux/rwsem.h" extern void down_read_nested(struct rw_semaphore *sem, int subclass); extern void down_write_nested(struct rw_semaphore *sem, int subclass); extern int down_write_killable_nested(struct rw_semaphore *sem, int subclass); extern void _down_write_nest_lock(struct rw_semaphore *sem, struct lockdep_map *nest_lock); # 182 "../include/linux/rwsem.h" extern void down_read_non_owner(struct rw_semaphore *sem); extern void up_read_non_owner(struct rw_semaphore *sem); # 12 "../include/linux/mm_types.h" 2 # 1 "../include/linux/completion.h" 1 # 26 "../include/linux/completion.h" struct completion { unsigned int done; wait_queue_head_t wait; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void complete_acquire(struct completion *x) {} static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void complete_release(struct completion *x) {} # 85 "../include/linux/completion.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __init_completion(struct completion *x) { x->done = 0; do { static struct lock_class_key __key; __init_waitqueue_head((&x->wait), "&x->wait", &__key); } while (0); } # 98 "../include/linux/completion.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void reinit_completion(struct completion *x) { x->done = 0; } extern void wait_for_completion(struct completion *); extern void wait_for_completion_io(struct completion *); extern int wait_for_completion_interruptible(struct completion *x); extern int wait_for_completion_killable(struct completion *x); extern unsigned long wait_for_completion_timeout(struct completion *x, unsigned long timeout); extern unsigned long wait_for_completion_io_timeout(struct completion *x, unsigned long timeout); extern long wait_for_completion_interruptible_timeout( struct completion *x, unsigned long timeout); extern long wait_for_completion_killable_timeout( struct completion *x, unsigned long timeout); extern bool try_wait_for_completion(struct completion *x); extern bool completion_done(struct completion *x); extern void complete(struct completion *); extern void complete_all(struct completion *); # 13 "../include/linux/mm_types.h" 2 # 1 "../include/linux/uprobes.h" 1 # 14 "../include/linux/uprobes.h" # 1 "../include/linux/errno.h" 1 # 1 "../include/uapi/linux/errno.h" 1 # 1 "../arch/x86/include/uapi/asm/errno.h" 1 # 2 "../include/uapi/linux/errno.h" 2 # 6 "../include/linux/errno.h" 2 # 15 "../include/linux/uprobes.h" 2 struct vm_area_struct; struct mm_struct; struct inode; struct notifier_block; struct page; enum uprobe_filter_ctx { UPROBE_FILTER_REGISTER, UPROBE_FILTER_UNREGISTER, UPROBE_FILTER_MMAP, }; struct uprobe_consumer { int (*handler)(struct uprobe_consumer *self, struct pt_regs *regs); int (*ret_handler)(struct uprobe_consumer *self, unsigned long func, struct pt_regs *regs); bool (*filter)(struct uprobe_consumer *self, enum uprobe_filter_ctx ctx, struct mm_struct *mm); struct uprobe_consumer *next; }; # 1 "../arch/x86/include/asm/uprobes.h" 1 # 13 "../arch/x86/include/asm/uprobes.h" # 1 "../include/linux/notifier.h" 1 # 16 "../include/linux/notifier.h" # 1 "../include/linux/srcu.h" 1 # 21 "../include/linux/srcu.h" # 1 "../include/linux/workqueue.h" 1 # 1 "../include/linux/timer.h" 1 # 1 "../include/linux/ktime.h" 1 # 24 "../include/linux/ktime.h" # 1 "../include/linux/time.h" 1 # 10 "../include/linux/time.h" extern struct timezone sys_tz; int get_timespec64(struct timespec64 *ts, const struct __kernel_timespec *uts); int put_timespec64(const struct timespec64 *ts, struct __kernel_timespec *uts); int get_itimerspec64(struct itimerspec64 *it, const struct __kernel_itimerspec *uit); int put_itimerspec64(const struct itimerspec64 *it, struct __kernel_itimerspec *uit); extern time64_t mktime64(const unsigned int year, const unsigned int mon, const unsigned int day, const unsigned int hour, const unsigned int min, const unsigned int sec); # 38 "../include/linux/time.h" struct itimerval; extern int do_setitimer(int which, struct itimerval *value, struct itimerval *ovalue); extern int do_getitimer(int which, struct itimerval *value); extern long do_utimes(int dfd, const char *filename, struct timespec64 *times, int flags); struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; long tm_year; int tm_wday; int tm_yday; }; void time64_to_tm(time64_t totalsecs, int offset, struct tm *result); # 1 "../include/linux/time32.h" 1 # 13 "../include/linux/time32.h" # 1 "../include/linux/timex.h" 1 # 56 "../include/linux/timex.h" # 1 "../include/uapi/linux/timex.h" 1 # 56 "../include/uapi/linux/timex.h" # 1 "../include/linux/time.h" 1 # 57 "../include/uapi/linux/timex.h" 2 struct timex { unsigned int modes; __kernel_long_t offset; __kernel_long_t freq; __kernel_long_t maxerror; __kernel_long_t esterror; int status; __kernel_long_t constant; __kernel_long_t precision; __kernel_long_t tolerance; struct timeval time; __kernel_long_t tick; __kernel_long_t ppsfreq; __kernel_long_t jitter; int shift; __kernel_long_t stabil; __kernel_long_t jitcnt; __kernel_long_t calcnt; __kernel_long_t errcnt; __kernel_long_t stbcnt; int tai; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; }; struct __kernel_timex_timeval { __kernel_time64_t tv_sec; long long tv_usec; }; struct __kernel_timex { unsigned int modes; int :32; long long offset; long long freq; long long maxerror; long long esterror; int status; int :32; long long constant; long long precision; long long tolerance; struct __kernel_timex_timeval time; long long tick; long long ppsfreq; long long jitter; int shift; int :32; long long stabil; long long jitcnt; long long calcnt; long long errcnt; long long stbcnt; int tai; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; int :32; }; # 57 "../include/linux/timex.h" 2 # 1 "../include/uapi/linux/param.h" 1 # 1 "../arch/x86/include/uapi/asm/param.h" 1 # 1 "../include/asm-generic/param.h" 1 # 1 "../include/uapi/asm-generic/param.h" 1 # 6 "../include/asm-generic/param.h" 2 # 2 "../arch/x86/include/uapi/asm/param.h" 2 # 6 "../include/uapi/linux/param.h" 2 # 64 "../include/linux/timex.h" 2 # 1 "../arch/x86/include/asm/timex.h" 1 # 1 "../arch/x86/include/asm/tsc.h" 1 # 16 "../arch/x86/include/asm/tsc.h" typedef unsigned long long cycles_t; extern unsigned int cpu_khz; extern unsigned int tsc_khz; extern void disable_TSC(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) cycles_t get_cycles(void) { return rdtsc(); } extern struct system_counterval_t convert_art_to_tsc(u64 art); extern struct system_counterval_t convert_art_ns_to_tsc(u64 art_ns); extern void tsc_early_init(void); extern void tsc_init(void); extern unsigned long calibrate_delay_is_known(void); extern void mark_tsc_unstable(char *reason); extern int unsynchronized_tsc(void); extern int check_tsc_unstable(void); extern void mark_tsc_async_resets(char *reason); extern unsigned long native_calibrate_cpu_early(void); extern unsigned long native_calibrate_tsc(void); extern unsigned long long native_sched_clock_from_tsc(u64 tsc); extern int tsc_clocksource_reliable; extern bool tsc_async_resets; # 59 "../arch/x86/include/asm/tsc.h" extern bool tsc_store_and_check_tsc_adjust(bool bootcpu); extern void tsc_verify_tsc_adjust(bool resume); extern void check_tsc_sync_source(int cpu); extern void check_tsc_sync_target(void); extern int notsc_setup(char *); extern void tsc_save_sched_clock_state(void); extern void tsc_restore_sched_clock_state(void); unsigned long cpu_khz_from_msr(void); # 7 "../arch/x86/include/asm/timex.h" 2 # 66 "../include/linux/timex.h" 2 # 139 "../include/linux/timex.h" extern unsigned long tick_usec; extern unsigned long tick_nsec; # 154 "../include/linux/timex.h" extern int do_adjtimex(struct __kernel_timex *); extern int do_clock_adjtime(const clockid_t which_clock, struct __kernel_timex * ktx); extern void hardpps(const struct timespec64 *, const struct timespec64 *); int read_current_timer(unsigned long *timer_val); void ntp_notify_cmos_timer(void); # 14 "../include/linux/time32.h" 2 typedef s32 old_time32_t; struct old_timespec32 { old_time32_t tv_sec; s32 tv_nsec; }; struct old_timeval32 { old_time32_t tv_sec; s32 tv_usec; }; struct old_itimerspec32 { struct old_timespec32 it_interval; struct old_timespec32 it_value; }; struct old_utimbuf32 { old_time32_t actime; old_time32_t modtime; }; struct old_timex32 { u32 modes; s32 offset; s32 freq; s32 maxerror; s32 esterror; s32 status; s32 constant; s32 precision; s32 tolerance; struct old_timeval32 time; s32 tick; s32 ppsfreq; s32 jitter; s32 shift; s32 stabil; s32 jitcnt; s32 calcnt; s32 errcnt; s32 stbcnt; s32 tai; s32:32; s32:32; s32:32; s32:32; s32:32; s32:32; s32:32; s32:32; s32:32; s32:32; s32:32; }; extern int get_old_timespec32(struct timespec64 *, const void *); extern int put_old_timespec32(const struct timespec64 *, void *); extern int get_old_itimerspec32(struct itimerspec64 *its, const struct old_itimerspec32 *uits); extern int put_old_itimerspec32(const struct itimerspec64 *its, struct old_itimerspec32 *uits); struct __kernel_timex; int get_old_timex32(struct __kernel_timex *, const struct old_timex32 *); int put_old_timex32(struct old_timex32 *, const struct __kernel_timex *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct timespec timespec64_to_timespec(const struct timespec64 ts64) { return *(const struct timespec *)&ts64; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct timespec64 timespec_to_timespec64(const struct timespec ts) { return *(const struct timespec64 *)&ts; } # 109 "../include/linux/time32.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int timespec_equal(const struct timespec *a, const struct timespec *b) { return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int timespec_compare(const struct timespec *lhs, const struct timespec *rhs) { if (lhs->tv_sec < rhs->tv_sec) return -1; if (lhs->tv_sec > rhs->tv_sec) return 1; return lhs->tv_nsec - rhs->tv_nsec; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool timespec_valid(const struct timespec *ts) { if (ts->tv_sec < 0) return false; if ((unsigned long)ts->tv_nsec >= 1000000000L) return false; return true; } # 150 "../include/linux/time32.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 timespec_to_ns(const struct timespec *ts) { return ((s64) ts->tv_sec * 1000000000L) + ts->tv_nsec; } extern struct timespec ns_to_timespec(const s64 nsec); # 171 "../include/linux/time32.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void timespec_add_ns(struct timespec *a, u64 ns) { a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, 1000000000L, &ns); a->tv_nsec = ns; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long mktime(const unsigned int year, const unsigned int mon, const unsigned int day, const unsigned int hour, const unsigned int min, const unsigned int sec) { return mktime64(year, mon, day, hour, min, sec); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool timeval_valid(const struct timeval *tv) { if (tv->tv_sec < 0) return false; if (tv->tv_usec < 0 || tv->tv_usec >= 1000000L) return false; return true; } # 205 "../include/linux/time32.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 timeval_to_ns(const struct timeval *tv) { return ((s64) tv->tv_sec * 1000000000L) + tv->tv_usec * 1000L; } extern struct timeval ns_to_timeval(const s64 nsec); extern struct __kernel_old_timeval ns_to_kernel_old_timeval(s64 nsec); # 74 "../include/linux/time.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool itimerspec64_valid(const struct itimerspec64 *its) { if (!timespec64_valid(&(its->it_interval)) || !timespec64_valid(&(its->it_value))) return false; return true; } # 25 "../include/linux/ktime.h" 2 # 1 "../include/linux/jiffies.h" 1 # 11 "../include/linux/jiffies.h" # 1 "../arch/x86/include/uapi/asm/param.h" 1 # 12 "../include/linux/jiffies.h" 2 # 1 "./include/generated/timeconst.h" 1 # 13 "../include/linux/jiffies.h" 2 # 60 "../include/linux/jiffies.h" extern int register_refined_jiffies(long clock_tick_rate); # 80 "../include/linux/jiffies.h" extern u64 __attribute__((__aligned__((1 << 12)))) __attribute__((__section__(".data..page_aligned"))) __attribute__((__aligned__(((1UL) << 12)))) jiffies_64; extern unsigned long volatile __attribute__((__aligned__((1 << 12)))) __attribute__((__section__(".data..page_aligned"))) __attribute__((__aligned__(((1UL) << 12)))) jiffies; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 get_jiffies_64(void) { return (u64)jiffies; } # 190 "../include/linux/jiffies.h" extern unsigned long preset_lpj; # 291 "../include/linux/jiffies.h" extern unsigned int jiffies_to_msecs(const unsigned long j); extern unsigned int jiffies_to_usecs(const unsigned long j); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 jiffies_to_nsecs(const unsigned long j) { return (u64)jiffies_to_usecs(j) * 1000L; } extern u64 jiffies64_to_nsecs(u64 j); extern u64 jiffies64_to_msecs(u64 j); extern unsigned long __msecs_to_jiffies(const unsigned int m); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long _msecs_to_jiffies(const unsigned int m) { return (m + (1000L / 250) - 1) / (1000L / 250); } # 364 "../include/linux/jiffies.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long msecs_to_jiffies(const unsigned int m) { if (__builtin_constant_p(m)) { if ((int)m < 0) return ((((long)(~0UL >> 1)) >> 1)-1); return _msecs_to_jiffies(m); } else { return __msecs_to_jiffies(m); } } extern unsigned long __usecs_to_jiffies(const unsigned int u); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long _usecs_to_jiffies(const unsigned int u) { return (u + (1000000L / 250) - 1) / (1000000L / 250); } # 411 "../include/linux/jiffies.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long usecs_to_jiffies(const unsigned int u) { if (__builtin_constant_p(u)) { if (u > jiffies_to_usecs(((((long)(~0UL >> 1)) >> 1)-1))) return ((((long)(~0UL >> 1)) >> 1)-1); return _usecs_to_jiffies(u); } else { return __usecs_to_jiffies(u); } } extern unsigned long timespec64_to_jiffies(const struct timespec64 *value); extern void jiffies_to_timespec64(const unsigned long jiffies, struct timespec64 *value); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long timespec_to_jiffies(const struct timespec *value) { struct timespec64 ts = timespec_to_timespec64(*value); return timespec64_to_jiffies(&ts); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void jiffies_to_timespec(const unsigned long jiffies, struct timespec *value) { struct timespec64 ts; jiffies_to_timespec64(jiffies, &ts); *value = timespec64_to_timespec(ts); } extern unsigned long timeval_to_jiffies(const struct timeval *value); extern void jiffies_to_timeval(const unsigned long jiffies, struct timeval *value); extern clock_t jiffies_to_clock_t(unsigned long x); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) clock_t jiffies_delta_to_clock_t(long delta) { return jiffies_to_clock_t(__builtin_choose_expr(((!!(sizeof((typeof(0L) *)1 == (typeof(delta) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)(0L) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)(delta) * 0l)) : (int *)8))))), ((0L) > (delta) ? (0L) : (delta)), ({ typeof(0L) __UNIQUE_ID___x106 = (0L); typeof(delta) __UNIQUE_ID___y107 = (delta); ((__UNIQUE_ID___x106) > (__UNIQUE_ID___y107) ? (__UNIQUE_ID___x106) : (__UNIQUE_ID___y107)); }))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int jiffies_delta_to_msecs(long delta) { return jiffies_to_msecs(__builtin_choose_expr(((!!(sizeof((typeof(0L) *)1 == (typeof(delta) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)(0L) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)(delta) * 0l)) : (int *)8))))), ((0L) > (delta) ? (0L) : (delta)), ({ typeof(0L) __UNIQUE_ID___x108 = (0L); typeof(delta) __UNIQUE_ID___y109 = (delta); ((__UNIQUE_ID___x108) > (__UNIQUE_ID___y109) ? (__UNIQUE_ID___x108) : (__UNIQUE_ID___y109)); }))); } extern unsigned long clock_t_to_jiffies(unsigned long x); extern u64 jiffies_64_to_clock_t(u64 x); extern u64 nsec_to_clock_t(u64 x); extern u64 nsecs_to_jiffies64(u64 n); extern unsigned long nsecs_to_jiffies(u64 n); # 26 "../include/linux/ktime.h" 2 typedef s64 ktime_t; # 37 "../include/linux/ktime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ktime_set(const s64 secs, const unsigned long nsecs) { if (__builtin_expect(!!(secs >= (((s64)~((u64)1 << 63)) / 1000000000L)), 0)) return ((s64)~((u64)1 << 63)); return secs * 1000000000L + (s64)nsecs; } # 70 "../include/linux/ktime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t timespec_to_ktime(struct timespec ts) { return ktime_set(ts.tv_sec, ts.tv_nsec); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t timespec64_to_ktime(struct timespec64 ts) { return ktime_set(ts.tv_sec, ts.tv_nsec); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t timeval_to_ktime(struct timeval tv) { return ktime_set(tv.tv_sec, tv.tv_usec * 1000L); } # 97 "../include/linux/ktime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 ktime_to_ns(const ktime_t kt) { return kt; } # 112 "../include/linux/ktime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int ktime_compare(const ktime_t cmp1, const ktime_t cmp2) { if (cmp1 < cmp2) return -1; if (cmp1 > cmp2) return 1; return 0; } # 128 "../include/linux/ktime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ktime_after(const ktime_t cmp1, const ktime_t cmp2) { return ktime_compare(cmp1, cmp2) > 0; } # 140 "../include/linux/ktime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ktime_before(const ktime_t cmp1, const ktime_t cmp2) { return ktime_compare(cmp1, cmp2) < 0; } # 165 "../include/linux/ktime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 ktime_divns(const ktime_t kt, s64 div) { ({ int __ret_warn_on = !!(div < 0); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/ktime.h"), "i" (171), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (110)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); return kt / div; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 ktime_to_us(const ktime_t kt) { return ktime_divns(kt, 1000L); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 ktime_to_ms(const ktime_t kt) { return ktime_divns(kt, 1000000L); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 ktime_us_delta(const ktime_t later, const ktime_t earlier) { return ktime_to_us(((later) - (earlier))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 ktime_ms_delta(const ktime_t later, const ktime_t earlier) { return ktime_to_ms(((later) - (earlier))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ktime_add_us(const ktime_t kt, const u64 usec) { return ((kt) + (usec * 1000L)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ktime_add_ms(const ktime_t kt, const u64 msec) { return ((kt) + (msec * 1000000L)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ktime_sub_us(const ktime_t kt, const u64 usec) { return ((kt) - (usec * 1000L)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ktime_sub_ms(const ktime_t kt, const u64 msec) { return ((kt) - (msec * 1000000L)); } extern ktime_t ktime_add_safe(const ktime_t lhs, const ktime_t rhs); # 226 "../include/linux/ktime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) bool ktime_to_timespec_cond(const ktime_t kt, struct timespec *ts) { if (kt) { *ts = ns_to_timespec((kt)); return true; } else { return false; } } # 245 "../include/linux/ktime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) bool ktime_to_timespec64_cond(const ktime_t kt, struct timespec64 *ts) { if (kt) { *ts = ns_to_timespec64((kt)); return true; } else { return false; } } # 265 "../include/linux/ktime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ns_to_ktime(u64 ns) { return ns; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ms_to_ktime(u64 ms) { return ms * 1000000L; } # 1 "../include/linux/timekeeping.h" 1 void timekeeping_init(void); extern int timekeeping_suspended; extern void update_process_times(int user); extern void xtime_update(unsigned long ticks); extern int do_settimeofday64(const struct timespec64 *ts); extern int do_sys_settimeofday64(const struct timespec64 *tv, const struct timezone *tz); # 41 "../include/linux/timekeeping.h" extern void ktime_get_raw_ts64(struct timespec64 *ts); extern void ktime_get_ts64(struct timespec64 *ts); extern void ktime_get_real_ts64(struct timespec64 *tv); extern void ktime_get_coarse_ts64(struct timespec64 *ts); extern void ktime_get_coarse_real_ts64(struct timespec64 *ts); void getboottime64(struct timespec64 *ts); extern time64_t ktime_get_seconds(void); extern time64_t __ktime_get_real_seconds(void); extern time64_t ktime_get_real_seconds(void); enum tk_offsets { TK_OFFS_REAL, TK_OFFS_BOOT, TK_OFFS_TAI, TK_OFFS_MAX, }; extern ktime_t ktime_get(void); extern ktime_t ktime_get_with_offset(enum tk_offsets offs); extern ktime_t ktime_get_coarse_with_offset(enum tk_offsets offs); extern ktime_t ktime_mono_to_any(ktime_t tmono, enum tk_offsets offs); extern ktime_t ktime_get_raw(void); extern u32 ktime_get_resolution_ns(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ktime_get_real(void) { return ktime_get_with_offset(TK_OFFS_REAL); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ktime_get_coarse_real(void) { return ktime_get_coarse_with_offset(TK_OFFS_REAL); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ktime_get_boottime(void) { return ktime_get_with_offset(TK_OFFS_BOOT); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ktime_get_coarse_boottime(void) { return ktime_get_coarse_with_offset(TK_OFFS_BOOT); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ktime_get_clocktai(void) { return ktime_get_with_offset(TK_OFFS_TAI); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ktime_get_coarse_clocktai(void) { return ktime_get_coarse_with_offset(TK_OFFS_TAI); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ktime_get_coarse(void) { struct timespec64 ts; ktime_get_coarse_ts64(&ts); return timespec64_to_ktime(ts); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 ktime_get_coarse_ns(void) { return ktime_to_ns(ktime_get_coarse()); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 ktime_get_coarse_real_ns(void) { return ktime_to_ns(ktime_get_coarse_real()); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 ktime_get_coarse_boottime_ns(void) { return ktime_to_ns(ktime_get_coarse_boottime()); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 ktime_get_coarse_clocktai_ns(void) { return ktime_to_ns(ktime_get_coarse_clocktai()); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t ktime_mono_to_real(ktime_t mono) { return ktime_mono_to_any(mono, TK_OFFS_REAL); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 ktime_get_ns(void) { return ktime_to_ns(ktime_get()); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 ktime_get_real_ns(void) { return ktime_to_ns(ktime_get_real()); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 ktime_get_boottime_ns(void) { return ktime_to_ns(ktime_get_boottime()); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 ktime_get_clocktai_ns(void) { return ktime_to_ns(ktime_get_clocktai()); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 ktime_get_raw_ns(void) { return ktime_to_ns(ktime_get_raw()); } extern u64 ktime_get_mono_fast_ns(void); extern u64 ktime_get_raw_fast_ns(void); extern u64 ktime_get_boot_fast_ns(void); extern u64 ktime_get_real_fast_ns(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ktime_get_boottime_ts64(struct timespec64 *ts) { *ts = ns_to_timespec64((ktime_get_boottime())); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ktime_get_coarse_boottime_ts64(struct timespec64 *ts) { *ts = ns_to_timespec64((ktime_get_coarse_boottime())); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) time64_t ktime_get_boottime_seconds(void) { return ktime_divns(ktime_get_coarse_boottime(), 1000000000L); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ktime_get_clocktai_ts64(struct timespec64 *ts) { *ts = ns_to_timespec64((ktime_get_clocktai())); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ktime_get_coarse_clocktai_ts64(struct timespec64 *ts) { *ts = ns_to_timespec64((ktime_get_coarse_clocktai())); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) time64_t ktime_get_clocktai_seconds(void) { return ktime_divns(ktime_get_coarse_clocktai(), 1000000000L); } extern bool timekeeping_rtc_skipsuspend(void); extern bool timekeeping_rtc_skipresume(void); extern void timekeeping_inject_sleeptime64(const struct timespec64 *delta); # 234 "../include/linux/timekeeping.h" struct system_time_snapshot { u64 cycles; ktime_t real; ktime_t raw; unsigned int clock_was_set_seq; u8 cs_was_changed_seq; }; # 249 "../include/linux/timekeeping.h" struct system_device_crosststamp { ktime_t device; ktime_t sys_realtime; ktime_t sys_monoraw; }; # 262 "../include/linux/timekeeping.h" struct system_counterval_t { u64 cycles; struct clocksource *cs; }; extern int get_device_system_crosststamp( int (*get_time_fn)(ktime_t *device_time, struct system_counterval_t *system_counterval, void *ctx), void *ctx, struct system_time_snapshot *history, struct system_device_crosststamp *xtstamp); extern void ktime_get_snapshot(struct system_time_snapshot *systime_snapshot); extern int persistent_clock_is_local; extern void read_persistent_clock64(struct timespec64 *ts); void read_persistent_wall_and_boot_offset(struct timespec64 *wall_clock, struct timespec64 *boot_offset); extern int update_persistent_clock64(struct timespec64 now); # 276 "../include/linux/ktime.h" 2 # 1 "../include/linux/timekeeping32.h" 1 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long get_seconds(void) { return ktime_get_real_seconds(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void getnstimeofday(struct timespec *ts) { struct timespec64 ts64; ktime_get_real_ts64(&ts64); *ts = timespec64_to_timespec(ts64); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ktime_get_ts(struct timespec *ts) { struct timespec64 ts64; ktime_get_ts64(&ts64); *ts = timespec64_to_timespec(ts64); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void getrawmonotonic(struct timespec *ts) { struct timespec64 ts64; ktime_get_raw_ts64(&ts64); *ts = timespec64_to_timespec(ts64); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void getboottime(struct timespec *ts) { struct timespec64 ts64; getboottime64(&ts64); *ts = timespec64_to_timespec(ts64); } # 277 "../include/linux/ktime.h" 2 # 7 "../include/linux/timer.h" 2 # 1 "../include/linux/debugobjects.h" 1 enum debug_obj_state { ODEBUG_STATE_NONE, ODEBUG_STATE_INIT, ODEBUG_STATE_INACTIVE, ODEBUG_STATE_ACTIVE, ODEBUG_STATE_DESTROYED, ODEBUG_STATE_NOTAVAILABLE, ODEBUG_STATE_MAX, }; struct debug_obj_descr; # 28 "../include/linux/debugobjects.h" struct debug_obj { struct hlist_node node; enum debug_obj_state state; unsigned int astate; void *object; struct debug_obj_descr *descr; }; # 55 "../include/linux/debugobjects.h" struct debug_obj_descr { const char *name; void *(*debug_hint)(void *addr); bool (*is_static_object)(void *addr); bool (*fixup_init)(void *addr, enum debug_obj_state state); bool (*fixup_activate)(void *addr, enum debug_obj_state state); bool (*fixup_destroy)(void *addr, enum debug_obj_state state); bool (*fixup_free)(void *addr, enum debug_obj_state state); bool (*fixup_assert_init)(void *addr, enum debug_obj_state state); }; extern void debug_object_init (void *addr, struct debug_obj_descr *descr); extern void debug_object_init_on_stack(void *addr, struct debug_obj_descr *descr); extern int debug_object_activate (void *addr, struct debug_obj_descr *descr); extern void debug_object_deactivate(void *addr, struct debug_obj_descr *descr); extern void debug_object_destroy (void *addr, struct debug_obj_descr *descr); extern void debug_object_free (void *addr, struct debug_obj_descr *descr); extern void debug_object_assert_init(void *addr, struct debug_obj_descr *descr); extern void debug_object_active_state(void *addr, struct debug_obj_descr *descr, unsigned int expect, unsigned int next); extern void debug_objects_early_init(void); extern void debug_objects_mem_init(void); # 108 "../include/linux/debugobjects.h" extern void debug_check_no_obj_freed(const void *address, unsigned long size); # 9 "../include/linux/timer.h" 2 struct timer_list { struct hlist_node entry; unsigned long expires; void (*function)(struct timer_list *); u32 flags; struct lockdep_map lockdep_map; }; # 79 "../include/linux/timer.h" void init_timer_key(struct timer_list *timer, void (*func)(struct timer_list *), unsigned int flags, const char *name, struct lock_class_key *key); extern void init_timer_on_stack_key(struct timer_list *timer, void (*func)(struct timer_list *), unsigned int flags, const char *name, struct lock_class_key *key); # 136 "../include/linux/timer.h" extern void destroy_timer_on_stack(struct timer_list *timer); # 154 "../include/linux/timer.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int timer_pending(const struct timer_list * timer) { return timer->entry.pprev != ((void *)0); } extern void add_timer_on(struct timer_list *timer, int cpu); extern int del_timer(struct timer_list * timer); extern int mod_timer(struct timer_list *timer, unsigned long expires); extern int mod_timer_pending(struct timer_list *timer, unsigned long expires); extern int timer_reduce(struct timer_list *timer, unsigned long expires); extern void add_timer(struct timer_list *timer); extern int try_to_del_timer_sync(struct timer_list *timer); extern int del_timer_sync(struct timer_list *timer); extern void init_timers(void); extern void run_local_timers(void); struct hrtimer; extern enum hrtimer_restart it_real_fn(struct hrtimer *); struct ctl_table; extern unsigned int sysctl_timer_migration; int timer_migration_handler(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); unsigned long __round_jiffies(unsigned long j, int cpu); unsigned long __round_jiffies_relative(unsigned long j, int cpu); unsigned long round_jiffies(unsigned long j); unsigned long round_jiffies_relative(unsigned long j); unsigned long __round_jiffies_up(unsigned long j, int cpu); unsigned long __round_jiffies_up_relative(unsigned long j, int cpu); unsigned long round_jiffies_up(unsigned long j); unsigned long round_jiffies_up_relative(unsigned long j); int timers_prepare_cpu(unsigned int cpu); int timers_dead_cpu(unsigned int cpu); # 10 "../include/linux/workqueue.h" 2 struct workqueue_struct; struct work_struct; typedef void (*work_func_t)(struct work_struct *work); void delayed_work_timer_fn(struct timer_list *t); enum { WORK_STRUCT_PENDING_BIT = 0, WORK_STRUCT_DELAYED_BIT = 1, WORK_STRUCT_PWQ_BIT = 2, WORK_STRUCT_LINKED_BIT = 3, WORK_STRUCT_STATIC_BIT = 4, WORK_STRUCT_COLOR_SHIFT = 5, WORK_STRUCT_COLOR_BITS = 4, WORK_STRUCT_PENDING = 1 << WORK_STRUCT_PENDING_BIT, WORK_STRUCT_DELAYED = 1 << WORK_STRUCT_DELAYED_BIT, WORK_STRUCT_PWQ = 1 << WORK_STRUCT_PWQ_BIT, WORK_STRUCT_LINKED = 1 << WORK_STRUCT_LINKED_BIT, WORK_STRUCT_STATIC = 1 << WORK_STRUCT_STATIC_BIT, # 58 "../include/linux/workqueue.h" WORK_NR_COLORS = (1 << WORK_STRUCT_COLOR_BITS) - 1, WORK_NO_COLOR = WORK_NR_COLORS, WORK_CPU_UNBOUND = 8192, WORK_STRUCT_FLAG_BITS = WORK_STRUCT_COLOR_SHIFT + WORK_STRUCT_COLOR_BITS, WORK_OFFQ_FLAG_BASE = WORK_STRUCT_COLOR_SHIFT, __WORK_OFFQ_CANCELING = WORK_OFFQ_FLAG_BASE, WORK_OFFQ_CANCELING = (1 << __WORK_OFFQ_CANCELING), WORK_OFFQ_FLAG_BITS = 1, WORK_OFFQ_POOL_SHIFT = WORK_OFFQ_FLAG_BASE + WORK_OFFQ_FLAG_BITS, WORK_OFFQ_LEFT = 64 - WORK_OFFQ_POOL_SHIFT, WORK_OFFQ_POOL_BITS = WORK_OFFQ_LEFT <= 31 ? WORK_OFFQ_LEFT : 31, WORK_OFFQ_POOL_NONE = (1LU << WORK_OFFQ_POOL_BITS) - 1, WORK_STRUCT_FLAG_MASK = (1UL << WORK_STRUCT_FLAG_BITS) - 1, WORK_STRUCT_WQ_DATA_MASK = ~WORK_STRUCT_FLAG_MASK, WORK_STRUCT_NO_POOL = (unsigned long)WORK_OFFQ_POOL_NONE << WORK_OFFQ_POOL_SHIFT, WORK_BUSY_PENDING = 1 << 0, WORK_BUSY_RUNNING = 1 << 1, WORKER_DESC_LEN = 24, }; struct work_struct { atomic_long_t data; struct list_head entry; work_func_t func; struct lockdep_map lockdep_map; }; struct delayed_work { struct work_struct work; struct timer_list timer; struct workqueue_struct *wq; int cpu; }; struct rcu_work { struct work_struct work; struct callback_head rcu; struct workqueue_struct *wq; }; struct workqueue_attrs { int nice; cpumask_var_t cpumask; # 155 "../include/linux/workqueue.h" bool no_numa; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct delayed_work *to_delayed_work(struct work_struct *work) { return ({ void *__mptr = (void *)(work); do { extern void __compiletime_assert_160(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(work)), typeof(((struct delayed_work *)0)->work)) && !__builtin_types_compatible_p(typeof(*(work)), typeof(void))))) __compiletime_assert_160(); } while (0); ((struct delayed_work *)(__mptr - __builtin_offsetof(struct delayed_work, work))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct rcu_work *to_rcu_work(struct work_struct *work) { return ({ void *__mptr = (void *)(work); do { extern void __compiletime_assert_165(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(work)), typeof(((struct rcu_work *)0)->work)) && !__builtin_types_compatible_p(typeof(*(work)), typeof(void))))) __compiletime_assert_165(); } while (0); ((struct rcu_work *)(__mptr - __builtin_offsetof(struct rcu_work, work))); }); } struct execute_work { struct work_struct work; }; # 207 "../include/linux/workqueue.h" extern void __init_work(struct work_struct *work, int onstack); extern void destroy_work_on_stack(struct work_struct *work); extern void destroy_delayed_work_on_stack(struct delayed_work *work); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int work_static(struct work_struct *work) { return *((unsigned long *)(&(work)->data)) & WORK_STRUCT_STATIC; } # 308 "../include/linux/workqueue.h" enum { WQ_UNBOUND = 1 << 1, WQ_FREEZABLE = 1 << 2, WQ_MEM_RECLAIM = 1 << 3, WQ_HIGHPRI = 1 << 4, WQ_CPU_INTENSIVE = 1 << 5, WQ_SYSFS = 1 << 6, # 341 "../include/linux/workqueue.h" WQ_POWER_EFFICIENT = 1 << 7, __WQ_DRAINING = 1 << 16, __WQ_ORDERED = 1 << 17, __WQ_LEGACY = 1 << 18, __WQ_ORDERED_EXPLICIT = 1 << 19, WQ_MAX_ACTIVE = 512, WQ_MAX_UNBOUND_PER_CPU = 4, WQ_DFL_ACTIVE = WQ_MAX_ACTIVE / 2, }; # 385 "../include/linux/workqueue.h" extern struct workqueue_struct *system_wq; extern struct workqueue_struct *system_highpri_wq; extern struct workqueue_struct *system_long_wq; extern struct workqueue_struct *system_unbound_wq; extern struct workqueue_struct *system_freezable_wq; extern struct workqueue_struct *system_power_efficient_wq; extern struct workqueue_struct *system_freezable_power_efficient_wq; # 407 "../include/linux/workqueue.h" struct workqueue_struct *alloc_workqueue(const char *fmt, unsigned int flags, int max_active, ...); # 436 "../include/linux/workqueue.h" extern void destroy_workqueue(struct workqueue_struct *wq); int workqueue_set_unbound_cpumask(cpumask_var_t cpumask); extern bool queue_work_on(int cpu, struct workqueue_struct *wq, struct work_struct *work); extern bool queue_work_node(int node, struct workqueue_struct *wq, struct work_struct *work); extern bool queue_delayed_work_on(int cpu, struct workqueue_struct *wq, struct delayed_work *work, unsigned long delay); extern bool mod_delayed_work_on(int cpu, struct workqueue_struct *wq, struct delayed_work *dwork, unsigned long delay); extern bool queue_rcu_work(struct workqueue_struct *wq, struct rcu_work *rwork); extern void flush_workqueue(struct workqueue_struct *wq); extern void drain_workqueue(struct workqueue_struct *wq); extern int schedule_on_each_cpu(work_func_t func); int execute_in_process_context(work_func_t fn, struct execute_work *); extern bool flush_work(struct work_struct *work); extern bool cancel_work_sync(struct work_struct *work); extern bool flush_delayed_work(struct delayed_work *dwork); extern bool cancel_delayed_work(struct delayed_work *dwork); extern bool cancel_delayed_work_sync(struct delayed_work *dwork); extern bool flush_rcu_work(struct rcu_work *rwork); extern void workqueue_set_max_active(struct workqueue_struct *wq, int max_active); extern struct work_struct *current_work(void); extern bool current_is_workqueue_rescuer(void); extern bool workqueue_congested(int cpu, struct workqueue_struct *wq); extern unsigned int work_busy(struct work_struct *work); extern __attribute__((__format__(printf, 1, 2))) void set_worker_desc(const char *fmt, ...); extern void print_worker_info(const char *log_lvl, struct task_struct *task); extern void show_workqueue_state(void); extern void wq_worker_comm(char *buf, size_t size, struct task_struct *task); # 487 "../include/linux/workqueue.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool queue_work(struct workqueue_struct *wq, struct work_struct *work) { return queue_work_on(WORK_CPU_UNBOUND, wq, work); } # 501 "../include/linux/workqueue.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool queue_delayed_work(struct workqueue_struct *wq, struct delayed_work *dwork, unsigned long delay) { return queue_delayed_work_on(WORK_CPU_UNBOUND, wq, dwork, delay); } # 516 "../include/linux/workqueue.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool mod_delayed_work(struct workqueue_struct *wq, struct delayed_work *dwork, unsigned long delay) { return mod_delayed_work_on(WORK_CPU_UNBOUND, wq, dwork, delay); } # 530 "../include/linux/workqueue.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool schedule_work_on(int cpu, struct work_struct *work) { return queue_work_on(cpu, system_wq, work); } # 546 "../include/linux/workqueue.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool schedule_work(struct work_struct *work) { return queue_work(system_wq, work); } # 575 "../include/linux/workqueue.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void flush_scheduled_work(void) { flush_workqueue(system_wq); } # 589 "../include/linux/workqueue.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool schedule_delayed_work_on(int cpu, struct delayed_work *dwork, unsigned long delay) { return queue_delayed_work_on(cpu, system_wq, dwork, delay); } # 603 "../include/linux/workqueue.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool schedule_delayed_work(struct delayed_work *dwork, unsigned long delay) { return queue_delayed_work(system_wq, dwork, delay); } # 619 "../include/linux/workqueue.h" long work_on_cpu(int cpu, long (*fn)(void *), void *arg); long work_on_cpu_safe(int cpu, long (*fn)(void *), void *arg); extern void freeze_workqueues_begin(void); extern bool freeze_workqueues_busy(void); extern void thaw_workqueues(void); int workqueue_sysfs_register(struct workqueue_struct *wq); void wq_watchdog_touch(int cpu); int workqueue_prepare_cpu(unsigned int cpu); int workqueue_online_cpu(unsigned int cpu); int workqueue_offline_cpu(unsigned int cpu); int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) workqueue_init_early(void); int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) workqueue_init(void); # 22 "../include/linux/srcu.h" 2 # 1 "../include/linux/rcu_segcblist.h" 1 # 18 "../include/linux/rcu_segcblist.h" struct rcu_cblist { struct callback_head *head; struct callback_head **tail; long len; long len_lazy; }; # 64 "../include/linux/rcu_segcblist.h" struct rcu_segcblist { struct callback_head *head; struct callback_head **tails[4]; unsigned long gp_seq[4]; long len; long len_lazy; }; # 23 "../include/linux/srcu.h" 2 struct srcu_struct; int __init_srcu_struct(struct srcu_struct *ssp, const char *name, struct lock_class_key *key); # 49 "../include/linux/srcu.h" # 1 "../include/linux/srcutree.h" 1 # 14 "../include/linux/srcutree.h" # 1 "../include/linux/rcu_node_tree.h" 1 # 15 "../include/linux/srcutree.h" 2 struct srcu_node; struct srcu_struct; struct srcu_data { unsigned long srcu_lock_count[2]; unsigned long srcu_unlock_count[2]; spinlock_t lock __attribute__((__aligned__(1 << (12)))); struct rcu_segcblist srcu_cblist; unsigned long srcu_gp_seq_needed; unsigned long srcu_gp_seq_needed_exp; bool srcu_cblist_invoking; struct timer_list delay_work; struct work_struct work; struct callback_head srcu_barrier_head; struct srcu_node *mynode; unsigned long grpmask; int cpu; struct srcu_struct *ssp; }; struct srcu_node { spinlock_t lock; unsigned long srcu_have_cbs[4]; unsigned long srcu_data_have_cbs[4]; unsigned long srcu_gp_seq_needed_exp; struct srcu_node *srcu_parent; int grplo; int grphi; }; struct srcu_struct { struct srcu_node node[(1 + (((8192) + (((16) * 64)) - 1) / (((16) * 64))) + (((8192) + ((16)) - 1) / ((16))))]; struct srcu_node *level[3 + 1]; struct mutex srcu_cb_mutex; spinlock_t lock; struct mutex srcu_gp_mutex; unsigned int srcu_idx; unsigned long srcu_gp_seq; unsigned long srcu_gp_seq_needed; unsigned long srcu_gp_seq_needed_exp; unsigned long srcu_last_gp_end; struct srcu_data *sda; unsigned long srcu_barrier_seq; struct mutex srcu_barrier_mutex; struct completion srcu_barrier_completion; atomic_t srcu_barrier_cpu_cnt; struct delayed_work work; struct lockdep_map dep_map; }; # 137 "../include/linux/srcutree.h" void synchronize_srcu_expedited(struct srcu_struct *ssp); void srcu_barrier(struct srcu_struct *ssp); void srcu_torture_stats_print(struct srcu_struct *ssp, char *tt, char *tf); # 50 "../include/linux/srcu.h" 2 void call_srcu(struct srcu_struct *ssp, struct callback_head *head, void (*func)(struct callback_head *head)); void cleanup_srcu_struct(struct srcu_struct *ssp); int __srcu_read_lock(struct srcu_struct *ssp) ; void __srcu_read_unlock(struct srcu_struct *ssp, int idx) ; void synchronize_srcu(struct srcu_struct *ssp); # 82 "../include/linux/srcu.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int srcu_read_lock_held(const struct srcu_struct *ssp) { if (!debug_lockdep_rcu_enabled()) return 1; return lock_is_held(&ssp->dep_map); } # 150 "../include/linux/srcu.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int srcu_read_lock(struct srcu_struct *ssp) { int retval; retval = __srcu_read_lock(ssp); rcu_lock_acquire(&(ssp)->dep_map); return retval; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((no_instrument_function)) int srcu_read_lock_notrace(struct srcu_struct *ssp) { int retval; retval = __srcu_read_lock(ssp); return retval; } # 176 "../include/linux/srcu.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void srcu_read_unlock(struct srcu_struct *ssp, int idx) { ({ int __ret_warn_on = !!(idx & ~0x1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/srcu.h"), "i" (179), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (111)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); rcu_lock_release(&(ssp)->dep_map); __srcu_read_unlock(ssp, idx); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((no_instrument_function)) void srcu_read_unlock_notrace(struct srcu_struct *ssp, int idx) { __srcu_read_unlock(ssp, idx); } # 200 "../include/linux/srcu.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void smp_mb__after_srcu_read_unlock(void) { } # 17 "../include/linux/notifier.h" 2 # 49 "../include/linux/notifier.h" struct notifier_block; typedef int (*notifier_fn_t)(struct notifier_block *nb, unsigned long action, void *data); struct notifier_block { notifier_fn_t notifier_call; struct notifier_block *next; int priority; }; struct atomic_notifier_head { spinlock_t lock; struct notifier_block *head; }; struct blocking_notifier_head { struct rw_semaphore rwsem; struct notifier_block *head; }; struct raw_notifier_head { struct notifier_block *head; }; struct srcu_notifier_head { struct mutex mutex; struct srcu_struct srcu; struct notifier_block *head; }; # 93 "../include/linux/notifier.h" extern void srcu_init_notifier_head(struct srcu_notifier_head *nh); # 144 "../include/linux/notifier.h" extern int atomic_notifier_chain_register(struct atomic_notifier_head *nh, struct notifier_block *nb); extern int blocking_notifier_chain_register(struct blocking_notifier_head *nh, struct notifier_block *nb); extern int raw_notifier_chain_register(struct raw_notifier_head *nh, struct notifier_block *nb); extern int srcu_notifier_chain_register(struct srcu_notifier_head *nh, struct notifier_block *nb); extern int blocking_notifier_chain_cond_register( struct blocking_notifier_head *nh, struct notifier_block *nb); extern int atomic_notifier_chain_unregister(struct atomic_notifier_head *nh, struct notifier_block *nb); extern int blocking_notifier_chain_unregister(struct blocking_notifier_head *nh, struct notifier_block *nb); extern int raw_notifier_chain_unregister(struct raw_notifier_head *nh, struct notifier_block *nb); extern int srcu_notifier_chain_unregister(struct srcu_notifier_head *nh, struct notifier_block *nb); extern int atomic_notifier_call_chain(struct atomic_notifier_head *nh, unsigned long val, void *v); extern int __atomic_notifier_call_chain(struct atomic_notifier_head *nh, unsigned long val, void *v, int nr_to_call, int *nr_calls); extern int blocking_notifier_call_chain(struct blocking_notifier_head *nh, unsigned long val, void *v); extern int __blocking_notifier_call_chain(struct blocking_notifier_head *nh, unsigned long val, void *v, int nr_to_call, int *nr_calls); extern int raw_notifier_call_chain(struct raw_notifier_head *nh, unsigned long val, void *v); extern int __raw_notifier_call_chain(struct raw_notifier_head *nh, unsigned long val, void *v, int nr_to_call, int *nr_calls); extern int srcu_notifier_call_chain(struct srcu_notifier_head *nh, unsigned long val, void *v); extern int __srcu_notifier_call_chain(struct srcu_notifier_head *nh, unsigned long val, void *v, int nr_to_call, int *nr_calls); # 194 "../include/linux/notifier.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int notifier_from_errno(int err) { if (err) return 0x8000 | (0x0001 - err); return 0x0001; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int notifier_to_errno(int ret) { ret &= ~0x8000; return ret > 0x0001 ? 0x0001 - ret : 0; } # 238 "../include/linux/notifier.h" extern struct blocking_notifier_head reboot_notifier_list; # 14 "../arch/x86/include/asm/uprobes.h" 2 typedef u8 uprobe_opcode_t; struct uprobe_xol_ops; struct arch_uprobe { union { u8 insn[16]; u8 ixol[16]; }; const struct uprobe_xol_ops *ops; union { struct { s32 offs; u8 ilen; u8 opc1; } branch; struct { u8 fixups; u8 ilen; } defparam; struct { u8 reg_offset; u8 ilen; } push; }; }; struct arch_uprobe_task { unsigned long saved_scratch_register; unsigned int saved_trap_nr; unsigned int saved_tf; }; # 50 "../include/linux/uprobes.h" 2 enum uprobe_task_state { UTASK_RUNNING, UTASK_SSTEP, UTASK_SSTEP_ACK, UTASK_SSTEP_TRAPPED, }; struct uprobe_task { enum uprobe_task_state state; union { struct { struct arch_uprobe_task autask; unsigned long vaddr; }; struct { struct callback_head dup_xol_work; unsigned long dup_xol_addr; }; }; struct uprobe *active_uprobe; unsigned long xol_vaddr; struct return_instance *return_instances; unsigned int depth; }; struct return_instance { struct uprobe *uprobe; unsigned long func; unsigned long stack; unsigned long orig_ret_vaddr; bool chained; struct return_instance *next; }; enum rp_check { RP_CHECK_CALL, RP_CHECK_CHAIN_CALL, RP_CHECK_RET, }; struct xol_area; struct uprobes_state { struct xol_area *xol_area; }; extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) uprobes_init(void); extern int set_swbp(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long vaddr); extern int set_orig_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long vaddr); extern bool is_swbp_insn(uprobe_opcode_t *insn); extern bool is_trap_insn(uprobe_opcode_t *insn); extern unsigned long uprobe_get_swbp_addr(struct pt_regs *regs); extern unsigned long uprobe_get_trap_addr(struct pt_regs *regs); extern int uprobe_write_opcode(struct arch_uprobe *auprobe, struct mm_struct *mm, unsigned long vaddr, uprobe_opcode_t); extern int uprobe_register(struct inode *inode, loff_t offset, struct uprobe_consumer *uc); extern int uprobe_register_refctr(struct inode *inode, loff_t offset, loff_t ref_ctr_offset, struct uprobe_consumer *uc); extern int uprobe_apply(struct inode *inode, loff_t offset, struct uprobe_consumer *uc, bool); extern void uprobe_unregister(struct inode *inode, loff_t offset, struct uprobe_consumer *uc); extern int uprobe_mmap(struct vm_area_struct *vma); extern void uprobe_munmap(struct vm_area_struct *vma, unsigned long start, unsigned long end); extern void uprobe_start_dup_mmap(void); extern void uprobe_end_dup_mmap(void); extern void uprobe_dup_mmap(struct mm_struct *oldmm, struct mm_struct *newmm); extern void uprobe_free_utask(struct task_struct *t); extern void uprobe_copy_process(struct task_struct *t, unsigned long flags); extern int uprobe_post_sstep_notifier(struct pt_regs *regs); extern int uprobe_pre_sstep_notifier(struct pt_regs *regs); extern void uprobe_notify_resume(struct pt_regs *regs); extern bool uprobe_deny_signal(void); extern bool arch_uprobe_skip_sstep(struct arch_uprobe *aup, struct pt_regs *regs); extern void uprobe_clear_state(struct mm_struct *mm); extern int arch_uprobe_analyze_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long addr); extern int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs); extern int arch_uprobe_post_xol(struct arch_uprobe *aup, struct pt_regs *regs); extern bool arch_uprobe_xol_was_trapped(struct task_struct *tsk); extern int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, void *data); extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *regs); extern unsigned long arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs *regs); extern bool arch_uretprobe_is_alive(struct return_instance *ret, enum rp_check ctx, struct pt_regs *regs); extern bool arch_uprobe_ignore(struct arch_uprobe *aup, struct pt_regs *regs); extern void arch_uprobe_copy_ixol(struct page *page, unsigned long vaddr, void *src, unsigned long len); # 15 "../include/linux/mm_types.h" 2 # 1 "../arch/x86/include/asm/mmu.h" 1 # 13 "../arch/x86/include/asm/mmu.h" typedef struct { u64 ctx_id; # 28 "../arch/x86/include/asm/mmu.h" atomic64_t tlb_gen; struct rw_semaphore ldt_usr_sem; struct ldt_struct *ldt; unsigned short ia32_compat; struct mutex lock; void *vdso; const struct vdso_image *vdso_image; atomic_t perf_rdpmc_allowed; u16 pkey_allocation_map; s16 execute_only_pkey; void *bd_addr; } mm_context_t; void leave_mm(int cpu); # 19 "../include/linux/mm_types.h" 2 struct address_space; struct mem_cgroup; struct hmm; # 69 "../include/linux/mm_types.h" struct page { unsigned long flags; union { struct { struct list_head lru; struct address_space *mapping; unsigned long index; unsigned long private; }; struct { dma_addr_t dma_addr; }; struct { union { struct list_head slab_list; struct { struct page *next; int pages; int pobjects; }; }; struct kmem_cache *slab_cache; void *freelist; union { void *s_mem; unsigned long counters; struct { unsigned inuse:16; unsigned objects:15; unsigned frozen:1; }; }; }; struct { unsigned long compound_head; unsigned char compound_dtor; unsigned char compound_order; atomic_t compound_mapcount; }; struct { unsigned long _compound_pad_1; unsigned long _compound_pad_2; struct list_head deferred_list; }; struct { unsigned long _pt_pad_1; pgtable_t pmd_huge_pte; unsigned long _pt_pad_2; union { struct mm_struct *pt_mm; atomic_t pt_frag_refcount; }; spinlock_t *ptl; }; struct { struct dev_pagemap *pgmap; unsigned long hmm_data; unsigned long _zd_pad_1; }; struct callback_head callback_head; }; union { atomic_t _mapcount; unsigned int page_type; unsigned int active; int units; }; atomic_t _refcount; struct mem_cgroup *mem_cgroup; # 213 "../include/linux/mm_types.h" } __attribute__((__aligned__(2 * sizeof(unsigned long)))); # 226 "../include/linux/mm_types.h" struct page_frag_cache { void * va; __u16 offset; __u16 size; unsigned int pagecnt_bias; bool pfmemalloc; }; typedef unsigned long vm_flags_t; struct vm_region { struct rb_node vm_rb; vm_flags_t vm_flags; unsigned long vm_start; unsigned long vm_end; unsigned long vm_top; unsigned long vm_pgoff; struct file *vm_file; int vm_usage; bool vm_icache_flushed : 1; }; struct vm_userfaultfd_ctx { struct userfaultfd_ctx *ctx; }; # 278 "../include/linux/mm_types.h" struct vm_area_struct { unsigned long vm_start; unsigned long vm_end; struct vm_area_struct *vm_next, *vm_prev; struct rb_node vm_rb; unsigned long rb_subtree_gap; struct mm_struct *vm_mm; pgprot_t vm_page_prot; unsigned long vm_flags; struct { struct rb_node rb; unsigned long rb_subtree_last; } shared; struct list_head anon_vma_chain; struct anon_vma *anon_vma; const struct vm_operations_struct *vm_ops; unsigned long vm_pgoff; struct file * vm_file; void * vm_private_data; atomic_long_t swap_readahead_info; struct mempolicy *vm_policy; struct vm_userfaultfd_ctx vm_userfaultfd_ctx; } ; struct core_thread { struct task_struct *task; struct core_thread *next; }; struct core_state { atomic_t nr_threads; struct core_thread dumper; struct completion startup; }; struct kioctx_table; struct mm_struct { struct { struct vm_area_struct *mmap; struct rb_root mm_rb; u64 vmacache_seqnum; unsigned long (*get_unmapped_area) (struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags); unsigned long mmap_base; unsigned long mmap_legacy_base; unsigned long mmap_compat_base; unsigned long mmap_compat_legacy_base; unsigned long task_size; unsigned long highest_vm_end; pgd_t * pgd; # 386 "../include/linux/mm_types.h" atomic_t mm_users; # 395 "../include/linux/mm_types.h" atomic_t mm_count; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; struct rw_semaphore mmap_sem; struct list_head mmlist; unsigned long hiwater_rss; unsigned long hiwater_vm; unsigned long total_vm; unsigned long locked_vm; atomic64_t pinned_vm; unsigned long data_vm; unsigned long exec_vm; unsigned long stack_vm; unsigned long def_flags; spinlock_t arg_lock; unsigned long start_code, end_code, start_data, end_data; unsigned long start_brk, brk, start_stack; unsigned long arg_start, arg_end, env_start, env_end; unsigned long saved_auxv[(2*(2 + 20 + 1))]; struct mm_rss_stat rss_stat; struct linux_binfmt *binfmt; mm_context_t context; unsigned long flags; struct core_state *core_state; atomic_t membarrier_state; spinlock_t ioctx_lock; struct kioctx_table *ioctx_table; # 464 "../include/linux/mm_types.h" struct task_struct *owner; struct user_namespace *user_ns; struct file *exe_file; struct mmu_notifier_mm *mmu_notifier_mm; # 482 "../include/linux/mm_types.h" unsigned long numa_next_scan; unsigned long numa_scan_offset; int numa_scan_seq; atomic_t tlb_flush_pending; bool tlb_flush_batched; struct uprobes_state uprobes_state; atomic_long_t hugetlb_usage; struct work_struct async_put_work; struct hmm *hmm; } ; unsigned long cpu_bitmap[]; }; extern struct mm_struct init_mm; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mm_init_cpumask(struct mm_struct *mm) { unsigned long cpu_bitmap = (unsigned long)mm; cpu_bitmap += __builtin_offsetof(struct mm_struct, cpu_bitmap); cpumask_clear((struct cpumask *)cpu_bitmap); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) cpumask_t *mm_cpumask(struct mm_struct *mm) { return (struct cpumask *)&mm->cpu_bitmap; } struct mmu_gather; extern void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end); extern void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void init_tlb_flush_pending(struct mm_struct *mm) { atomic_set(&mm->tlb_flush_pending, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inc_tlb_flush_pending(struct mm_struct *mm) { atomic_inc(&mm->tlb_flush_pending); # 586 "../include/linux/mm_types.h" } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dec_tlb_flush_pending(struct mm_struct *mm) { # 598 "../include/linux/mm_types.h" atomic_dec(&mm->tlb_flush_pending); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool mm_tlb_flush_pending(struct mm_struct *mm) { # 611 "../include/linux/mm_types.h" return atomic_read(&mm->tlb_flush_pending); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool mm_tlb_flush_nested(struct mm_struct *mm) { return atomic_read(&mm->tlb_flush_pending) > 1; } struct vm_fault; typedef unsigned int vm_fault_t; # 660 "../include/linux/mm_types.h" enum vm_fault_reason { VM_FAULT_OOM = ( vm_fault_t)0x000001, VM_FAULT_SIGBUS = ( vm_fault_t)0x000002, VM_FAULT_MAJOR = ( vm_fault_t)0x000004, VM_FAULT_WRITE = ( vm_fault_t)0x000008, VM_FAULT_HWPOISON = ( vm_fault_t)0x000010, VM_FAULT_HWPOISON_LARGE = ( vm_fault_t)0x000020, VM_FAULT_SIGSEGV = ( vm_fault_t)0x000040, VM_FAULT_NOPAGE = ( vm_fault_t)0x000100, VM_FAULT_LOCKED = ( vm_fault_t)0x000200, VM_FAULT_RETRY = ( vm_fault_t)0x000400, VM_FAULT_FALLBACK = ( vm_fault_t)0x000800, VM_FAULT_DONE_COW = ( vm_fault_t)0x001000, VM_FAULT_NEEDDSYNC = ( vm_fault_t)0x002000, VM_FAULT_HINDEX_MASK = ( vm_fault_t)0x0f0000, }; # 700 "../include/linux/mm_types.h" struct vm_special_mapping { const char *name; struct page **pages; vm_fault_t (*fault)(const struct vm_special_mapping *sm, struct vm_area_struct *vma, struct vm_fault *vmf); int (*mremap)(const struct vm_special_mapping *sm, struct vm_area_struct *new_vma); }; enum tlb_flush_reason { TLB_FLUSH_ON_TASK_SWITCH, TLB_REMOTE_SHOOTDOWN, TLB_LOCAL_SHOOTDOWN, TLB_LOCAL_MM_SHOOTDOWN, TLB_REMOTE_SEND_IPI, NR_TLB_FLUSH_REASONS, }; typedef struct { unsigned long val; } swp_entry_t; # 22 "../include/linux/mmzone.h" 2 # 1 "../include/linux/page-flags.h" 1 # 99 "../include/linux/page-flags.h" enum pageflags { PG_locked, PG_referenced, PG_uptodate, PG_dirty, PG_lru, PG_active, PG_workingset, PG_waiters, PG_error, PG_slab, PG_owner_priv_1, PG_arch_1, PG_reserved, PG_private, PG_private_2, PG_writeback, PG_head, PG_mappedtodisk, PG_reclaim, PG_swapbacked, PG_unevictable, PG_mlocked, PG_uncached, PG_hwpoison, PG_young, PG_idle, __NR_PAGEFLAGS, PG_checked = PG_owner_priv_1, PG_swapcache = PG_owner_priv_1, PG_fscache = PG_private_2, PG_pinned = PG_owner_priv_1, PG_savepinned = PG_dirty, PG_foreign = PG_owner_priv_1, PG_slob_free = PG_private, PG_double_map = PG_private_2, PG_isolated = PG_reclaim, }; struct page; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page *compound_head(struct page *page) { unsigned long head = ({ union { typeof(page->compound_head) __val; char __c[1]; } __u; if (1) __read_once_size(&(page->compound_head), __u.__c, sizeof(page->compound_head)); else __read_once_size_nocheck(&(page->compound_head), __u.__c, sizeof(page->compound_head)); do { } while (0); __u.__val; }); if (__builtin_expect(!!(head & 1), 0)) return (struct page *) (head - 1); return page; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageTail(struct page *page) { return ({ union { typeof(page->compound_head) __val; char __c[1]; } __u; if (1) __read_once_size(&(page->compound_head), __u.__c, sizeof(page->compound_head)); else __read_once_size_nocheck(&(page->compound_head), __u.__c, sizeof(page->compound_head)); do { } while (0); __u.__val; }) & 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageCompound(struct page *page) { return test_bit(PG_head, &page->flags) || PageTail(page); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int PagePoisoned(const struct page *page) { return page->flags == -1l; } void page_init_poison(struct page *page, size_t size); # 310 "../include/linux/page-flags.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageLocked(struct page *page) { return test_bit(PG_locked, &({ do { if (__builtin_expect(!!(0 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (310), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (112)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (310), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (113)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageLocked(struct page *page) { __set_bit(PG_locked, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (310), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (114)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (310), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (115)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageLocked(struct page *page) { __clear_bit(PG_locked, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (310), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (116)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (310), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (117)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageWaiters(struct page *page) { return test_bit(PG_waiters, &({ do { if (__builtin_expect(!!(PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (311), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (118)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (311), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (119)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageWaiters(struct page *page) { set_bit(PG_waiters, &({ do { if (__builtin_expect(!!(PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (311), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (120)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (311), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (121)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageWaiters(struct page *page) { clear_bit(PG_waiters, &({ do { if (__builtin_expect(!!(PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (311), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (122)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (311), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (123)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageWaiters(struct page *page) { __clear_bit(PG_waiters, &({ do { if (__builtin_expect(!!(PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (311), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (124)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (311), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (125)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageError(struct page *page) { return test_bit(PG_error, &({ do { if (__builtin_expect(!!(0 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (312), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (126)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (312), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (127)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageError(struct page *page) { set_bit(PG_error, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (312), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (128)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (312), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (129)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageError(struct page *page) { clear_bit(PG_error, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (312), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (130)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (312), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (131)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPageError(struct page *page) { return test_and_clear_bit(PG_error, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (312), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (132)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (312), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (133)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageReferenced(struct page *page) { return test_bit(PG_referenced, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (313), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (134)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageReferenced(struct page *page) { set_bit(PG_referenced, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (313), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (135)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageReferenced(struct page *page) { clear_bit(PG_referenced, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (313), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (136)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPageReferenced(struct page *page) { return test_and_clear_bit(PG_referenced, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (314), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (137)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageReferenced(struct page *page) { __set_bit(PG_referenced, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (315), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (138)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageDirty(struct page *page) { return test_bit(PG_dirty, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (316), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (139)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageDirty(struct page *page) { set_bit(PG_dirty, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (316), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (140)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageDirty(struct page *page) { clear_bit(PG_dirty, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (316), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (141)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestSetPageDirty(struct page *page) { return test_and_set_bit(PG_dirty, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (316), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (142)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPageDirty(struct page *page) { return test_and_clear_bit(PG_dirty, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (316), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (143)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageDirty(struct page *page) { __clear_bit(PG_dirty, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (317), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (144)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageLRU(struct page *page) { return test_bit(PG_lru, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (318), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (145)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageLRU(struct page *page) { set_bit(PG_lru, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (318), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (146)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageLRU(struct page *page) { clear_bit(PG_lru, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (318), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (147)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageLRU(struct page *page) { __clear_bit(PG_lru, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (318), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (148)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageActive(struct page *page) { return test_bit(PG_active, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (319), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (149)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageActive(struct page *page) { set_bit(PG_active, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (319), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (150)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageActive(struct page *page) { clear_bit(PG_active, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (319), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (151)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageActive(struct page *page) { __clear_bit(PG_active, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (319), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (152)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPageActive(struct page *page) { return test_and_clear_bit(PG_active, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (320), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (153)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageWorkingset(struct page *page) { return test_bit(PG_workingset, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (321), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (154)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageWorkingset(struct page *page) { set_bit(PG_workingset, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (321), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (155)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageWorkingset(struct page *page) { clear_bit(PG_workingset, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (321), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (156)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPageWorkingset(struct page *page) { return test_and_clear_bit(PG_workingset, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (322), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (157)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageSlab(struct page *page) { return test_bit(PG_slab, &({ do { if (__builtin_expect(!!(0 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (323), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (158)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (323), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (159)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageSlab(struct page *page) { __set_bit(PG_slab, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (323), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (160)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (323), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (161)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageSlab(struct page *page) { __clear_bit(PG_slab, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (323), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (162)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (323), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (163)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageSlobFree(struct page *page) { return test_bit(PG_slob_free, &({ do { if (__builtin_expect(!!(0 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (324), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (164)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (324), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (165)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageSlobFree(struct page *page) { __set_bit(PG_slob_free, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (324), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (166)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (324), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (167)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageSlobFree(struct page *page) { __clear_bit(PG_slob_free, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (324), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (168)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (324), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (169)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageChecked(struct page *page) { return test_bit(PG_checked, &({ do { if (__builtin_expect(!!(0 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (325), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (170)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (325), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (171)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageChecked(struct page *page) { set_bit(PG_checked, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (325), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (172)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (325), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (173)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageChecked(struct page *page) { clear_bit(PG_checked, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (325), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (174)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (325), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (175)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PagePinned(struct page *page) { return test_bit(PG_pinned, &({ do { if (__builtin_expect(!!(0 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (328), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (176)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (328), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (177)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPagePinned(struct page *page) { set_bit(PG_pinned, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (328), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (178)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (328), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (179)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPagePinned(struct page *page) { clear_bit(PG_pinned, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (328), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (180)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (328), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (181)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestSetPagePinned(struct page *page) { return test_and_set_bit(PG_pinned, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (329), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (182)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (329), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (183)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPagePinned(struct page *page) { return test_and_clear_bit(PG_pinned, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (329), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (184)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (329), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (185)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageSavePinned(struct page *page) { return test_bit(PG_savepinned, &({ do { if (__builtin_expect(!!(0 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (330), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (186)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (330), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (187)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageSavePinned(struct page *page) { set_bit(PG_savepinned, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (330), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (188)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (330), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (189)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageSavePinned(struct page *page) { clear_bit(PG_savepinned, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (330), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (190)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (330), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (191)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageForeign(struct page *page) { return test_bit(PG_foreign, &({ do { if (__builtin_expect(!!(0 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (331), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (192)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (331), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (193)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageForeign(struct page *page) { set_bit(PG_foreign, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (331), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (194)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (331), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (195)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageForeign(struct page *page) { clear_bit(PG_foreign, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (331), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (196)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (331), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (197)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageReserved(struct page *page) { return test_bit(PG_reserved, &({ do { if (__builtin_expect(!!(0 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (333), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (198)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (333), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (199)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageReserved(struct page *page) { set_bit(PG_reserved, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (333), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (200)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (333), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (201)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageReserved(struct page *page) { clear_bit(PG_reserved, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (333), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (202)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (333), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (203)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageReserved(struct page *page) { __clear_bit(PG_reserved, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (334), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (204)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (334), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (205)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageReserved(struct page *page) { __set_bit(PG_reserved, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (335), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (206)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (335), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (207)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageSwapBacked(struct page *page) { return test_bit(PG_swapbacked, &({ do { if (__builtin_expect(!!(0 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (336), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (208)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (336), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (209)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageSwapBacked(struct page *page) { set_bit(PG_swapbacked, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (336), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (210)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (336), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (211)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageSwapBacked(struct page *page) { clear_bit(PG_swapbacked, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (336), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (212)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (336), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (213)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageSwapBacked(struct page *page) { __clear_bit(PG_swapbacked, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (337), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (214)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (337), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (215)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageSwapBacked(struct page *page) { __set_bit(PG_swapbacked, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (338), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (216)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (338), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (217)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PagePrivate(struct page *page) { return test_bit(PG_private, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (345), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (218)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPagePrivate(struct page *page) { set_bit(PG_private, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (345), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (219)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPagePrivate(struct page *page) { clear_bit(PG_private, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (345), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (220)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPagePrivate(struct page *page) { __set_bit(PG_private, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (345), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (221)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPagePrivate(struct page *page) { __clear_bit(PG_private, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (346), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (222)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PagePrivate2(struct page *page) { return test_bit(PG_private_2, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (347), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (223)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPagePrivate2(struct page *page) { set_bit(PG_private_2, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (347), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (224)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPagePrivate2(struct page *page) { clear_bit(PG_private_2, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (347), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (225)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestSetPagePrivate2(struct page *page) { return test_and_set_bit(PG_private_2, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (347), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (226)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPagePrivate2(struct page *page) { return test_and_clear_bit(PG_private_2, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (347), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (227)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageOwnerPriv1(struct page *page) { return test_bit(PG_owner_priv_1, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (348), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (228)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageOwnerPriv1(struct page *page) { set_bit(PG_owner_priv_1, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (348), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (229)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageOwnerPriv1(struct page *page) { clear_bit(PG_owner_priv_1, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (348), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (230)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPageOwnerPriv1(struct page *page) { return test_and_clear_bit(PG_owner_priv_1, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (349), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (231)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageWriteback(struct page *page) { return test_bit(PG_writeback, &({ do { if (__builtin_expect(!!(0 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (355), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (232)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (355), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (233)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestSetPageWriteback(struct page *page) { return test_and_set_bit(PG_writeback, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (356), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (234)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (356), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (235)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPageWriteback(struct page *page) { return test_and_clear_bit(PG_writeback, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (356), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (236)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (356), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (237)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageMappedToDisk(struct page *page) { return test_bit(PG_mappedtodisk, &({ do { if (__builtin_expect(!!(0 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (357), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (238)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (357), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (239)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageMappedToDisk(struct page *page) { set_bit(PG_mappedtodisk, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (357), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (240)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (357), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (241)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageMappedToDisk(struct page *page) { clear_bit(PG_mappedtodisk, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (357), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (242)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (357), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (243)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageReclaim(struct page *page) { return test_bit(PG_reclaim, &({ do { if (__builtin_expect(!!(0 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (360), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (244)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (360), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (245)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageReclaim(struct page *page) { set_bit(PG_reclaim, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (360), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (246)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (360), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (247)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageReclaim(struct page *page) { clear_bit(PG_reclaim, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (360), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (248)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (360), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (249)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPageReclaim(struct page *page) { return test_and_clear_bit(PG_reclaim, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (361), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (250)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (361), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (251)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageReadahead(struct page *page) { return test_bit(PG_reclaim, &({ do { if (__builtin_expect(!!(0 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (362), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (252)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (362), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (253)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageReadahead(struct page *page) { set_bit(PG_reclaim, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (362), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (254)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (362), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (255)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageReadahead(struct page *page) { clear_bit(PG_reclaim, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (362), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (256)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (362), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (257)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPageReadahead(struct page *page) { return test_and_clear_bit(PG_reclaim, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (363), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (258)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (363), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (259)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } # 372 "../include/linux/page-flags.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int PageHighMem(const struct page *page) { return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void SetPageHighMem(struct page *page) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ClearPageHighMem(struct page *page) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageSwapCache(struct page *page) { page = compound_head(page); return PageSwapBacked(page) && test_bit(PG_swapcache, &page->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageSwapCache(struct page *page) { set_bit(PG_swapcache, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (384), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (260)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (384), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (261)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageSwapCache(struct page *page) { clear_bit(PG_swapcache, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (385), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (262)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (385), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (263)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageUnevictable(struct page *page) { return test_bit(PG_unevictable, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (390), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (264)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageUnevictable(struct page *page) { set_bit(PG_unevictable, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (390), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (265)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageUnevictable(struct page *page) { clear_bit(PG_unevictable, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (390), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (266)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageUnevictable(struct page *page) { __clear_bit(PG_unevictable, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (391), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (267)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPageUnevictable(struct page *page) { return test_and_clear_bit(PG_unevictable, &({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (392), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (268)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageMlocked(struct page *page) { return test_bit(PG_mlocked, &({ do { if (__builtin_expect(!!(0 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (395), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (269)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (395), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (270)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageMlocked(struct page *page) { set_bit(PG_mlocked, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (395), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (271)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (395), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (272)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageMlocked(struct page *page) { clear_bit(PG_mlocked, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (395), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (273)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (395), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (274)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageMlocked(struct page *page) { __clear_bit(PG_mlocked, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (396), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (275)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (396), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (276)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestSetPageMlocked(struct page *page) { return test_and_set_bit(PG_mlocked, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (397), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (277)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (397), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (278)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPageMlocked(struct page *page) { return test_and_clear_bit(PG_mlocked, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (397), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (279)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (397), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (280)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageUncached(struct page *page) { return test_bit(PG_uncached, &({ do { if (__builtin_expect(!!(0 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (404), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (281)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (404), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (282)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageUncached(struct page *page) { set_bit(PG_uncached, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (404), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (283)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (404), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (284)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageUncached(struct page *page) { clear_bit(PG_uncached, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (404), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (285)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (404), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (286)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageHWPoison(struct page *page) { return test_bit(PG_hwpoison, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (410), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (287)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageHWPoison(struct page *page) { set_bit(PG_hwpoison, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (410), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (288)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageHWPoison(struct page *page) { clear_bit(PG_hwpoison, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (410), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (289)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestSetPageHWPoison(struct page *page) { return test_and_set_bit(PG_hwpoison, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (411), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (290)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPageHWPoison(struct page *page) { return test_and_clear_bit(PG_hwpoison, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (411), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (291)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } extern bool set_hwpoison_free_buddy_page(struct page *page); # 424 "../include/linux/page-flags.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageYoung(struct page *page) { return test_bit(PG_young, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (424), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (292)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageYoung(struct page *page) { set_bit(PG_young, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (425), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (293)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int TestClearPageYoung(struct page *page) { return test_and_clear_bit(PG_young, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (426), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (294)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageIdle(struct page *page) { return test_bit(PG_idle, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (427), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (295)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageIdle(struct page *page) { set_bit(PG_idle, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (427), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (296)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageIdle(struct page *page) { clear_bit(PG_idle, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (427), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (297)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } # 452 "../include/linux/page-flags.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageMappingFlags(struct page *page) { return ((unsigned long)page->mapping & (0x1 | 0x2)) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageAnon(struct page *page) { page = compound_head(page); return ((unsigned long)page->mapping & 0x1) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int __PageMovable(struct page *page) { return ((unsigned long)page->mapping & (0x1 | 0x2)) == 0x2; } # 476 "../include/linux/page-flags.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageKsm(struct page *page) { page = compound_head(page); return ((unsigned long)page->mapping & (0x1 | 0x2)) == (0x1 | 0x2); } u64 stable_page_flags(struct page *page); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int PageUptodate(struct page *page) { int ret; page = compound_head(page); ret = test_bit(PG_uptodate, &(page)->flags); # 501 "../include/linux/page-flags.h" if (ret) __asm__ __volatile__("" : : : "memory"); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageUptodate(struct page *page) { do { if (__builtin_expect(!!(PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (509), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (298)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); __asm__ __volatile__("" : : : "memory"); __set_bit(PG_uptodate, &page->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void SetPageUptodate(struct page *page) { do { if (__builtin_expect(!!(PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (516), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (299)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); __asm__ __volatile__("" : : : "memory"); set_bit(PG_uptodate, &page->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageUptodate(struct page *page) { clear_bit(PG_uptodate, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (526), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (300)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(compound_head(page))), 0)) { dump_page(compound_head(page), "VM_BUG_ON_PAGE(" "PagePoisoned(compound_head(page))"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (526), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (301)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); compound_head(page); }); })->flags); } int test_clear_page_writeback(struct page *page); int __test_set_page_writeback(struct page *page, bool keep_write); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_page_writeback(struct page *page) { __test_set_page_writeback(page, false); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_page_writeback_keepwrite(struct page *page) { __test_set_page_writeback(page, true); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageHead(struct page *page) { return test_bit(PG_head, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (546), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (302)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageHead(struct page *page) { __set_bit(PG_head, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (546), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (303)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageHead(struct page *page) { __clear_bit(PG_head, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (546), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (304)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ClearPageHead(struct page *page) { clear_bit(PG_head, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (546), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (305)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void set_compound_head(struct page *page, struct page *head) { ({ union { typeof(page->compound_head) __val; char __c[1]; } __u = { .__val = ( typeof(page->compound_head)) ((unsigned long)head + 1) }; __write_once_size(&(page->compound_head), __u.__c, sizeof(page->compound_head)); __u.__val; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void clear_compound_head(struct page *page) { ({ union { typeof(page->compound_head) __val; char __c[1]; } __u = { .__val = ( typeof(page->compound_head)) (0) }; __write_once_size(&(page->compound_head), __u.__c, sizeof(page->compound_head)); __u.__val; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ClearPageCompound(struct page *page) { do { if (__builtin_expect(!!(!PageHead(page)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (561), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (306)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); ClearPageHead(page); } int PageHuge(struct page *page); int PageHeadHuge(struct page *page); bool page_huge_active(struct page *page); # 592 "../include/linux/page-flags.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int PageTransHuge(struct page *page) { do { if (__builtin_expect(!!(PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PageTail(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (594), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (307)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); return PageHead(page); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int PageTransCompound(struct page *page) { return PageCompound(page); } # 624 "../include/linux/page-flags.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int PageTransCompoundMap(struct page *page) { return PageTransCompound(page) && atomic_read(&page->_mapcount) < 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int PageTransTail(struct page *page) { return PageTail(page); } # 652 "../include/linux/page-flags.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int PageDoubleMap(struct page *page) { return PageHead(page) && test_bit(PG_double_map, &page[1].flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void SetPageDoubleMap(struct page *page) { do { if (__builtin_expect(!!(!PageHead(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageHead(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (659), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (308)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); set_bit(PG_double_map, &page[1].flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ClearPageDoubleMap(struct page *page) { do { if (__builtin_expect(!!(!PageHead(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageHead(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (665), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (309)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); clear_bit(PG_double_map, &page[1].flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int TestSetPageDoubleMap(struct page *page) { do { if (__builtin_expect(!!(!PageHead(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageHead(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (670), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (310)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); return test_and_set_bit(PG_double_map, &page[1].flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int TestClearPageDoubleMap(struct page *page) { do { if (__builtin_expect(!!(!PageHead(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageHead(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (676), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (311)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); return test_and_clear_bit(PG_double_map, &page[1].flags); } # 711 "../include/linux/page-flags.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_has_type(struct page *page) { return (int)page->page_type < -128; } # 736 "../include/linux/page-flags.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageBuddy(struct page *page) { return ((page->page_type & (0xf0000000 | 0x00000080)) == 0xf0000000); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageBuddy(struct page *page) { do { if (__builtin_expect(!!(!((page->page_type & (0xf0000000 | 0)) == 0xf0000000)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!((page->page_type & (0xf0000000 | 0)) == 0xf0000000)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (736), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (312)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page->page_type &= ~0x00000080; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageBuddy(struct page *page) { do { if (__builtin_expect(!!(!PageBuddy(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageBuddy(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (736), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (313)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page->page_type |= 0x00000080; } # 745 "../include/linux/page-flags.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageOffline(struct page *page) { return ((page->page_type & (0xf0000000 | 0x00000100)) == 0xf0000000); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageOffline(struct page *page) { do { if (__builtin_expect(!!(!((page->page_type & (0xf0000000 | 0)) == 0xf0000000)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!((page->page_type & (0xf0000000 | 0)) == 0xf0000000)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (745), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (314)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page->page_type &= ~0x00000100; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageOffline(struct page *page) { do { if (__builtin_expect(!!(!PageOffline(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageOffline(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (745), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (315)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page->page_type |= 0x00000100; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageKmemcg(struct page *page) { return ((page->page_type & (0xf0000000 | 0x00000200)) == 0xf0000000); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageKmemcg(struct page *page) { do { if (__builtin_expect(!!(!((page->page_type & (0xf0000000 | 0)) == 0xf0000000)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!((page->page_type & (0xf0000000 | 0)) == 0xf0000000)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (751), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (316)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page->page_type &= ~0x00000200; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageKmemcg(struct page *page) { do { if (__builtin_expect(!!(!PageKmemcg(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageKmemcg(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (751), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (317)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page->page_type |= 0x00000200; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageTable(struct page *page) { return ((page->page_type & (0xf0000000 | 0x00000400)) == 0xf0000000); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageTable(struct page *page) { do { if (__builtin_expect(!!(!((page->page_type & (0xf0000000 | 0)) == 0xf0000000)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!((page->page_type & (0xf0000000 | 0)) == 0xf0000000)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (756), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (318)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page->page_type &= ~0x00000400; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageTable(struct page *page) { do { if (__builtin_expect(!!(!PageTable(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageTable(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (756), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (319)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page->page_type |= 0x00000400; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageGuard(struct page *page) { return ((page->page_type & (0xf0000000 | 0x00000800)) == 0xf0000000); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageGuard(struct page *page) { do { if (__builtin_expect(!!(!((page->page_type & (0xf0000000 | 0)) == 0xf0000000)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!((page->page_type & (0xf0000000 | 0)) == 0xf0000000)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (761), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (320)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page->page_type &= ~0x00000800; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageGuard(struct page *page) { do { if (__builtin_expect(!!(!PageGuard(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageGuard(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (761), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (321)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page->page_type |= 0x00000800; } extern bool is_free_buddy_page(struct page *page); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int PageIsolated(struct page *page) { return test_bit(PG_isolated, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (765), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (322)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __SetPageIsolated(struct page *page) { __set_bit(PG_isolated, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (765), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (323)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __ClearPageIsolated(struct page *page) { __clear_bit(PG_isolated, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (765), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (324)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page; })->flags); }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int PageSlabPfmemalloc(struct page *page) { do { if (__builtin_expect(!!(!PageSlab(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageSlab(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (773), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (325)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); return PageActive(page); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void SetPageSlabPfmemalloc(struct page *page) { do { if (__builtin_expect(!!(!PageSlab(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageSlab(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (779), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (326)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); SetPageActive(page); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __ClearPageSlabPfmemalloc(struct page *page) { do { if (__builtin_expect(!!(!PageSlab(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageSlab(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (785), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (327)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); __ClearPageActive(page); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ClearPageSlabPfmemalloc(struct page *page) { do { if (__builtin_expect(!!(!PageSlab(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageSlab(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page-flags.h"), "i" (791), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (328)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ClearPageActive(page); } # 832 "../include/linux/page-flags.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_has_private(struct page *page) { return !!(page->flags & (1UL << PG_private | 1UL << PG_private_2)); } # 23 "../include/linux/mmzone.h" 2 # 41 "../include/linux/mmzone.h" enum migratetype { MIGRATE_UNMOVABLE, MIGRATE_MOVABLE, MIGRATE_RECLAIMABLE, MIGRATE_PCPTYPES, MIGRATE_HIGHATOMIC = MIGRATE_PCPTYPES, # 61 "../include/linux/mmzone.h" MIGRATE_CMA, MIGRATE_ISOLATE, MIGRATE_TYPES }; extern const char * const migratetype_names[MIGRATE_TYPES]; # 80 "../include/linux/mmzone.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_migrate_movable(int mt) { return __builtin_expect(!!((mt) == MIGRATE_CMA), 0) || mt == MIGRATE_MOVABLE; } extern int page_group_by_mobility_disabled; # 98 "../include/linux/mmzone.h" struct free_area { struct list_head free_list[MIGRATE_TYPES]; unsigned long nr_free; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void add_to_free_area(struct page *page, struct free_area *area, int migratetype) { list_add(&page->lru, &area->free_list[migratetype]); area->nr_free++; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void add_to_free_area_tail(struct page *page, struct free_area *area, int migratetype) { list_add_tail(&page->lru, &area->free_list[migratetype]); area->nr_free++; } void add_to_free_area_random(struct page *page, struct free_area *area, int migratetype); # 132 "../include/linux/mmzone.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void move_to_free_area(struct page *page, struct free_area *area, int migratetype) { list_move(&page->lru, &area->free_list[migratetype]); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page *get_page_from_free_area(struct free_area *area, int migratetype) { return ({ struct list_head *head__ = (&area->free_list[migratetype]); struct list_head *pos__ = ({ union { typeof(head__->next) __val; char __c[1]; } __u; if (1) __read_once_size(&(head__->next), __u.__c, sizeof(head__->next)); else __read_once_size_nocheck(&(head__->next), __u.__c, sizeof(head__->next)); do { } while (0); __u.__val; }); pos__ != head__ ? ({ void *__mptr = (void *)(pos__); do { extern void __compiletime_assert_142(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(pos__)), typeof(((struct page *)0)->lru)) && !__builtin_types_compatible_p(typeof(*(pos__)), typeof(void))))) __compiletime_assert_142(); } while (0); ((struct page *)(__mptr - __builtin_offsetof(struct page, lru))); }) : ((void *)0); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void del_page_from_free_area(struct page *page, struct free_area *area) { list_del(&page->lru); __ClearPageBuddy(page); ((page)->private = (0)); area->nr_free--; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool free_area_empty(struct free_area *area, int migratetype) { return list_empty(&area->free_list[migratetype]); } struct pglist_data; # 168 "../include/linux/mmzone.h" struct zone_padding { char x[0]; } __attribute__((__aligned__(1 << (12)))); enum numa_stat_item { NUMA_HIT, NUMA_MISS, NUMA_FOREIGN, NUMA_INTERLEAVE_HIT, NUMA_LOCAL, NUMA_OTHER, NR_VM_NUMA_STAT_ITEMS }; enum zone_stat_item { NR_FREE_PAGES, NR_ZONE_LRU_BASE, NR_ZONE_INACTIVE_ANON = NR_ZONE_LRU_BASE, NR_ZONE_ACTIVE_ANON, NR_ZONE_INACTIVE_FILE, NR_ZONE_ACTIVE_FILE, NR_ZONE_UNEVICTABLE, NR_ZONE_WRITE_PENDING, NR_MLOCK, NR_PAGETABLE, NR_KERNEL_STACK_KB, NR_BOUNCE, NR_ZSPAGES, NR_FREE_CMA_PAGES, NR_VM_ZONE_STAT_ITEMS }; enum node_stat_item { NR_LRU_BASE, NR_INACTIVE_ANON = NR_LRU_BASE, NR_ACTIVE_ANON, NR_INACTIVE_FILE, NR_ACTIVE_FILE, NR_UNEVICTABLE, NR_SLAB_RECLAIMABLE, NR_SLAB_UNRECLAIMABLE, NR_ISOLATED_ANON, NR_ISOLATED_FILE, WORKINGSET_NODES, WORKINGSET_REFAULT, WORKINGSET_ACTIVATE, WORKINGSET_RESTORE, WORKINGSET_NODERECLAIM, NR_ANON_MAPPED, NR_FILE_MAPPED, NR_FILE_PAGES, NR_FILE_DIRTY, NR_WRITEBACK, NR_WRITEBACK_TEMP, NR_SHMEM, NR_SHMEM_THPS, NR_SHMEM_PMDMAPPED, NR_ANON_THPS, NR_UNSTABLE_NFS, NR_VMSCAN_WRITE, NR_VMSCAN_IMMEDIATE, NR_DIRTIED, NR_WRITTEN, NR_KERNEL_MISC_RECLAIMABLE, NR_VM_NODE_STAT_ITEMS }; # 260 "../include/linux/mmzone.h" enum lru_list { LRU_INACTIVE_ANON = 0, LRU_ACTIVE_ANON = 0 + 1, LRU_INACTIVE_FILE = 0 + 2, LRU_ACTIVE_FILE = 0 + 2 + 1, LRU_UNEVICTABLE, NR_LRU_LISTS }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int is_file_lru(enum lru_list lru) { return (lru == LRU_INACTIVE_FILE || lru == LRU_ACTIVE_FILE); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int is_active_lru(enum lru_list lru) { return (lru == LRU_ACTIVE_ANON || lru == LRU_ACTIVE_FILE); } struct zone_reclaim_stat { # 292 "../include/linux/mmzone.h" unsigned long recent_rotated[2]; unsigned long recent_scanned[2]; }; struct lruvec { struct list_head lists[NR_LRU_LISTS]; struct zone_reclaim_stat reclaim_stat; atomic_long_t inactive_age; unsigned long refaults; struct pglist_data *pgdat; }; # 316 "../include/linux/mmzone.h" typedef unsigned isolate_mode_t; enum zone_watermarks { WMARK_MIN, WMARK_LOW, WMARK_HIGH, NR_WMARK }; struct per_cpu_pages { int count; int high; int batch; struct list_head lists[MIGRATE_PCPTYPES]; }; struct per_cpu_pageset { struct per_cpu_pages pcp; s8 expire; u16 vm_numa_stat_diff[NR_VM_NUMA_STAT_ITEMS]; s8 stat_threshold; s8 vm_stat_diff[NR_VM_ZONE_STAT_ITEMS]; }; struct per_cpu_nodestat { s8 stat_threshold; s8 vm_node_stat_diff[NR_VM_NODE_STAT_ITEMS]; }; enum zone_type { # 378 "../include/linux/mmzone.h" ZONE_DMA, ZONE_DMA32, ZONE_NORMAL, # 405 "../include/linux/mmzone.h" ZONE_MOVABLE, ZONE_DEVICE, __MAX_NR_ZONES }; struct zone { unsigned long _watermark[NR_WMARK]; unsigned long watermark_boost; unsigned long nr_reserved_highatomic; # 433 "../include/linux/mmzone.h" long lowmem_reserve[5]; int node; struct pglist_data *zone_pgdat; struct per_cpu_pageset *pageset; # 450 "../include/linux/mmzone.h" unsigned long zone_start_pfn; # 487 "../include/linux/mmzone.h" atomic_long_t managed_pages; unsigned long spanned_pages; unsigned long present_pages; const char *name; unsigned long nr_isolate_pageblock; seqlock_t span_seqlock; int initialized; struct zone_padding _pad1_; struct free_area free_area[11]; unsigned long flags; spinlock_t lock; struct zone_padding _pad2_; unsigned long percpu_drift_mark; unsigned long compact_cached_free_pfn; unsigned long compact_cached_migrate_pfn[2]; unsigned long compact_init_migrate_pfn; unsigned long compact_init_free_pfn; # 546 "../include/linux/mmzone.h" unsigned int compact_considered; unsigned int compact_defer_shift; int compact_order_failed; bool compact_blockskip_flush; bool contiguous; struct zone_padding _pad3_; atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS]; atomic_long_t vm_numa_stat[NR_VM_NUMA_STAT_ITEMS]; } __attribute__((__aligned__(1 << (12)))); enum pgdat_flags { PGDAT_CONGESTED, PGDAT_DIRTY, PGDAT_WRITEBACK, PGDAT_RECLAIM_LOCKED, }; enum zone_flags { ZONE_BOOSTED_WATERMARK, }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long zone_managed_pages(struct zone *zone) { return (unsigned long)atomic_long_read(&zone->managed_pages); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long zone_end_pfn(const struct zone *zone) { return zone->zone_start_pfn + zone->spanned_pages; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool zone_spans_pfn(const struct zone *zone, unsigned long pfn) { return zone->zone_start_pfn <= pfn && pfn < zone_end_pfn(zone); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool zone_is_initialized(struct zone *zone) { return zone->initialized; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool zone_is_empty(struct zone *zone) { return zone->spanned_pages == 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool zone_intersects(struct zone *zone, unsigned long start_pfn, unsigned long nr_pages) { if (zone_is_empty(zone)) return false; if (start_pfn >= zone_end_pfn(zone) || start_pfn + nr_pages <= zone->zone_start_pfn) return false; return true; } # 635 "../include/linux/mmzone.h" enum { ZONELIST_FALLBACK, ZONELIST_NOFALLBACK, MAX_ZONELISTS }; struct zoneref { struct zone *zone; int zone_idx; }; # 670 "../include/linux/mmzone.h" struct zonelist { struct zoneref _zonerefs[((1 << 10) * 5) + 1]; }; extern struct page *mem_map; # 687 "../include/linux/mmzone.h" struct bootmem_data; typedef struct pglist_data { struct zone node_zones[5]; struct zonelist node_zonelists[MAX_ZONELISTS]; int nr_zones; # 709 "../include/linux/mmzone.h" spinlock_t node_size_lock; unsigned long node_start_pfn; unsigned long node_present_pages; unsigned long node_spanned_pages; int node_id; wait_queue_head_t kswapd_wait; wait_queue_head_t pfmemalloc_wait; struct task_struct *kswapd; int kswapd_order; enum zone_type kswapd_classzone_idx; int kswapd_failures; int kcompactd_max_order; enum zone_type kcompactd_classzone_idx; wait_queue_head_t kcompactd_wait; struct task_struct *kcompactd; unsigned long totalreserve_pages; unsigned long min_unmapped_pages; unsigned long min_slab_pages; struct zone_padding _pad1_; spinlock_t lru_lock; unsigned long first_deferred_pfn; spinlock_t split_queue_lock; struct list_head split_queue; unsigned long split_queue_len; struct lruvec lruvec; unsigned long flags; struct zone_padding _pad2_; struct per_cpu_nodestat *per_cpu_nodestats; atomic_long_t vm_stat[NR_VM_NODE_STAT_ITEMS]; } pg_data_t; # 787 "../include/linux/mmzone.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct lruvec *node_lruvec(struct pglist_data *pgdat) { return &pgdat->lruvec; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long pgdat_end_pfn(pg_data_t *pgdat) { return pgdat->node_start_pfn + pgdat->node_spanned_pages; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pgdat_is_empty(pg_data_t *pgdat) { return !pgdat->node_start_pfn && !pgdat->node_spanned_pages; } # 1 "../include/linux/memory_hotplug.h" 1 # 1 "../include/linux/mmzone.h" 1 # 6 "../include/linux/memory_hotplug.h" 2 struct page; struct zone; struct pglist_data; struct mem_section; struct memory_block; struct resource; struct vmem_altmap; # 40 "../include/linux/memory_hotplug.h" enum { MEMORY_HOTPLUG_MIN_BOOTMEM_TYPE = 12, SECTION_INFO = MEMORY_HOTPLUG_MIN_BOOTMEM_TYPE, MIX_SECTION_INFO, NODE_INFO, MEMORY_HOTPLUG_MAX_BOOTMEM_TYPE = NODE_INFO, }; enum { MMOP_OFFLINE = -1, MMOP_ONLINE_KEEP, MMOP_ONLINE_KERNEL, MMOP_ONLINE_MOVABLE, }; struct mhp_restrictions { unsigned long flags; struct vmem_altmap *altmap; }; # 73 "../include/linux/memory_hotplug.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned zone_span_seqbegin(struct zone *zone) { return read_seqbegin(&zone->span_seqlock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int zone_span_seqretry(struct zone *zone, unsigned iv) { return read_seqretry(&zone->span_seqlock, iv); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void zone_span_writelock(struct zone *zone) { write_seqlock(&zone->span_seqlock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void zone_span_writeunlock(struct zone *zone) { write_sequnlock(&zone->span_seqlock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void zone_seqlock_init(struct zone *zone) { do { do { static struct lock_class_key __key; __seqcount_init((&(&zone->span_seqlock)->seqcount), "&(&zone->span_seqlock)->seqcount", &__key); } while (0); do { spinlock_check(&(&zone->span_seqlock)->lock); do { static struct lock_class_key __key; __raw_spin_lock_init((&(&(&zone->span_seqlock)->lock)->rlock), "&(&(&zone->span_seqlock)->lock)->rlock", &__key); } while (0); } while (0); } while (0); } extern int zone_grow_free_lists(struct zone *zone, unsigned long new_nr_pages); extern int zone_grow_waitqueues(struct zone *zone, unsigned long nr_pages); extern int add_one_highpage(struct page *page, int pfn, int bad_ppro); extern int online_pages(unsigned long, unsigned long, int); extern int test_pages_in_a_zone(unsigned long start_pfn, unsigned long end_pfn, unsigned long *valid_start, unsigned long *valid_end); extern unsigned long __offline_isolated_pages(unsigned long start_pfn, unsigned long end_pfn); typedef void (*online_page_callback_t)(struct page *page, unsigned int order); extern int set_online_page_callback(online_page_callback_t callback); extern int restore_online_page_callback(online_page_callback_t callback); extern void __online_page_set_limits(struct page *page); extern void __online_page_increment_counters(struct page *page); extern void __online_page_free(struct page *page); extern int try_online_node(int nid); extern int arch_add_memory(int nid, u64 start, u64 size, struct mhp_restrictions *restrictions); extern u64 max_mem_size; extern bool memhp_auto_online; extern bool movable_node_enabled; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool movable_node_is_enabled(void) { return movable_node_enabled; } extern void arch_remove_memory(int nid, u64 start, u64 size, struct vmem_altmap *altmap); extern void __remove_pages(struct zone *zone, unsigned long start_pfn, unsigned long nr_pages, struct vmem_altmap *altmap); extern int __add_pages(int nid, unsigned long start_pfn, unsigned long nr_pages, struct mhp_restrictions *restrictions); # 142 "../include/linux/memory_hotplug.h" int add_pages(int nid, unsigned long start_pfn, unsigned long nr_pages, struct mhp_restrictions *restrictions); extern int memory_add_physaddr_to_nid(u64 start); # 192 "../include/linux/memory_hotplug.h" extern pg_data_t *node_data[]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_refresh_nodedata(int nid, pg_data_t *pgdat) { node_data[nid] = pgdat; } # 216 "../include/linux/memory_hotplug.h" extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) register_page_bootmem_info_node(struct pglist_data *pgdat); extern void put_page_bootmem(struct page *page); extern void get_page_bootmem(unsigned long ingo, struct page *page, unsigned long type); void get_online_mems(void); void put_online_mems(void); void mem_hotplug_begin(void); void mem_hotplug_done(void); extern void set_zone_contiguous(struct zone *zone); extern void clear_zone_contiguous(struct zone *zone); # 288 "../include/linux/memory_hotplug.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pgdat_resize_lock(struct pglist_data *pgdat, unsigned long *flags) { do { do { ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); *flags = _raw_spin_lock_irqsave(spinlock_check(&pgdat->node_size_lock)); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pgdat_resize_unlock(struct pglist_data *pgdat, unsigned long *flags) { spin_unlock_irqrestore(&pgdat->node_size_lock, *flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pgdat_resize_init(struct pglist_data *pgdat) { do { spinlock_check(&pgdat->node_size_lock); do { static struct lock_class_key __key; __raw_spin_lock_init((&(&pgdat->node_size_lock)->rlock), "&(&pgdat->node_size_lock)->rlock", &__key); } while (0); } while (0); } # 314 "../include/linux/memory_hotplug.h" extern bool is_mem_section_removable(unsigned long pfn, unsigned long nr_pages); extern void try_offline_node(int nid); extern int offline_pages(unsigned long start_pfn, unsigned long nr_pages); extern int remove_memory(int nid, u64 start, u64 size); extern void __remove_memory(int nid, u64 start, u64 size); # 342 "../include/linux/memory_hotplug.h" extern void __attribute__((__section__(".ref.text"))) __attribute__((__noinline__)) free_area_init_core_hotplug(int nid); extern int __add_memory(int nid, u64 start, u64 size); extern int add_memory(int nid, u64 start, u64 size); extern int add_memory_resource(int nid, struct resource *resource); extern void move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn, unsigned long nr_pages, struct vmem_altmap *altmap); extern bool is_memblock_offlined(struct memory_block *mem); extern int sparse_add_section(int nid, unsigned long pfn, unsigned long nr_pages, struct vmem_altmap *altmap); extern void sparse_remove_section(struct mem_section *ms, unsigned long pfn, unsigned long nr_pages, unsigned long map_offset, struct vmem_altmap *altmap); extern struct page *sparse_decode_mem_map(unsigned long coded_mem_map, unsigned long pnum); extern bool allow_online_pfn_range(int nid, unsigned long pfn, unsigned long nr_pages, int online_type); extern struct zone *zone_for_pfn_range(int online_type, int nid, unsigned start_pfn, unsigned long nr_pages); # 803 "../include/linux/mmzone.h" 2 void build_all_zonelists(pg_data_t *pgdat); void wakeup_kswapd(struct zone *zone, gfp_t gfp_mask, int order, enum zone_type classzone_idx); bool __zone_watermark_ok(struct zone *z, unsigned int order, unsigned long mark, int classzone_idx, unsigned int alloc_flags, long free_pages); bool zone_watermark_ok(struct zone *z, unsigned int order, unsigned long mark, int classzone_idx, unsigned int alloc_flags); bool zone_watermark_ok_safe(struct zone *z, unsigned int order, unsigned long mark, int classzone_idx); enum memmap_context { MEMMAP_EARLY, MEMMAP_HOTPLUG, }; extern void init_currently_empty_zone(struct zone *zone, unsigned long start_pfn, unsigned long size); extern void lruvec_init(struct lruvec *lruvec); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct pglist_data *lruvec_pgdat(struct lruvec *lruvec) { return lruvec->pgdat; } extern unsigned long lruvec_lru_size(struct lruvec *lruvec, enum lru_list lru, int zone_idx); void memory_present(int nid, unsigned long start, unsigned long end); void memblocks_present(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int local_memory_node(int node_id) { return node_id; }; # 864 "../include/linux/mmzone.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool managed_zone(struct zone *zone) { return zone_managed_pages(zone); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool populated_zone(struct zone *zone) { return zone->present_pages; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int zone_to_nid(struct zone *zone) { return zone->node; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void zone_set_nid(struct zone *zone, int nid) { zone->node = nid; } # 894 "../include/linux/mmzone.h" extern int movable_zone; # 907 "../include/linux/mmzone.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int is_highmem_idx(enum zone_type idx) { return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int is_highmem(struct zone *zone) { return 0; } struct ctl_table; int min_free_kbytes_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); int watermark_boost_factor_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); int watermark_scale_factor_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); extern int sysctl_lowmem_reserve_ratio[5]; int lowmem_reserve_ratio_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); int percpu_pagelist_fraction_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); int sysctl_min_unmapped_ratio_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); int sysctl_min_slab_ratio_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); extern int numa_zonelist_order_handler(struct ctl_table *, int, void *, size_t *, loff_t *); extern char numa_zonelist_order[]; # 963 "../include/linux/mmzone.h" # 1 "../arch/x86/include/asm/mmzone.h" 1 # 1 "../arch/x86/include/asm/mmzone_64.h" 1 # 11 "../arch/x86/include/asm/mmzone_64.h" # 1 "../arch/x86/include/asm/smp.h" 1 # 12 "../arch/x86/include/asm/smp.h" # 1 "../arch/x86/include/asm/mpspec.h" 1 # 1 "../arch/x86/include/asm/mpspec_def.h" 1 # 22 "../arch/x86/include/asm/mpspec_def.h" struct mpf_intel { char signature[4]; unsigned int physptr; unsigned char length; unsigned char specification; unsigned char checksum; unsigned char feature1; unsigned char feature2; unsigned char feature3; unsigned char feature4; unsigned char feature5; }; struct mpc_table { char signature[4]; unsigned short length; char spec; char checksum; char oem[8]; char productid[12]; unsigned int oemptr; unsigned short oemsize; unsigned short oemcount; unsigned int lapic; unsigned int reserved; }; # 68 "../arch/x86/include/asm/mpspec_def.h" struct mpc_cpu { unsigned char type; unsigned char apicid; unsigned char apicver; unsigned char cpuflag; unsigned int cpufeature; unsigned int featureflag; unsigned int reserved[2]; }; struct mpc_bus { unsigned char type; unsigned char busid; unsigned char bustype[6]; }; # 106 "../arch/x86/include/asm/mpspec_def.h" struct mpc_ioapic { unsigned char type; unsigned char apicid; unsigned char apicver; unsigned char flags; unsigned int apicaddr; }; struct mpc_intsrc { unsigned char type; unsigned char irqtype; unsigned short irqflag; unsigned char srcbus; unsigned char srcbusirq; unsigned char dstapic; unsigned char dstirq; }; enum mp_irq_source_types { mp_INT = 0, mp_NMI = 1, mp_SMI = 2, mp_ExtINT = 3 }; # 145 "../arch/x86/include/asm/mpspec_def.h" struct mpc_lintsrc { unsigned char type; unsigned char irqtype; unsigned short irqflag; unsigned char srcbusid; unsigned char srcbusirq; unsigned char destapic; unsigned char destapiclint; }; struct mpc_oemtable { char signature[4]; unsigned short length; char rev; char checksum; char mpc[8]; }; # 177 "../arch/x86/include/asm/mpspec_def.h" enum mp_bustype { MP_BUS_ISA = 1, MP_BUS_EISA, MP_BUS_PCI, }; # 7 "../arch/x86/include/asm/mpspec.h" 2 # 1 "../arch/x86/include/asm/x86_init.h" 1 struct mpc_bus; struct mpc_cpu; struct mpc_table; struct cpuinfo_x86; # 23 "../arch/x86/include/asm/x86_init.h" struct x86_init_mpparse { void (*mpc_record)(unsigned int mode); void (*setup_ioapic_ids)(void); int (*mpc_apic_id)(struct mpc_cpu *m); void (*smp_read_mpc_oem)(struct mpc_table *mpc); void (*mpc_oem_pci_bus)(struct mpc_bus *m); void (*mpc_oem_bus_info)(struct mpc_bus *m, char *name); void (*find_smp_config)(void); void (*get_smp_config)(unsigned int early); }; # 42 "../arch/x86/include/asm/x86_init.h" struct x86_init_resources { void (*probe_roms)(void); void (*reserve_resources)(void); char *(*memory_setup)(void); }; # 56 "../arch/x86/include/asm/x86_init.h" struct x86_init_irqs { void (*pre_vector_init)(void); void (*intr_init)(void); void (*trap_init)(void); void (*intr_mode_init)(void); }; struct x86_init_oem { void (*arch_setup)(void); void (*banner)(void); }; # 80 "../arch/x86/include/asm/x86_init.h" struct x86_init_paging { void (*pagetable_init)(void); }; # 91 "../arch/x86/include/asm/x86_init.h" struct x86_init_timers { void (*setup_percpu_clockev)(void); void (*timer_init)(void); void (*wallclock_init)(void); }; struct x86_init_iommu { int (*iommu_init)(void); }; # 112 "../arch/x86/include/asm/x86_init.h" struct x86_init_pci { int (*arch_init)(void); int (*init)(void); void (*init_irq)(void); void (*fixup_irqs)(void); }; # 127 "../arch/x86/include/asm/x86_init.h" struct x86_hyper_init { void (*init_platform)(void); void (*guest_late_init)(void); bool (*x2apic_available)(void); void (*init_mem_mapping)(void); void (*init_after_bootmem)(void); }; struct x86_init_acpi { u64 (*get_root_pointer)(void); void (*reduced_hw_early_init)(void); }; struct x86_init_ops { struct x86_init_resources resources; struct x86_init_mpparse mpparse; struct x86_init_irqs irqs; struct x86_init_oem oem; struct x86_init_paging paging; struct x86_init_timers timers; struct x86_init_iommu iommu; struct x86_init_pci pci; struct x86_hyper_init hyper; struct x86_init_acpi acpi; }; struct x86_cpuinit_ops { void (*setup_percpu_clockev)(void); void (*early_percpu_clock_init)(void); void (*fixup_cpu_id)(struct cpuinfo_x86 *c, int node); }; struct timespec64; # 194 "../arch/x86/include/asm/x86_init.h" struct x86_legacy_devices { int pnpbios; }; # 207 "../arch/x86/include/asm/x86_init.h" enum x86_legacy_i8042_state { X86_LEGACY_I8042_PLATFORM_ABSENT, X86_LEGACY_I8042_FIRMWARE_ABSENT, X86_LEGACY_I8042_EXPECTED_PRESENT, }; # 225 "../arch/x86/include/asm/x86_init.h" struct x86_legacy_features { enum x86_legacy_i8042_state i8042; int rtc; int warm_reset; int no_vga; int reserve_bios_regions; struct x86_legacy_devices devices; }; struct x86_hyper_runtime { void (*pin_vcpu)(int cpu); }; # 264 "../arch/x86/include/asm/x86_init.h" struct x86_platform_ops { unsigned long (*calibrate_cpu)(void); unsigned long (*calibrate_tsc)(void); void (*get_wallclock)(struct timespec64 *ts); int (*set_wallclock)(const struct timespec64 *ts); void (*iommu_shutdown)(void); bool (*is_untracked_pat_range)(u64 start, u64 end); void (*nmi_init)(void); unsigned char (*get_nmi_reason)(void); void (*save_sched_clock_state)(void); void (*restore_sched_clock_state)(void); void (*apic_post_init)(void); struct x86_legacy_features legacy; void (*set_legacy_features)(void); struct x86_hyper_runtime hyper; }; struct pci_dev; struct x86_msi_ops { int (*setup_msi_irqs)(struct pci_dev *dev, int nvec, int type); void (*teardown_msi_irq)(unsigned int irq); void (*teardown_msi_irqs)(struct pci_dev *dev); void (*restore_msi_irqs)(struct pci_dev *dev); }; struct x86_apic_ops { unsigned int (*io_apic_read) (unsigned int apic, unsigned int reg); void (*restore)(void); }; extern struct x86_init_ops x86_init; extern struct x86_cpuinit_ops x86_cpuinit; extern struct x86_platform_ops x86_platform; extern struct x86_msi_ops x86_msi; extern struct x86_apic_ops x86_apic_ops; extern void x86_early_init_platform_quirks(void); extern void x86_init_noop(void); extern void x86_init_uint_noop(unsigned int unused); extern bool x86_pnpbios_disabled(void); # 8 "../arch/x86/include/asm/mpspec.h" 2 # 1 "../arch/x86/include/asm/apicdef.h" 1 # 179 "../arch/x86/include/asm/apicdef.h" struct local_apic { struct { unsigned int __reserved[4]; } __reserved_01; struct { unsigned int __reserved[4]; } __reserved_02; struct { unsigned int __reserved_1 : 24, phys_apic_id : 4, __reserved_2 : 4; unsigned int __reserved[3]; } id; const struct { unsigned int version : 8, __reserved_1 : 8, max_lvt : 8, __reserved_2 : 8; unsigned int __reserved[3]; } version; struct { unsigned int __reserved[4]; } __reserved_03; struct { unsigned int __reserved[4]; } __reserved_04; struct { unsigned int __reserved[4]; } __reserved_05; struct { unsigned int __reserved[4]; } __reserved_06; struct { unsigned int priority : 8, __reserved_1 : 24; unsigned int __reserved_2[3]; } tpr; const struct { unsigned int priority : 8, __reserved_1 : 24; unsigned int __reserved_2[3]; } apr; const struct { unsigned int priority : 8, __reserved_1 : 24; unsigned int __reserved_2[3]; } ppr; struct { unsigned int eoi; unsigned int __reserved[3]; } eoi; struct { unsigned int __reserved[4]; } __reserved_07; struct { unsigned int __reserved_1 : 24, logical_dest : 8; unsigned int __reserved_2[3]; } ldr; struct { unsigned int __reserved_1 : 28, model : 4; unsigned int __reserved_2[3]; } dfr; struct { unsigned int spurious_vector : 8, apic_enabled : 1, focus_cpu : 1, __reserved_2 : 22; unsigned int __reserved_3[3]; } svr; struct { unsigned int bitfield; unsigned int __reserved[3]; } isr [8]; struct { unsigned int bitfield; unsigned int __reserved[3]; } tmr [8]; struct { unsigned int bitfield; unsigned int __reserved[3]; } irr [8]; union { struct { unsigned int send_cs_error : 1, receive_cs_error : 1, send_accept_error : 1, receive_accept_error : 1, __reserved_1 : 1, send_illegal_vector : 1, receive_illegal_vector : 1, illegal_register_address : 1, __reserved_2 : 24; unsigned int __reserved_3[3]; } error_bits; struct { unsigned int errors; unsigned int __reserved_3[3]; } all_errors; } esr; struct { unsigned int __reserved[4]; } __reserved_08; struct { unsigned int __reserved[4]; } __reserved_09; struct { unsigned int __reserved[4]; } __reserved_10; struct { unsigned int __reserved[4]; } __reserved_11; struct { unsigned int __reserved[4]; } __reserved_12; struct { unsigned int __reserved[4]; } __reserved_13; struct { unsigned int __reserved[4]; } __reserved_14; struct { unsigned int vector : 8, delivery_mode : 3, destination_mode : 1, delivery_status : 1, __reserved_1 : 1, level : 1, trigger : 1, __reserved_2 : 2, shorthand : 2, __reserved_3 : 12; unsigned int __reserved_4[3]; } icr1; struct { union { unsigned int __reserved_1 : 24, phys_dest : 4, __reserved_2 : 4; unsigned int __reserved_3 : 24, logical_dest : 8; } dest; unsigned int __reserved_4[3]; } icr2; struct { unsigned int vector : 8, __reserved_1 : 4, delivery_status : 1, __reserved_2 : 3, mask : 1, timer_mode : 1, __reserved_3 : 14; unsigned int __reserved_4[3]; } lvt_timer; struct { unsigned int vector : 8, delivery_mode : 3, __reserved_1 : 1, delivery_status : 1, __reserved_2 : 3, mask : 1, __reserved_3 : 15; unsigned int __reserved_4[3]; } lvt_thermal; struct { unsigned int vector : 8, delivery_mode : 3, __reserved_1 : 1, delivery_status : 1, __reserved_2 : 3, mask : 1, __reserved_3 : 15; unsigned int __reserved_4[3]; } lvt_pc; struct { unsigned int vector : 8, delivery_mode : 3, __reserved_1 : 1, delivery_status : 1, polarity : 1, remote_irr : 1, trigger : 1, mask : 1, __reserved_2 : 15; unsigned int __reserved_3[3]; } lvt_lint0; struct { unsigned int vector : 8, delivery_mode : 3, __reserved_1 : 1, delivery_status : 1, polarity : 1, remote_irr : 1, trigger : 1, mask : 1, __reserved_2 : 15; unsigned int __reserved_3[3]; } lvt_lint1; struct { unsigned int vector : 8, __reserved_1 : 4, delivery_status : 1, __reserved_2 : 3, mask : 1, __reserved_3 : 15; unsigned int __reserved_4[3]; } lvt_error; struct { unsigned int initial_count; unsigned int __reserved_2[3]; } timer_icr; const struct { unsigned int curr_count; unsigned int __reserved_2[3]; } timer_ccr; struct { unsigned int __reserved[4]; } __reserved_16; struct { unsigned int __reserved[4]; } __reserved_17; struct { unsigned int __reserved[4]; } __reserved_18; struct { unsigned int __reserved[4]; } __reserved_19; struct { unsigned int divisor : 4, __reserved_1 : 28; unsigned int __reserved_2[3]; } timer_dcr; struct { unsigned int __reserved[4]; } __reserved_20; } __attribute__ ((packed)); # 435 "../arch/x86/include/asm/apicdef.h" enum ioapic_irq_destination_types { dest_Fixed = 0, dest_LowestPrio = 1, dest_SMI = 2, dest__reserved_1 = 3, dest_NMI = 4, dest_INIT = 5, dest__reserved_2 = 6, dest_ExtINT = 7 }; # 9 "../arch/x86/include/asm/mpspec.h" 2 extern int pic_mode; # 37 "../arch/x86/include/asm/mpspec.h" extern int mp_bus_id_to_type[256]; extern unsigned long mp_bus_not_pci[(((256) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8)))]; extern unsigned int boot_cpu_physical_apicid; extern u8 boot_cpu_apic_version; extern unsigned long mp_lapic_addr; extern int smp_found_config; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void get_smp_config(void) { x86_init.mpparse.get_smp_config(0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void early_get_smp_config(void) { x86_init.mpparse.get_smp_config(1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void find_smp_config(void) { x86_init.mpparse.find_smp_config(); } extern void e820__memblock_alloc_reserved_mpc_new(void); extern int enable_update_mptable; extern int default_mpc_apic_id(struct mpc_cpu *m); extern void default_smp_read_mpc_oem(struct mpc_table *mpc); extern void default_mpc_oem_bus_info(struct mpc_bus *m, char *str); extern void default_find_smp_config(void); extern void default_get_smp_config(unsigned int early); # 89 "../arch/x86/include/asm/mpspec.h" int generic_processor_info(int apicid, int version); struct physid_mask { unsigned long mask[(((32768) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8)))]; }; typedef struct physid_mask physid_mask_t; # 132 "../arch/x86/include/asm/mpspec.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long physids_coerce(physid_mask_t *map) { return map->mask[0]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void physids_promote(unsigned long physids, physid_mask_t *map) { bitmap_zero((*map).mask, 32768); map->mask[0] = physids; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void physid_set_mask_of_physid(int physid, physid_mask_t *map) { bitmap_zero((*map).mask, 32768); set_bit(physid, (*map).mask); } extern physid_mask_t phys_cpu_present_map; # 13 "../arch/x86/include/asm/smp.h" 2 # 1 "../arch/x86/include/asm/apic.h" 1 # 11 "../arch/x86/include/asm/apic.h" # 1 "../arch/x86/include/asm/fixmap.h" 1 # 29 "../arch/x86/include/asm/fixmap.h" # 1 "../arch/x86/include/asm/acpi.h" 1 # 1 "../include/acpi/pdc_intel.h" 1 # 10 "../arch/x86/include/asm/acpi.h" 2 # 1 "../arch/x86/include/asm/numa.h" 1 # 1 "../arch/x86/include/asm/topology.h" 1 # 42 "../arch/x86/include/asm/topology.h" extern __attribute__((section(".discard"), unused)) char __pcpu_scope_x86_cpu_to_node_map; extern __attribute__((section(".data..percpu" ""))) __typeof__(int) x86_cpu_to_node_map; extern __typeof__(int) *x86_cpu_to_node_map_early_ptr; extern __typeof__(int) x86_cpu_to_node_map_early_map[]; extern int __cpu_to_node(int cpu); extern int early_cpu_to_node(int cpu); # 64 "../arch/x86/include/asm/topology.h" extern cpumask_var_t node_to_cpumask_map[(1 << 10)]; extern const struct cpumask *cpumask_of_node(int node); # 76 "../arch/x86/include/asm/topology.h" extern void setup_node_to_cpumask_map(void); extern int __node_distance(int, int); # 103 "../arch/x86/include/asm/topology.h" # 1 "../include/asm-generic/topology.h" 1 # 104 "../arch/x86/include/asm/topology.h" 2 extern const struct cpumask *cpu_coregroup_mask(int cpu); # 118 "../arch/x86/include/asm/topology.h" extern unsigned int __max_logical_packages; extern unsigned int __max_die_per_package; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int topology_max_die_per_package(void) { return __max_die_per_package; } extern int __max_smt_threads; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int topology_max_smt_threads(void) { return __max_smt_threads; } int topology_update_package_map(unsigned int apicid, unsigned int cpu); int topology_update_die_map(unsigned int dieid, unsigned int cpu); int topology_phys_to_logical_pkg(unsigned int pkg); int topology_phys_to_logical_die(unsigned int die, unsigned int cpu); bool topology_is_primary_thread(unsigned int cpu); bool topology_smt_supported(void); # 156 "../arch/x86/include/asm/topology.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_fix_phys_package_id(int num, u32 slot) { } struct pci_bus; int x86_pci_root_bus_node(int bus); void x86_pci_root_bus_resources(int bus, struct list_head *resources); extern bool x86_topology_update; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_sched_core_priority; extern __attribute__((section(".data..percpu" "..read_mostly"))) __typeof__(int) sched_core_priority; extern unsigned int __attribute__((__section__(".data..read_mostly"))) sysctl_sched_itmt_enabled; void sched_set_itmt_core_prio(int prio, int core_cpu); int sched_set_itmt_support(void); void sched_clear_itmt_support(void); # 8 "../arch/x86/include/asm/numa.h" 2 # 21 "../arch/x86/include/asm/numa.h" extern int numa_off; # 31 "../arch/x86/include/asm/numa.h" extern s16 __apicid_to_node[32768]; extern nodemask_t numa_nodes_parsed __attribute__((__section__(".init.data"))); extern int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) numa_add_memblk(int nodeid, u64 start, u64 end); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) numa_set_distance(int from, int to, int distance); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_apicid_to_node(int apicid, s16 node) { __apicid_to_node[apicid] = node; } extern int numa_cpu_node(int cpu); # 60 "../arch/x86/include/asm/numa.h" extern void numa_set_node(int cpu, int node); extern void numa_clear_node(int cpu); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) init_cpu_to_node(void); extern void numa_add_cpu(int cpu); extern void numa_remove_cpu(int cpu); # 74 "../arch/x86/include/asm/numa.h" void debug_cpumask_set_cpu(int cpu, int node, bool enable); void numa_emu_cmdline(char *); # 12 "../arch/x86/include/asm/acpi.h" 2 # 1 "../arch/x86/include/asm/fixmap.h" 1 # 13 "../arch/x86/include/asm/acpi.h" 2 # 1 "../arch/x86/include/asm/realmode.h" 1 # 15 "../arch/x86/include/asm/realmode.h" # 1 "../arch/x86/include/asm/io.h" 1 # 44 "../arch/x86/include/asm/io.h" # 1 "./arch/x86/include/generated/asm/early_ioremap.h" 1 # 1 "../include/asm-generic/early_ioremap.h" 1 # 11 "../include/asm-generic/early_ioremap.h" extern void *early_ioremap(resource_size_t phys_addr, unsigned long size); extern void *early_memremap(resource_size_t phys_addr, unsigned long size); extern void *early_memremap_ro(resource_size_t phys_addr, unsigned long size); extern void *early_memremap_prot(resource_size_t phys_addr, unsigned long size, unsigned long prot_val); extern void early_iounmap(void *addr, unsigned long size); extern void early_memunmap(void *addr, unsigned long size); extern void early_ioremap_shutdown(void); extern void early_ioremap_init(void); extern void early_ioremap_setup(void); extern void early_ioremap_reset(void); extern void copy_from_early_mem(void *dest, phys_addr_t src, unsigned long size); # 2 "./arch/x86/include/generated/asm/early_ioremap.h" 2 # 45 "../arch/x86/include/asm/io.h" 2 # 57 "../arch/x86/include/asm/io.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char readb(const volatile void *addr) { unsigned char ret; asm volatile("mov" "b" " %1,%0":"=q" (ret) :"m" (*(volatile unsigned char *)addr) :"memory"); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned short readw(const volatile void *addr) { unsigned short ret; asm volatile("mov" "w" " %1,%0":"=r" (ret) :"m" (*(volatile unsigned short *)addr) :"memory"); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int readl(const volatile void *addr) { unsigned int ret; asm volatile("mov" "l" " %1,%0":"=r" (ret) :"m" (*(volatile unsigned int *)addr) :"memory"); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char __readb(const volatile void *addr) { unsigned char ret; asm volatile("mov" "b" " %1,%0":"=q" (ret) :"m" (*(volatile unsigned char *)addr) ); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned short __readw(const volatile void *addr) { unsigned short ret; asm volatile("mov" "w" " %1,%0":"=r" (ret) :"m" (*(volatile unsigned short *)addr) ); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int __readl(const volatile void *addr) { unsigned int ret; asm volatile("mov" "l" " %1,%0":"=r" (ret) :"m" (*(volatile unsigned int *)addr) ); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void writeb(unsigned char val, volatile void *addr) { asm volatile("mov" "b" " %0,%1": :"q" (val), "m" (*(volatile unsigned char *)addr) :"memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void writew(unsigned short val, volatile void *addr) { asm volatile("mov" "w" " %0,%1": :"r" (val), "m" (*(volatile unsigned short *)addr) :"memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void writel(unsigned int val, volatile void *addr) { asm volatile("mov" "l" " %0,%1": :"r" (val), "m" (*(volatile unsigned int *)addr) :"memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __writeb(unsigned char val, volatile void *addr) { asm volatile("mov" "b" " %0,%1": :"q" (val), "m" (*(volatile unsigned char *)addr) ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __writew(unsigned short val, volatile void *addr) { asm volatile("mov" "w" " %0,%1": :"r" (val), "m" (*(volatile unsigned short *)addr) ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __writel(unsigned int val, volatile void *addr) { asm volatile("mov" "l" " %0,%1": :"r" (val), "m" (*(volatile unsigned int *)addr) ); } # 95 "../arch/x86/include/asm/io.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 readq(const volatile void *addr) { u64 ret; asm volatile("mov" "q" " %1,%0":"=r" (ret) :"m" (*(volatile u64 *)addr) :"memory"); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 __readq(const volatile void *addr) { u64 ret; asm volatile("mov" "q" " %1,%0":"=r" (ret) :"m" (*(volatile u64 *)addr) ); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void writeq(u64 val, volatile void *addr) { asm volatile("mov" "q" " %0,%1": :"r" (val), "m" (*(volatile u64 *)addr) :"memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __writeq(u64 val, volatile void *addr) { asm volatile("mov" "q" " %0,%1": :"r" (val), "m" (*(volatile u64 *)addr) ); } # 113 "../arch/x86/include/asm/io.h" extern int valid_phys_addr_range(phys_addr_t addr, size_t size); extern int valid_mmap_phys_addr_range(unsigned long pfn, size_t size); # 129 "../arch/x86/include/asm/io.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) phys_addr_t virt_to_phys(volatile void *address) { return __phys_addr((unsigned long)(address)); } # 148 "../arch/x86/include/asm/io.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *phys_to_virt(phys_addr_t address) { return ((void *)((unsigned long)(address)+((unsigned long)page_offset_base))); } # 164 "../arch/x86/include/asm/io.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int isa_virt_to_bus(volatile void *address) { return (unsigned int)virt_to_phys(address); } # 183 "../arch/x86/include/asm/io.h" extern void *ioremap_nocache(resource_size_t offset, unsigned long size); extern void *ioremap_uc(resource_size_t offset, unsigned long size); extern void *ioremap_cache(resource_size_t offset, unsigned long size); extern void *ioremap_prot(resource_size_t offset, unsigned long size, unsigned long prot_val); extern void *ioremap_encrypted(resource_size_t phys_addr, unsigned long size); # 208 "../arch/x86/include/asm/io.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *ioremap(resource_size_t offset, unsigned long size) { return ioremap_nocache(offset, size); } extern void iounmap(volatile void *addr); extern void set_iounmap_nonlazy(void); void memcpy_fromio(void *, const volatile void *, size_t); void memcpy_toio(volatile void *, const void *, size_t); void memset_io(volatile void *, int, size_t); # 1 "../include/asm-generic/iomap.h" 1 # 29 "../include/asm-generic/iomap.h" extern unsigned int ioread8(void *); extern unsigned int ioread16(void *); extern unsigned int ioread16be(void *); extern unsigned int ioread32(void *); extern unsigned int ioread32be(void *); extern u64 ioread64(void *); extern u64 ioread64be(void *); extern u64 ioread64_lo_hi(void *addr); extern u64 ioread64_hi_lo(void *addr); extern u64 ioread64be_lo_hi(void *addr); extern u64 ioread64be_hi_lo(void *addr); extern void iowrite8(u8, void *); extern void iowrite16(u16, void *); extern void iowrite16be(u16, void *); extern void iowrite32(u32, void *); extern void iowrite32be(u32, void *); extern void iowrite64(u64, void *); extern void iowrite64be(u64, void *); extern void iowrite64_lo_hi(u64 val, void *addr); extern void iowrite64_hi_lo(u64 val, void *addr); extern void iowrite64be_lo_hi(u64 val, void *addr); extern void iowrite64be_hi_lo(u64 val, void *addr); # 82 "../include/asm-generic/iomap.h" extern void ioread8_rep(void *port, void *buf, unsigned long count); extern void ioread16_rep(void *port, void *buf, unsigned long count); extern void ioread32_rep(void *port, void *buf, unsigned long count); extern void iowrite8_rep(void *port, const void *buf, unsigned long count); extern void iowrite16_rep(void *port, const void *buf, unsigned long count); extern void iowrite32_rep(void *port, const void *buf, unsigned long count); extern void *ioport_map(unsigned long port, unsigned int nr); extern void ioport_unmap(void *); # 106 "../include/asm-generic/iomap.h" struct pci_dev; extern void pci_iounmap(struct pci_dev *dev, void *); # 1 "../include/asm-generic/pci_iomap.h" 1 # 10 "../include/asm-generic/pci_iomap.h" struct pci_dev; extern void *pci_iomap(struct pci_dev *dev, int bar, unsigned long max); extern void *pci_iomap_wc(struct pci_dev *dev, int bar, unsigned long max); extern void *pci_iomap_range(struct pci_dev *dev, int bar, unsigned long offset, unsigned long maxlen); extern void *pci_iomap_wc_range(struct pci_dev *dev, int bar, unsigned long offset, unsigned long maxlen); # 115 "../include/asm-generic/iomap.h" 2 # 230 "../arch/x86/include/asm/io.h" 2 # 243 "../arch/x86/include/asm/io.h" extern void native_io_delay(void); extern int io_delay_type; extern void io_delay_init(void); # 267 "../arch/x86/include/asm/io.h" extern struct static_key_false sev_enable_key; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool sev_key_active(void) { return ({ bool branch; if (__builtin_types_compatible_p(typeof(*&sev_enable_key), struct static_key_true)) branch = arch_static_branch_jump(&(&sev_enable_key)->key, false); else if (__builtin_types_compatible_p(typeof(*&sev_enable_key), struct static_key_false)) branch = arch_static_branch(&(&sev_enable_key)->key, false); else branch = ____wrong_branch_error(); __builtin_expect(!!(branch), 0); }); } # 339 "../arch/x86/include/asm/io.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void outb(unsigned char value, int port) { asm volatile("out" "b" " %" "b" "0, %w1" : : "a"(value), "Nd"(port)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char inb(int port) { unsigned char value; asm volatile("in" "b" " %w1, %" "b" "0" : "=a"(value) : "Nd"(port)); return value; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void outb_p(unsigned char value, int port) { outb(value, port); slow_down_io(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char inb_p(int port) { unsigned char value = inb(port); slow_down_io(); return value; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void outsb(int port, const void *addr, unsigned long count) { if (sev_key_active()) { unsigned char *value = (unsigned char *)addr; while (count) { outb(*value, port); value++; count--; } } else { asm volatile("rep; outs" "b" : "+S"(addr), "+c"(count) : "d"(port) : "memory"); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void insb(int port, void *addr, unsigned long count) { if (sev_key_active()) { unsigned char *value = (unsigned char *)addr; while (count) { *value = inb(port); value++; count--; } } else { asm volatile("rep; ins" "b" : "+D"(addr), "+c"(count) : "d"(port) : "memory"); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void outw(unsigned short value, int port) { asm volatile("out" "w" " %" "w" "0, %w1" : : "a"(value), "Nd"(port)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned short inw(int port) { unsigned short value; asm volatile("in" "w" " %w1, %" "w" "0" : "=a"(value) : "Nd"(port)); return value; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void outw_p(unsigned short value, int port) { outw(value, port); slow_down_io(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned short inw_p(int port) { unsigned short value = inw(port); slow_down_io(); return value; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void outsw(int port, const void *addr, unsigned long count) { if (sev_key_active()) { unsigned short *value = (unsigned short *)addr; while (count) { outw(*value, port); value++; count--; } } else { asm volatile("rep; outs" "w" : "+S"(addr), "+c"(count) : "d"(port) : "memory"); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void insw(int port, void *addr, unsigned long count) { if (sev_key_active()) { unsigned short *value = (unsigned short *)addr; while (count) { *value = inw(port); value++; count--; } } else { asm volatile("rep; ins" "w" : "+D"(addr), "+c"(count) : "d"(port) : "memory"); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void outl(unsigned int value, int port) { asm volatile("out" "l" " %" "" "0, %w1" : : "a"(value), "Nd"(port)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int inl(int port) { unsigned int value; asm volatile("in" "l" " %w1, %" "" "0" : "=a"(value) : "Nd"(port)); return value; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void outl_p(unsigned int value, int port) { outl(value, port); slow_down_io(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int inl_p(int port) { unsigned int value = inl(port); slow_down_io(); return value; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void outsl(int port, const void *addr, unsigned long count) { if (sev_key_active()) { unsigned int *value = (unsigned int *)addr; while (count) { outl(*value, port); value++; count--; } } else { asm volatile("rep; outs" "l" : "+S"(addr), "+c"(count) : "d"(port) : "memory"); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void insl(int port, void *addr, unsigned long count) { if (sev_key_active()) { unsigned int *value = (unsigned int *)addr; while (count) { *value = inl(port); value++; count--; } } else { asm volatile("rep; ins" "l" : "+D"(addr), "+c"(count) : "d"(port) : "memory"); } } # 363 "../arch/x86/include/asm/io.h" extern void *xlate_dev_mem_ptr(phys_addr_t phys); extern void unxlate_dev_mem_ptr(phys_addr_t phys, void *addr); extern int ioremap_change_attr(unsigned long vaddr, unsigned long size, enum page_cache_mode pcm); extern void *ioremap_wc(resource_size_t offset, unsigned long size); extern void *ioremap_wt(resource_size_t offset, unsigned long size); extern bool is_early_ioremap_ptep(pte_t *ptep); # 1 "../include/asm-generic/io.h" 1 # 18 "../include/asm-generic/io.h" # 1 "./arch/x86/include/generated/asm/mmiowb.h" 1 # 19 "../include/asm-generic/io.h" 2 # 317 "../include/asm-generic/io.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void readsb(const volatile void *addr, void *buffer, unsigned int count) { if (count) { u8 *buf = buffer; do { u8 x = __readb(addr); *buf++ = x; } while (--count); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void readsw(const volatile void *addr, void *buffer, unsigned int count) { if (count) { u16 *buf = buffer; do { u16 x = __readw(addr); *buf++ = x; } while (--count); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void readsl(const volatile void *addr, void *buffer, unsigned int count) { if (count) { u32 *buf = buffer; do { u32 x = __readl(addr); *buf++ = x; } while (--count); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void readsq(const volatile void *addr, void *buffer, unsigned int count) { if (count) { u64 *buf = buffer; do { u64 x = __readq(addr); *buf++ = x; } while (--count); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void writesb(volatile void *addr, const void *buffer, unsigned int count) { if (count) { const u8 *buf = buffer; do { __writeb(*buf++, addr); } while (--count); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void writesw(volatile void *addr, const void *buffer, unsigned int count) { if (count) { const u16 *buf = buffer; do { __writew(*buf++, addr); } while (--count); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void writesl(volatile void *addr, const void *buffer, unsigned int count) { if (count) { const u32 *buf = buffer; do { __writel(*buf++, addr); } while (--count); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void writesq(volatile void *addr, const void *buffer, unsigned int count) { if (count) { const u64 *buf = buffer; do { __writeq(*buf++, addr); } while (--count); } } # 451 "../include/asm-generic/io.h" # 1 "../include/linux/logic_pio.h" 1 # 11 "../include/linux/logic_pio.h" # 1 "../include/linux/fwnode.h" 1 # 14 "../include/linux/fwnode.h" struct fwnode_operations; struct device; struct fwnode_handle { struct fwnode_handle *secondary; const struct fwnode_operations *ops; }; struct fwnode_endpoint { unsigned int port; unsigned int id; const struct fwnode_handle *local_fwnode; }; # 42 "../include/linux/fwnode.h" struct fwnode_reference_args { struct fwnode_handle *fwnode; unsigned int nargs; u64 args[8]; }; # 69 "../include/linux/fwnode.h" struct fwnode_operations { struct fwnode_handle *(*get)(struct fwnode_handle *fwnode); void (*put)(struct fwnode_handle *fwnode); bool (*device_is_available)(const struct fwnode_handle *fwnode); const void *(*device_get_match_data)(const struct fwnode_handle *fwnode, const struct device *dev); bool (*property_present)(const struct fwnode_handle *fwnode, const char *propname); int (*property_read_int_array)(const struct fwnode_handle *fwnode, const char *propname, unsigned int elem_size, void *val, size_t nval); int (*property_read_string_array)(const struct fwnode_handle *fwnode_handle, const char *propname, const char **val, size_t nval); struct fwnode_handle *(*get_parent)(const struct fwnode_handle *fwnode); struct fwnode_handle * (*get_next_child_node)(const struct fwnode_handle *fwnode, struct fwnode_handle *child); struct fwnode_handle * (*get_named_child_node)(const struct fwnode_handle *fwnode, const char *name); int (*get_reference_args)(const struct fwnode_handle *fwnode, const char *prop, const char *nargs_prop, unsigned int nargs, unsigned int index, struct fwnode_reference_args *args); struct fwnode_handle * (*graph_get_next_endpoint)(const struct fwnode_handle *fwnode, struct fwnode_handle *prev); struct fwnode_handle * (*graph_get_remote_endpoint)(const struct fwnode_handle *fwnode); struct fwnode_handle * (*graph_get_port_parent)(struct fwnode_handle *fwnode); int (*graph_parse_endpoint)(const struct fwnode_handle *fwnode, struct fwnode_endpoint *endpoint); }; # 12 "../include/linux/logic_pio.h" 2 enum { LOGIC_PIO_INDIRECT, LOGIC_PIO_CPU_MMIO, }; struct logic_pio_hwaddr { struct list_head list; struct fwnode_handle *fwnode; resource_size_t hw_start; resource_size_t io_start; resource_size_t size; unsigned long flags; void *hostdata; const struct logic_pio_host_ops *ops; }; struct logic_pio_host_ops { u32 (*in)(void *hostdata, unsigned long addr, size_t dwidth); void (*out)(void *hostdata, unsigned long addr, u32 val, size_t dwidth); u32 (*ins)(void *hostdata, unsigned long addr, void *buffer, size_t dwidth, unsigned int count); void (*outs)(void *hostdata, unsigned long addr, const void *buffer, size_t dwidth, unsigned int count); }; # 116 "../include/linux/logic_pio.h" struct logic_pio_hwaddr *find_io_range_by_fwnode(struct fwnode_handle *fwnode); unsigned long logic_pio_trans_hwaddr(struct fwnode_handle *fwnode, resource_size_t hw_addr, resource_size_t size); int logic_pio_register_range(struct logic_pio_hwaddr *newrange); resource_size_t logic_pio_to_hwaddr(unsigned long pio); unsigned long logic_pio_trans_cpuaddr(resource_size_t hw_addr); # 452 "../include/asm-generic/io.h" 2 # 634 "../include/asm-generic/io.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void insb_p(unsigned long addr, void *buffer, unsigned int count) { insb(addr, buffer, count); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void insw_p(unsigned long addr, void *buffer, unsigned int count) { insw(addr, buffer, count); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void insl_p(unsigned long addr, void *buffer, unsigned int count) { insl(addr, buffer, count); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void outsb_p(unsigned long addr, const void *buffer, unsigned int count) { outsb(addr, buffer, count); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void outsw_p(unsigned long addr, const void *buffer, unsigned int count) { outsw(addr, buffer, count); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void outsl_p(unsigned long addr, const void *buffer, unsigned int count) { outsl(addr, buffer, count); } # 887 "../include/asm-generic/io.h" # 1 "../include/linux/vmalloc.h" 1 # 1 "../include/linux/llist.h" 1 # 54 "../include/linux/llist.h" struct llist_head { struct llist_node *first; }; struct llist_node { struct llist_node *next; }; # 69 "../include/linux/llist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void init_llist_head(struct llist_head *list) { list->first = ((void *)0); } # 187 "../include/linux/llist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool llist_empty(const struct llist_head *head) { return ({ union { typeof(head->first) __val; char __c[1]; } __u; if (1) __read_once_size(&(head->first), __u.__c, sizeof(head->first)); else __read_once_size_nocheck(&(head->first), __u.__c, sizeof(head->first)); do { } while (0); __u.__val; }) == ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct llist_node *llist_next(struct llist_node *node) { return node->next; } extern bool llist_add_batch(struct llist_node *new_first, struct llist_node *new_last, struct llist_head *head); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool llist_add(struct llist_node *new, struct llist_head *head) { return llist_add_batch(new, new, head); } # 220 "../include/linux/llist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct llist_node *llist_del_all(struct llist_head *head) { return ({ typeof(&head->first) __ai_ptr = (&head->first); kasan_check_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__ (*((__ai_ptr))) __ret = ((((void *)0))); switch (sizeof(*((__ai_ptr)))) { case 1: asm volatile ("" "xchg" "b %b0, %1\n" : "+q" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 2: asm volatile ("" "xchg" "w %w0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 4: asm volatile ("" "xchg" "l %0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 8: asm volatile ("" "xchg" "q %q0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; default: __xchg_wrong_size(); } __ret; }); }); } extern struct llist_node *llist_del_first(struct llist_head *head); struct llist_node *llist_reverse_order(struct llist_node *head); # 9 "../include/linux/vmalloc.h" 2 # 1 "../include/linux/overflow.h" 1 # 253 "../include/linux/overflow.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) size_t array_size(size_t a, size_t b) { size_t bytes; if (({ typeof(a) __a = (a); typeof(b) __b = (b); typeof(&bytes) __d = (&bytes); (void) (&__a == &__b); (void) (&__a == __d); __builtin_mul_overflow(__a, __b, __d); })) return (~(size_t)0); return bytes; } # 275 "../include/linux/overflow.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) size_t array3_size(size_t a, size_t b, size_t c) { size_t bytes; if (({ typeof(a) __a = (a); typeof(b) __b = (b); typeof(&bytes) __d = (&bytes); (void) (&__a == &__b); (void) (&__a == __d); __builtin_mul_overflow(__a, __b, __d); })) return (~(size_t)0); if (({ typeof(bytes) __a = (bytes); typeof(c) __b = (c); typeof(&bytes) __d = (&bytes); (void) (&__a == &__b); (void) (&__a == __d); __builtin_mul_overflow(__a, __b, __d); })) return (~(size_t)0); return bytes; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) size_t __ab_c_size(size_t a, size_t b, size_t c) { size_t bytes; if (({ typeof(a) __a = (a); typeof(b) __b = (b); typeof(&bytes) __d = (&bytes); (void) (&__a == &__b); (void) (&__a == __d); __builtin_mul_overflow(__a, __b, __d); })) return (~(size_t)0); if (({ typeof(bytes) __a = (bytes); typeof(c) __b = (c); typeof(&bytes) __d = (&bytes); (void) (&__a == &__b); (void) (&__a == __d); __builtin_add_overflow(__a, __b, __d); })) return (~(size_t)0); return bytes; } # 12 "../include/linux/vmalloc.h" 2 struct vm_area_struct; struct notifier_block; # 39 "../include/linux/vmalloc.h" struct vm_struct { struct vm_struct *next; void *addr; unsigned long size; unsigned long flags; struct page **pages; unsigned int nr_pages; phys_addr_t phys_addr; const void *caller; }; struct vmap_area { unsigned long va_start; unsigned long va_end; unsigned long subtree_max_size; unsigned long flags; struct rb_node rb_node; struct list_head list; struct llist_node purge_list; struct vm_struct *vm; }; extern void vm_unmap_ram(const void *mem, unsigned int count); extern void *vm_map_ram(struct page **pages, unsigned int count, int node, pgprot_t prot); extern void vm_unmap_aliases(void); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) vmalloc_init(void); extern void *vmalloc(unsigned long size); extern void *vzalloc(unsigned long size); extern void *vmalloc_user(unsigned long size); extern void *vmalloc_node(unsigned long size, int node); extern void *vzalloc_node(unsigned long size, int node); extern void *vmalloc_exec(unsigned long size); extern void *vmalloc_32(unsigned long size); extern void *vmalloc_32_user(unsigned long size); extern void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot); extern void *__vmalloc_node_range(unsigned long size, unsigned long align, unsigned long start, unsigned long end, gfp_t gfp_mask, pgprot_t prot, unsigned long vm_flags, int node, const void *caller); # 102 "../include/linux/vmalloc.h" extern void *__vmalloc_node_flags_caller(unsigned long size, int node, gfp_t flags, void *caller); extern void vfree(const void *addr); extern void vfree_atomic(const void *addr); extern void *vmap(struct page **pages, unsigned int count, unsigned long flags, pgprot_t prot); extern void vunmap(const void *addr); extern int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr, void *kaddr, unsigned long size); extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr, unsigned long pgoff); void vmalloc_sync_all(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) size_t get_vm_area_size(const struct vm_struct *area) { if (!(area->flags & 0x00000040)) return area->size - ((1UL) << 12); else return area->size; } extern struct vm_struct *get_vm_area(unsigned long size, unsigned long flags); extern struct vm_struct *get_vm_area_caller(unsigned long size, unsigned long flags, const void *caller); extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags, unsigned long start, unsigned long end); extern struct vm_struct *__get_vm_area_caller(unsigned long size, unsigned long flags, unsigned long start, unsigned long end, const void *caller); extern struct vm_struct *remove_vm_area(const void *addr); extern struct vm_struct *find_vm_area(const void *addr); extern int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page **pages); extern int map_kernel_range_noflush(unsigned long start, unsigned long size, pgprot_t prot, struct page **pages); extern void unmap_kernel_range_noflush(unsigned long addr, unsigned long size); extern void unmap_kernel_range(unsigned long addr, unsigned long size); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_vm_flush_reset_perms(void *addr) { struct vm_struct *vm = find_vm_area(addr); if (vm) vm->flags |= 0x00000100; } # 182 "../include/linux/vmalloc.h" extern struct vm_struct *alloc_vm_area(size_t size, pte_t **ptes); extern void free_vm_area(struct vm_struct *area); extern long vread(char *buf, char *addr, unsigned long count); extern long vwrite(char *buf, char *addr, unsigned long count); extern struct list_head vmap_area_list; extern __attribute__((__section__(".init.text"))) __attribute__((__cold__)) void vm_area_add_early(struct vm_struct *vm); extern __attribute__((__section__(".init.text"))) __attribute__((__cold__)) void vm_area_register_early(struct vm_struct *vm, size_t align); struct vm_struct **pcpu_get_vm_areas(const unsigned long *offsets, const size_t *sizes, int nr_vms, size_t align); void pcpu_free_vm_areas(struct vm_struct **vms, int nr_vms); # 225 "../include/linux/vmalloc.h" int register_vmap_purge_notifier(struct notifier_block *nb); int unregister_vmap_purge_notifier(struct notifier_block *nb); # 888 "../include/asm-generic/io.h" 2 # 1034 "../include/asm-generic/io.h" extern void *ioport_map(unsigned long port, unsigned int nr); extern void ioport_unmap(void *p); # 1044 "../include/asm-generic/io.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xlate_dev_kmem_ptr(void *addr) { return addr; } # 381 "../arch/x86/include/asm/io.h" 2 extern int __attribute__((__warn_unused_result__)) arch_phys_wc_index(int handle); extern int __attribute__((__warn_unused_result__)) arch_phys_wc_add(unsigned long base, unsigned long size); extern void arch_phys_wc_del(int handle); extern int arch_io_reserve_memtype_wc(resource_size_t start, resource_size_t size); extern void arch_io_free_memtype_wc(resource_size_t start, resource_size_t size); extern bool arch_memremap_can_ram_remap(resource_size_t offset, unsigned long size, unsigned long flags); extern bool phys_mem_access_encrypted(unsigned long phys_addr, unsigned long size); # 16 "../arch/x86/include/asm/realmode.h" 2 struct real_mode_header { u32 text_start; u32 ro_end; u32 trampoline_start; u32 trampoline_status; u32 trampoline_header; u32 trampoline_pgd; u32 wakeup_start; u32 wakeup_header; u32 machine_real_restart_asm; u32 machine_real_restart_seg; }; struct trampoline_header { u64 start; u64 efer; u32 cr4; u32 flags; }; extern struct real_mode_header *real_mode_header; extern unsigned char real_mode_blob_end[]; extern unsigned long initial_code; extern unsigned long initial_gs; extern unsigned long initial_stack; extern unsigned char real_mode_blob[]; extern unsigned char real_mode_relocs[]; extern unsigned char secondary_startup_64[]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) size_t real_mode_size_needed(void) { if (real_mode_header) return 0; return ((((real_mode_blob_end - real_mode_blob)) + ((typeof((real_mode_blob_end - real_mode_blob)))((((1UL) << 12))) - 1)) & ~((typeof((real_mode_blob_end - real_mode_blob)))((((1UL) << 12))) - 1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_real_mode_mem(phys_addr_t mem) { real_mode_header = (struct real_mode_header *) ((void *)((unsigned long)(mem)+((unsigned long)page_offset_base))); } void reserve_real_mode(void); # 17 "../arch/x86/include/asm/acpi.h" 2 extern int acpi_lapic; extern int acpi_ioapic; extern int acpi_noirq; extern int acpi_strict; extern int acpi_disabled; extern int acpi_pci_disabled; extern int acpi_skip_timer_override; extern int acpi_use_timer_override; extern int acpi_fix_pin2_polarity; extern int acpi_disable_cmcff; extern u8 acpi_sci_flags; extern u32 acpi_sci_override_gsi; void acpi_pic_sci_set_trigger(unsigned int, u16); struct device; extern int (*__acpi_register_gsi)(struct device *dev, u32 gsi, int trigger, int polarity); extern void (*__acpi_unregister_gsi)(u32 gsi); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void disable_acpi(void) { acpi_disabled = 1; acpi_pci_disabled = 1; acpi_noirq = 1; } extern int acpi_gsi_to_irq(u32 gsi, unsigned int *irq); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void acpi_noirq_set(void) { acpi_noirq = 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void acpi_disable_pci(void) { acpi_pci_disabled = 1; acpi_noirq_set(); } extern int (*acpi_suspend_lowlevel)(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int acpi_processor_cstate_check(unsigned int max_cstate) { if (boot_cpu_data.x86 == 0x0F && boot_cpu_data.x86_vendor == 2 && boot_cpu_data.x86_model <= 0x05 && boot_cpu_data.x86_stepping < 0x0A) return 1; else if ((__builtin_constant_p((19*32 + (4))) && ( ((((19*32 + (4)))>>5)==(0) && (1UL<<(((19*32 + (4)))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((19*32 + (4)))>>5)==(1) && (1UL<<(((19*32 + (4)))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((19*32 + (4)))>>5)==(2) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(3) && (1UL<<(((19*32 + (4)))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((19*32 + (4)))>>5)==(4) && (1UL<<(((19*32 + (4)))&31) & (0) )) || ((((19*32 + (4)))>>5)==(5) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(6) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(7) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(8) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(9) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(10) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(11) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(12) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(13) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(14) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(15) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(16) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(17) && (1UL<<(((19*32 + (4)))&31) & 0 )) || ((((19*32 + (4)))>>5)==(18) && (1UL<<(((19*32 + (4)))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((19*32 + (4)), (unsigned long *)((&boot_cpu_data)->x86_capability)))) return 1; else return max_cstate; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool arch_has_acpi_pdc(void) { struct cpuinfo_x86 *c = &(*({ do { const void *__vpp_verify = (typeof((&(cpu_info)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = (unsigned long) ((typeof(*((&(cpu_info)))) *)((&(cpu_info)))); (typeof((typeof(*((&(cpu_info)))) *)((&(cpu_info))))) (__ptr + (((__per_cpu_offset[(0)])))); }); })); return (c->x86_vendor == 0 || c->x86_vendor == 5); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_acpi_set_pdc_bits(u32 *buf) { struct cpuinfo_x86 *c = &(*({ do { const void *__vpp_verify = (typeof((&(cpu_info)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = (unsigned long) ((typeof(*((&(cpu_info)))) *)((&(cpu_info)))); (typeof((typeof(*((&(cpu_info)))) *)((&(cpu_info))))) (__ptr + (((__per_cpu_offset[(0)])))); }); })); buf[2] |= ((0x0010) | (0x0008) | (0x0002) | (0x0100) | (0x0200)); if ((__builtin_constant_p(( 4*32+ 7)) && ( (((( 4*32+ 7))>>5)==(0) && (1UL<<((( 4*32+ 7))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 4*32+ 7))>>5)==(1) && (1UL<<((( 4*32+ 7))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 4*32+ 7))>>5)==(2) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(3) && (1UL<<((( 4*32+ 7))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 4*32+ 7))>>5)==(4) && (1UL<<((( 4*32+ 7))&31) & (0) )) || (((( 4*32+ 7))>>5)==(5) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(6) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(7) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(8) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(9) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(10) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(11) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(12) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(13) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(14) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(15) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(16) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(17) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (((( 4*32+ 7))>>5)==(18) && (1UL<<((( 4*32+ 7))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 4*32+ 7), (unsigned long *)((c)->x86_capability)))) buf[2] |= ((0x0008) | (0x0002) | (0x0020) | (0x0800) | (0x0001)); if ((__builtin_constant_p(( 0*32+22)) && ( (((( 0*32+22))>>5)==(0) && (1UL<<((( 0*32+22))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 0*32+22))>>5)==(1) && (1UL<<((( 0*32+22))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 0*32+22))>>5)==(2) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(3) && (1UL<<((( 0*32+22))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 0*32+22))>>5)==(4) && (1UL<<((( 0*32+22))&31) & (0) )) || (((( 0*32+22))>>5)==(5) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(6) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(7) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(8) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(9) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(10) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(11) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(12) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(13) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(14) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(15) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(16) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(17) && (1UL<<((( 0*32+22))&31) & 0 )) || (((( 0*32+22))>>5)==(18) && (1UL<<((( 0*32+22))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 0*32+22), (unsigned long *)((c)->x86_capability)))) buf[2] |= (0x0004); if (!(__builtin_constant_p(( 4*32+ 3)) && ( (((( 4*32+ 3))>>5)==(0) && (1UL<<((( 4*32+ 3))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 4*32+ 3))>>5)==(1) && (1UL<<((( 4*32+ 3))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 4*32+ 3))>>5)==(2) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(3) && (1UL<<((( 4*32+ 3))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 4*32+ 3))>>5)==(4) && (1UL<<((( 4*32+ 3))&31) & (0) )) || (((( 4*32+ 3))>>5)==(5) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(6) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(7) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(8) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(9) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(10) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(11) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(12) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(13) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(14) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(15) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(16) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(17) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (((( 4*32+ 3))>>5)==(18) && (1UL<<((( 4*32+ 3))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 4*32+ 3), (unsigned long *)((c)->x86_capability)))) buf[2] &= ~((0x0200)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool acpi_has_cpu_in_madt(void) { return !!acpi_lapic; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 acpi_arch_get_root_pointer(void) { return x86_init.acpi.get_root_pointer(); } void acpi_generic_reduced_hw_init(void); u64 x86_default_get_root_pointer(void); # 151 "../arch/x86/include/asm/acpi.h" extern int x86_acpi_numa_init(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgprot_t arch_apei_get_mem_attribute(phys_addr_t addr) { # 172 "../arch/x86/include/asm/acpi.h" return ((pgprot_t) { (((((((pteval_t)(1)) << 0) | (((pteval_t)(1)) << 1) | (((pteval_t)(1)) << 6) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 8)) | (((pteval_t)(1)) << 63))) & __default_kernel_pte_mask) } ); } # 30 "../arch/x86/include/asm/fixmap.h" 2 # 1 "../arch/x86/include/uapi/asm/vsyscall.h" 1 enum vsyscall_num { __NR_vgettimeofday, __NR_vtime, __NR_vgetcpu, }; # 37 "../arch/x86/include/asm/fixmap.h" 2 # 76 "../arch/x86/include/asm/fixmap.h" enum fixed_addresses { VSYSCALL_PAGE = (((((((-10UL << 20) + ((1UL) << 12))-1) | ((__typeof__((-10UL << 20) + ((1UL) << 12)))((1<<21)-1)))+1) - ((1UL) << 12)) - (-10UL << 20)) >> 12, FIX_DBGP_BASE, FIX_EARLYCON_MEM_BASE, FIX_OHCI1394_BASE, FIX_APIC_BASE, FIX_IO_APIC_BASE_0, FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + 128 - 1, # 104 "../arch/x86/include/asm/fixmap.h" FIX_PARAVIRT_BOOTMAP, FIX_LNW_VRTC, FIX_APEI_GHES_IRQ, FIX_APEI_GHES_NMI, __end_of_permanent_fixed_addresses, # 128 "../arch/x86/include/asm/fixmap.h" FIX_BTMAP_END = (__end_of_permanent_fixed_addresses ^ (__end_of_permanent_fixed_addresses + (64 * 8) - 1)) & -512 ? __end_of_permanent_fixed_addresses + (64 * 8) - (__end_of_permanent_fixed_addresses & ((64 * 8) - 1)) : __end_of_permanent_fixed_addresses, FIX_BTMAP_BEGIN = FIX_BTMAP_END + (64 * 8) - 1, FIX_TBOOT_BASE, __end_of_fixed_addresses }; extern void reserve_top_address(unsigned long reserve); extern int fixmaps_set; extern pte_t *kmap_pte; extern pte_t *pkmap_page_table; void __native_set_fixmap(enum fixed_addresses idx, pte_t pte); void native_set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t flags); # 182 "../arch/x86/include/asm/fixmap.h" void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) *early_memremap_encrypted(resource_size_t phys_addr, unsigned long size); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) *early_memremap_encrypted_wp(resource_size_t phys_addr, unsigned long size); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) *early_memremap_decrypted(resource_size_t phys_addr, unsigned long size); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) *early_memremap_decrypted_wp(resource_size_t phys_addr, unsigned long size); # 1 "../include/asm-generic/fixmap.h" 1 # 30 "../include/asm-generic/fixmap.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long fix_to_virt(const unsigned int idx) { do { extern void __compiletime_assert_32(void) ; if (!(!(idx >= __end_of_fixed_addresses))) __compiletime_assert_32(); } while (0); return (((((((-10UL << 20) + ((1UL) << 12))-1) | ((__typeof__((-10UL << 20) + ((1UL) << 12)))((1<<21)-1)))+1) - ((1UL) << 12)) - ((idx) << 12)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long virt_to_fix(const unsigned long vaddr) { do { if (__builtin_expect(!!(vaddr >= ((((((-10UL << 20) + ((1UL) << 12))-1) | ((__typeof__((-10UL << 20) + ((1UL) << 12)))((1<<21)-1)))+1) - ((1UL) << 12)) || vaddr < (((((((-10UL << 20) + ((1UL) << 12))-1) | ((__typeof__((-10UL << 20) + ((1UL) << 12)))((1<<21)-1)))+1) - ((1UL) << 12)) - (__end_of_permanent_fixed_addresses << 12))), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/asm-generic/fixmap.h"), "i" (38), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (329)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); return ((((((((-10UL << 20) + ((1UL) << 12))-1) | ((__typeof__((-10UL << 20) + ((1UL) << 12)))((1<<21)-1)))+1) - ((1UL) << 12)) - ((vaddr)&(~(((1UL) << 12)-1)))) >> 12); } # 192 "../arch/x86/include/asm/fixmap.h" 2 void __early_set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t flags); # 12 "../arch/x86/include/asm/apic.h" 2 # 1 "../arch/x86/include/asm/hardirq.h" 1 typedef struct { u16 __softirq_pending; u8 kvm_cpu_l1tf_flush_l1d; unsigned int __nmi_count; unsigned int apic_timer_irqs; unsigned int irq_spurious_count; unsigned int icr_read_retry_count; unsigned int kvm_posted_intr_ipis; unsigned int kvm_posted_intr_wakeup_ipis; unsigned int kvm_posted_intr_nested_ipis; unsigned int x86_platform_ipis; unsigned int apic_perf_irqs; unsigned int apic_irq_work_irqs; unsigned int irq_resched_count; unsigned int irq_call_count; unsigned int irq_tlb_count; unsigned int irq_thermal_count; unsigned int irq_threshold_count; unsigned int irq_deferred_error_count; unsigned int irq_hv_callback_count; unsigned int irq_hv_reenlightenment_count; unsigned int hyperv_stimer0_count; } __attribute__((__aligned__((1 << (6))))) irq_cpustat_t; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_irq_stat; extern __attribute__((section(".data..percpu" "..shared_aligned"))) __typeof__(irq_cpustat_t) irq_stat __attribute__((__aligned__((1 << (6))))); extern void ack_bad_irq(unsigned int irq); extern u64 arch_irq_stat_cpu(unsigned int cpu); extern u64 arch_irq_stat(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void kvm_set_cpu_l1tf_flush_l1d(void) { ({ __this_cpu_preempt_check("write"); do { do { const void *__vpp_verify = (typeof((&(irq_stat.kvm_cpu_l1tf_flush_l1d)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(irq_stat.kvm_cpu_l1tf_flush_l1d)) { case 1: do { typedef typeof((irq_stat.kvm_cpu_l1tf_flush_l1d)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (1); (void)pto_tmp__; } switch (sizeof((irq_stat.kvm_cpu_l1tf_flush_l1d))) { case 1: asm ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "qi" ((pto_T__)(1))); break; case 2: asm ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(1))); break; case 4: asm ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(1))); break; case 8: asm ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "re" ((pto_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((irq_stat.kvm_cpu_l1tf_flush_l1d)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (1); (void)pto_tmp__; } switch (sizeof((irq_stat.kvm_cpu_l1tf_flush_l1d))) { case 1: asm ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "qi" ((pto_T__)(1))); break; case 2: asm ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(1))); break; case 4: asm ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(1))); break; case 8: asm ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "re" ((pto_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((irq_stat.kvm_cpu_l1tf_flush_l1d)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (1); (void)pto_tmp__; } switch (sizeof((irq_stat.kvm_cpu_l1tf_flush_l1d))) { case 1: asm ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "qi" ((pto_T__)(1))); break; case 2: asm ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(1))); break; case 4: asm ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(1))); break; case 8: asm ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "re" ((pto_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((irq_stat.kvm_cpu_l1tf_flush_l1d)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (1); (void)pto_tmp__; } switch (sizeof((irq_stat.kvm_cpu_l1tf_flush_l1d))) { case 1: asm ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "qi" ((pto_T__)(1))); break; case 2: asm ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(1))); break; case 4: asm ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(1))); break; case 8: asm ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "re" ((pto_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void kvm_clear_cpu_l1tf_flush_l1d(void) { ({ __this_cpu_preempt_check("write"); do { do { const void *__vpp_verify = (typeof((&(irq_stat.kvm_cpu_l1tf_flush_l1d)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(irq_stat.kvm_cpu_l1tf_flush_l1d)) { case 1: do { typedef typeof((irq_stat.kvm_cpu_l1tf_flush_l1d)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (0); (void)pto_tmp__; } switch (sizeof((irq_stat.kvm_cpu_l1tf_flush_l1d))) { case 1: asm ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "qi" ((pto_T__)(0))); break; case 2: asm ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(0))); break; case 4: asm ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(0))); break; case 8: asm ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "re" ((pto_T__)(0))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((irq_stat.kvm_cpu_l1tf_flush_l1d)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (0); (void)pto_tmp__; } switch (sizeof((irq_stat.kvm_cpu_l1tf_flush_l1d))) { case 1: asm ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "qi" ((pto_T__)(0))); break; case 2: asm ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(0))); break; case 4: asm ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(0))); break; case 8: asm ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "re" ((pto_T__)(0))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((irq_stat.kvm_cpu_l1tf_flush_l1d)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (0); (void)pto_tmp__; } switch (sizeof((irq_stat.kvm_cpu_l1tf_flush_l1d))) { case 1: asm ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "qi" ((pto_T__)(0))); break; case 2: asm ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(0))); break; case 4: asm ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(0))); break; case 8: asm ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "re" ((pto_T__)(0))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((irq_stat.kvm_cpu_l1tf_flush_l1d)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (0); (void)pto_tmp__; } switch (sizeof((irq_stat.kvm_cpu_l1tf_flush_l1d))) { case 1: asm ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "qi" ((pto_T__)(0))); break; case 2: asm ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(0))); break; case 4: asm ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "ri" ((pto_T__)(0))); break; case 8: asm ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((irq_stat.kvm_cpu_l1tf_flush_l1d)) : "re" ((pto_T__)(0))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool kvm_get_cpu_l1tf_flush_l1d(void) { return ({ __this_cpu_preempt_check("read"); ({ typeof(irq_stat.kvm_cpu_l1tf_flush_l1d) pscr_ret__; do { const void *__vpp_verify = (typeof((&(irq_stat.kvm_cpu_l1tf_flush_l1d)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(irq_stat.kvm_cpu_l1tf_flush_l1d)) { case 1: pscr_ret__ = ({ typeof(irq_stat.kvm_cpu_l1tf_flush_l1d) pfo_ret__; switch (sizeof(irq_stat.kvm_cpu_l1tf_flush_l1d)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(irq_stat.kvm_cpu_l1tf_flush_l1d) pfo_ret__; switch (sizeof(irq_stat.kvm_cpu_l1tf_flush_l1d)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(irq_stat.kvm_cpu_l1tf_flush_l1d) pfo_ret__; switch (sizeof(irq_stat.kvm_cpu_l1tf_flush_l1d)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(irq_stat.kvm_cpu_l1tf_flush_l1d) pfo_ret__; switch (sizeof(irq_stat.kvm_cpu_l1tf_flush_l1d)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (irq_stat.kvm_cpu_l1tf_flush_l1d)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; }); }); } # 15 "../arch/x86/include/asm/apic.h" 2 # 45 "../arch/x86/include/asm/apic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void generic_apic_probe(void) { } extern unsigned int apic_verbosity; extern int local_apic_timer_c2_ok; extern int disable_apic; extern unsigned int lapic_timer_period; extern enum apic_intr_mode_id apic_intr_mode; enum apic_intr_mode_id { APIC_PIC, APIC_VIRTUAL_WIRE, APIC_VIRTUAL_WIRE_NO_CONFIG, APIC_SYMMETRIC_IO, APIC_SYMMETRIC_IO_NO_ROUTING }; extern void __inquire_remote_apic(int apicid); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void default_inquire_remote_apic(int apicid) { if (apic_verbosity >= 2) __inquire_remote_apic(apicid); } # 89 "../arch/x86/include/asm/apic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool apic_from_smp_config(void) { return smp_found_config && !disable_apic; } # 101 "../arch/x86/include/asm/apic.h" extern int setup_profiling_timer(unsigned int); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_apic_mem_write(u32 reg, u32 v) { volatile u32 *addr = (volatile u32 *)((fix_to_virt(FIX_APIC_BASE)) + reg); asm volatile ("# ALT: oldnstr\n" "661:\n\t" "movl %0, %P1" "\n662:\n" "# ALT: padding\n" ".skip -(((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")) > 0) * " "((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")),0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "(19*32 + (5))" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "xchgl %0, %P1" "\n" "665""1" ":\n" ".popsection\n" : "=r" (v), "=m" (*addr) : "i" (0), "0" (v), "m" (*addr)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 native_apic_mem_read(u32 reg) { return *((volatile u32 *)((fix_to_virt(FIX_APIC_BASE)) + reg)); } extern void native_apic_wait_icr_idle(void); extern u32 native_safe_apic_wait_icr_idle(void); extern void native_apic_icr_write(u32 low, u32 id); extern u64 native_apic_icr_read(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool apic_is_x2apic_enabled(void) { u64 msr; if (rdmsrl_safe(0x0000001b, &msr)) return false; return msr & (1UL << 10); } extern void enable_IR_x2apic(void); extern int get_physical_broadcast(void); extern int lapic_get_maxlvt(void); extern void clear_local_APIC(void); extern void disconnect_bsp_APIC(int virt_wire_setup); extern void disable_local_APIC(void); extern void lapic_shutdown(void); extern void sync_Arb_IDs(void); extern void init_bsp_APIC(void); extern void apic_intr_mode_init(void); extern void init_apic_mappings(void); void register_lapic_address(unsigned long address); extern void setup_boot_APIC_clock(void); extern void setup_secondary_APIC_clock(void); extern void lapic_update_tsc_freq(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int apic_force_enable(unsigned long addr) { return -1; } extern void apic_ap_setup(void); extern int apic_is_clustered_box(void); extern int setup_APIC_eilvt(u8 lvt_off, u8 vector, u8 msg_type, u8 mask); extern void lapic_assign_system_vectors(void); extern void lapic_assign_legacy_vector(unsigned int isairq, bool replace); extern void lapic_online(void); extern void lapic_offline(void); extern bool apic_needs_pit(void); # 200 "../arch/x86/include/asm/apic.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void x2apic_wrmsr_fence(void) { asm volatile("mfence" : : : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_apic_msr_write(u32 reg, u32 v) { if (reg == 0xE0 || reg == 0x20 || reg == 0xD0 || reg == 0x30) return; do { paravirt_write_msr(0x800 + (reg >> 4), v, 0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_apic_msr_eoi_write(u32 reg, u32 v) { __wrmsr(0x800 + (0xB0 >> 4), 0x0, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 native_apic_msr_read(u32 reg) { u64 msr; if (reg == 0xE0) return -1; do { msr = paravirt_read_msr(0x800 + (reg >> 4)); } while (0); return (u32)msr; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_x2apic_wait_icr_idle(void) { return; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 native_safe_x2apic_wait_icr_idle(void) { return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_x2apic_icr_write(u32 low, u32 id) { wrmsrl(0x800 + (0x300 >> 4), ((__u64) id) << 32 | low); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 native_x2apic_icr_read(void) { unsigned long val; do { val = paravirt_read_msr(0x800 + (0x300 >> 4)); } while (0); return val; } extern int x2apic_mode; extern int x2apic_phys; extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) check_x2apic(void); extern void x2apic_setup(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int x2apic_enabled(void) { return (__builtin_constant_p(( 4*32+21)) && ( (((( 4*32+21))>>5)==(0) && (1UL<<((( 4*32+21))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 4*32+21))>>5)==(1) && (1UL<<((( 4*32+21))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 4*32+21))>>5)==(2) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(3) && (1UL<<((( 4*32+21))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 4*32+21))>>5)==(4) && (1UL<<((( 4*32+21))&31) & (0) )) || (((( 4*32+21))>>5)==(5) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(6) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(7) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(8) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(9) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(10) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(11) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(12) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(13) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(14) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(15) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(16) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(17) && (1UL<<((( 4*32+21))&31) & 0 )) || (((( 4*32+21))>>5)==(18) && (1UL<<((( 4*32+21))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 4*32+21), (unsigned long *)((&boot_cpu_data)->x86_capability))) && apic_is_x2apic_enabled(); } # 274 "../arch/x86/include/asm/apic.h" struct irq_data; # 285 "../arch/x86/include/asm/apic.h" struct apic { void (*eoi_write)(u32 reg, u32 v); void (*native_eoi_write)(u32 reg, u32 v); void (*write)(u32 reg, u32 v); u32 (*read)(u32 reg); void (*wait_icr_idle)(void); u32 (*safe_wait_icr_idle)(void); void (*send_IPI)(int cpu, int vector); void (*send_IPI_mask)(const struct cpumask *mask, int vector); void (*send_IPI_mask_allbutself)(const struct cpumask *msk, int vec); void (*send_IPI_allbutself)(int vector); void (*send_IPI_all)(int vector); void (*send_IPI_self)(int vector); u32 dest_logical; u32 disable_esr; u32 irq_delivery_mode; u32 irq_dest_mode; u32 (*calc_dest_apicid)(unsigned int cpu); u64 (*icr_read)(void); void (*icr_write)(u32 low, u32 high); int (*probe)(void); int (*acpi_madt_oem_check)(char *oem_id, char *oem_table_id); int (*apic_id_valid)(u32 apicid); int (*apic_id_registered)(void); bool (*check_apicid_used)(physid_mask_t *map, int apicid); void (*init_apic_ldr)(void); void (*ioapic_phys_id_map)(physid_mask_t *phys_map, physid_mask_t *retmap); void (*setup_apic_routing)(void); int (*cpu_present_to_apicid)(int mps_cpu); void (*apicid_to_cpu_present)(int phys_apicid, physid_mask_t *retmap); int (*check_phys_apicid_present)(int phys_apicid); int (*phys_pkg_id)(int cpuid_apic, int index_msb); u32 (*get_apic_id)(unsigned long x); u32 (*set_apic_id)(unsigned int id); int (*wakeup_secondary_cpu)(int apicid, unsigned long start_eip); void (*inquire_remote_apic)(int apicid); # 351 "../arch/x86/include/asm/apic.h" char *name; }; extern struct apic *apic; # 379 "../arch/x86/include/asm/apic.h" extern struct apic *__apicdrivers[], *__apicdrivers_end[]; extern int wakeup_secondary_cpu_via_nmi(int apicid, unsigned long start_eip); extern int lapic_can_unplug_cpu(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 apic_read(u32 reg) { return apic->read(reg); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void apic_write(u32 reg, u32 val) { apic->write(reg, val); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void apic_eoi(void) { apic->eoi_write(0xB0, 0x0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 apic_icr_read(void) { return apic->icr_read(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void apic_icr_write(u32 low, u32 high) { apic->icr_write(low, high); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void apic_wait_icr_idle(void) { apic->wait_icr_idle(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 safe_apic_wait_icr_idle(void) { return apic->safe_wait_icr_idle(); } extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) apic_set_eoi_write(void (*eoi_write)(u32 reg, u32 v)); # 441 "../arch/x86/include/asm/apic.h" extern void apic_ack_irq(struct irq_data *data); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ack_APIC_irq(void) { apic_eoi(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned default_get_apic_id(unsigned long x) { unsigned int ver = ((apic_read(0x30)) & 0xFFu); if (((ver) >= 0x14) || (__builtin_constant_p(( 3*32+26)) && ( (((( 3*32+26))>>5)==(0) && (1UL<<((( 3*32+26))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 3*32+26))>>5)==(1) && (1UL<<((( 3*32+26))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 3*32+26))>>5)==(2) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(3) && (1UL<<((( 3*32+26))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 3*32+26))>>5)==(4) && (1UL<<((( 3*32+26))&31) & (0) )) || (((( 3*32+26))>>5)==(5) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(6) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(7) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(8) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(9) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(10) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(11) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(12) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(13) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(14) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(15) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(16) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(17) && (1UL<<((( 3*32+26))&31) & 0 )) || (((( 3*32+26))>>5)==(18) && (1UL<<((( 3*32+26))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 3*32+26), (unsigned long *)((&boot_cpu_data)->x86_capability)))) return (x >> 24) & 0xFF; else return (x >> 24) & 0x0F; } # 469 "../arch/x86/include/asm/apic.h" extern void apic_send_IPI_self(int vector); extern __attribute__((section(".discard"), unused)) char __pcpu_scope_x2apic_extra_bits; extern __attribute__((section(".data..percpu" ""))) __typeof__(int) x2apic_extra_bits; extern void generic_bigsmp_probe(void); # 1 "../arch/x86/include/asm/smp.h" 1 # 479 "../arch/x86/include/asm/apic.h" 2 extern __attribute__((section(".discard"), unused)) char __pcpu_scope_x86_bios_cpu_apicid; extern __attribute__((section(".data..percpu" "..read_mostly"))) __typeof__(u16) x86_bios_cpu_apicid; extern __typeof__(u16) *x86_bios_cpu_apicid_early_ptr; extern __typeof__(u16) x86_bios_cpu_apicid_early_map[]; extern struct apic apic_noop; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int read_apic_id(void) { unsigned int reg = apic_read(0x20); return apic->get_apic_id(reg); } extern int default_apic_id_valid(u32 apicid); extern int default_acpi_madt_oem_check(char *, char *); extern void default_setup_apic_routing(void); extern u32 apic_default_calc_apicid(unsigned int cpu); extern u32 apic_flat_calc_apicid(unsigned int cpu); extern bool default_check_apicid_used(physid_mask_t *map, int apicid); extern void default_ioapic_phys_id_map(physid_mask_t *phys_map, physid_mask_t *retmap); extern int default_cpu_present_to_apicid(int mps_cpu); extern int default_check_phys_apicid_present(int phys_apicid); bool apic_id_is_primary_thread(unsigned int id); extern void irq_enter(void); extern void irq_exit(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void entering_irq(void) { irq_enter(); kvm_set_cpu_l1tf_flush_l1d(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void entering_ack_irq(void) { entering_irq(); ack_APIC_irq(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ipi_entering_ack_irq(void) { irq_enter(); ack_APIC_irq(); kvm_set_cpu_l1tf_flush_l1d(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void exiting_irq(void) { irq_exit(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void exiting_ack_irq(void) { ack_APIC_irq(); irq_exit(); } extern void ioapic_zap_locks(void); # 14 "../arch/x86/include/asm/smp.h" 2 # 1 "../arch/x86/include/asm/io_apic.h" 1 # 1 "../arch/x86/include/asm/irq_vectors.h" 1 # 9 "../arch/x86/include/asm/io_apic.h" 2 # 28 "../arch/x86/include/asm/io_apic.h" union IO_APIC_reg_00 { u32 raw; struct { u32 __reserved_2 : 14, LTS : 1, delivery_type : 1, __reserved_1 : 8, ID : 8; } __attribute__ ((packed)) bits; }; union IO_APIC_reg_01 { u32 raw; struct { u32 version : 8, __reserved_2 : 7, PRQ : 1, entries : 8, __reserved_1 : 8; } __attribute__ ((packed)) bits; }; union IO_APIC_reg_02 { u32 raw; struct { u32 __reserved_2 : 24, arbitration : 4, __reserved_1 : 4; } __attribute__ ((packed)) bits; }; union IO_APIC_reg_03 { u32 raw; struct { u32 boot_DT : 1, __reserved_1 : 31; } __attribute__ ((packed)) bits; }; struct IO_APIC_route_entry { __u32 vector : 8, delivery_mode : 3, dest_mode : 1, delivery_status : 1, polarity : 1, irr : 1, trigger : 1, mask : 1, __reserved_2 : 15; __u32 __reserved_3 : 24, dest : 8; } __attribute__ ((packed)); struct IR_IO_APIC_route_entry { __u64 vector : 8, zero : 3, index2 : 1, delivery_status : 1, polarity : 1, irr : 1, trigger : 1, mask : 1, reserved : 31, format : 1, index : 15; } __attribute__ ((packed)); struct irq_alloc_info; struct ioapic_domain_cfg; # 123 "../arch/x86/include/asm/io_apic.h" extern int nr_ioapics; extern int mpc_ioapic_id(int ioapic); extern unsigned int mpc_ioapic_addr(int ioapic); extern int mp_irq_entries; extern struct mpc_intsrc mp_irqs[(256 * 4)]; extern int skip_ioapic_setup; extern int noioapicquirk; extern int noioapicreroute; extern u32 gsi_top; extern unsigned long io_apic_irqs; # 156 "../arch/x86/include/asm/io_apic.h" struct irq_cfg; extern void ioapic_insert_resources(void); extern int arch_early_ioapic_init(void); extern int save_ioapic_entries(void); extern void mask_ioapic_entries(void); extern int restore_ioapic_entries(void); extern void setup_ioapic_ids_from_mpc(void); extern void setup_ioapic_ids_from_mpc_nocheck(void); extern int mp_find_ioapic(u32 gsi); extern int mp_find_ioapic_pin(int ioapic, u32 gsi); extern int mp_map_gsi_to_irq(u32 gsi, unsigned int flags, struct irq_alloc_info *info); extern void mp_unmap_irq(int irq); extern int mp_register_ioapic(int id, u32 address, u32 gsi_base, struct ioapic_domain_cfg *cfg); extern int mp_unregister_ioapic(u32 gsi_base); extern int mp_ioapic_registered(u32 gsi_base); extern void ioapic_set_alloc_attr(struct irq_alloc_info *info, int node, int trigger, int polarity); extern void mp_save_irq(struct mpc_intsrc *m); extern void disable_ioapic_support(void); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) io_apic_init_mappings(void); extern unsigned int native_io_apic_read(unsigned int apic, unsigned int reg); extern void native_restore_boot_irq_mode(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int io_apic_read(unsigned int apic, unsigned int reg) { return x86_apic_ops.io_apic_read(apic, reg); } extern void setup_IO_APIC(void); extern void enable_IO_APIC(void); extern void clear_IO_APIC(void); extern void restore_boot_irq_mode(void); extern int IO_APIC_get_PCI_irq_vector(int bus, int devfn, int pin); extern void print_IO_APICs(void); # 16 "../arch/x86/include/asm/smp.h" 2 extern int smp_num_siblings; extern unsigned int num_processors; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_cpu_sibling_map; extern __attribute__((section(".data..percpu" "..read_mostly"))) __typeof__(cpumask_var_t) cpu_sibling_map; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_cpu_core_map; extern __attribute__((section(".data..percpu" "..read_mostly"))) __typeof__(cpumask_var_t) cpu_core_map; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_cpu_die_map; extern __attribute__((section(".data..percpu" "..read_mostly"))) __typeof__(cpumask_var_t) cpu_die_map; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_cpu_llc_shared_map; extern __attribute__((section(".data..percpu" "..read_mostly"))) __typeof__(cpumask_var_t) cpu_llc_shared_map; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_cpu_llc_id; extern __attribute__((section(".data..percpu" "..read_mostly"))) __typeof__(u16) cpu_llc_id; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_cpu_number; extern __attribute__((section(".data..percpu" "..read_mostly"))) __typeof__(int) cpu_number; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cpumask *cpu_llc_shared_mask(int cpu) { return (*({ do { const void *__vpp_verify = (typeof((&(cpu_llc_shared_map)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = (unsigned long) ((typeof(*((&(cpu_llc_shared_map)))) *)((&(cpu_llc_shared_map)))); (typeof((typeof(*((&(cpu_llc_shared_map)))) *)((&(cpu_llc_shared_map))))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); })); } extern __attribute__((section(".discard"), unused)) char __pcpu_scope_x86_cpu_to_apicid; extern __attribute__((section(".data..percpu" "..read_mostly"))) __typeof__(u16) x86_cpu_to_apicid; extern __typeof__(u16) *x86_cpu_to_apicid_early_ptr; extern __typeof__(u16) x86_cpu_to_apicid_early_map[]; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_x86_cpu_to_acpiid; extern __attribute__((section(".data..percpu" "..read_mostly"))) __typeof__(u32) x86_cpu_to_acpiid; extern __typeof__(u32) *x86_cpu_to_acpiid_early_ptr; extern __typeof__(u32) x86_cpu_to_acpiid_early_map[]; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_x86_bios_cpu_apicid; extern __attribute__((section(".data..percpu" "..read_mostly"))) __typeof__(u16) x86_bios_cpu_apicid; extern __typeof__(u16) *x86_bios_cpu_apicid_early_ptr; extern __typeof__(u16) x86_bios_cpu_apicid_early_map[]; struct task_struct; struct smp_ops { void (*smp_prepare_boot_cpu)(void); void (*smp_prepare_cpus)(unsigned max_cpus); void (*smp_cpus_done)(unsigned max_cpus); void (*stop_other_cpus)(int wait); void (*crash_stop_other_cpus)(void); void (*smp_send_reschedule)(int cpu); int (*cpu_up)(unsigned cpu, struct task_struct *tidle); int (*cpu_disable)(void); void (*cpu_die)(unsigned int cpu); void (*play_dead)(void); void (*send_call_func_ipi)(const struct cpumask *mask); void (*send_call_func_single_ipi)(int cpu); }; extern void set_cpu_sibling_map(int cpu); extern struct smp_ops smp_ops; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void smp_send_stop(void) { smp_ops.stop_other_cpus(0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void stop_other_cpus(void) { smp_ops.stop_other_cpus(1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void smp_prepare_boot_cpu(void) { smp_ops.smp_prepare_boot_cpu(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void smp_prepare_cpus(unsigned int max_cpus) { smp_ops.smp_prepare_cpus(max_cpus); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void smp_cpus_done(unsigned int max_cpus) { smp_ops.smp_cpus_done(max_cpus); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __cpu_up(unsigned int cpu, struct task_struct *tidle) { return smp_ops.cpu_up(cpu, tidle); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __cpu_disable(void) { return smp_ops.cpu_disable(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __cpu_die(unsigned int cpu) { smp_ops.cpu_die(cpu); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void play_dead(void) { smp_ops.play_dead(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void smp_send_reschedule(int cpu) { smp_ops.smp_send_reschedule(cpu); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_send_call_function_single_ipi(int cpu) { smp_ops.send_call_func_single_ipi(cpu); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_send_call_function_ipi_mask(const struct cpumask *mask) { smp_ops.send_call_func_ipi(mask); } void cpu_disable_common(void); void native_smp_prepare_boot_cpu(void); void native_smp_prepare_cpus(unsigned int max_cpus); void calculate_max_logical_packages(void); void native_smp_cpus_done(unsigned int max_cpus); int common_cpu_up(unsigned int cpunum, struct task_struct *tidle); int native_cpu_up(unsigned int cpunum, struct task_struct *tidle); int native_cpu_disable(void); int common_cpu_die(unsigned int cpu); void native_cpu_die(unsigned int cpu); void hlt_play_dead(void); void native_play_dead(void); void play_dead_common(void); void wbinvd_on_cpu(int cpu); int wbinvd_on_all_cpus(void); void native_send_call_func_ipi(const struct cpumask *mask); void native_send_call_func_single_ipi(int cpu); void x86_idle_thread_init(unsigned int cpu, struct task_struct *idle); void smp_store_boot_cpu_info(void); void smp_store_cpu_info(int id); void smp_reboot_interrupt(void); void smp_reschedule_interrupt(struct pt_regs *regs); void smp_call_function_interrupt(struct pt_regs *regs); void smp_call_function_single_interrupt(struct pt_regs *r); # 184 "../arch/x86/include/asm/smp.h" extern unsigned disabled_cpus; extern int hard_smp_processor_id(void); extern void nmi_selftest(void); # 12 "../arch/x86/include/asm/mmzone_64.h" 2 extern struct pglist_data *node_data[]; # 6 "../arch/x86/include/asm/mmzone.h" 2 # 964 "../include/linux/mmzone.h" 2 extern struct pglist_data *first_online_pgdat(void); extern struct pglist_data *next_online_pgdat(struct pglist_data *pgdat); extern struct zone *next_zone(struct zone *zone); # 999 "../include/linux/mmzone.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct zone *zonelist_zone(struct zoneref *zoneref) { return zoneref->zone; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int zonelist_zone_idx(struct zoneref *zoneref) { return zoneref->zone_idx; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int zonelist_node_idx(struct zoneref *zoneref) { return zone_to_nid(zoneref->zone); } struct zoneref *__next_zones_zonelist(struct zoneref *z, enum zone_type highest_zoneidx, nodemask_t *nodes); # 1030 "../include/linux/mmzone.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) struct zoneref *next_zones_zonelist(struct zoneref *z, enum zone_type highest_zoneidx, nodemask_t *nodes) { if (__builtin_expect(!!(!nodes && zonelist_zone_idx(z) <= highest_zoneidx), 1)) return z; return __next_zones_zonelist(z, highest_zoneidx, nodes); } # 1055 "../include/linux/mmzone.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct zoneref *first_zones_zonelist(struct zonelist *zonelist, enum zone_type highest_zoneidx, nodemask_t *nodes) { return next_zones_zonelist(zonelist->_zonerefs, highest_zoneidx, nodes); } # 1140 "../include/linux/mmzone.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long pfn_to_section_nr(unsigned long pfn) { return pfn >> (27 - 12); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long section_nr_to_pfn(unsigned long sec) { return sec << (27 - 12); } # 1167 "../include/linux/mmzone.h" struct mem_section_usage { unsigned long subsection_map[((((1UL << (27 - 21))) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8)))]; unsigned long pageblock_flags[0]; }; void subsection_map_init(unsigned long pfn, unsigned long nr_pages); struct page; struct page_ext; struct mem_section { # 1190 "../include/linux/mmzone.h" unsigned long section_mem_map; struct mem_section_usage *usage; struct page_ext *page_ext; unsigned long pad; }; # 1218 "../include/linux/mmzone.h" extern struct mem_section **mem_section; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long *section_to_usemap(struct mem_section *ms) { return ms->usage->pageblock_flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct mem_section *__nr_to_section(unsigned long nr) { if (!mem_section) return ((void *)0); if (!mem_section[((nr) / (((1UL) << 12) / sizeof (struct mem_section)))]) return ((void *)0); return &mem_section[((nr) / (((1UL) << 12) / sizeof (struct mem_section)))][nr & ((((1UL) << 12) / sizeof (struct mem_section)) - 1)]; } extern unsigned long __section_nr(struct mem_section *ms); extern size_t mem_section_usage_size(void); # 1262 "../include/linux/mmzone.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page *__section_mem_map_addr(struct mem_section *section) { unsigned long map = section->section_mem_map; map &= (~((1UL<<4)-1)); return (struct page *)map; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int present_section(struct mem_section *section) { return (section && (section->section_mem_map & (1UL<<0))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int present_section_nr(unsigned long nr) { return present_section(__nr_to_section(nr)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int valid_section(struct mem_section *section) { return (section && (section->section_mem_map & (1UL<<1))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int early_section(struct mem_section *section) { return (section && (section->section_mem_map & (1UL<<3))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int valid_section_nr(unsigned long nr) { return valid_section(__nr_to_section(nr)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int online_section(struct mem_section *section) { return (section && (section->section_mem_map & (1UL<<2))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int online_section_nr(unsigned long nr) { return online_section(__nr_to_section(nr)); } void online_mem_sections(unsigned long start_pfn, unsigned long end_pfn); void offline_mem_sections(unsigned long start_pfn, unsigned long end_pfn); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct mem_section *__pfn_to_section(unsigned long pfn) { return __nr_to_section(pfn_to_section_nr(pfn)); } extern unsigned long __highest_present_section_nr; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int subsection_map_index(unsigned long pfn) { return (pfn & ~((~((1UL << (27 - 12))-1)))) / (1UL << (21 - 12)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pfn_section_valid(struct mem_section *ms, unsigned long pfn) { int idx = subsection_map_index(pfn); return test_bit(idx, ms->usage->subsection_map); } # 1338 "../include/linux/mmzone.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pfn_valid(unsigned long pfn) { struct mem_section *ms; if (pfn_to_section_nr(pfn) >= (1UL << (((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+ 2) & 31))|(1<<(( 3*32+ 3) & 31))|(1<<(( 3*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & (0|0) )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & (0|0|0|0) )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 0 : ( __builtin_constant_p((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has((16*32+16)) )) ? 52 : 46) - 27))) return 0; ms = __nr_to_section(pfn_to_section_nr(pfn)); if (!valid_section(ms)) return 0; return early_section(ms) || pfn_section_valid(ms, pfn); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pfn_present(unsigned long pfn) { if (pfn_to_section_nr(pfn) >= (1UL << (((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+ 2) & 31))|(1<<(( 3*32+ 3) & 31))|(1<<(( 3*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & (0|0) )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & (0|0|0|0) )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 0 : ( __builtin_constant_p((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has((16*32+16)) )) ? 52 : 46) - 27))) return 0; return present_section(__nr_to_section(pfn_to_section_nr(pfn))); } # 1378 "../include/linux/mmzone.h" void sparse_init(void); # 1391 "../include/linux/mmzone.h" struct mminit_pfnnid_cache { unsigned long last_start; unsigned long last_end; int last_nid; }; void memory_present(int nid, unsigned long start, unsigned long end); # 1439 "../include/linux/mmzone.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool memmap_valid_within(unsigned long pfn, struct page *page, struct zone *zone) { return true; } # 7 "../include/linux/gfp.h" 2 # 1 "../include/linux/topology.h" 1 # 33 "../include/linux/topology.h" # 1 "../include/linux/smp.h" 1 # 17 "../include/linux/smp.h" typedef void (*smp_call_func_t)(void *info); struct __call_single_data { struct llist_node llist; smp_call_func_t func; void *info; unsigned int flags; }; typedef struct __call_single_data call_single_data_t __attribute__((__aligned__(sizeof(struct __call_single_data)))); extern unsigned int total_cpus; int smp_call_function_single(int cpuid, smp_call_func_t func, void *info, int wait); void on_each_cpu(smp_call_func_t func, void *info, int wait); void on_each_cpu_mask(const struct cpumask *mask, smp_call_func_t func, void *info, bool wait); void on_each_cpu_cond(bool (*cond_func)(int cpu, void *info), smp_call_func_t func, void *info, bool wait, gfp_t gfp_flags); void on_each_cpu_cond_mask(bool (*cond_func)(int cpu, void *info), smp_call_func_t func, void *info, bool wait, gfp_t gfp_flags, const struct cpumask *mask); int smp_call_function_single_async(int cpu, call_single_data_t *csd); # 78 "../include/linux/smp.h" extern void smp_send_stop(void); extern void smp_send_reschedule(int cpu); extern void smp_prepare_cpus(unsigned int max_cpus); extern int __cpu_up(unsigned int cpunum, struct task_struct *tidle); extern void smp_cpus_done(unsigned int max_cpus); void smp_call_function(smp_call_func_t func, void *info, int wait); void smp_call_function_many(const struct cpumask *mask, smp_call_func_t func, void *info, bool wait); int smp_call_function_any(const struct cpumask *mask, smp_call_func_t func, void *info, int wait); void kick_all_cpus_sync(void); void wake_up_all_idle_cpus(void); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) call_function_init(void); void generic_smp_call_function_single_interrupt(void); void smp_prepare_boot_cpu(void); extern unsigned int setup_max_cpus; extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) setup_nr_cpu_ids(void); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) smp_init(void); extern int __boot_cpu_id; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_boot_cpu_id(void) { return __boot_cpu_id; } # 229 "../include/linux/smp.h" extern void arch_disable_smp_support(void); extern void arch_enable_nonboot_cpus_begin(void); extern void arch_enable_nonboot_cpus_end(void); void smp_setup_processor_id(void); int smp_call_on_cpu(unsigned int cpu, int (*func)(void *), void *par, bool phys); int smpcfd_prepare_cpu(unsigned int cpu); int smpcfd_dead_cpu(unsigned int cpu); int smpcfd_dying_cpu(unsigned int cpu); # 34 "../include/linux/topology.h" 2 # 1 "../include/linux/percpu.h" 1 # 65 "../include/linux/percpu.h" extern void *pcpu_base_addr; extern const unsigned long *pcpu_unit_offsets; struct pcpu_group_info { int nr_units; unsigned long base_offset; unsigned int *cpu_map; }; struct pcpu_alloc_info { size_t static_size; size_t reserved_size; size_t dyn_size; size_t unit_size; size_t atom_size; size_t alloc_size; size_t __ai_size; int nr_groups; struct pcpu_group_info groups[]; }; enum pcpu_fc { PCPU_FC_AUTO, PCPU_FC_EMBED, PCPU_FC_PAGE, PCPU_FC_NR, }; extern const char * const pcpu_fc_names[PCPU_FC_NR]; extern enum pcpu_fc pcpu_chosen_fc; typedef void * (*pcpu_fc_alloc_fn_t)(unsigned int cpu, size_t size, size_t align); typedef void (*pcpu_fc_free_fn_t)(void *ptr, size_t size); typedef void (*pcpu_fc_populate_pte_fn_t)(unsigned long addr); typedef int (pcpu_fc_cpu_distance_fn_t)(unsigned int from, unsigned int to); extern struct pcpu_alloc_info * __attribute__((__section__(".init.text"))) __attribute__((__cold__)) pcpu_alloc_alloc_info(int nr_groups, int nr_units); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) pcpu_free_alloc_info(struct pcpu_alloc_info *ai); extern int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, void *base_addr); extern int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) pcpu_embed_first_chunk(size_t reserved_size, size_t dyn_size, size_t atom_size, pcpu_fc_cpu_distance_fn_t cpu_distance_fn, pcpu_fc_alloc_fn_t alloc_fn, pcpu_fc_free_fn_t free_fn); extern int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) pcpu_page_first_chunk(size_t reserved_size, pcpu_fc_alloc_fn_t alloc_fn, pcpu_fc_free_fn_t free_fn, pcpu_fc_populate_pte_fn_t populate_pte_fn); extern void *__alloc_reserved_percpu(size_t size, size_t align); extern bool __is_kernel_percpu_address(unsigned long addr, unsigned long *can_addr); extern bool is_kernel_percpu_address(unsigned long addr); extern void *__alloc_percpu_gfp(size_t size, size_t align, gfp_t gfp); extern void *__alloc_percpu(size_t size, size_t align); extern void free_percpu(void *__pdata); extern phys_addr_t per_cpu_ptr_to_phys(void *addr); # 146 "../include/linux/percpu.h" extern unsigned long pcpu_nr_pages(void); # 35 "../include/linux/topology.h" 2 # 45 "../include/linux/topology.h" int arch_update_cpu_topology(void); # 67 "../include/linux/topology.h" extern __attribute__((section(".discard"), unused)) char __pcpu_scope_numa_node; extern __attribute__((section(".data..percpu" ""))) __typeof__(int) numa_node; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int numa_node_id(void) { return ({ typeof(numa_node) pscr_ret__; do { const void *__vpp_verify = (typeof((&(numa_node)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(numa_node)) { case 1: pscr_ret__ = ({ typeof(numa_node) pfo_ret__; switch (sizeof(numa_node)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (numa_node)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (numa_node)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (numa_node)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (numa_node)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(numa_node) pfo_ret__; switch (sizeof(numa_node)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (numa_node)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (numa_node)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (numa_node)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (numa_node)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(numa_node) pfo_ret__; switch (sizeof(numa_node)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (numa_node)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (numa_node)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (numa_node)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (numa_node)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(numa_node) pfo_ret__; switch (sizeof(numa_node)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (numa_node)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (numa_node)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (numa_node)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (numa_node)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; }); } # 85 "../include/linux/topology.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_numa_node(int node) { do { do { const void *__vpp_verify = (typeof((&(numa_node)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(numa_node)) { case 1: do { typedef typeof((numa_node)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (node); (void)pto_tmp__; } switch (sizeof((numa_node))) { case 1: asm volatile ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "qi" ((pto_T__)(node))); break; case 2: asm volatile ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "ri" ((pto_T__)(node))); break; case 4: asm volatile ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "ri" ((pto_T__)(node))); break; case 8: asm volatile ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "re" ((pto_T__)(node))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((numa_node)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (node); (void)pto_tmp__; } switch (sizeof((numa_node))) { case 1: asm volatile ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "qi" ((pto_T__)(node))); break; case 2: asm volatile ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "ri" ((pto_T__)(node))); break; case 4: asm volatile ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "ri" ((pto_T__)(node))); break; case 8: asm volatile ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "re" ((pto_T__)(node))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((numa_node)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (node); (void)pto_tmp__; } switch (sizeof((numa_node))) { case 1: asm volatile ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "qi" ((pto_T__)(node))); break; case 2: asm volatile ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "ri" ((pto_T__)(node))); break; case 4: asm volatile ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "ri" ((pto_T__)(node))); break; case 8: asm volatile ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "re" ((pto_T__)(node))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((numa_node)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (node); (void)pto_tmp__; } switch (sizeof((numa_node))) { case 1: asm volatile ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "qi" ((pto_T__)(node))); break; case 2: asm volatile ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "ri" ((pto_T__)(node))); break; case 4: asm volatile ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "ri" ((pto_T__)(node))); break; case 8: asm volatile ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((numa_node)) : "re" ((pto_T__)(node))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_cpu_numa_node(int cpu, int node) { (*({ do { const void *__vpp_verify = (typeof((&(numa_node)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = (unsigned long) ((typeof(*((&(numa_node)))) *)((&(numa_node)))); (typeof((typeof(*((&(numa_node)))) *)((&(numa_node))))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); })) = node; } # 162 "../include/linux/topology.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int numa_mem_id(void) { return numa_node_id(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int node_to_mem_node(int node) { return node; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpu_to_mem(int cpu) { return __cpu_to_node(cpu); } # 204 "../include/linux/topology.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct cpumask *cpu_smt_mask(int cpu) { return ((*({ do { const void *__vpp_verify = (typeof((&(cpu_sibling_map)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = (unsigned long) ((typeof(*((&(cpu_sibling_map)))) *)((&(cpu_sibling_map)))); (typeof((typeof(*((&(cpu_sibling_map)))) *)((&(cpu_sibling_map))))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); }))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct cpumask *cpu_cpu_mask(int cpu) { return cpumask_of_node(__cpu_to_node(cpu)); } # 10 "../include/linux/gfp.h" 2 struct vm_area_struct; # 308 "../include/linux/gfp.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int gfpflags_to_migratetype(const gfp_t gfp_flags) { (void)({ int __ret_warn_on = !!((gfp_flags & ((( gfp_t)0x10u)|(( gfp_t)0x08u))) == ((( gfp_t)0x10u)|(( gfp_t)0x08u))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/gfp.h"), "i" (310), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (330)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { extern void __compiletime_assert_311(void) ; if (!(!((1UL << 3) != 0x08u))) __compiletime_assert_311(); } while (0); do { extern void __compiletime_assert_312(void) ; if (!(!((0x08u >> 3) != MIGRATE_MOVABLE))) __compiletime_assert_312(); } while (0); if (__builtin_expect(!!(page_group_by_mobility_disabled), 0)) return MIGRATE_UNMOVABLE; return (gfp_flags & ((( gfp_t)0x10u)|(( gfp_t)0x08u))) >> 3; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool gfpflags_allow_blocking(const gfp_t gfp_flags) { return !!(gfp_flags & (( gfp_t)0x400u)); } # 418 "../include/linux/gfp.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) enum zone_type gfp_zone(gfp_t flags) { enum zone_type z; int bit = ( int) (flags & ((( gfp_t)0x01u)|(( gfp_t)0x02u)|(( gfp_t)0x04u)|(( gfp_t)0x08u))); z = (( (ZONE_NORMAL << 0 * 2) | (ZONE_DMA << 0x01u * 2) | (ZONE_NORMAL << 0x02u * 2) | (ZONE_DMA32 << 0x04u * 2) | (ZONE_NORMAL << 0x08u * 2) | (ZONE_DMA << (0x08u | 0x01u) * 2) | (ZONE_MOVABLE << (0x08u | 0x02u) * 2) | (ZONE_DMA32 << (0x08u | 0x04u) * 2)) >> (bit * 2)) & ((1 << 2) - 1); do { if (__builtin_expect(!!((( 1 << (0x01u | 0x02u) | 1 << (0x01u | 0x04u) | 1 << (0x04u | 0x02u) | 1 << (0x01u | 0x04u | 0x02u) | 1 << (0x08u | 0x02u | 0x01u) | 1 << (0x08u | 0x04u | 0x01u) | 1 << (0x08u | 0x04u | 0x02u) | 1 << (0x08u | 0x04u | 0x01u | 0x02u) ) >> bit) & 1), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/gfp.h"), "i" (425), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (331)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); return z; } # 436 "../include/linux/gfp.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int gfp_zonelist(gfp_t flags) { if (__builtin_expect(!!(flags & (( gfp_t)0x200000u)), 0)) return ZONELIST_NOFALLBACK; return ZONELIST_FALLBACK; } # 454 "../include/linux/gfp.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct zonelist *node_zonelist(int nid, gfp_t flags) { return (node_data[nid])->node_zonelists + gfp_zonelist(flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_free_page(struct page *page, int order) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_alloc_page(struct page *page, int order) { } struct page * __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, int preferred_nid, nodemask_t *nodemask); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page * __alloc_pages(gfp_t gfp_mask, unsigned int order, int preferred_nid) { return __alloc_pages_nodemask(gfp_mask, order, preferred_nid, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page * __alloc_pages_node(int nid, gfp_t gfp_mask, unsigned int order) { do { if (__builtin_expect(!!(nid < 0 || nid >= (1 << 10)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/gfp.h"), "i" (483), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (332)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); (void)({ int __ret_warn_on = !!((gfp_mask & (( gfp_t)0x200000u)) && !node_state((nid), N_ONLINE)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/gfp.h"), "i" (484), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (333)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); return __alloc_pages(gfp_mask, order, nid); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page *alloc_pages_node(int nid, gfp_t gfp_mask, unsigned int order) { if (nid == (-1)) nid = numa_mem_id(); return __alloc_pages_node(nid, gfp_mask, order); } extern struct page *alloc_pages_current(gfp_t gfp_mask, unsigned order); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page * alloc_pages(gfp_t gfp_mask, unsigned int order) { return alloc_pages_current(gfp_mask, order); } extern struct page *alloc_pages_vma(gfp_t gfp_mask, int order, struct vm_area_struct *vma, unsigned long addr, int node, bool hugepage); # 530 "../include/linux/gfp.h" extern unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order); extern unsigned long get_zeroed_page(gfp_t gfp_mask); void *alloc_pages_exact(size_t size, gfp_t gfp_mask); void free_pages_exact(void *virt, size_t size); void * __attribute__((__section__(".meminit.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) alloc_pages_exact_nid(int nid, size_t size, gfp_t gfp_mask); extern void __free_pages(struct page *page, unsigned int order); extern void free_pages(unsigned long addr, unsigned int order); extern void free_unref_page(struct page *page); extern void free_unref_page_list(struct list_head *list); struct page_frag_cache; extern void __page_frag_cache_drain(struct page *page, unsigned int count); extern void *page_frag_alloc(struct page_frag_cache *nc, unsigned int fragsz, gfp_t gfp_mask); extern void page_frag_free(void *addr); void page_alloc_init(void); void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp); void drain_all_pages(struct zone *zone); void drain_local_pages(struct zone *zone); void page_alloc_init_late(void); # 571 "../include/linux/gfp.h" extern gfp_t gfp_allowed_mask; bool gfp_pfmemalloc_allowed(gfp_t gfp_mask); extern void pm_restrict_gfp_mask(void); extern void pm_restore_gfp_mask(void); extern bool pm_suspended_storage(void); # 590 "../include/linux/gfp.h" extern int alloc_contig_range(unsigned long start, unsigned long end, unsigned migratetype, gfp_t gfp_mask); void free_contig_range(unsigned long pfn, unsigned int nr_pages); extern void init_cma_reserved_pageblock(struct page *page); # 15 "../include/linux/xarray.h" 2 # 52 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_mk_value(unsigned long v) { ({ int __ret_warn_on = !!((long)v < 0); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/xarray.h"), "i" (54), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (334)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); return (void *)((v << 1) | 1); } # 65 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long xa_to_value(const void *entry) { return (unsigned long)entry >> 1; } # 77 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xa_is_value(const void *entry) { return (unsigned long)entry & 1; } # 95 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_tag_pointer(void *p, unsigned long tag) { return (void *)((unsigned long)p | tag); } # 110 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_untag_pointer(void *entry) { return (void *)((unsigned long)entry & ~3UL); } # 125 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int xa_pointer_tag(void *entry) { return (unsigned long)entry & 3UL; } # 143 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_mk_internal(unsigned long v) { return (void *)((v << 2) | 2); } # 155 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long xa_to_internal(const void *entry) { return (unsigned long)entry >> 2; } # 167 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xa_is_internal(const void *entry) { return ((unsigned long)entry & 3) == 2; } # 183 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xa_is_zero(const void *entry) { return __builtin_expect(!!(entry == xa_mk_internal(257)), 0); } # 199 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xa_is_err(const void *entry) { return __builtin_expect(!!(xa_is_internal(entry) && entry >= xa_mk_internal(-4095)), 0); } # 217 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int xa_err(void *entry) { if (xa_is_err(entry)) return (long)entry >> 2; return 0; } # 236 "../include/linux/xarray.h" struct xa_limit { u32 max; u32 min; }; typedef unsigned xa_mark_t; enum xa_lock_type { XA_LOCK_IRQ = 1, XA_LOCK_BH = 2, }; # 292 "../include/linux/xarray.h" struct xarray { spinlock_t xa_lock; gfp_t xa_flags; void * xa_head; }; # 347 "../include/linux/xarray.h" void *xa_load(struct xarray *, unsigned long index); void *xa_store(struct xarray *, unsigned long index, void *entry, gfp_t); void *xa_erase(struct xarray *, unsigned long index); void *xa_store_range(struct xarray *, unsigned long first, unsigned long last, void *entry, gfp_t); bool xa_get_mark(struct xarray *, unsigned long index, xa_mark_t); void xa_set_mark(struct xarray *, unsigned long index, xa_mark_t); void xa_clear_mark(struct xarray *, unsigned long index, xa_mark_t); void *xa_find(struct xarray *xa, unsigned long *index, unsigned long max, xa_mark_t) __attribute__((nonnull(2))); void *xa_find_after(struct xarray *xa, unsigned long *index, unsigned long max, xa_mark_t) __attribute__((nonnull(2))); unsigned int xa_extract(struct xarray *, void **dst, unsigned long start, unsigned long max, unsigned int n, xa_mark_t); void xa_destroy(struct xarray *); # 374 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void xa_init_flags(struct xarray *xa, gfp_t flags) { do { spinlock_check(&xa->xa_lock); do { static struct lock_class_key __key; __raw_spin_lock_init((&(&xa->xa_lock)->rlock), "&(&xa->xa_lock)->rlock", &__key); } while (0); } while (0); xa->xa_flags = flags; xa->xa_head = ((void *)0); } # 389 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void xa_init(struct xarray *xa) { xa_init_flags(xa, 0); } # 401 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xa_empty(const struct xarray *xa) { return xa->xa_head == ((void *)0); } # 414 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xa_marked(const struct xarray *xa, xa_mark_t mark) { return xa->xa_flags & (( gfp_t)((1U << (23 + 1)) << ( unsigned)(mark))); } # 519 "../include/linux/xarray.h" void *__xa_erase(struct xarray *, unsigned long index); void *__xa_store(struct xarray *, unsigned long index, void *entry, gfp_t); void *__xa_cmpxchg(struct xarray *, unsigned long index, void *old, void *entry, gfp_t); int __attribute__((__warn_unused_result__)) __xa_insert(struct xarray *, unsigned long index, void *entry, gfp_t); int __attribute__((__warn_unused_result__)) __xa_alloc(struct xarray *, u32 *id, void *entry, struct xa_limit, gfp_t); int __attribute__((__warn_unused_result__)) __xa_alloc_cyclic(struct xarray *, u32 *id, void *entry, struct xa_limit, u32 *next, gfp_t); void __xa_set_mark(struct xarray *, unsigned long index, xa_mark_t); void __xa_clear_mark(struct xarray *, unsigned long index, xa_mark_t); # 546 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_store_bh(struct xarray *xa, unsigned long index, void *entry, gfp_t gfp) { void *curr; spin_lock_bh(&(xa)->xa_lock); curr = __xa_store(xa, index, entry, gfp); spin_unlock_bh(&(xa)->xa_lock); return curr; } # 572 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_store_irq(struct xarray *xa, unsigned long index, void *entry, gfp_t gfp) { void *curr; spin_lock_irq(&(xa)->xa_lock); curr = __xa_store(xa, index, entry, gfp); spin_unlock_irq(&(xa)->xa_lock); return curr; } # 597 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_erase_bh(struct xarray *xa, unsigned long index) { void *entry; spin_lock_bh(&(xa)->xa_lock); entry = __xa_erase(xa, index); spin_unlock_bh(&(xa)->xa_lock); return entry; } # 621 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_erase_irq(struct xarray *xa, unsigned long index) { void *entry; spin_lock_irq(&(xa)->xa_lock); entry = __xa_erase(xa, index); spin_unlock_irq(&(xa)->xa_lock); return entry; } # 647 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_cmpxchg(struct xarray *xa, unsigned long index, void *old, void *entry, gfp_t gfp) { void *curr; spin_lock(&(xa)->xa_lock); curr = __xa_cmpxchg(xa, index, old, entry, gfp); spin_unlock(&(xa)->xa_lock); return curr; } # 674 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_cmpxchg_bh(struct xarray *xa, unsigned long index, void *old, void *entry, gfp_t gfp) { void *curr; spin_lock_bh(&(xa)->xa_lock); curr = __xa_cmpxchg(xa, index, old, entry, gfp); spin_unlock_bh(&(xa)->xa_lock); return curr; } # 701 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_cmpxchg_irq(struct xarray *xa, unsigned long index, void *old, void *entry, gfp_t gfp) { void *curr; spin_lock_irq(&(xa)->xa_lock); curr = __xa_cmpxchg(xa, index, old, entry, gfp); spin_unlock_irq(&(xa)->xa_lock); return curr; } # 730 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) xa_insert(struct xarray *xa, unsigned long index, void *entry, gfp_t gfp) { int err; spin_lock(&(xa)->xa_lock); err = __xa_insert(xa, index, entry, gfp); spin_unlock(&(xa)->xa_lock); return err; } # 759 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) xa_insert_bh(struct xarray *xa, unsigned long index, void *entry, gfp_t gfp) { int err; spin_lock_bh(&(xa)->xa_lock); err = __xa_insert(xa, index, entry, gfp); spin_unlock_bh(&(xa)->xa_lock); return err; } # 788 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) xa_insert_irq(struct xarray *xa, unsigned long index, void *entry, gfp_t gfp) { int err; spin_lock_irq(&(xa)->xa_lock); err = __xa_insert(xa, index, entry, gfp); spin_unlock_irq(&(xa)->xa_lock); return err; } # 817 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) int xa_alloc(struct xarray *xa, u32 *id, void *entry, struct xa_limit limit, gfp_t gfp) { int err; spin_lock(&(xa)->xa_lock); err = __xa_alloc(xa, id, entry, limit, gfp); spin_unlock(&(xa)->xa_lock); return err; } # 846 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) xa_alloc_bh(struct xarray *xa, u32 *id, void *entry, struct xa_limit limit, gfp_t gfp) { int err; spin_lock_bh(&(xa)->xa_lock); err = __xa_alloc(xa, id, entry, limit, gfp); spin_unlock_bh(&(xa)->xa_lock); return err; } # 875 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) xa_alloc_irq(struct xarray *xa, u32 *id, void *entry, struct xa_limit limit, gfp_t gfp) { int err; spin_lock_irq(&(xa)->xa_lock); err = __xa_alloc(xa, id, entry, limit, gfp); spin_unlock_irq(&(xa)->xa_lock); return err; } # 908 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int xa_alloc_cyclic(struct xarray *xa, u32 *id, void *entry, struct xa_limit limit, u32 *next, gfp_t gfp) { int err; spin_lock(&(xa)->xa_lock); err = __xa_alloc_cyclic(xa, id, entry, limit, next, gfp); spin_unlock(&(xa)->xa_lock); return err; } # 941 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int xa_alloc_cyclic_bh(struct xarray *xa, u32 *id, void *entry, struct xa_limit limit, u32 *next, gfp_t gfp) { int err; spin_lock_bh(&(xa)->xa_lock); err = __xa_alloc_cyclic(xa, id, entry, limit, next, gfp); spin_unlock_bh(&(xa)->xa_lock); return err; } # 974 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int xa_alloc_cyclic_irq(struct xarray *xa, u32 *id, void *entry, struct xa_limit limit, u32 *next, gfp_t gfp) { int err; spin_lock_irq(&(xa)->xa_lock); err = __xa_alloc_cyclic(xa, id, entry, limit, next, gfp); spin_unlock_irq(&(xa)->xa_lock); return err; } # 1004 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) int xa_reserve(struct xarray *xa, unsigned long index, gfp_t gfp) { return xa_err(xa_cmpxchg(xa, index, ((void *)0), xa_mk_internal(257), gfp)); } # 1022 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) int xa_reserve_bh(struct xarray *xa, unsigned long index, gfp_t gfp) { return xa_err(xa_cmpxchg_bh(xa, index, ((void *)0), xa_mk_internal(257), gfp)); } # 1040 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) int xa_reserve_irq(struct xarray *xa, unsigned long index, gfp_t gfp) { return xa_err(xa_cmpxchg_irq(xa, index, ((void *)0), xa_mk_internal(257), gfp)); } # 1055 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void xa_release(struct xarray *xa, unsigned long index) { xa_cmpxchg(xa, index, xa_mk_internal(257), ((void *)0), 0); } # 1087 "../include/linux/xarray.h" struct xa_node { unsigned char shift; unsigned char offset; unsigned char count; unsigned char nr_values; struct xa_node *parent; struct xarray *array; union { struct list_head private_list; struct callback_head callback_head; }; void *slots[(1UL << (0 ? 4 : 6))]; union { unsigned long tags[3][((((1UL << (0 ? 4 : 6))) + (64) - 1) / (64))]; unsigned long marks[3][((((1UL << (0 ? 4 : 6))) + (64) - 1) / (64))]; }; }; void xa_dump(const struct xarray *); void xa_dump_node(const struct xa_node *); # 1127 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_head(const struct xarray *xa) { return ({ typeof(*(xa->xa_head)) *________p1 = (typeof(*(xa->xa_head)) *)({ union { typeof((xa->xa_head)) __val; char __c[1]; } __u; if (1) __read_once_size(&((xa->xa_head)), __u.__c, sizeof((xa->xa_head))); else __read_once_size_nocheck(&((xa->xa_head)), __u.__c, sizeof((xa->xa_head))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((lock_is_held(&(&xa->xa_lock)->dep_map)) || rcu_read_lock_held()))) { __warned = true; lockdep_rcu_suspicious("../include/linux/xarray.h", 1130, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(xa->xa_head)) *)(________p1)); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_head_locked(const struct xarray *xa) { return ({ do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((lock_is_held(&(&xa->xa_lock)->dep_map))))) { __warned = true; lockdep_rcu_suspicious("../include/linux/xarray.h", 1137, "suspicious rcu_dereference_protected() usage"); } } while (0); ; ((typeof(*(xa->xa_head)) *)((xa->xa_head))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_entry(const struct xarray *xa, const struct xa_node *node, unsigned int offset) { do { } while (0); return ({ typeof(*(node->slots[offset])) *________p1 = (typeof(*(node->slots[offset])) *)({ union { typeof((node->slots[offset])) __val; char __c[1]; } __u; if (1) __read_once_size(&((node->slots[offset])), __u.__c, sizeof((node->slots[offset]))); else __read_once_size_nocheck(&((node->slots[offset])), __u.__c, sizeof((node->slots[offset]))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((lock_is_held(&(&xa->xa_lock)->dep_map)) || rcu_read_lock_held()))) { __warned = true; lockdep_rcu_suspicious("../include/linux/xarray.h", 1146, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(node->slots[offset])) *)(________p1)); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_entry_locked(const struct xarray *xa, const struct xa_node *node, unsigned int offset) { do { } while (0); return ({ do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((lock_is_held(&(&xa->xa_lock)->dep_map))))) { __warned = true; lockdep_rcu_suspicious("../include/linux/xarray.h", 1155, "suspicious rcu_dereference_protected() usage"); } } while (0); ; ((typeof(*(node->slots[offset])) *)((node->slots[offset]))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct xa_node *xa_parent(const struct xarray *xa, const struct xa_node *node) { return ({ typeof(*(node->parent)) *________p1 = (typeof(*(node->parent)) *)({ union { typeof((node->parent)) __val; char __c[1]; } __u; if (1) __read_once_size(&((node->parent)), __u.__c, sizeof((node->parent))); else __read_once_size_nocheck(&((node->parent)), __u.__c, sizeof((node->parent))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((lock_is_held(&(&xa->xa_lock)->dep_map)) || rcu_read_lock_held()))) { __warned = true; lockdep_rcu_suspicious("../include/linux/xarray.h", 1163, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(node->parent)) *)(________p1)); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct xa_node *xa_parent_locked(const struct xarray *xa, const struct xa_node *node) { return ({ do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((lock_is_held(&(&xa->xa_lock)->dep_map))))) { __warned = true; lockdep_rcu_suspicious("../include/linux/xarray.h", 1171, "suspicious rcu_dereference_protected() usage"); } } while (0); ; ((typeof(*(node->parent)) *)((node->parent))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_mk_node(const struct xa_node *node) { return (void *)((unsigned long)node | 2); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct xa_node *xa_to_node(const void *entry) { return (struct xa_node *)((unsigned long)entry - 2); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xa_is_node(const void *entry) { return xa_is_internal(entry) && (unsigned long)entry > 4096; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_mk_sibling(unsigned int offset) { return xa_mk_internal(offset); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long xa_to_sibling(const void *entry) { return xa_to_internal(entry); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xa_is_sibling(const void *entry) { return 1 && xa_is_internal(entry) && (entry < xa_mk_sibling((1UL << (0 ? 4 : 6)) - 1)); } # 1224 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xa_is_retry(const void *entry) { return __builtin_expect(!!(entry == xa_mk_internal(256)), 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xa_is_advanced(const void *entry) { return xa_is_internal(entry) && (entry <= xa_mk_internal(256)); } # 1252 "../include/linux/xarray.h" typedef void (*xa_update_node_t)(struct xa_node *node); # 1271 "../include/linux/xarray.h" struct xa_state { struct xarray *xa; unsigned long xa_index; unsigned char xa_shift; unsigned char xa_sibs; unsigned char xa_offset; unsigned char xa_pad; struct xa_node *xa_node; struct xa_node *xa_alloc; xa_update_node_t xa_update; }; # 1350 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int xas_error(const struct xa_state *xas) { return xa_err(xas->xa_node); } # 1364 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void xas_set_err(struct xa_state *xas, long err) { xas->xa_node = ((struct xa_node *)(((unsigned long)err << 2) | 2UL)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xas_invalid(const struct xa_state *xas) { return (unsigned long)xas->xa_node & 3; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xas_valid(const struct xa_state *xas) { return !xas_invalid(xas); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xas_is_node(const struct xa_state *xas) { return xas_valid(xas) && xas->xa_node; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xas_not_node(struct xa_node *node) { return ((unsigned long)node & 3) || !node; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xas_frozen(struct xa_node *node) { return (unsigned long)node & 2; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xas_top(struct xa_node *node) { return node <= ((struct xa_node *)3UL); } # 1430 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void xas_reset(struct xa_state *xas) { xas->xa_node = ((struct xa_node *)3UL); } # 1447 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool xas_retry(struct xa_state *xas, const void *entry) { if (xa_is_zero(entry)) return true; if (!xa_is_retry(entry)) return false; xas_reset(xas); return true; } void *xas_load(struct xa_state *); void *xas_store(struct xa_state *, void *entry); void *xas_find(struct xa_state *, unsigned long max); void *xas_find_conflict(struct xa_state *); bool xas_get_mark(const struct xa_state *, xa_mark_t); void xas_set_mark(const struct xa_state *, xa_mark_t); void xas_clear_mark(const struct xa_state *, xa_mark_t); void *xas_find_marked(struct xa_state *, unsigned long max, xa_mark_t); void xas_init_marks(const struct xa_state *); bool xas_nomem(struct xa_state *, gfp_t); void xas_pause(struct xa_state *); void xas_create_range(struct xa_state *); # 1487 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xas_reload(struct xa_state *xas) { struct xa_node *node = xas->xa_node; if (node) return xa_entry(xas->xa, node, xas->xa_offset); return xa_head(xas->xa); } # 1505 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void xas_set(struct xa_state *xas, unsigned long index) { xas->xa_index = index; xas->xa_node = ((struct xa_node *)3UL); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void xas_set_order(struct xa_state *xas, unsigned long index, unsigned int order) { xas->xa_index = order < 64 ? (index >> order) << order : 0; xas->xa_shift = order - (order % (0 ? 4 : 6)); xas->xa_sibs = (1 << (order % (0 ? 4 : 6))) - 1; xas->xa_node = ((struct xa_node *)3UL); } # 1539 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void xas_set_update(struct xa_state *xas, xa_update_node_t update) { xas->xa_update = update; } # 1555 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xas_next_entry(struct xa_state *xas, unsigned long max) { struct xa_node *node = xas->xa_node; void *entry; if (__builtin_expect(!!(xas_not_node(node) || node->shift || xas->xa_offset != (xas->xa_index & ((1UL << (0 ? 4 : 6)) - 1))), 0)) return xas_find(xas, max); do { if (__builtin_expect(!!(xas->xa_index >= max), 0)) return xas_find(xas, max); if (__builtin_expect(!!(xas->xa_offset == ((1UL << (0 ? 4 : 6)) - 1)), 0)) return xas_find(xas, max); entry = xa_entry(xas->xa, node, xas->xa_offset + 1); if (__builtin_expect(!!(xa_is_internal(entry)), 0)) return xas_find(xas, max); xas->xa_offset++; xas->xa_index++; } while (!entry); return entry; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int xas_find_chunk(struct xa_state *xas, bool advance, xa_mark_t mark) { unsigned long *addr = xas->xa_node->marks[( unsigned)mark]; unsigned int offset = xas->xa_offset; if (advance) offset++; if ((1UL << (0 ? 4 : 6)) == 64) { if (offset < (1UL << (0 ? 4 : 6))) { unsigned long data = *addr & (~0UL << offset); if (data) return __ffs(data); } return (1UL << (0 ? 4 : 6)); } return find_next_bit(addr, (1UL << (0 ? 4 : 6)), offset); } # 1612 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xas_next_marked(struct xa_state *xas, unsigned long max, xa_mark_t mark) { struct xa_node *node = xas->xa_node; unsigned int offset; if (__builtin_expect(!!(xas_not_node(node) || node->shift), 0)) return xas_find_marked(xas, max, mark); offset = xas_find_chunk(xas, true, mark); xas->xa_offset = offset; xas->xa_index = (xas->xa_index & ~((1UL << (0 ? 4 : 6)) - 1)) + offset; if (xas->xa_index > max) return ((void *)0); if (offset == (1UL << (0 ? 4 : 6))) return xas_find_marked(xas, max, mark); return xa_entry(xas->xa, node, offset); } enum { XA_CHECK_SCHED = 4096, }; # 1689 "../include/linux/xarray.h" void *__xas_next(struct xa_state *); void *__xas_prev(struct xa_state *); # 1708 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xas_prev(struct xa_state *xas) { struct xa_node *node = xas->xa_node; if (__builtin_expect(!!(xas_not_node(node) || node->shift || xas->xa_offset == 0), 0)) return __xas_prev(xas); xas->xa_index--; xas->xa_offset--; return xa_entry(xas->xa, node, xas->xa_offset); } # 1737 "../include/linux/xarray.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xas_next(struct xa_state *xas) { struct xa_node *node = xas->xa_node; if (__builtin_expect(!!(xas_not_node(node) || node->shift || xas->xa_offset == ((1UL << (0 ? 4 : 6)) - 1)), 0)) return __xas_next(xas); xas->xa_index++; xas->xa_offset++; return xa_entry(xas->xa, node, xas->xa_offset); } # 19 "../include/linux/radix-tree.h" 2 # 43 "../include/linux/radix-tree.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool radix_tree_is_internal_node(void *ptr) { return ((unsigned long)ptr & 3UL) == 2UL; } # 74 "../include/linux/radix-tree.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool radix_tree_empty(const struct xarray *root) { return root->xa_head == ((void *)0); } # 94 "../include/linux/radix-tree.h" struct radix_tree_iter { unsigned long index; unsigned long next_index; unsigned long tags; struct xa_node *node; }; # 165 "../include/linux/radix-tree.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *radix_tree_deref_slot(void **slot) { return ({ typeof(*(*slot)) *________p1 = (typeof(*(*slot)) *)({ union { typeof((*slot)) __val; char __c[1]; } __u; if (1) __read_once_size(&((*slot)), __u.__c, sizeof((*slot))); else __read_once_size_nocheck(&((*slot)), __u.__c, sizeof((*slot))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_held()))) { __warned = true; lockdep_rcu_suspicious("../include/linux/radix-tree.h", 167, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(*slot)) *)(________p1)); }); } # 179 "../include/linux/radix-tree.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *radix_tree_deref_slot_protected(void **slot, spinlock_t *treelock) { return ({ do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((lock_is_held(&(treelock)->dep_map))))) { __warned = true; lockdep_rcu_suspicious("../include/linux/radix-tree.h", 182, "suspicious rcu_dereference_protected() usage"); } } while (0); ; ((typeof(*(*slot)) *)((*slot))); }); } # 192 "../include/linux/radix-tree.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int radix_tree_deref_retry(void *arg) { return __builtin_expect(!!(radix_tree_is_internal_node(arg)), 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int radix_tree_exception(void *arg) { return __builtin_expect(!!((unsigned long)arg & 3UL), 0); } int radix_tree_insert(struct xarray *, unsigned long index, void *); void *__radix_tree_lookup(const struct xarray *, unsigned long index, struct xa_node **nodep, void ***slotp); void *radix_tree_lookup(const struct xarray *, unsigned long); void **radix_tree_lookup_slot(const struct xarray *, unsigned long index); void __radix_tree_replace(struct xarray *, struct xa_node *, void **slot, void *entry); void radix_tree_iter_replace(struct xarray *, const struct radix_tree_iter *, void **slot, void *entry); void radix_tree_replace_slot(struct xarray *, void **slot, void *entry); void radix_tree_iter_delete(struct xarray *, struct radix_tree_iter *iter, void **slot); void *radix_tree_delete_item(struct xarray *, unsigned long, void *); void *radix_tree_delete(struct xarray *, unsigned long); unsigned int radix_tree_gang_lookup(const struct xarray *, void **results, unsigned long first_index, unsigned int max_items); int radix_tree_preload(gfp_t gfp_mask); int radix_tree_maybe_preload(gfp_t gfp_mask); void radix_tree_init(void); void *radix_tree_tag_set(struct xarray *, unsigned long index, unsigned int tag); void *radix_tree_tag_clear(struct xarray *, unsigned long index, unsigned int tag); int radix_tree_tag_get(const struct xarray *, unsigned long index, unsigned int tag); void radix_tree_iter_tag_clear(struct xarray *, const struct radix_tree_iter *iter, unsigned int tag); unsigned int radix_tree_gang_lookup_tag(const struct xarray *, void **results, unsigned long first_index, unsigned int max_items, unsigned int tag); unsigned int radix_tree_gang_lookup_tag_slot(const struct xarray *, void ***results, unsigned long first_index, unsigned int max_items, unsigned int tag); int radix_tree_tagged(const struct xarray *, unsigned int tag); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void radix_tree_preload_end(void) { do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } void **idr_get_free(struct xarray *root, struct radix_tree_iter *iter, gfp_t gfp, unsigned long max); enum { RADIX_TREE_ITER_TAG_MASK = 0x0f, RADIX_TREE_ITER_TAGGED = 0x10, RADIX_TREE_ITER_CONTIG = 0x20, }; # 268 "../include/linux/radix-tree.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void ** radix_tree_iter_init(struct radix_tree_iter *iter, unsigned long start) { # 279 "../include/linux/radix-tree.h" iter->index = 0; iter->next_index = start; return ((void *)0); } # 297 "../include/linux/radix-tree.h" void **radix_tree_next_chunk(const struct xarray *, struct radix_tree_iter *iter, unsigned flags); # 310 "../include/linux/radix-tree.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ** radix_tree_iter_lookup(const struct xarray *root, struct radix_tree_iter *iter, unsigned long index) { radix_tree_iter_init(iter, index); return radix_tree_next_chunk(root, iter, RADIX_TREE_ITER_CONTIG); } # 328 "../include/linux/radix-tree.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ** radix_tree_iter_find(const struct xarray *root, struct radix_tree_iter *iter, unsigned long index) { radix_tree_iter_init(iter, index); return radix_tree_next_chunk(root, iter, 0); } # 345 "../include/linux/radix-tree.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) void **radix_tree_iter_retry(struct radix_tree_iter *iter) { iter->next_index = iter->index; iter->tags = 0; return ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long __radix_tree_iter_add(struct radix_tree_iter *iter, unsigned long slots) { return iter->index + slots; } # 369 "../include/linux/radix-tree.h" void **__attribute__((__warn_unused_result__)) radix_tree_iter_resume(void **slot, struct radix_tree_iter *iter); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) long radix_tree_chunk_size(struct radix_tree_iter *iter) { return iter->next_index - iter->index; } # 403 "../include/linux/radix-tree.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void **radix_tree_next_slot(void **slot, struct radix_tree_iter *iter, unsigned flags) { if (flags & RADIX_TREE_ITER_TAGGED) { iter->tags >>= 1; if (__builtin_expect(!!(!iter->tags), 0)) return ((void *)0); if (__builtin_expect(!!(iter->tags & 1ul), 1)) { iter->index = __radix_tree_iter_add(iter, 1); slot++; goto found; } if (!(flags & RADIX_TREE_ITER_CONTIG)) { unsigned offset = __ffs(iter->tags); iter->tags >>= offset++; iter->index = __radix_tree_iter_add(iter, offset); slot += offset; goto found; } } else { long count = radix_tree_chunk_size(iter); while (--count > 0) { slot++; iter->index = __radix_tree_iter_add(iter, 1); if (__builtin_expect(!!(*slot), 1)) goto found; if (flags & RADIX_TREE_ITER_CONTIG) { iter->next_index = 0; break; } } } return ((void *)0); found: return slot; } # 16 "../include/linux/idr.h" 2 struct idr { struct xarray idr_rt; unsigned int idr_base; unsigned int idr_next; }; # 66 "../include/linux/idr.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int idr_get_cursor(const struct idr *idr) { return ({ union { typeof(idr->idr_next) __val; char __c[1]; } __u; if (1) __read_once_size(&(idr->idr_next), __u.__c, sizeof(idr->idr_next)); else __read_once_size_nocheck(&(idr->idr_next), __u.__c, sizeof(idr->idr_next)); do { } while (0); __u.__val; }); } # 79 "../include/linux/idr.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void idr_set_cursor(struct idr *idr, unsigned int val) { ({ union { typeof(idr->idr_next) __val; char __c[1]; } __u = { .__val = ( typeof(idr->idr_next)) (val) }; __write_once_size(&(idr->idr_next), __u.__c, sizeof(idr->idr_next)); __u.__val; }); } # 112 "../include/linux/idr.h" void idr_preload(gfp_t gfp_mask); int idr_alloc(struct idr *, void *ptr, int start, int end, gfp_t); int __attribute__((__warn_unused_result__)) idr_alloc_u32(struct idr *, void *ptr, u32 *id, unsigned long max, gfp_t); int idr_alloc_cyclic(struct idr *, void *ptr, int start, int end, gfp_t); void *idr_remove(struct idr *, unsigned long id); void *idr_find(const struct idr *, unsigned long id); int idr_for_each(const struct idr *, int (*fn)(int id, void *p, void *data), void *data); void *idr_get_next(struct idr *, int *nextid); void *idr_get_next_ul(struct idr *, unsigned long *nextid); void *idr_replace(struct idr *, void *, unsigned long id); void idr_destroy(struct idr *); # 135 "../include/linux/idr.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void idr_init_base(struct idr *idr, int base) { xa_init_flags(&idr->idr_rt, ((( gfp_t)4) | ( gfp_t) (1 << (((23 + 1)) + 0)))); idr->idr_base = base; idr->idr_next = 0; } # 149 "../include/linux/idr.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void idr_init(struct idr *idr) { idr_init_base(idr, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool idr_is_empty(const struct idr *idr) { return radix_tree_empty(&idr->idr_rt) && radix_tree_tagged(&idr->idr_rt, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void idr_preload_end(void) { do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } # 240 "../include/linux/idr.h" struct ida_bitmap { unsigned long bitmap[(128 / sizeof(long))]; }; struct ida { struct xarray xa; }; # 255 "../include/linux/idr.h" int ida_alloc_range(struct ida *, unsigned int min, unsigned int max, gfp_t); void ida_free(struct ida *, unsigned int id); void ida_destroy(struct ida *ida); # 270 "../include/linux/idr.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int ida_alloc(struct ida *ida, gfp_t gfp) { return ida_alloc_range(ida, 0, ~0, gfp); } # 287 "../include/linux/idr.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int ida_alloc_min(struct ida *ida, unsigned int min, gfp_t gfp) { return ida_alloc_range(ida, min, ~0, gfp); } # 304 "../include/linux/idr.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int ida_alloc_max(struct ida *ida, unsigned int max, gfp_t gfp) { return ida_alloc_range(ida, 0, max, gfp); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ida_init(struct ida *ida) { xa_init_flags(&ida->xa, ((( gfp_t)XA_LOCK_IRQ) | ((( gfp_t)4U) | (( gfp_t)((1U << (23 + 1)) << ( unsigned)((( xa_mark_t)0U))))))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ida_is_empty(const struct ida *ida) { return xa_empty(&ida->xa); } # 14 "../include/linux/kernfs.h" 2 # 1 "../include/linux/uidgid.h" 1 # 16 "../include/linux/uidgid.h" # 1 "../include/linux/highuid.h" 1 # 35 "../include/linux/highuid.h" extern int overflowuid; extern int overflowgid; extern void __bad_uid(void); extern void __bad_gid(void); # 82 "../include/linux/highuid.h" extern int fs_overflowuid; extern int fs_overflowgid; # 17 "../include/linux/uidgid.h" 2 struct user_namespace; extern struct user_namespace init_user_ns; typedef struct { uid_t val; } kuid_t; typedef struct { gid_t val; } kgid_t; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) uid_t __kuid_val(kuid_t uid) { return uid.val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) gid_t __kgid_val(kgid_t gid) { return gid.val; } # 61 "../include/linux/uidgid.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool uid_eq(kuid_t left, kuid_t right) { return __kuid_val(left) == __kuid_val(right); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool gid_eq(kgid_t left, kgid_t right) { return __kgid_val(left) == __kgid_val(right); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool uid_gt(kuid_t left, kuid_t right) { return __kuid_val(left) > __kuid_val(right); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool gid_gt(kgid_t left, kgid_t right) { return __kgid_val(left) > __kgid_val(right); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool uid_gte(kuid_t left, kuid_t right) { return __kuid_val(left) >= __kuid_val(right); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool gid_gte(kgid_t left, kgid_t right) { return __kgid_val(left) >= __kgid_val(right); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool uid_lt(kuid_t left, kuid_t right) { return __kuid_val(left) < __kuid_val(right); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool gid_lt(kgid_t left, kgid_t right) { return __kgid_val(left) < __kgid_val(right); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool uid_lte(kuid_t left, kuid_t right) { return __kuid_val(left) <= __kuid_val(right); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool gid_lte(kgid_t left, kgid_t right) { return __kgid_val(left) <= __kgid_val(right); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool uid_valid(kuid_t uid) { return __kuid_val(uid) != (uid_t) -1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool gid_valid(kgid_t gid) { return __kgid_val(gid) != (gid_t) -1; } extern kuid_t make_kuid(struct user_namespace *from, uid_t uid); extern kgid_t make_kgid(struct user_namespace *from, gid_t gid); extern uid_t from_kuid(struct user_namespace *to, kuid_t uid); extern gid_t from_kgid(struct user_namespace *to, kgid_t gid); extern uid_t from_kuid_munged(struct user_namespace *to, kuid_t uid); extern gid_t from_kgid_munged(struct user_namespace *to, kgid_t gid); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool kuid_has_mapping(struct user_namespace *ns, kuid_t uid) { return from_kuid(ns, uid) != (uid_t) -1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool kgid_has_mapping(struct user_namespace *ns, kgid_t gid) { return from_kgid(ns, gid) != (gid_t) -1; } # 18 "../include/linux/kernfs.h" 2 struct file; struct dentry; struct iattr; struct seq_file; struct vm_area_struct; struct super_block; struct file_system_type; struct poll_table_struct; struct fs_context; struct kernfs_fs_context; struct kernfs_open_node; struct kernfs_iattrs; enum kernfs_node_type { KERNFS_DIR = 0x0001, KERNFS_FILE = 0x0002, KERNFS_LINK = 0x0004, }; enum kernfs_node_flag { KERNFS_ACTIVATED = 0x0010, KERNFS_NS = 0x0020, KERNFS_HAS_SEQ_SHOW = 0x0040, KERNFS_HAS_MMAP = 0x0080, KERNFS_LOCKDEP = 0x0100, KERNFS_SUICIDAL = 0x0400, KERNFS_SUICIDED = 0x0800, KERNFS_EMPTY_DIR = 0x1000, KERNFS_HAS_RELEASE = 0x2000, }; enum kernfs_root_flag { KERNFS_ROOT_CREATE_DEACTIVATED = 0x0001, # 74 "../include/linux/kernfs.h" KERNFS_ROOT_EXTRA_OPEN_PERM_CHECK = 0x0002, KERNFS_ROOT_SUPPORT_EXPORTOP = 0x0004, }; struct kernfs_elem_dir { unsigned long subdirs; struct rb_root children; struct kernfs_root *root; }; struct kernfs_elem_symlink { struct kernfs_node *target_kn; }; struct kernfs_elem_attr { const struct kernfs_ops *ops; struct kernfs_open_node *open; loff_t size; struct kernfs_node *notify_next; }; union kernfs_node_id { struct { u32 ino; u32 generation; }; u64 id; }; # 131 "../include/linux/kernfs.h" struct kernfs_node { atomic_t count; atomic_t active; struct lockdep_map dep_map; struct kernfs_node *parent; const char *name; struct rb_node rb; const void *ns; unsigned int hash; union { struct kernfs_elem_dir dir; struct kernfs_elem_symlink symlink; struct kernfs_elem_attr attr; }; void *priv; union kernfs_node_id id; unsigned short flags; umode_t mode; struct kernfs_iattrs *iattr; }; # 171 "../include/linux/kernfs.h" struct kernfs_syscall_ops { int (*show_options)(struct seq_file *sf, struct kernfs_root *root); int (*mkdir)(struct kernfs_node *parent, const char *name, umode_t mode); int (*rmdir)(struct kernfs_node *kn); int (*rename)(struct kernfs_node *kn, struct kernfs_node *new_parent, const char *new_name); int (*show_path)(struct seq_file *sf, struct kernfs_node *kn, struct kernfs_root *root); }; struct kernfs_root { struct kernfs_node *kn; unsigned int flags; struct idr ino_idr; u32 next_generation; struct kernfs_syscall_ops *syscall_ops; struct list_head supers; wait_queue_head_t deactivate_waitq; }; struct kernfs_open_file { struct kernfs_node *kn; struct file *file; struct seq_file *seq_file; void *priv; struct mutex mutex; struct mutex prealloc_mutex; int event; struct list_head list; char *prealloc_buf; size_t atomic_write_len; bool mmapped:1; bool released:1; const struct vm_operations_struct *vm_ops; }; struct kernfs_ops { int (*open)(struct kernfs_open_file *of); void (*release)(struct kernfs_open_file *of); # 238 "../include/linux/kernfs.h" int (*seq_show)(struct seq_file *sf, void *v); void *(*seq_start)(struct seq_file *sf, loff_t *ppos); void *(*seq_next)(struct seq_file *sf, void *v, loff_t *ppos); void (*seq_stop)(struct seq_file *sf, void *v); ssize_t (*read)(struct kernfs_open_file *of, char *buf, size_t bytes, loff_t off); # 254 "../include/linux/kernfs.h" size_t atomic_write_len; bool prealloc; ssize_t (*write)(struct kernfs_open_file *of, char *buf, size_t bytes, loff_t off); __poll_t (*poll)(struct kernfs_open_file *of, struct poll_table_struct *pt); int (*mmap)(struct kernfs_open_file *of, struct vm_area_struct *vma); struct lock_class_key lockdep_key; }; struct kernfs_fs_context { struct kernfs_root *root; void *ns_tag; unsigned long magic; bool new_sb_created; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) enum kernfs_node_type kernfs_type(struct kernfs_node *kn) { return kn->flags & 0x000f; } # 302 "../include/linux/kernfs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void kernfs_enable_ns(struct kernfs_node *kn) { ({ int __ret_warn_on = !!(kernfs_type(kn) != KERNFS_DIR); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/kernfs.h"), "i" (304), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (335)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); ({ int __ret_warn_on = !!(!(({ union { typeof((&kn->dir.children)->rb_node) __val; char __c[1]; } __u; if (1) __read_once_size(&((&kn->dir.children)->rb_node), __u.__c, sizeof((&kn->dir.children)->rb_node)); else __read_once_size_nocheck(&((&kn->dir.children)->rb_node), __u.__c, sizeof((&kn->dir.children)->rb_node)); do { } while (0); __u.__val; }) == ((void *)0))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/kernfs.h"), "i" (305), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (336)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); kn->flags |= KERNFS_NS; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool kernfs_ns_enabled(struct kernfs_node *kn) { return kn->flags & KERNFS_NS; } int kernfs_name(struct kernfs_node *kn, char *buf, size_t buflen); int kernfs_path_from_node(struct kernfs_node *root_kn, struct kernfs_node *kn, char *buf, size_t buflen); void pr_cont_kernfs_name(struct kernfs_node *kn); void pr_cont_kernfs_path(struct kernfs_node *kn); struct kernfs_node *kernfs_get_parent(struct kernfs_node *kn); struct kernfs_node *kernfs_find_and_get_ns(struct kernfs_node *parent, const char *name, const void *ns); struct kernfs_node *kernfs_walk_and_get_ns(struct kernfs_node *parent, const char *path, const void *ns); void kernfs_get(struct kernfs_node *kn); void kernfs_put(struct kernfs_node *kn); struct kernfs_node *kernfs_node_from_dentry(struct dentry *dentry); struct kernfs_root *kernfs_root_from_sb(struct super_block *sb); struct inode *kernfs_get_inode(struct super_block *sb, struct kernfs_node *kn); struct dentry *kernfs_node_dentry(struct kernfs_node *kn, struct super_block *sb); struct kernfs_root *kernfs_create_root(struct kernfs_syscall_ops *scops, unsigned int flags, void *priv); void kernfs_destroy_root(struct kernfs_root *root); struct kernfs_node *kernfs_create_dir_ns(struct kernfs_node *parent, const char *name, umode_t mode, kuid_t uid, kgid_t gid, void *priv, const void *ns); struct kernfs_node *kernfs_create_empty_dir(struct kernfs_node *parent, const char *name); struct kernfs_node *__kernfs_create_file(struct kernfs_node *parent, const char *name, umode_t mode, kuid_t uid, kgid_t gid, loff_t size, const struct kernfs_ops *ops, void *priv, const void *ns, struct lock_class_key *key); struct kernfs_node *kernfs_create_link(struct kernfs_node *parent, const char *name, struct kernfs_node *target); void kernfs_activate(struct kernfs_node *kn); void kernfs_remove(struct kernfs_node *kn); void kernfs_break_active_protection(struct kernfs_node *kn); void kernfs_unbreak_active_protection(struct kernfs_node *kn); bool kernfs_remove_self(struct kernfs_node *kn); int kernfs_remove_by_name_ns(struct kernfs_node *parent, const char *name, const void *ns); int kernfs_rename_ns(struct kernfs_node *kn, struct kernfs_node *new_parent, const char *new_name, const void *new_ns); int kernfs_setattr(struct kernfs_node *kn, const struct iattr *iattr); __poll_t kernfs_generic_poll(struct kernfs_open_file *of, struct poll_table_struct *pt); void kernfs_notify(struct kernfs_node *kn); int kernfs_xattr_get(struct kernfs_node *kn, const char *name, void *value, size_t size); int kernfs_xattr_set(struct kernfs_node *kn, const char *name, const void *value, size_t size, int flags); const void *kernfs_super_ns(struct super_block *sb); int kernfs_get_tree(struct fs_context *fc); void kernfs_free_fs_context(struct fs_context *fc); void kernfs_kill_sb(struct super_block *sb); void kernfs_init(void); struct kernfs_node *kernfs_get_node_by_id(struct kernfs_root *root, const union kernfs_node_id *id); # 514 "../include/linux/kernfs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int kernfs_path(struct kernfs_node *kn, char *buf, size_t buflen) { return kernfs_path_from_node(kn, ((void *)0), buf, buflen); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kernfs_node * kernfs_find_and_get(struct kernfs_node *kn, const char *name) { return kernfs_find_and_get_ns(kn, name, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kernfs_node * kernfs_walk_and_get(struct kernfs_node *kn, const char *path) { return kernfs_walk_and_get_ns(kn, path, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kernfs_node * kernfs_create_dir(struct kernfs_node *parent, const char *name, umode_t mode, void *priv) { return kernfs_create_dir_ns(parent, name, mode, (kuid_t){ 0 }, (kgid_t){ 0 }, priv, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kernfs_node * kernfs_create_file_ns(struct kernfs_node *parent, const char *name, umode_t mode, kuid_t uid, kgid_t gid, loff_t size, const struct kernfs_ops *ops, void *priv, const void *ns) { struct lock_class_key *key = ((void *)0); key = (struct lock_class_key *)&ops->lockdep_key; return __kernfs_create_file(parent, name, mode, uid, gid, size, ops, priv, ns, key); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kernfs_node * kernfs_create_file(struct kernfs_node *parent, const char *name, umode_t mode, loff_t size, const struct kernfs_ops *ops, void *priv) { return kernfs_create_file_ns(parent, name, mode, (kuid_t){ 0 }, (kgid_t){ 0 }, size, ops, priv, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int kernfs_remove_by_name(struct kernfs_node *parent, const char *name) { return kernfs_remove_by_name_ns(parent, name, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int kernfs_rename(struct kernfs_node *kn, struct kernfs_node *new_parent, const char *new_name) { return kernfs_rename_ns(kn, new_parent, new_name, ((void *)0)); } # 17 "../include/linux/sysfs.h" 2 # 1 "../include/linux/kobject_ns.h" 1 # 19 "../include/linux/kobject_ns.h" struct sock; struct kobject; enum kobj_ns_type { KOBJ_NS_TYPE_NONE = 0, KOBJ_NS_TYPE_NET, KOBJ_NS_TYPES }; # 39 "../include/linux/kobject_ns.h" struct kobj_ns_type_operations { enum kobj_ns_type type; bool (*current_may_mount)(void); void *(*grab_current_ns)(void); const void *(*netlink_ns)(struct sock *sk); const void *(*initial_ns)(void); void (*drop_ns)(void *); }; int kobj_ns_type_register(const struct kobj_ns_type_operations *ops); int kobj_ns_type_registered(enum kobj_ns_type type); const struct kobj_ns_type_operations *kobj_child_ns_ops(struct kobject *parent); const struct kobj_ns_type_operations *kobj_ns_ops(struct kobject *kobj); bool kobj_ns_current_may_mount(enum kobj_ns_type type); void *kobj_ns_grab_current(enum kobj_ns_type type); const void *kobj_ns_netlink(enum kobj_ns_type type, struct sock *sk); const void *kobj_ns_initial(enum kobj_ns_type type); void kobj_ns_drop(enum kobj_ns_type type, void *ns); # 22 "../include/linux/sysfs.h" 2 # 1 "../include/linux/stat.h" 1 # 1 "../arch/x86/include/uapi/asm/stat.h" 1 # 1 "../arch/x86/include/asm/posix_types.h" 1 # 6 "../arch/x86/include/uapi/asm/stat.h" 2 # 83 "../arch/x86/include/uapi/asm/stat.h" struct stat { __kernel_ulong_t st_dev; __kernel_ulong_t st_ino; __kernel_ulong_t st_nlink; unsigned int st_mode; unsigned int st_uid; unsigned int st_gid; unsigned int __pad0; __kernel_ulong_t st_rdev; __kernel_long_t st_size; __kernel_long_t st_blksize; __kernel_long_t st_blocks; __kernel_ulong_t st_atime; __kernel_ulong_t st_atime_nsec; __kernel_ulong_t st_mtime; __kernel_ulong_t st_mtime_nsec; __kernel_ulong_t st_ctime; __kernel_ulong_t st_ctime_nsec; __kernel_long_t __unused[3]; }; # 117 "../arch/x86/include/uapi/asm/stat.h" struct __old_kernel_stat { unsigned short st_dev; unsigned short st_ino; unsigned short st_mode; unsigned short st_nlink; unsigned short st_uid; unsigned short st_gid; unsigned short st_rdev; unsigned int st_size; unsigned int st_atime; unsigned int st_mtime; unsigned int st_ctime; }; # 7 "../include/linux/stat.h" 2 # 1 "../include/uapi/linux/stat.h" 1 # 56 "../include/uapi/linux/stat.h" struct statx_timestamp { __s64 tv_sec; __u32 tv_nsec; __s32 __reserved; }; # 99 "../include/uapi/linux/stat.h" struct statx { __u32 stx_mask; __u32 stx_blksize; __u64 stx_attributes; __u32 stx_nlink; __u32 stx_uid; __u32 stx_gid; __u16 stx_mode; __u16 __spare0[1]; __u64 stx_ino; __u64 stx_size; __u64 stx_blocks; __u64 stx_attributes_mask; struct statx_timestamp stx_atime; struct statx_timestamp stx_btime; struct statx_timestamp stx_ctime; struct statx_timestamp stx_mtime; __u32 stx_rdev_major; __u32 stx_rdev_minor; __u32 stx_dev_major; __u32 stx_dev_minor; __u64 __spare2[14]; }; # 8 "../include/linux/stat.h" 2 # 24 "../include/linux/stat.h" struct kstat { u32 result_mask; umode_t mode; unsigned int nlink; uint32_t blksize; u64 attributes; u64 attributes_mask; u64 ino; dev_t dev; dev_t rdev; kuid_t uid; kgid_t gid; loff_t size; struct timespec64 atime; struct timespec64 mtime; struct timespec64 ctime; struct timespec64 btime; u64 blocks; }; # 23 "../include/linux/sysfs.h" 2 struct kobject; struct module; struct bin_attribute; enum kobj_ns_type; struct attribute { const char *name; umode_t mode; bool ignore_lockdep:1; struct lock_class_key *key; struct lock_class_key skey; }; # 84 "../include/linux/sysfs.h" struct attribute_group { const char *name; umode_t (*is_visible)(struct kobject *, struct attribute *, int); umode_t (*is_bin_visible)(struct kobject *, struct bin_attribute *, int); struct attribute **attrs; struct bin_attribute **bin_attrs; }; # 158 "../include/linux/sysfs.h" struct file; struct vm_area_struct; struct bin_attribute { struct attribute attr; size_t size; void *private; ssize_t (*read)(struct file *, struct kobject *, struct bin_attribute *, char *, loff_t, size_t); ssize_t (*write)(struct file *, struct kobject *, struct bin_attribute *, char *, loff_t, size_t); int (*mmap)(struct file *, struct kobject *, struct bin_attribute *attr, struct vm_area_struct *vma); }; # 214 "../include/linux/sysfs.h" struct sysfs_ops { ssize_t (*show)(struct kobject *, struct attribute *, char *); ssize_t (*store)(struct kobject *, struct attribute *, const char *, size_t); }; int __attribute__((__warn_unused_result__)) sysfs_create_dir_ns(struct kobject *kobj, const void *ns); void sysfs_remove_dir(struct kobject *kobj); int __attribute__((__warn_unused_result__)) sysfs_rename_dir_ns(struct kobject *kobj, const char *new_name, const void *new_ns); int __attribute__((__warn_unused_result__)) sysfs_move_dir_ns(struct kobject *kobj, struct kobject *new_parent_kobj, const void *new_ns); int __attribute__((__warn_unused_result__)) sysfs_create_mount_point(struct kobject *parent_kobj, const char *name); void sysfs_remove_mount_point(struct kobject *parent_kobj, const char *name); int __attribute__((__warn_unused_result__)) sysfs_create_file_ns(struct kobject *kobj, const struct attribute *attr, const void *ns); int __attribute__((__warn_unused_result__)) sysfs_create_files(struct kobject *kobj, const struct attribute * const *attr); int __attribute__((__warn_unused_result__)) sysfs_chmod_file(struct kobject *kobj, const struct attribute *attr, umode_t mode); struct kernfs_node *sysfs_break_active_protection(struct kobject *kobj, const struct attribute *attr); void sysfs_unbreak_active_protection(struct kernfs_node *kn); void sysfs_remove_file_ns(struct kobject *kobj, const struct attribute *attr, const void *ns); bool sysfs_remove_file_self(struct kobject *kobj, const struct attribute *attr); void sysfs_remove_files(struct kobject *kobj, const struct attribute * const *attr); int __attribute__((__warn_unused_result__)) sysfs_create_bin_file(struct kobject *kobj, const struct bin_attribute *attr); void sysfs_remove_bin_file(struct kobject *kobj, const struct bin_attribute *attr); int __attribute__((__warn_unused_result__)) sysfs_create_link(struct kobject *kobj, struct kobject *target, const char *name); int __attribute__((__warn_unused_result__)) sysfs_create_link_nowarn(struct kobject *kobj, struct kobject *target, const char *name); void sysfs_remove_link(struct kobject *kobj, const char *name); int sysfs_rename_link_ns(struct kobject *kobj, struct kobject *target, const char *old_name, const char *new_name, const void *new_ns); void sysfs_delete_link(struct kobject *dir, struct kobject *targ, const char *name); int __attribute__((__warn_unused_result__)) sysfs_create_group(struct kobject *kobj, const struct attribute_group *grp); int __attribute__((__warn_unused_result__)) sysfs_create_groups(struct kobject *kobj, const struct attribute_group **groups); int __attribute__((__warn_unused_result__)) sysfs_update_groups(struct kobject *kobj, const struct attribute_group **groups); int sysfs_update_group(struct kobject *kobj, const struct attribute_group *grp); void sysfs_remove_group(struct kobject *kobj, const struct attribute_group *grp); void sysfs_remove_groups(struct kobject *kobj, const struct attribute_group **groups); int sysfs_add_file_to_group(struct kobject *kobj, const struct attribute *attr, const char *group); void sysfs_remove_file_from_group(struct kobject *kobj, const struct attribute *attr, const char *group); int sysfs_merge_group(struct kobject *kobj, const struct attribute_group *grp); void sysfs_unmerge_group(struct kobject *kobj, const struct attribute_group *grp); int sysfs_add_link_to_group(struct kobject *kobj, const char *group_name, struct kobject *target, const char *link_name); void sysfs_remove_link_from_group(struct kobject *kobj, const char *group_name, const char *link_name); int __compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj, struct kobject *target_kobj, const char *target_name); void sysfs_notify(struct kobject *kobj, const char *dir, const char *attr); int __attribute__((__warn_unused_result__)) sysfs_init(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sysfs_enable_ns(struct kernfs_node *kn) { return kernfs_enable_ns(kn); } # 518 "../include/linux/sysfs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) sysfs_create_file(struct kobject *kobj, const struct attribute *attr) { return sysfs_create_file_ns(kobj, attr, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sysfs_remove_file(struct kobject *kobj, const struct attribute *attr) { sysfs_remove_file_ns(kobj, attr, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int sysfs_rename_link(struct kobject *kobj, struct kobject *target, const char *old_name, const char *new_name) { return sysfs_rename_link_ns(kobj, target, old_name, new_name, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sysfs_notify_dirent(struct kernfs_node *kn) { kernfs_notify(kn); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kernfs_node *sysfs_get_dirent(struct kernfs_node *parent, const char *name) { return kernfs_find_and_get(parent, name); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kernfs_node *sysfs_get(struct kernfs_node *kn) { kernfs_get(kn); return kn; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sysfs_put(struct kernfs_node *kn) { kernfs_put(kn); } # 21 "../include/linux/kobject.h" 2 # 1 "../include/linux/kref.h" 1 # 17 "../include/linux/kref.h" # 1 "../include/linux/refcount.h" 1 struct mutex; # 19 "../include/linux/refcount.h" typedef struct refcount_struct { atomic_t refs; } refcount_t; # 30 "../include/linux/refcount.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void refcount_set(refcount_t *r, unsigned int n) { atomic_set(&r->refs, n); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int refcount_read(const refcount_t *r) { return atomic_read(&r->refs); } extern __attribute__((__warn_unused_result__)) bool refcount_add_not_zero_checked(unsigned int i, refcount_t *r); extern void refcount_add_checked(unsigned int i, refcount_t *r); extern __attribute__((__warn_unused_result__)) bool refcount_inc_not_zero_checked(refcount_t *r); extern void refcount_inc_checked(refcount_t *r); extern __attribute__((__warn_unused_result__)) bool refcount_sub_and_test_checked(unsigned int i, refcount_t *r); extern __attribute__((__warn_unused_result__)) bool refcount_dec_and_test_checked(refcount_t *r); extern void refcount_dec_checked(refcount_t *r); # 111 "../include/linux/refcount.h" extern __attribute__((__warn_unused_result__)) bool refcount_dec_if_one(refcount_t *r); extern __attribute__((__warn_unused_result__)) bool refcount_dec_not_one(refcount_t *r); extern __attribute__((__warn_unused_result__)) bool refcount_dec_and_mutex_lock(refcount_t *r, struct mutex *lock); extern __attribute__((__warn_unused_result__)) bool refcount_dec_and_lock(refcount_t *r, spinlock_t *lock); extern __attribute__((__warn_unused_result__)) bool refcount_dec_and_lock_irqsave(refcount_t *r, spinlock_t *lock, unsigned long *flags); # 18 "../include/linux/kref.h" 2 struct kref { refcount_t refcount; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void kref_init(struct kref *kref) { refcount_set(&kref->refcount, 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int kref_read(const struct kref *kref) { return refcount_read(&kref->refcount); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void kref_get(struct kref *kref) { refcount_inc_checked(&kref->refcount); } # 62 "../include/linux/kref.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int kref_put(struct kref *kref, void (*release)(struct kref *kref)) { if (refcount_dec_and_test_checked(&kref->refcount)) { release(kref); return 1; } return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int kref_put_mutex(struct kref *kref, void (*release)(struct kref *kref), struct mutex *lock) { if (refcount_dec_and_mutex_lock(&kref->refcount, lock)) { release(kref); return 1; } return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int kref_put_lock(struct kref *kref, void (*release)(struct kref *kref), spinlock_t *lock) { if (refcount_dec_and_lock(&kref->refcount, lock)) { release(kref); return 1; } return 0; } # 109 "../include/linux/kref.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) kref_get_unless_zero(struct kref *kref) { return refcount_inc_not_zero_checked(&kref->refcount); } # 24 "../include/linux/kobject.h" 2 # 37 "../include/linux/kobject.h" extern char uevent_helper[]; extern u64 uevent_seqnum; # 53 "../include/linux/kobject.h" enum kobject_action { KOBJ_ADD, KOBJ_REMOVE, KOBJ_CHANGE, KOBJ_MOVE, KOBJ_ONLINE, KOBJ_OFFLINE, KOBJ_BIND, KOBJ_UNBIND, KOBJ_MAX }; struct kobject { const char *name; struct list_head entry; struct kobject *parent; struct kset *kset; struct kobj_type *ktype; struct kernfs_node *sd; struct kref kref; struct delayed_work release; unsigned int state_initialized:1; unsigned int state_in_sysfs:1; unsigned int state_add_uevent_sent:1; unsigned int state_remove_uevent_sent:1; unsigned int uevent_suppress:1; }; extern __attribute__((__format__(printf, 2, 3))) int kobject_set_name(struct kobject *kobj, const char *name, ...); extern __attribute__((__format__(printf, 2, 0))) int kobject_set_name_vargs(struct kobject *kobj, const char *fmt, va_list vargs); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *kobject_name(const struct kobject *kobj) { return kobj->name; } extern void kobject_init(struct kobject *kobj, struct kobj_type *ktype); extern __attribute__((__format__(printf, 3, 4))) __attribute__((__warn_unused_result__)) int kobject_add(struct kobject *kobj, struct kobject *parent, const char *fmt, ...); extern __attribute__((__format__(printf, 4, 5))) __attribute__((__warn_unused_result__)) int kobject_init_and_add(struct kobject *kobj, struct kobj_type *ktype, struct kobject *parent, const char *fmt, ...); extern void kobject_del(struct kobject *kobj); extern struct kobject * __attribute__((__warn_unused_result__)) kobject_create(void); extern struct kobject * __attribute__((__warn_unused_result__)) kobject_create_and_add(const char *name, struct kobject *parent); extern int __attribute__((__warn_unused_result__)) kobject_rename(struct kobject *, const char *new_name); extern int __attribute__((__warn_unused_result__)) kobject_move(struct kobject *, struct kobject *); extern struct kobject *kobject_get(struct kobject *kobj); extern struct kobject * __attribute__((__warn_unused_result__)) kobject_get_unless_zero( struct kobject *kobj); extern void kobject_put(struct kobject *kobj); extern const void *kobject_namespace(struct kobject *kobj); extern void kobject_get_ownership(struct kobject *kobj, kuid_t *uid, kgid_t *gid); extern char *kobject_get_path(struct kobject *kobj, gfp_t flag); # 132 "../include/linux/kobject.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool kobject_has_children(struct kobject *kobj) { ({ int __ret_warn_on = !!(kref_read(&kobj->kref) == 0); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/kobject.h"), "i" (134), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (337)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); return kobj->sd && kobj->sd->dir.subdirs; } struct kobj_type { void (*release)(struct kobject *kobj); const struct sysfs_ops *sysfs_ops; struct attribute **default_attrs; const struct attribute_group **default_groups; const struct kobj_ns_type_operations *(*child_ns_type)(struct kobject *kobj); const void *(*namespace)(struct kobject *kobj); void (*get_ownership)(struct kobject *kobj, kuid_t *uid, kgid_t *gid); }; struct kobj_uevent_env { char *argv[3]; char *envp[32]; int envp_idx; char buf[2048]; int buflen; }; struct kset_uevent_ops { int (* const filter)(struct kset *kset, struct kobject *kobj); const char *(* const name)(struct kset *kset, struct kobject *kobj); int (* const uevent)(struct kset *kset, struct kobject *kobj, struct kobj_uevent_env *env); }; struct kobj_attribute { struct attribute attr; ssize_t (*show)(struct kobject *kobj, struct kobj_attribute *attr, char *buf); ssize_t (*store)(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count); }; extern const struct sysfs_ops kobj_sysfs_ops; struct sock; # 193 "../include/linux/kobject.h" struct kset { struct list_head list; spinlock_t list_lock; struct kobject kobj; const struct kset_uevent_ops *uevent_ops; } ; extern void kset_init(struct kset *kset); extern int __attribute__((__warn_unused_result__)) kset_register(struct kset *kset); extern void kset_unregister(struct kset *kset); extern struct kset * __attribute__((__warn_unused_result__)) kset_create_and_add(const char *name, const struct kset_uevent_ops *u, struct kobject *parent_kobj); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kset *to_kset(struct kobject *kobj) { return kobj ? ({ void *__mptr = (void *)(kobj); do { extern void __compiletime_assert_209(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(kobj)), typeof(((struct kset *)0)->kobj)) && !__builtin_types_compatible_p(typeof(*(kobj)), typeof(void))))) __compiletime_assert_209(); } while (0); ((struct kset *)(__mptr - __builtin_offsetof(struct kset, kobj))); }) : ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kset *kset_get(struct kset *k) { return k ? to_kset(kobject_get(&k->kobj)) : ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void kset_put(struct kset *k) { kobject_put(&k->kobj); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kobj_type *get_ktype(struct kobject *kobj) { return kobj->ktype; } extern struct kobject *kset_find_obj(struct kset *, const char *); extern struct kobject *kernel_kobj; extern struct kobject *mm_kobj; extern struct kobject *hypervisor_kobj; extern struct kobject *power_kobj; extern struct kobject *firmware_kobj; int kobject_uevent(struct kobject *kobj, enum kobject_action action); int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, char *envp[]); int kobject_synth_uevent(struct kobject *kobj, const char *buf, size_t count); __attribute__((__format__(printf, 2, 3))) int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...); # 17 "../include/linux/device.h" 2 # 1 "../include/linux/klist.h" 1 # 17 "../include/linux/klist.h" struct klist_node; struct klist { spinlock_t k_lock; struct list_head k_list; void (*get)(struct klist_node *); void (*put)(struct klist_node *); } __attribute__ ((aligned (sizeof(void *)))); # 34 "../include/linux/klist.h" extern void klist_init(struct klist *k, void (*get)(struct klist_node *), void (*put)(struct klist_node *)); struct klist_node { void *n_klist; struct list_head n_node; struct kref n_ref; }; extern void klist_add_tail(struct klist_node *n, struct klist *k); extern void klist_add_head(struct klist_node *n, struct klist *k); extern void klist_add_behind(struct klist_node *n, struct klist_node *pos); extern void klist_add_before(struct klist_node *n, struct klist_node *pos); extern void klist_del(struct klist_node *n); extern void klist_remove(struct klist_node *n); extern int klist_node_attached(struct klist_node *n); struct klist_iter { struct klist *i_klist; struct klist_node *i_cur; }; extern void klist_iter_init(struct klist *k, struct klist_iter *i); extern void klist_iter_init_node(struct klist *k, struct klist_iter *i, struct klist_node *n); extern void klist_iter_exit(struct klist_iter *i); extern struct klist_node *klist_prev(struct klist_iter *i); extern struct klist_node *klist_next(struct klist_iter *i); # 18 "../include/linux/device.h" 2 # 1 "../include/linux/pm.h" 1 # 16 "../include/linux/pm.h" # 1 "../include/linux/hrtimer.h" 1 # 15 "../include/linux/hrtimer.h" # 1 "../include/linux/hrtimer_defs.h" 1 # 16 "../include/linux/hrtimer.h" 2 # 1 "../include/linux/timerqueue.h" 1 struct timerqueue_node { struct rb_node node; ktime_t expires; }; struct timerqueue_head { struct rb_root head; struct timerqueue_node *next; }; extern bool timerqueue_add(struct timerqueue_head *head, struct timerqueue_node *node); extern bool timerqueue_del(struct timerqueue_head *head, struct timerqueue_node *node); extern struct timerqueue_node *timerqueue_iterate_next( struct timerqueue_node *node); # 35 "../include/linux/timerqueue.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct timerqueue_node *timerqueue_getnext(struct timerqueue_head *head) { return head->next; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void timerqueue_init(struct timerqueue_node *node) { ((&node->node)->__rb_parent_color = (unsigned long)(&node->node)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void timerqueue_init_head(struct timerqueue_head *head) { head->head = (struct rb_root) { ((void *)0), }; head->next = ((void *)0); } # 22 "../include/linux/hrtimer.h" 2 struct hrtimer_clock_base; struct hrtimer_cpu_base; # 36 "../include/linux/hrtimer.h" enum hrtimer_mode { HRTIMER_MODE_ABS = 0x00, HRTIMER_MODE_REL = 0x01, HRTIMER_MODE_PINNED = 0x02, HRTIMER_MODE_SOFT = 0x04, HRTIMER_MODE_ABS_PINNED = HRTIMER_MODE_ABS | HRTIMER_MODE_PINNED, HRTIMER_MODE_REL_PINNED = HRTIMER_MODE_REL | HRTIMER_MODE_PINNED, HRTIMER_MODE_ABS_SOFT = HRTIMER_MODE_ABS | HRTIMER_MODE_SOFT, HRTIMER_MODE_REL_SOFT = HRTIMER_MODE_REL | HRTIMER_MODE_SOFT, HRTIMER_MODE_ABS_PINNED_SOFT = HRTIMER_MODE_ABS_PINNED | HRTIMER_MODE_SOFT, HRTIMER_MODE_REL_PINNED_SOFT = HRTIMER_MODE_REL_PINNED | HRTIMER_MODE_SOFT, }; enum hrtimer_restart { HRTIMER_NORESTART, HRTIMER_RESTART, }; # 107 "../include/linux/hrtimer.h" struct hrtimer { struct timerqueue_node node; ktime_t _softexpires; enum hrtimer_restart (*function)(struct hrtimer *); struct hrtimer_clock_base *base; u8 state; u8 is_rel; u8 is_soft; }; # 124 "../include/linux/hrtimer.h" struct hrtimer_sleeper { struct hrtimer timer; struct task_struct *task; }; # 147 "../include/linux/hrtimer.h" struct hrtimer_clock_base { struct hrtimer_cpu_base *cpu_base; unsigned int index; clockid_t clockid; seqcount_t seq; struct hrtimer *running; struct timerqueue_head active; ktime_t (*get_time)(void); ktime_t offset; } __attribute__((__aligned__((1 << (6))))); enum hrtimer_base_type { HRTIMER_BASE_MONOTONIC, HRTIMER_BASE_REALTIME, HRTIMER_BASE_BOOTTIME, HRTIMER_BASE_TAI, HRTIMER_BASE_MONOTONIC_SOFT, HRTIMER_BASE_REALTIME_SOFT, HRTIMER_BASE_BOOTTIME_SOFT, HRTIMER_BASE_TAI_SOFT, HRTIMER_MAX_CLOCK_BASES, }; # 198 "../include/linux/hrtimer.h" struct hrtimer_cpu_base { raw_spinlock_t lock; unsigned int cpu; unsigned int active_bases; unsigned int clock_was_set_seq; unsigned int hres_active : 1, in_hrtirq : 1, hang_detected : 1, softirq_activated : 1; unsigned int nr_events; unsigned short nr_retries; unsigned short nr_hangs; unsigned int max_hang_time; ktime_t expires_next; struct hrtimer *next_timer; ktime_t softirq_expires_next; struct hrtimer *softirq_next_timer; struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES]; } __attribute__((__aligned__((1 << (6))))); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hrtimer_set_expires(struct hrtimer *timer, ktime_t time) { timer->node.expires = time; timer->_softexpires = time; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hrtimer_set_expires_range(struct hrtimer *timer, ktime_t time, ktime_t delta) { timer->_softexpires = time; timer->node.expires = ktime_add_safe(time, delta); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hrtimer_set_expires_range_ns(struct hrtimer *timer, ktime_t time, u64 delta) { timer->_softexpires = time; timer->node.expires = ktime_add_safe(time, ns_to_ktime(delta)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hrtimer_set_expires_tv64(struct hrtimer *timer, s64 tv64) { timer->node.expires = tv64; timer->_softexpires = tv64; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hrtimer_add_expires(struct hrtimer *timer, ktime_t time) { timer->node.expires = ktime_add_safe(timer->node.expires, time); timer->_softexpires = ktime_add_safe(timer->_softexpires, time); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hrtimer_add_expires_ns(struct hrtimer *timer, u64 ns) { timer->node.expires = ((timer->node.expires) + (ns)); timer->_softexpires = ((timer->_softexpires) + (ns)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t hrtimer_get_expires(const struct hrtimer *timer) { return timer->node.expires; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t hrtimer_get_softexpires(const struct hrtimer *timer) { return timer->_softexpires; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 hrtimer_get_expires_tv64(const struct hrtimer *timer) { return timer->node.expires; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 hrtimer_get_softexpires_tv64(const struct hrtimer *timer) { return timer->_softexpires; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 hrtimer_get_expires_ns(const struct hrtimer *timer) { return ktime_to_ns(timer->node.expires); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t hrtimer_expires_remaining(const struct hrtimer *timer) { return ((timer->node.expires) - (timer->base->get_time())); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t hrtimer_cb_get_time(struct hrtimer *timer) { return timer->base->get_time(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int hrtimer_is_hres_active(struct hrtimer *timer) { return 1 ? timer->base->cpu_base->hres_active : 0; } struct clock_event_device; extern void hrtimer_interrupt(struct clock_event_device *dev); extern void clock_was_set_delayed(void); extern unsigned int hrtimer_resolution; # 313 "../include/linux/hrtimer.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t __hrtimer_expires_remaining_adjusted(const struct hrtimer *timer, ktime_t now) { ktime_t rem = ((timer->node.expires) - (now)); if (0 && timer->is_rel) rem -= hrtimer_resolution; return rem; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t hrtimer_expires_remaining_adjusted(const struct hrtimer *timer) { return __hrtimer_expires_remaining_adjusted(timer, timer->base->get_time()); } extern void clock_was_set(void); extern void timerfd_clock_was_set(void); extern void hrtimers_resume(void); extern __attribute__((section(".discard"), unused)) char __pcpu_scope_tick_cpu_device; extern __attribute__((section(".data..percpu" ""))) __typeof__(struct tick_device) tick_cpu_device; extern void hrtimer_init(struct hrtimer *timer, clockid_t which_clock, enum hrtimer_mode mode); extern void hrtimer_init_on_stack(struct hrtimer *timer, clockid_t which_clock, enum hrtimer_mode mode); extern void destroy_hrtimer_on_stack(struct hrtimer *timer); # 367 "../include/linux/hrtimer.h" extern void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim, u64 range_ns, const enum hrtimer_mode mode); # 378 "../include/linux/hrtimer.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode) { hrtimer_start_range_ns(timer, tim, 0, mode); } extern int hrtimer_cancel(struct hrtimer *timer); extern int hrtimer_try_to_cancel(struct hrtimer *timer); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hrtimer_start_expires(struct hrtimer *timer, enum hrtimer_mode mode) { u64 delta; ktime_t soft, hard; soft = hrtimer_get_softexpires(timer); hard = hrtimer_get_expires(timer); delta = ktime_to_ns(((hard) - (soft))); hrtimer_start_range_ns(timer, soft, delta, mode); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hrtimer_restart(struct hrtimer *timer) { hrtimer_start_expires(timer, HRTIMER_MODE_ABS); } extern ktime_t __hrtimer_get_remaining(const struct hrtimer *timer, bool adjust); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t hrtimer_get_remaining(const struct hrtimer *timer) { return __hrtimer_get_remaining(timer, false); } extern u64 hrtimer_get_next_event(void); extern u64 hrtimer_next_event_without(const struct hrtimer *exclude); extern bool hrtimer_active(const struct hrtimer *timer); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int hrtimer_is_queued(struct hrtimer *timer) { return timer->state & 0x01; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int hrtimer_callback_running(struct hrtimer *timer) { return timer->base->running == timer; } extern u64 hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval); # 453 "../include/linux/hrtimer.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 hrtimer_forward_now(struct hrtimer *timer, ktime_t interval) { return hrtimer_forward(timer, timer->base->get_time(), interval); } extern int nanosleep_copyout(struct restart_block *, struct timespec64 *); extern long hrtimer_nanosleep(const struct timespec64 *rqtp, const enum hrtimer_mode mode, const clockid_t clockid); extern void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, struct task_struct *tsk); extern int schedule_hrtimeout_range(ktime_t *expires, u64 delta, const enum hrtimer_mode mode); extern int schedule_hrtimeout_range_clock(ktime_t *expires, u64 delta, const enum hrtimer_mode mode, clockid_t clock_id); extern int schedule_hrtimeout(ktime_t *expires, const enum hrtimer_mode mode); extern void hrtimer_run_queues(void); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) hrtimers_init(void); extern void sysrq_timer_list_show(void); int hrtimers_prepare_cpu(unsigned int cpu); int hrtimers_dead_cpu(unsigned int cpu); # 17 "../include/linux/pm.h" 2 extern void (*pm_power_off)(void); extern void (*pm_power_off_prepare)(void); struct device; extern void pm_vt_switch_required(struct device *dev, bool required); extern void pm_vt_switch_unregister(struct device *dev); # 42 "../include/linux/pm.h" struct device; extern const char power_group_name[]; typedef struct pm_message { int event; } pm_message_t; # 278 "../include/linux/pm.h" struct dev_pm_ops { int (*prepare)(struct device *dev); void (*complete)(struct device *dev); int (*suspend)(struct device *dev); int (*resume)(struct device *dev); int (*freeze)(struct device *dev); int (*thaw)(struct device *dev); int (*poweroff)(struct device *dev); int (*restore)(struct device *dev); int (*suspend_late)(struct device *dev); int (*resume_early)(struct device *dev); int (*freeze_late)(struct device *dev); int (*thaw_early)(struct device *dev); int (*poweroff_late)(struct device *dev); int (*restore_early)(struct device *dev); int (*suspend_noirq)(struct device *dev); int (*resume_noirq)(struct device *dev); int (*freeze_noirq)(struct device *dev); int (*thaw_noirq)(struct device *dev); int (*poweroff_noirq)(struct device *dev); int (*restore_noirq)(struct device *dev); int (*runtime_suspend)(struct device *dev); int (*runtime_resume)(struct device *dev); int (*runtime_idle)(struct device *dev); }; # 496 "../include/linux/pm.h" enum rpm_status { RPM_ACTIVE = 0, RPM_RESUMING, RPM_SUSPENDED, RPM_SUSPENDING, }; # 518 "../include/linux/pm.h" enum rpm_request { RPM_REQ_NONE = 0, RPM_REQ_IDLE, RPM_REQ_SUSPEND, RPM_REQ_AUTOSUSPEND, RPM_REQ_RESUME, }; struct wakeup_source; struct wake_irq; struct pm_domain_data; struct pm_subsys_data { spinlock_t lock; unsigned int refcount; struct list_head clock_list; struct pm_domain_data *domain_data; }; # 573 "../include/linux/pm.h" struct dev_pm_info { pm_message_t power_state; unsigned int can_wakeup:1; unsigned int async_suspend:1; bool in_dpm_list:1; bool is_prepared:1; bool is_suspended:1; bool is_noirq_suspended:1; bool is_late_suspended:1; bool no_pm:1; bool early_init:1; bool direct_complete:1; u32 driver_flags; spinlock_t lock; struct list_head entry; struct completion completion; struct wakeup_source *wakeup; bool wakeup_path:1; bool syscore:1; bool no_pm_callbacks:1; unsigned int must_resume:1; unsigned int may_skip_resume:1; struct hrtimer suspend_timer; unsigned long timer_expires; struct work_struct work; wait_queue_head_t wait_queue; struct wake_irq *wakeirq; atomic_t usage_count; atomic_t child_count; unsigned int disable_depth:3; unsigned int idle_notification:1; unsigned int request_pending:1; unsigned int deferred_resume:1; unsigned int runtime_auto:1; bool ignore_children:1; unsigned int no_callbacks:1; unsigned int irq_safe:1; unsigned int use_autosuspend:1; unsigned int timer_autosuspends:1; unsigned int memalloc_noio:1; unsigned int links_count; enum rpm_request request; enum rpm_status runtime_status; int runtime_error; int autosuspend_delay; u64 last_busy; u64 active_time; u64 suspended_time; u64 accounting_timestamp; struct pm_subsys_data *subsys_data; void (*set_latency_tolerance)(struct device *, s32); struct dev_pm_qos *qos; }; extern int dev_pm_get_subsys_data(struct device *dev); extern void dev_pm_put_subsys_data(struct device *dev); # 649 "../include/linux/pm.h" struct dev_pm_domain { struct dev_pm_ops ops; void (*detach)(struct device *dev, bool power_off); int (*activate)(struct device *dev); void (*sync)(struct device *dev); void (*dismiss)(struct device *dev); }; # 712 "../include/linux/pm.h" extern void device_pm_lock(void); extern void dpm_resume_start(pm_message_t state); extern void dpm_resume_end(pm_message_t state); extern void dpm_noirq_resume_devices(pm_message_t state); extern void dpm_noirq_end(void); extern void dpm_resume_noirq(pm_message_t state); extern void dpm_resume_early(pm_message_t state); extern void dpm_resume(pm_message_t state); extern void dpm_complete(pm_message_t state); extern void device_pm_unlock(void); extern int dpm_suspend_end(pm_message_t state); extern int dpm_suspend_start(pm_message_t state); extern void dpm_noirq_begin(void); extern int dpm_noirq_suspend_devices(pm_message_t state); extern int dpm_suspend_noirq(pm_message_t state); extern int dpm_suspend_late(pm_message_t state); extern int dpm_suspend(pm_message_t state); extern int dpm_prepare(pm_message_t state); extern void __suspend_report_result(const char *function, void *fn, int ret); extern int device_pm_wait_for_dev(struct device *sub, struct device *dev); extern void dpm_for_each_dev(void *data, void (*fn)(struct device *, void *)); extern int pm_generic_prepare(struct device *dev); extern int pm_generic_suspend_late(struct device *dev); extern int pm_generic_suspend_noirq(struct device *dev); extern int pm_generic_suspend(struct device *dev); extern int pm_generic_resume_early(struct device *dev); extern int pm_generic_resume_noirq(struct device *dev); extern int pm_generic_resume(struct device *dev); extern int pm_generic_freeze_noirq(struct device *dev); extern int pm_generic_freeze_late(struct device *dev); extern int pm_generic_freeze(struct device *dev); extern int pm_generic_thaw_noirq(struct device *dev); extern int pm_generic_thaw_early(struct device *dev); extern int pm_generic_thaw(struct device *dev); extern int pm_generic_restore_noirq(struct device *dev); extern int pm_generic_restore_early(struct device *dev); extern int pm_generic_restore(struct device *dev); extern int pm_generic_poweroff_noirq(struct device *dev); extern int pm_generic_poweroff_late(struct device *dev); extern int pm_generic_poweroff(struct device *dev); extern void pm_generic_complete(struct device *dev); extern void dev_pm_skip_next_resume_phases(struct device *dev); extern bool dev_pm_may_skip_resume(struct device *dev); extern bool dev_pm_smart_suspend_and_suspended(struct device *dev); # 811 "../include/linux/pm.h" enum dpm_order { DPM_ORDER_NONE, DPM_ORDER_DEV_AFTER_PARENT, DPM_ORDER_PARENT_BEFORE_DEV, DPM_ORDER_DEV_LAST, }; # 24 "../include/linux/device.h" 2 # 1 "../include/linux/ratelimit.h" 1 # 1 "../include/linux/sched.h" 1 # 10 "../include/linux/sched.h" # 1 "../include/uapi/linux/sched.h" 1 # 39 "../include/uapi/linux/sched.h" struct clone_args { __u64 __attribute__((aligned(8))) flags; __u64 __attribute__((aligned(8))) pidfd; __u64 __attribute__((aligned(8))) child_tid; __u64 __attribute__((aligned(8))) parent_tid; __u64 __attribute__((aligned(8))) exit_signal; __u64 __attribute__((aligned(8))) stack; __u64 __attribute__((aligned(8))) stack_size; __u64 __attribute__((aligned(8))) tls; }; # 11 "../include/linux/sched.h" 2 # 1 "../include/linux/pid.h" 1 # 1 "../include/linux/rculist.h" 1 # 31 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void INIT_LIST_HEAD_RCU(struct list_head *list) { ({ union { typeof(list->next) __val; char __c[1]; } __u = { .__val = ( typeof(list->next)) (list) }; __write_once_size(&(list->next), __u.__c, sizeof(list->next)); __u.__val; }); ({ union { typeof(list->prev) __val; char __c[1]; } __u = { .__val = ( typeof(list->prev)) (list) }; __write_once_size(&(list->prev), __u.__c, sizeof(list->prev)); __u.__val; }); } # 49 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __list_add_rcu(struct list_head *new, struct list_head *prev, struct list_head *next) { if (!__list_add_valid(new, prev, next)) return; new->next = next; new->prev = prev; do { uintptr_t _r_a_p__v = (uintptr_t)(new); ; if (__builtin_constant_p(new) && (_r_a_p__v) == (uintptr_t)((void *)0)) ({ union { typeof(((*((struct list_head **)(&(prev)->next))))) __val; char __c[1]; } __u = { .__val = ( typeof(((*((struct list_head **)(&(prev)->next)))))) ((typeof((*((struct list_head **)(&(prev)->next)))))(_r_a_p__v)) }; __write_once_size(&(((*((struct list_head **)(&(prev)->next))))), __u.__c, sizeof(((*((struct list_head **)(&(prev)->next)))))); __u.__val; }); else do { do { extern void __compiletime_assert_57(void) ; if (!((sizeof(*&(*((struct list_head **)(&(prev)->next)))) == sizeof(char) || sizeof(*&(*((struct list_head **)(&(prev)->next)))) == sizeof(short) || sizeof(*&(*((struct list_head **)(&(prev)->next)))) == sizeof(int) || sizeof(*&(*((struct list_head **)(&(prev)->next)))) == sizeof(long)))) __compiletime_assert_57(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&(*((struct list_head **)(&(prev)->next)))) __val; char __c[1]; } __u = { .__val = ( typeof(*&(*((struct list_head **)(&(prev)->next))))) ((typeof(*((typeof((*((struct list_head **)(&(prev)->next)))))_r_a_p__v)) *)((typeof((*((struct list_head **)(&(prev)->next)))))_r_a_p__v)) }; __write_once_size(&(*&(*((struct list_head **)(&(prev)->next)))), __u.__c, sizeof(*&(*((struct list_head **)(&(prev)->next))))); __u.__val; }); } while (0); } while (0); next->prev = new; } # 77 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_add_rcu(struct list_head *new, struct list_head *head) { __list_add_rcu(new, head, head->next); } # 98 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_add_tail_rcu(struct list_head *new, struct list_head *head) { __list_add_rcu(new, head->prev, head); } # 128 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_del_rcu(struct list_head *entry) { __list_del_entry(entry); entry->prev = ((void *) 0x122 + (0xdead000000000000UL)); } # 154 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_del_init_rcu(struct hlist_node *n) { if (!hlist_unhashed(n)) { __hlist_del(n); n->pprev = ((void *)0); } } # 170 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_replace_rcu(struct list_head *old, struct list_head *new) { new->next = old->next; new->prev = old->prev; do { uintptr_t _r_a_p__v = (uintptr_t)(new); ; if (__builtin_constant_p(new) && (_r_a_p__v) == (uintptr_t)((void *)0)) ({ union { typeof(((*((struct list_head **)(&(new->prev)->next))))) __val; char __c[1]; } __u = { .__val = ( typeof(((*((struct list_head **)(&(new->prev)->next)))))) ((typeof((*((struct list_head **)(&(new->prev)->next)))))(_r_a_p__v)) }; __write_once_size(&(((*((struct list_head **)(&(new->prev)->next))))), __u.__c, sizeof(((*((struct list_head **)(&(new->prev)->next)))))); __u.__val; }); else do { do { extern void __compiletime_assert_175(void) ; if (!((sizeof(*&(*((struct list_head **)(&(new->prev)->next)))) == sizeof(char) || sizeof(*&(*((struct list_head **)(&(new->prev)->next)))) == sizeof(short) || sizeof(*&(*((struct list_head **)(&(new->prev)->next)))) == sizeof(int) || sizeof(*&(*((struct list_head **)(&(new->prev)->next)))) == sizeof(long)))) __compiletime_assert_175(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&(*((struct list_head **)(&(new->prev)->next)))) __val; char __c[1]; } __u = { .__val = ( typeof(*&(*((struct list_head **)(&(new->prev)->next))))) ((typeof(*((typeof((*((struct list_head **)(&(new->prev)->next)))))_r_a_p__v)) *)((typeof((*((struct list_head **)(&(new->prev)->next)))))_r_a_p__v)) }; __write_once_size(&(*&(*((struct list_head **)(&(new->prev)->next)))), __u.__c, sizeof(*&(*((struct list_head **)(&(new->prev)->next))))); __u.__val; }); } while (0); } while (0); new->next->prev = new; old->prev = ((void *) 0x122 + (0xdead000000000000UL)); } # 199 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __list_splice_init_rcu(struct list_head *list, struct list_head *prev, struct list_head *next, void (*sync)(void)) { struct list_head *first = list->next; struct list_head *last = list->prev; INIT_LIST_HEAD_RCU(list); # 222 "../include/linux/rculist.h" sync(); # 232 "../include/linux/rculist.h" last->next = next; do { uintptr_t _r_a_p__v = (uintptr_t)(first); ; if (__builtin_constant_p(first) && (_r_a_p__v) == (uintptr_t)((void *)0)) ({ union { typeof(((*((struct list_head **)(&(prev)->next))))) __val; char __c[1]; } __u = { .__val = ( typeof(((*((struct list_head **)(&(prev)->next)))))) ((typeof((*((struct list_head **)(&(prev)->next)))))(_r_a_p__v)) }; __write_once_size(&(((*((struct list_head **)(&(prev)->next))))), __u.__c, sizeof(((*((struct list_head **)(&(prev)->next)))))); __u.__val; }); else do { do { extern void __compiletime_assert_233(void) ; if (!((sizeof(*&(*((struct list_head **)(&(prev)->next)))) == sizeof(char) || sizeof(*&(*((struct list_head **)(&(prev)->next)))) == sizeof(short) || sizeof(*&(*((struct list_head **)(&(prev)->next)))) == sizeof(int) || sizeof(*&(*((struct list_head **)(&(prev)->next)))) == sizeof(long)))) __compiletime_assert_233(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&(*((struct list_head **)(&(prev)->next)))) __val; char __c[1]; } __u = { .__val = ( typeof(*&(*((struct list_head **)(&(prev)->next))))) ((typeof(*((typeof((*((struct list_head **)(&(prev)->next)))))_r_a_p__v)) *)((typeof((*((struct list_head **)(&(prev)->next)))))_r_a_p__v)) }; __write_once_size(&(*&(*((struct list_head **)(&(prev)->next)))), __u.__c, sizeof(*&(*((struct list_head **)(&(prev)->next))))); __u.__val; }); } while (0); } while (0); first->prev = prev; next->prev = last; } # 245 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_splice_init_rcu(struct list_head *list, struct list_head *head, void (*sync)(void)) { if (!list_empty(list)) __list_splice_init_rcu(list, head, head->next, sync); } # 260 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void list_splice_tail_init_rcu(struct list_head *list, struct list_head *head, void (*sync)(void)) { if (!list_empty(list)) __list_splice_init_rcu(list, head->prev, head, sync); } # 453 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_del_rcu(struct hlist_node *n) { __hlist_del(n); n->pprev = ((void *) 0x122 + (0xdead000000000000UL)); } # 466 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_replace_rcu(struct hlist_node *old, struct hlist_node *new) { struct hlist_node *next = old->next; new->next = next; new->pprev = old->pprev; do { uintptr_t _r_a_p__v = (uintptr_t)(new); ; if (__builtin_constant_p(new) && (_r_a_p__v) == (uintptr_t)((void *)0)) ({ union { typeof((*(struct hlist_node **)new->pprev)) __val; char __c[1]; } __u = { .__val = ( typeof((*(struct hlist_node **)new->pprev))) ((typeof(*(struct hlist_node **)new->pprev))(_r_a_p__v)) }; __write_once_size(&((*(struct hlist_node **)new->pprev)), __u.__c, sizeof((*(struct hlist_node **)new->pprev))); __u.__val; }); else do { do { extern void __compiletime_assert_473(void) ; if (!((sizeof(*&*(struct hlist_node **)new->pprev) == sizeof(char) || sizeof(*&*(struct hlist_node **)new->pprev) == sizeof(short) || sizeof(*&*(struct hlist_node **)new->pprev) == sizeof(int) || sizeof(*&*(struct hlist_node **)new->pprev) == sizeof(long)))) __compiletime_assert_473(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&*(struct hlist_node **)new->pprev) __val; char __c[1]; } __u = { .__val = ( typeof(*&*(struct hlist_node **)new->pprev)) ((typeof(*((typeof(*(struct hlist_node **)new->pprev))_r_a_p__v)) *)((typeof(*(struct hlist_node **)new->pprev))_r_a_p__v)) }; __write_once_size(&(*&*(struct hlist_node **)new->pprev), __u.__c, sizeof(*&*(struct hlist_node **)new->pprev)); __u.__val; }); } while (0); } while (0); if (next) new->next->pprev = &new->next; old->pprev = ((void *) 0x122 + (0xdead000000000000UL)); } # 505 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_add_head_rcu(struct hlist_node *n, struct hlist_head *h) { struct hlist_node *first = h->first; n->next = first; n->pprev = &h->first; do { uintptr_t _r_a_p__v = (uintptr_t)(n); ; if (__builtin_constant_p(n) && (_r_a_p__v) == (uintptr_t)((void *)0)) ({ union { typeof(((*((struct hlist_node **)(&(h)->first))))) __val; char __c[1]; } __u = { .__val = ( typeof(((*((struct hlist_node **)(&(h)->first)))))) ((typeof((*((struct hlist_node **)(&(h)->first)))))(_r_a_p__v)) }; __write_once_size(&(((*((struct hlist_node **)(&(h)->first))))), __u.__c, sizeof(((*((struct hlist_node **)(&(h)->first)))))); __u.__val; }); else do { do { extern void __compiletime_assert_512(void) ; if (!((sizeof(*&(*((struct hlist_node **)(&(h)->first)))) == sizeof(char) || sizeof(*&(*((struct hlist_node **)(&(h)->first)))) == sizeof(short) || sizeof(*&(*((struct hlist_node **)(&(h)->first)))) == sizeof(int) || sizeof(*&(*((struct hlist_node **)(&(h)->first)))) == sizeof(long)))) __compiletime_assert_512(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&(*((struct hlist_node **)(&(h)->first)))) __val; char __c[1]; } __u = { .__val = ( typeof(*&(*((struct hlist_node **)(&(h)->first))))) ((typeof(*((typeof((*((struct hlist_node **)(&(h)->first)))))_r_a_p__v)) *)((typeof((*((struct hlist_node **)(&(h)->first)))))_r_a_p__v)) }; __write_once_size(&(*&(*((struct hlist_node **)(&(h)->first)))), __u.__c, sizeof(*&(*((struct hlist_node **)(&(h)->first))))); __u.__val; }); } while (0); } while (0); if (first) first->pprev = &n->next; } # 536 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_add_tail_rcu(struct hlist_node *n, struct hlist_head *h) { struct hlist_node *i, *last = ((void *)0); for (i = h->first; i; i = i->next) last = i; if (last) { n->next = last->next; n->pprev = &last->next; do { uintptr_t _r_a_p__v = (uintptr_t)(n); ; if (__builtin_constant_p(n) && (_r_a_p__v) == (uintptr_t)((void *)0)) ({ union { typeof(((*((struct hlist_node **)(&(last)->next))))) __val; char __c[1]; } __u = { .__val = ( typeof(((*((struct hlist_node **)(&(last)->next)))))) ((typeof((*((struct hlist_node **)(&(last)->next)))))(_r_a_p__v)) }; __write_once_size(&(((*((struct hlist_node **)(&(last)->next))))), __u.__c, sizeof(((*((struct hlist_node **)(&(last)->next)))))); __u.__val; }); else do { do { extern void __compiletime_assert_548(void) ; if (!((sizeof(*&(*((struct hlist_node **)(&(last)->next)))) == sizeof(char) || sizeof(*&(*((struct hlist_node **)(&(last)->next)))) == sizeof(short) || sizeof(*&(*((struct hlist_node **)(&(last)->next)))) == sizeof(int) || sizeof(*&(*((struct hlist_node **)(&(last)->next)))) == sizeof(long)))) __compiletime_assert_548(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&(*((struct hlist_node **)(&(last)->next)))) __val; char __c[1]; } __u = { .__val = ( typeof(*&(*((struct hlist_node **)(&(last)->next))))) ((typeof(*((typeof((*((struct hlist_node **)(&(last)->next)))))_r_a_p__v)) *)((typeof((*((struct hlist_node **)(&(last)->next)))))_r_a_p__v)) }; __write_once_size(&(*&(*((struct hlist_node **)(&(last)->next)))), __u.__c, sizeof(*&(*((struct hlist_node **)(&(last)->next))))); __u.__val; }); } while (0); } while (0); } else { hlist_add_head_rcu(n, h); } } # 572 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_add_before_rcu(struct hlist_node *n, struct hlist_node *next) { n->pprev = next->pprev; n->next = next; do { uintptr_t _r_a_p__v = (uintptr_t)(n); ; if (__builtin_constant_p(n) && (_r_a_p__v) == (uintptr_t)((void *)0)) ({ union { typeof(((*((struct hlist_node **)((n)->pprev))))) __val; char __c[1]; } __u = { .__val = ( typeof(((*((struct hlist_node **)((n)->pprev)))))) ((typeof((*((struct hlist_node **)((n)->pprev)))))(_r_a_p__v)) }; __write_once_size(&(((*((struct hlist_node **)((n)->pprev))))), __u.__c, sizeof(((*((struct hlist_node **)((n)->pprev)))))); __u.__val; }); else do { do { extern void __compiletime_assert_577(void) ; if (!((sizeof(*&(*((struct hlist_node **)((n)->pprev)))) == sizeof(char) || sizeof(*&(*((struct hlist_node **)((n)->pprev)))) == sizeof(short) || sizeof(*&(*((struct hlist_node **)((n)->pprev)))) == sizeof(int) || sizeof(*&(*((struct hlist_node **)((n)->pprev)))) == sizeof(long)))) __compiletime_assert_577(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&(*((struct hlist_node **)((n)->pprev)))) __val; char __c[1]; } __u = { .__val = ( typeof(*&(*((struct hlist_node **)((n)->pprev))))) ((typeof(*((typeof((*((struct hlist_node **)((n)->pprev)))))_r_a_p__v)) *)((typeof((*((struct hlist_node **)((n)->pprev)))))_r_a_p__v)) }; __write_once_size(&(*&(*((struct hlist_node **)((n)->pprev)))), __u.__c, sizeof(*&(*((struct hlist_node **)((n)->pprev))))); __u.__val; }); } while (0); } while (0); next->pprev = &n->next; } # 599 "../include/linux/rculist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_add_behind_rcu(struct hlist_node *n, struct hlist_node *prev) { n->next = prev->next; n->pprev = &prev->next; do { uintptr_t _r_a_p__v = (uintptr_t)(n); ; if (__builtin_constant_p(n) && (_r_a_p__v) == (uintptr_t)((void *)0)) ({ union { typeof(((*((struct hlist_node **)(&(prev)->next))))) __val; char __c[1]; } __u = { .__val = ( typeof(((*((struct hlist_node **)(&(prev)->next)))))) ((typeof((*((struct hlist_node **)(&(prev)->next)))))(_r_a_p__v)) }; __write_once_size(&(((*((struct hlist_node **)(&(prev)->next))))), __u.__c, sizeof(((*((struct hlist_node **)(&(prev)->next)))))); __u.__val; }); else do { do { extern void __compiletime_assert_604(void) ; if (!((sizeof(*&(*((struct hlist_node **)(&(prev)->next)))) == sizeof(char) || sizeof(*&(*((struct hlist_node **)(&(prev)->next)))) == sizeof(short) || sizeof(*&(*((struct hlist_node **)(&(prev)->next)))) == sizeof(int) || sizeof(*&(*((struct hlist_node **)(&(prev)->next)))) == sizeof(long)))) __compiletime_assert_604(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&(*((struct hlist_node **)(&(prev)->next)))) __val; char __c[1]; } __u = { .__val = ( typeof(*&(*((struct hlist_node **)(&(prev)->next))))) ((typeof(*((typeof((*((struct hlist_node **)(&(prev)->next)))))_r_a_p__v)) *)((typeof((*((struct hlist_node **)(&(prev)->next)))))_r_a_p__v)) }; __write_once_size(&(*&(*((struct hlist_node **)(&(prev)->next)))), __u.__c, sizeof(*&(*((struct hlist_node **)(&(prev)->next))))); __u.__val; }); } while (0); } while (0); if (n->next) n->next->pprev = &n->next; } # 6 "../include/linux/pid.h" 2 enum pid_type { PIDTYPE_PID, PIDTYPE_TGID, PIDTYPE_PGID, PIDTYPE_SID, PIDTYPE_MAX, }; # 53 "../include/linux/pid.h" struct upid { int nr; struct pid_namespace *ns; }; struct pid { atomic_t count; unsigned int level; struct hlist_head tasks[PIDTYPE_MAX]; wait_queue_head_t wait_pidfd; struct callback_head rcu; struct upid numbers[1]; }; extern struct pid init_struct_pid; extern const struct file_operations pidfd_fops; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct pid *get_pid(struct pid *pid) { if (pid) atomic_inc(&pid->count); return pid; } extern void put_pid(struct pid *pid); extern struct task_struct *pid_task(struct pid *pid, enum pid_type); extern struct task_struct *get_pid_task(struct pid *pid, enum pid_type); extern struct pid *get_task_pid(struct task_struct *task, enum pid_type type); extern void attach_pid(struct task_struct *task, enum pid_type); extern void detach_pid(struct task_struct *task, enum pid_type); extern void change_pid(struct task_struct *task, enum pid_type, struct pid *pid); extern void transfer_pid(struct task_struct *old, struct task_struct *new, enum pid_type); struct pid_namespace; extern struct pid_namespace init_pid_ns; # 109 "../include/linux/pid.h" extern struct pid *find_pid_ns(int nr, struct pid_namespace *ns); extern struct pid *find_vpid(int nr); extern struct pid *find_get_pid(int nr); extern struct pid *find_ge_pid(int nr, struct pid_namespace *); extern struct pid *alloc_pid(struct pid_namespace *ns); extern void free_pid(struct pid *pid); extern void disable_pid_allocation(struct pid_namespace *ns); # 132 "../include/linux/pid.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct pid_namespace *ns_of_pid(struct pid *pid) { struct pid_namespace *ns = ((void *)0); if (pid) ns = pid->numbers[pid->level].ns; return ns; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_child_reaper(struct pid *pid) { return pid->numbers[pid->level].nr == 1; } # 162 "../include/linux/pid.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t pid_nr(struct pid *pid) { pid_t nr = 0; if (pid) nr = pid->numbers[0].nr; return nr; } pid_t pid_nr_ns(struct pid *pid, struct pid_namespace *ns); pid_t pid_vnr(struct pid *pid); # 15 "../include/linux/sched.h" 2 # 1 "../include/linux/sem.h" 1 # 1 "../include/uapi/linux/sem.h" 1 # 1 "../include/linux/ipc.h" 1 # 1 "../include/linux/rhashtable-types.h" 1 # 17 "../include/linux/rhashtable-types.h" struct rhash_head { struct rhash_head *next; }; struct rhlist_head { struct rhash_head rhead; struct rhlist_head *next; }; struct bucket_table; struct rhashtable_compare_arg { struct rhashtable *ht; const void *key; }; typedef u32 (*rht_hashfn_t)(const void *data, u32 len, u32 seed); typedef u32 (*rht_obj_hashfn_t)(const void *data, u32 len, u32 seed); typedef int (*rht_obj_cmpfn_t)(struct rhashtable_compare_arg *arg, const void *obj); # 56 "../include/linux/rhashtable-types.h" struct rhashtable_params { u16 nelem_hint; u16 key_len; u16 key_offset; u16 head_offset; unsigned int max_size; u16 min_size; bool automatic_shrinking; rht_hashfn_t hashfn; rht_obj_hashfn_t obj_hashfn; rht_obj_cmpfn_t obj_cmpfn; }; # 81 "../include/linux/rhashtable-types.h" struct rhashtable { struct bucket_table *tbl; unsigned int key_len; unsigned int max_elems; struct rhashtable_params p; bool rhlist; struct work_struct run_work; struct mutex mutex; spinlock_t lock; atomic_t nelems; }; struct rhltable { struct rhashtable ht; }; struct rhashtable_walker { struct list_head list; struct bucket_table *tbl; }; # 120 "../include/linux/rhashtable-types.h" struct rhashtable_iter { struct rhashtable *ht; struct rhash_head *p; struct rhlist_head *list; struct rhashtable_walker walker; unsigned int slot; unsigned int skip; bool end_of_table; }; int rhashtable_init(struct rhashtable *ht, const struct rhashtable_params *params); int rhltable_init(struct rhltable *hlt, const struct rhashtable_params *params); # 8 "../include/linux/ipc.h" 2 # 1 "../include/uapi/linux/ipc.h" 1 # 10 "../include/uapi/linux/ipc.h" struct ipc_perm { __kernel_key_t key; __kernel_uid_t uid; __kernel_gid_t gid; __kernel_uid_t cuid; __kernel_gid_t cgid; __kernel_mode_t mode; unsigned short seq; }; # 1 "../arch/x86/include/uapi/asm/ipcbuf.h" 1 # 1 "../include/uapi/asm-generic/ipcbuf.h" 1 # 20 "../include/uapi/asm-generic/ipcbuf.h" struct ipc64_perm { __kernel_key_t key; __kernel_uid32_t uid; __kernel_gid32_t gid; __kernel_uid32_t cuid; __kernel_gid32_t cgid; __kernel_mode_t mode; unsigned char __pad1[4 - sizeof(__kernel_mode_t)]; unsigned short seq; unsigned short __pad2; __kernel_ulong_t __unused1; __kernel_ulong_t __unused2; }; # 2 "../arch/x86/include/uapi/asm/ipcbuf.h" 2 # 23 "../include/uapi/linux/ipc.h" 2 # 58 "../include/uapi/linux/ipc.h" struct ipc_kludge { struct msgbuf *msgp; long msgtyp; }; # 9 "../include/linux/ipc.h" 2 struct kern_ipc_perm { spinlock_t lock; bool deleted; int id; key_t key; kuid_t uid; kgid_t gid; kuid_t cuid; kgid_t cgid; umode_t mode; unsigned long seq; void *security; struct rhash_head khtnode; struct callback_head rcu; refcount_t refcount; } __attribute__((__aligned__((1 << (6))))) ; # 6 "../include/uapi/linux/sem.h" 2 # 25 "../include/uapi/linux/sem.h" struct semid_ds { struct ipc_perm sem_perm; __kernel_time_t sem_otime; __kernel_time_t sem_ctime; struct sem *sem_base; struct sem_queue *sem_pending; struct sem_queue **sem_pending_last; struct sem_undo *undo; unsigned short sem_nsems; }; # 1 "../arch/x86/include/uapi/asm/sembuf.h" 1 # 16 "../arch/x86/include/uapi/asm/sembuf.h" struct semid64_ds { struct ipc64_perm sem_perm; __kernel_time_t sem_otime; __kernel_ulong_t __unused1; __kernel_time_t sem_ctime; __kernel_ulong_t __unused2; __kernel_ulong_t sem_nsems; __kernel_ulong_t __unused3; __kernel_ulong_t __unused4; }; # 38 "../include/uapi/linux/sem.h" 2 struct sembuf { unsigned short sem_num; short sem_op; short sem_flg; }; union semun { int val; struct semid_ds *buf; unsigned short *array; struct seminfo *__buf; void *__pad; }; struct seminfo { int semmap; int semmni; int semmns; int semmnu; int semmsl; int semopm; int semume; int semusz; int semvmx; int semaem; }; # 6 "../include/linux/sem.h" 2 struct task_struct; struct sem_undo_list; struct sysv_sem { struct sem_undo_list *undo_list; }; extern int copy_semundo(unsigned long clone_flags, struct task_struct *tsk); extern void exit_sem(struct task_struct *tsk); # 16 "../include/linux/sched.h" 2 # 1 "../include/linux/shm.h" 1 # 1 "../include/uapi/linux/shm.h" 1 # 1 "../include/uapi/asm-generic/hugetlb_encode.h" 1 # 8 "../include/uapi/linux/shm.h" 2 # 28 "../include/uapi/linux/shm.h" struct shmid_ds { struct ipc_perm shm_perm; int shm_segsz; __kernel_time_t shm_atime; __kernel_time_t shm_dtime; __kernel_time_t shm_ctime; __kernel_ipc_pid_t shm_cpid; __kernel_ipc_pid_t shm_lpid; unsigned short shm_nattch; unsigned short shm_unused; void *shm_unused2; void *shm_unused3; }; # 1 "../arch/x86/include/uapi/asm/shmbuf.h" 1 # 1 "../include/uapi/asm-generic/shmbuf.h" 1 # 25 "../include/uapi/asm-generic/shmbuf.h" struct shmid64_ds { struct ipc64_perm shm_perm; size_t shm_segsz; __kernel_time_t shm_atime; __kernel_time_t shm_dtime; __kernel_time_t shm_ctime; # 40 "../include/uapi/asm-generic/shmbuf.h" __kernel_pid_t shm_cpid; __kernel_pid_t shm_lpid; unsigned long shm_nattch; unsigned long __unused4; unsigned long __unused5; }; struct shminfo64 { unsigned long shmmax; unsigned long shmmin; unsigned long shmmni; unsigned long shmseg; unsigned long shmall; unsigned long __unused1; unsigned long __unused2; unsigned long __unused3; unsigned long __unused4; }; # 7 "../arch/x86/include/uapi/asm/shmbuf.h" 2 # 44 "../include/uapi/linux/shm.h" 2 # 93 "../include/uapi/linux/shm.h" struct shminfo { int shmmax; int shmmin; int shmmni; int shmseg; int shmall; }; struct shm_info { int used_ids; __kernel_ulong_t shm_tot; __kernel_ulong_t shm_rss; __kernel_ulong_t shm_swp; __kernel_ulong_t swap_attempts; __kernel_ulong_t swap_successes; }; # 8 "../include/linux/shm.h" 2 # 1 "../arch/x86/include/asm/shmparam.h" 1 # 9 "../include/linux/shm.h" 2 struct file; struct sysv_shm { struct list_head shm_clist; }; long do_shmat(int shmid, char *shmaddr, int shmflg, unsigned long *addr, unsigned long shmlba); bool is_file_shm_hugepages(struct file *file); void exit_shm(struct task_struct *task); # 17 "../include/linux/sched.h" 2 # 1 "../include/linux/kcov.h" 1 # 1 "../include/uapi/linux/kcov.h" 1 # 11 "../include/uapi/linux/kcov.h" enum { # 20 "../include/uapi/linux/kcov.h" KCOV_TRACE_PC = 0, KCOV_TRACE_CMP = 1, }; # 6 "../include/linux/kcov.h" 2 struct task_struct; enum kcov_mode { KCOV_MODE_DISABLED = 0, KCOV_MODE_INIT = 1, KCOV_MODE_TRACE_PC = 2, KCOV_MODE_TRACE_CMP = 3, }; void kcov_task_init(struct task_struct *t); void kcov_task_exit(struct task_struct *t); # 18 "../include/linux/sched.h" 2 # 1 "../include/linux/plist.h" 1 # 79 "../include/linux/plist.h" struct plist_head { struct list_head node_list; }; struct plist_node { int prio; struct list_head prio_list; struct list_head node_list; }; # 121 "../include/linux/plist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void plist_head_init(struct plist_head *head) { INIT_LIST_HEAD(&head->node_list); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void plist_node_init(struct plist_node *node, int prio) { node->prio = prio; INIT_LIST_HEAD(&node->prio_list); INIT_LIST_HEAD(&node->node_list); } extern void plist_add(struct plist_node *node, struct plist_head *head); extern void plist_del(struct plist_node *node, struct plist_head *head); extern void plist_requeue(struct plist_node *node, struct plist_head *head); # 210 "../include/linux/plist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int plist_head_empty(const struct plist_head *head) { return list_empty(&head->node_list); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int plist_node_empty(const struct plist_node *node) { return list_empty(&node->node_list); } # 280 "../include/linux/plist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct plist_node *plist_first(const struct plist_head *head) { return ({ void *__mptr = (void *)(head->node_list.next); do { extern void __compiletime_assert_283(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(head->node_list.next)), typeof(((struct plist_node *)0)->node_list)) && !__builtin_types_compatible_p(typeof(*(head->node_list.next)), typeof(void))))) __compiletime_assert_283(); } while (0); ((struct plist_node *)(__mptr - __builtin_offsetof(struct plist_node, node_list))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct plist_node *plist_last(const struct plist_head *head) { return ({ void *__mptr = (void *)(head->node_list.prev); do { extern void __compiletime_assert_295(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(head->node_list.prev)), typeof(((struct plist_node *)0)->node_list)) && !__builtin_types_compatible_p(typeof(*(head->node_list.prev)), typeof(void))))) __compiletime_assert_295(); } while (0); ((struct plist_node *)(__mptr - __builtin_offsetof(struct plist_node, node_list))); }); } # 20 "../include/linux/sched.h" 2 # 1 "../include/linux/seccomp.h" 1 # 1 "../include/uapi/linux/seccomp.h" 1 # 59 "../include/uapi/linux/seccomp.h" struct seccomp_data { int nr; __u32 arch; __u64 instruction_pointer; __u64 args[6]; }; struct seccomp_notif_sizes { __u16 seccomp_notif; __u16 seccomp_notif_resp; __u16 seccomp_data; }; struct seccomp_notif { __u64 id; __u32 pid; __u32 flags; struct seccomp_data data; }; struct seccomp_notif_resp { __u64 id; __s64 val; __s32 error; __u32 flags; }; # 6 "../include/linux/seccomp.h" 2 # 15 "../include/linux/seccomp.h" # 1 "../arch/x86/include/asm/seccomp.h" 1 # 1 "../arch/x86/include/asm/unistd.h" 1 # 1 "../arch/x86/include/uapi/asm/unistd.h" 1 # 6 "../arch/x86/include/asm/unistd.h" 2 # 24 "../arch/x86/include/asm/unistd.h" # 1 "./arch/x86/include/generated/uapi/asm/unistd_64.h" 1 # 25 "../arch/x86/include/asm/unistd.h" 2 # 1 "./arch/x86/include/generated/asm/unistd_64_x32.h" 1 # 26 "../arch/x86/include/asm/unistd.h" 2 # 6 "../arch/x86/include/asm/seccomp.h" 2 # 1 "../arch/x86/include/asm/ia32_unistd.h" 1 # 10 "../arch/x86/include/asm/ia32_unistd.h" # 1 "./arch/x86/include/generated/asm/unistd_32_ia32.h" 1 # 11 "../arch/x86/include/asm/ia32_unistd.h" 2 # 13 "../arch/x86/include/asm/seccomp.h" 2 # 1 "../include/asm-generic/seccomp.h" 1 # 11 "../include/asm-generic/seccomp.h" # 1 "../include/uapi/linux/unistd.h" 1 # 12 "../include/asm-generic/seccomp.h" 2 # 31 "../include/asm-generic/seccomp.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const int *get_compat_mode1_syscalls(void) { static const int mode1_syscalls_32[] = { 3, 4, 1, 119, 0, }; return mode1_syscalls_32; } # 20 "../arch/x86/include/asm/seccomp.h" 2 # 16 "../include/linux/seccomp.h" 2 struct seccomp_filter; # 29 "../include/linux/seccomp.h" struct seccomp { int mode; struct seccomp_filter *filter; }; extern int __secure_computing(const struct seccomp_data *sd); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int secure_computing(const struct seccomp_data *sd) { if (__builtin_expect(!!(test_ti_thread_flag(((struct thread_info *)get_current()), 8)), 0)) return __secure_computing(sd); return 0; } extern long prctl_get_seccomp(void); extern long prctl_set_seccomp(unsigned long, void *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int seccomp_mode(struct seccomp *s) { return s->mode; } # 84 "../include/linux/seccomp.h" extern void put_seccomp_filter(struct task_struct *tsk); extern void get_seccomp_filter(struct task_struct *tsk); # 98 "../include/linux/seccomp.h" extern long seccomp_get_filter(struct task_struct *task, unsigned long filter_off, void *data); extern long seccomp_get_metadata(struct task_struct *task, unsigned long filter_off, void *data); # 22 "../include/linux/sched.h" 2 # 1 "../include/linux/resource.h" 1 # 1 "../include/uapi/linux/resource.h" 1 # 24 "../include/uapi/linux/resource.h" struct rusage { struct timeval ru_utime; struct timeval ru_stime; __kernel_long_t ru_maxrss; __kernel_long_t ru_ixrss; __kernel_long_t ru_idrss; __kernel_long_t ru_isrss; __kernel_long_t ru_minflt; __kernel_long_t ru_majflt; __kernel_long_t ru_nswap; __kernel_long_t ru_inblock; __kernel_long_t ru_oublock; __kernel_long_t ru_msgsnd; __kernel_long_t ru_msgrcv; __kernel_long_t ru_nsignals; __kernel_long_t ru_nvcsw; __kernel_long_t ru_nivcsw; }; struct rlimit { __kernel_ulong_t rlim_cur; __kernel_ulong_t rlim_max; }; struct rlimit64 { __u64 rlim_cur; __u64 rlim_max; }; # 78 "../include/uapi/linux/resource.h" # 1 "../arch/x86/include/uapi/asm/resource.h" 1 # 1 "../include/asm-generic/resource.h" 1 # 1 "../include/uapi/asm-generic/resource.h" 1 # 6 "../include/asm-generic/resource.h" 2 # 2 "../arch/x86/include/uapi/asm/resource.h" 2 # 79 "../include/uapi/linux/resource.h" 2 # 6 "../include/linux/resource.h" 2 struct task_struct; void getrusage(struct task_struct *p, int who, struct rusage *ru); int do_prlimit(struct task_struct *tsk, unsigned int resource, struct rlimit *new_rlim, struct rlimit *old_rlim); # 26 "../include/linux/sched.h" 2 # 1 "../include/linux/latencytop.h" 1 # 14 "../include/linux/latencytop.h" struct task_struct; struct latency_record { unsigned long backtrace[12]; unsigned int count; unsigned long time; unsigned long max; }; extern int latencytop_enabled; void __account_scheduler_latency(struct task_struct *task, int usecs, int inter); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void account_scheduler_latency(struct task_struct *task, int usecs, int inter) { if (__builtin_expect(!!(latencytop_enabled), 0)) __account_scheduler_latency(task, usecs, inter); } void clear_tsk_latency_tracing(struct task_struct *p); extern int sysctl_latencytop(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); # 27 "../include/linux/sched.h" 2 # 1 "../include/linux/sched/prio.h" 1 # 48 "../include/linux/sched/prio.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long nice_to_rlimit(long nice) { return (19 - nice + 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long rlimit_to_nice(long prio) { return (19 - prio + 1); } # 28 "../include/linux/sched.h" 2 # 1 "../include/linux/signal_types.h" 1 # 10 "../include/linux/signal_types.h" # 1 "../include/uapi/linux/signal.h" 1 # 1 "../arch/x86/include/asm/signal.h" 1 # 21 "../arch/x86/include/asm/signal.h" typedef unsigned long old_sigset_t; typedef struct { unsigned long sig[(64 / 64)]; } sigset_t; # 36 "../arch/x86/include/asm/signal.h" # 1 "../arch/x86/include/uapi/asm/signal.h" 1 # 11 "../arch/x86/include/uapi/asm/signal.h" struct siginfo; # 94 "../arch/x86/include/uapi/asm/signal.h" # 1 "../include/uapi/asm-generic/signal-defs.h" 1 # 18 "../include/uapi/asm-generic/signal-defs.h" typedef void __signalfn_t(int); typedef __signalfn_t *__sighandler_t; typedef void __restorefn_t(void); typedef __restorefn_t *__sigrestore_t; # 95 "../arch/x86/include/uapi/asm/signal.h" 2 # 128 "../arch/x86/include/uapi/asm/signal.h" typedef struct sigaltstack { void *ss_sp; int ss_flags; size_t ss_size; } stack_t; # 37 "../arch/x86/include/asm/signal.h" 2 extern void do_signal(struct pt_regs *regs); # 6 "../include/uapi/linux/signal.h" 2 # 1 "../arch/x86/include/uapi/asm/siginfo.h" 1 # 13 "../arch/x86/include/uapi/asm/siginfo.h" # 1 "../include/uapi/asm-generic/siginfo.h" 1 typedef union sigval { int sival_int; void *sival_ptr; } sigval_t; # 32 "../include/uapi/asm-generic/siginfo.h" union __sifields { struct { __kernel_pid_t _pid; __kernel_uid32_t _uid; } _kill; struct { __kernel_timer_t _tid; int _overrun; sigval_t _sigval; int _sys_private; } _timer; struct { __kernel_pid_t _pid; __kernel_uid32_t _uid; sigval_t _sigval; } _rt; struct { __kernel_pid_t _pid; __kernel_uid32_t _uid; int _status; __kernel_clock_t _utime; __kernel_clock_t _stime; } _sigchld; struct { void *_addr; # 77 "../include/uapi/asm-generic/siginfo.h" union { short _addr_lsb; struct { char _dummy_bnd[(__alignof__(void *) < sizeof(short) ? sizeof(short) : __alignof__(void *))]; void *_lower; void *_upper; } _addr_bnd; struct { char _dummy_pkey[(__alignof__(void *) < sizeof(short) ? sizeof(short) : __alignof__(void *))]; __u32 _pkey; } _addr_pkey; }; } _sigfault; struct { long _band; int _fd; } _sigpoll; struct { void *_call_addr; int _syscall; unsigned int _arch; } _sigsys; }; # 129 "../include/uapi/asm-generic/siginfo.h" typedef struct siginfo { union { struct { int si_signo; int si_errno; int si_code; union __sifields _sifields; }; int _si_pad[128/sizeof(int)]; }; } siginfo_t; # 320 "../include/uapi/asm-generic/siginfo.h" typedef struct sigevent { sigval_t sigev_value; int sigev_signo; int sigev_notify; union { int _pad[((64 - (sizeof(int) * 2 + sizeof(sigval_t))) / sizeof(int))]; int _tid; struct { void (*_function)(sigval_t); void *_attribute; } _sigev_thread; } _sigev_un; } sigevent_t; # 14 "../arch/x86/include/uapi/asm/siginfo.h" 2 # 7 "../include/uapi/linux/signal.h" 2 # 11 "../include/linux/signal_types.h" 2 typedef struct kernel_siginfo { struct { int si_signo; int si_errno; int si_code; union __sifields _sifields; }; } kernel_siginfo_t; struct sigqueue { struct list_head list; int flags; kernel_siginfo_t info; struct user_struct *user; }; struct sigpending { struct list_head list; sigset_t signal; }; struct sigaction { __sighandler_t sa_handler; unsigned long sa_flags; __sigrestore_t sa_restorer; sigset_t sa_mask; }; struct k_sigaction { struct sigaction sa; }; # 65 "../include/linux/signal_types.h" struct ksignal { struct k_sigaction ka; kernel_siginfo_t info; int sig; }; # 29 "../include/linux/sched.h" 2 # 1 "../include/linux/task_io_accounting.h" 1 # 12 "../include/linux/task_io_accounting.h" struct task_io_accounting { u64 rchar; u64 wchar; u64 syscr; u64 syscw; u64 read_bytes; u64 write_bytes; # 44 "../include/linux/task_io_accounting.h" u64 cancelled_write_bytes; }; # 31 "../include/linux/sched.h" 2 # 1 "../include/uapi/linux/rseq.h" 1 # 16 "../include/uapi/linux/rseq.h" enum rseq_cpu_id_state { RSEQ_CPU_ID_UNINITIALIZED = -1, RSEQ_CPU_ID_REGISTRATION_FAILED = -2, }; enum rseq_flags { RSEQ_FLAG_UNREGISTER = (1 << 0), }; enum rseq_cs_flags_bit { RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT = 0, RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT = 1, RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT = 2, }; enum rseq_cs_flags { RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT = (1U << RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT), RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL = (1U << RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT), RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE = (1U << RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT), }; struct rseq_cs { __u32 version; __u32 flags; __u64 start_ip; __u64 post_commit_offset; __u64 abort_ip; } __attribute__((aligned(4 * sizeof(__u64)))); struct rseq { # 75 "../include/uapi/linux/rseq.h" __u32 cpu_id_start; # 90 "../include/uapi/linux/rseq.h" __u32 cpu_id; # 109 "../include/uapi/linux/rseq.h" union { __u64 ptr64; __u64 ptr; # 124 "../include/uapi/linux/rseq.h" } rseq_cs; # 144 "../include/uapi/linux/rseq.h" __u32 flags; } __attribute__((aligned(4 * sizeof(__u64)))); # 32 "../include/linux/sched.h" 2 struct audit_context; struct backing_dev_info; struct bio_list; struct blk_plug; struct capture_control; struct cfs_rq; struct fs_struct; struct futex_pi_state; struct io_context; struct mempolicy; struct nameidata; struct nsproxy; struct perf_event_context; struct pid_namespace; struct pipe_inode_info; struct rcu_node; struct reclaim_state; struct robust_list_head; struct root_domain; struct rq; struct sched_attr; struct sched_param; struct seq_file; struct sighand_struct; struct signal_struct; struct task_delay_info; struct task_group; # 213 "../include/linux/sched.h" extern void scheduler_tick(void); extern long schedule_timeout(long timeout); extern long schedule_timeout_interruptible(long timeout); extern long schedule_timeout_killable(long timeout); extern long schedule_timeout_uninterruptible(long timeout); extern long schedule_timeout_idle(long timeout); void schedule(void); extern void schedule_preempt_disabled(void); extern int __attribute__((__warn_unused_result__)) io_schedule_prepare(void); extern void io_schedule_finish(int token); extern long io_schedule_timeout(long timeout); extern void io_schedule(void); # 239 "../include/linux/sched.h" struct prev_cputime { u64 utime; u64 stime; raw_spinlock_t lock; }; # 257 "../include/linux/sched.h" struct task_cputime { u64 utime; u64 stime; unsigned long long sum_exec_runtime; }; enum vtime_state { VTIME_INACTIVE = 0, VTIME_USER, VTIME_SYS, }; struct vtime { seqcount_t seqcount; unsigned long long starttime; enum vtime_state state; u64 utime; u64 stime; u64 gtime; }; enum uclamp_id { UCLAMP_MIN = 0, UCLAMP_MAX, UCLAMP_CNT }; struct sched_info { unsigned long pcount; unsigned long long run_delay; unsigned long long last_arrival; unsigned long long last_queued; }; # 333 "../include/linux/sched.h" struct load_weight { unsigned long weight; u32 inv_weight; }; # 360 "../include/linux/sched.h" struct util_est { unsigned int enqueued; unsigned int ewma; } __attribute__((__aligned__(sizeof(u64)))); # 409 "../include/linux/sched.h" struct sched_avg { u64 last_update_time; u64 load_sum; u64 runnable_load_sum; u32 util_sum; u32 period_contrib; unsigned long load_avg; unsigned long runnable_load_avg; unsigned long util_avg; struct util_est util_est; } __attribute__((__aligned__((1 << (6))))); struct sched_statistics { u64 wait_start; u64 wait_max; u64 wait_count; u64 wait_sum; u64 iowait_count; u64 iowait_sum; u64 sleep_start; u64 sleep_max; s64 sum_sleep_runtime; u64 block_start; u64 block_max; u64 exec_max; u64 slice_max; u64 nr_migrations_cold; u64 nr_failed_migrations_affine; u64 nr_failed_migrations_running; u64 nr_failed_migrations_hot; u64 nr_forced_migrations; u64 nr_wakeups; u64 nr_wakeups_sync; u64 nr_wakeups_migrate; u64 nr_wakeups_local; u64 nr_wakeups_remote; u64 nr_wakeups_affine; u64 nr_wakeups_affine_attempts; u64 nr_wakeups_passive; u64 nr_wakeups_idle; }; struct sched_entity { struct load_weight load; unsigned long runnable_weight; struct rb_node run_node; struct list_head group_node; unsigned int on_rq; u64 exec_start; u64 sum_exec_runtime; u64 vruntime; u64 prev_sum_exec_runtime; u64 nr_migrations; struct sched_statistics statistics; int depth; struct sched_entity *parent; struct cfs_rq *cfs_rq; struct cfs_rq *my_q; # 490 "../include/linux/sched.h" struct sched_avg avg; }; struct sched_rt_entity { struct list_head run_list; unsigned long timeout; unsigned long watchdog_stamp; unsigned int time_slice; unsigned short on_rq; unsigned short on_list; struct sched_rt_entity *back; struct sched_rt_entity *parent; struct rt_rq *rt_rq; struct rt_rq *my_q; } ; struct sched_dl_entity { struct rb_node rb_node; u64 dl_runtime; u64 dl_deadline; u64 dl_period; u64 dl_bw; u64 dl_density; s64 runtime; u64 deadline; unsigned int flags; # 559 "../include/linux/sched.h" unsigned int dl_throttled : 1; unsigned int dl_boosted : 1; unsigned int dl_yielded : 1; unsigned int dl_non_contending : 1; unsigned int dl_overrun : 1; struct hrtimer dl_timer; # 578 "../include/linux/sched.h" struct hrtimer inactive_timer; }; # 608 "../include/linux/sched.h" struct uclamp_se { unsigned int value : ( __builtin_constant_p((1L << 10)) ? ( (((1L << 10)) == 0 || ((1L << 10)) == 1) ? 1 : ( __builtin_constant_p((1L << 10)) ? ( __builtin_constant_p((1L << 10)) ? ( ((1L << 10)) < 2 ? 0 : ((1L << 10)) & (1ULL << 63) ? 63 : ((1L << 10)) & (1ULL << 62) ? 62 : ((1L << 10)) & (1ULL << 61) ? 61 : ((1L << 10)) & (1ULL << 60) ? 60 : ((1L << 10)) & (1ULL << 59) ? 59 : ((1L << 10)) & (1ULL << 58) ? 58 : ((1L << 10)) & (1ULL << 57) ? 57 : ((1L << 10)) & (1ULL << 56) ? 56 : ((1L << 10)) & (1ULL << 55) ? 55 : ((1L << 10)) & (1ULL << 54) ? 54 : ((1L << 10)) & (1ULL << 53) ? 53 : ((1L << 10)) & (1ULL << 52) ? 52 : ((1L << 10)) & (1ULL << 51) ? 51 : ((1L << 10)) & (1ULL << 50) ? 50 : ((1L << 10)) & (1ULL << 49) ? 49 : ((1L << 10)) & (1ULL << 48) ? 48 : ((1L << 10)) & (1ULL << 47) ? 47 : ((1L << 10)) & (1ULL << 46) ? 46 : ((1L << 10)) & (1ULL << 45) ? 45 : ((1L << 10)) & (1ULL << 44) ? 44 : ((1L << 10)) & (1ULL << 43) ? 43 : ((1L << 10)) & (1ULL << 42) ? 42 : ((1L << 10)) & (1ULL << 41) ? 41 : ((1L << 10)) & (1ULL << 40) ? 40 : ((1L << 10)) & (1ULL << 39) ? 39 : ((1L << 10)) & (1ULL << 38) ? 38 : ((1L << 10)) & (1ULL << 37) ? 37 : ((1L << 10)) & (1ULL << 36) ? 36 : ((1L << 10)) & (1ULL << 35) ? 35 : ((1L << 10)) & (1ULL << 34) ? 34 : ((1L << 10)) & (1ULL << 33) ? 33 : ((1L << 10)) & (1ULL << 32) ? 32 : ((1L << 10)) & (1ULL << 31) ? 31 : ((1L << 10)) & (1ULL << 30) ? 30 : ((1L << 10)) & (1ULL << 29) ? 29 : ((1L << 10)) & (1ULL << 28) ? 28 : ((1L << 10)) & (1ULL << 27) ? 27 : ((1L << 10)) & (1ULL << 26) ? 26 : ((1L << 10)) & (1ULL << 25) ? 25 : ((1L << 10)) & (1ULL << 24) ? 24 : ((1L << 10)) & (1ULL << 23) ? 23 : ((1L << 10)) & (1ULL << 22) ? 22 : ((1L << 10)) & (1ULL << 21) ? 21 : ((1L << 10)) & (1ULL << 20) ? 20 : ((1L << 10)) & (1ULL << 19) ? 19 : ((1L << 10)) & (1ULL << 18) ? 18 : ((1L << 10)) & (1ULL << 17) ? 17 : ((1L << 10)) & (1ULL << 16) ? 16 : ((1L << 10)) & (1ULL << 15) ? 15 : ((1L << 10)) & (1ULL << 14) ? 14 : ((1L << 10)) & (1ULL << 13) ? 13 : ((1L << 10)) & (1ULL << 12) ? 12 : ((1L << 10)) & (1ULL << 11) ? 11 : ((1L << 10)) & (1ULL << 10) ? 10 : ((1L << 10)) & (1ULL << 9) ? 9 : ((1L << 10)) & (1ULL << 8) ? 8 : ((1L << 10)) & (1ULL << 7) ? 7 : ((1L << 10)) & (1ULL << 6) ? 6 : ((1L << 10)) & (1ULL << 5) ? 5 : ((1L << 10)) & (1ULL << 4) ? 4 : ((1L << 10)) & (1ULL << 3) ? 3 : ((1L << 10)) & (1ULL << 2) ? 2 : 1) : -1) : (sizeof((1L << 10)) <= 4) ? __ilog2_u32((1L << 10)) : __ilog2_u64((1L << 10)) ) + 1 ) : __bits_per((1L << 10)) ); unsigned int bucket_id : ( __builtin_constant_p(5) ? ( ((5) == 0 || (5) == 1) ? 1 : ( __builtin_constant_p(5) ? ( __builtin_constant_p(5) ? ( (5) < 2 ? 0 : (5) & (1ULL << 63) ? 63 : (5) & (1ULL << 62) ? 62 : (5) & (1ULL << 61) ? 61 : (5) & (1ULL << 60) ? 60 : (5) & (1ULL << 59) ? 59 : (5) & (1ULL << 58) ? 58 : (5) & (1ULL << 57) ? 57 : (5) & (1ULL << 56) ? 56 : (5) & (1ULL << 55) ? 55 : (5) & (1ULL << 54) ? 54 : (5) & (1ULL << 53) ? 53 : (5) & (1ULL << 52) ? 52 : (5) & (1ULL << 51) ? 51 : (5) & (1ULL << 50) ? 50 : (5) & (1ULL << 49) ? 49 : (5) & (1ULL << 48) ? 48 : (5) & (1ULL << 47) ? 47 : (5) & (1ULL << 46) ? 46 : (5) & (1ULL << 45) ? 45 : (5) & (1ULL << 44) ? 44 : (5) & (1ULL << 43) ? 43 : (5) & (1ULL << 42) ? 42 : (5) & (1ULL << 41) ? 41 : (5) & (1ULL << 40) ? 40 : (5) & (1ULL << 39) ? 39 : (5) & (1ULL << 38) ? 38 : (5) & (1ULL << 37) ? 37 : (5) & (1ULL << 36) ? 36 : (5) & (1ULL << 35) ? 35 : (5) & (1ULL << 34) ? 34 : (5) & (1ULL << 33) ? 33 : (5) & (1ULL << 32) ? 32 : (5) & (1ULL << 31) ? 31 : (5) & (1ULL << 30) ? 30 : (5) & (1ULL << 29) ? 29 : (5) & (1ULL << 28) ? 28 : (5) & (1ULL << 27) ? 27 : (5) & (1ULL << 26) ? 26 : (5) & (1ULL << 25) ? 25 : (5) & (1ULL << 24) ? 24 : (5) & (1ULL << 23) ? 23 : (5) & (1ULL << 22) ? 22 : (5) & (1ULL << 21) ? 21 : (5) & (1ULL << 20) ? 20 : (5) & (1ULL << 19) ? 19 : (5) & (1ULL << 18) ? 18 : (5) & (1ULL << 17) ? 17 : (5) & (1ULL << 16) ? 16 : (5) & (1ULL << 15) ? 15 : (5) & (1ULL << 14) ? 14 : (5) & (1ULL << 13) ? 13 : (5) & (1ULL << 12) ? 12 : (5) & (1ULL << 11) ? 11 : (5) & (1ULL << 10) ? 10 : (5) & (1ULL << 9) ? 9 : (5) & (1ULL << 8) ? 8 : (5) & (1ULL << 7) ? 7 : (5) & (1ULL << 6) ? 6 : (5) & (1ULL << 5) ? 5 : (5) & (1ULL << 4) ? 4 : (5) & (1ULL << 3) ? 3 : (5) & (1ULL << 2) ? 2 : 1) : -1) : (sizeof(5) <= 4) ? __ilog2_u32(5) : __ilog2_u64(5) ) + 1 ) : __bits_per(5) ); unsigned int active : 1; unsigned int user_defined : 1; }; union rcu_special { struct { u8 blocked; u8 need_qs; u8 exp_hint; u8 deferred_qs; } b; u32 s; }; enum perf_event_task_context { perf_invalid_context = -1, perf_hw_context = 0, perf_sw_context, perf_nr_task_contexts, }; struct wake_q_node { struct wake_q_node *next; }; struct task_struct { struct thread_info thread_info; volatile long state; void *stack; refcount_t usage; unsigned int flags; unsigned int ptrace; struct llist_node wake_entry; int on_cpu; unsigned int cpu; unsigned int wakee_flips; unsigned long wakee_flip_decay_ts; struct task_struct *last_wakee; # 678 "../include/linux/sched.h" int recent_used_cpu; int wake_cpu; int on_rq; int prio; int static_prio; int normal_prio; unsigned int rt_priority; const struct sched_class *sched_class; struct sched_entity se; struct sched_rt_entity rt; struct task_group *sched_task_group; struct sched_dl_entity dl; struct uclamp_se uclamp_req[UCLAMP_CNT]; struct uclamp_se uclamp[UCLAMP_CNT]; struct hlist_head preempt_notifiers; unsigned int btrace_seq; unsigned int policy; int nr_cpus_allowed; const cpumask_t *cpus_ptr; cpumask_t cpus_mask; # 725 "../include/linux/sched.h" unsigned long rcu_tasks_nvcsw; u8 rcu_tasks_holdout; u8 rcu_tasks_idx; int rcu_tasks_idle_cpu; struct list_head rcu_tasks_holdout_list; struct sched_info sched_info; struct list_head tasks; struct plist_node pushable_tasks; struct rb_node pushable_dl_tasks; struct mm_struct *mm; struct mm_struct *active_mm; struct vmacache vmacache; struct task_rss_stat rss_stat; int exit_state; int exit_code; int exit_signal; int pdeath_signal; unsigned long jobctl; unsigned int personality; unsigned sched_reset_on_fork:1; unsigned sched_contributes_to_load:1; unsigned sched_migrated:1; unsigned sched_remote_wakeup:1; unsigned sched_psi_wake_requeue:1; unsigned :0; unsigned in_execve:1; unsigned in_iowait:1; unsigned restore_sigmask:1; unsigned in_user_fault:1; unsigned brk_randomized:1; unsigned no_cgroup_migration:1; unsigned frozen:1; unsigned use_memdelay:1; unsigned long atomic_flags; struct restart_block restart_block; pid_t pid; pid_t tgid; unsigned long stack_canary; # 815 "../include/linux/sched.h" struct task_struct *real_parent; struct task_struct *parent; struct list_head children; struct list_head sibling; struct task_struct *group_leader; struct list_head ptraced; struct list_head ptrace_entry; struct pid *thread_pid; struct hlist_node pid_links[PIDTYPE_MAX]; struct list_head thread_group; struct list_head thread_node; struct completion *vfork_done; int *set_child_tid; int *clear_child_tid; u64 utime; u64 stime; u64 gtime; struct prev_cputime prev_cputime; # 866 "../include/linux/sched.h" unsigned long nvcsw; unsigned long nivcsw; u64 start_time; u64 real_start_time; unsigned long min_flt; unsigned long maj_flt; struct task_cputime cputime_expires; struct list_head cpu_timers[3]; const struct cred *ptracer_cred; const struct cred *real_cred; const struct cred *cred; struct key *cached_requested_key; # 907 "../include/linux/sched.h" char comm[16]; struct nameidata *nameidata; struct sysv_sem sysvsem; struct sysv_shm sysvshm; unsigned long last_switch_count; unsigned long last_switch_time; unsigned long killed_time; struct fs_struct *fs; struct files_struct *files; struct nsproxy *nsproxy; struct signal_struct *signal; struct sighand_struct *sighand; sigset_t blocked; sigset_t real_blocked; sigset_t saved_sigmask; struct sigpending pending; unsigned long sas_ss_sp; size_t sas_ss_size; unsigned int sas_ss_flags; struct callback_head *task_works; struct audit_context *audit_context; kuid_t loginuid; unsigned int sessionid; struct seccomp seccomp; u32 parent_exec_id; u32 self_exec_id; spinlock_t alloc_lock; raw_spinlock_t pi_lock; struct wake_q_node wake_q; struct rb_root_cached pi_waiters; struct task_struct *pi_top_task; struct rt_mutex_waiter *pi_blocked_on; struct mutex_waiter *blocked_on; unsigned int irq_events; unsigned long hardirq_enable_ip; unsigned long hardirq_disable_ip; unsigned int hardirq_enable_event; unsigned int hardirq_disable_event; int hardirqs_enabled; int hardirq_context; unsigned long softirq_disable_ip; unsigned long softirq_enable_ip; unsigned int softirq_disable_event; unsigned int softirq_enable_event; int softirqs_enabled; int softirq_context; u64 curr_chain_key; int lockdep_depth; unsigned int lockdep_recursion; struct held_lock held_locks[48UL]; unsigned int in_ubsan; void *journal_info; struct bio_list *bio_list; struct blk_plug *plug; struct reclaim_state *reclaim_state; struct backing_dev_info *backing_dev_info; struct io_context *io_context; struct capture_control *capture_control; unsigned long ptrace_message; kernel_siginfo_t *last_siginfo; struct task_io_accounting ioac; unsigned int psi_flags; u64 acct_rss_mem1; u64 acct_vm_mem1; u64 acct_timexpd; nodemask_t mems_allowed; seqcount_t mems_allowed_seq; int cpuset_mem_spread_rotor; int cpuset_slab_spread_rotor; struct css_set *cgroups; struct list_head cg_list; u32 closid; u32 rmid; struct robust_list_head *robust_list; struct compat_robust_list_head *compat_robust_list; struct list_head pi_state_list; struct futex_pi_state *pi_state_cache; struct perf_event_context *perf_event_ctxp[perf_nr_task_contexts]; struct mutex perf_event_mutex; struct list_head perf_event_list; struct mempolicy *mempolicy; short il_prev; short pref_node_fork; int numa_scan_seq; unsigned int numa_scan_period; unsigned int numa_scan_period_max; int numa_preferred_nid; unsigned long numa_migrate_retry; u64 node_stamp; u64 last_task_numa_placement; u64 last_sum_exec_runtime; struct callback_head numa_work; struct numa_group *numa_group; # 1112 "../include/linux/sched.h" unsigned long *numa_faults; unsigned long total_numa_faults; unsigned long numa_faults_locality[3]; unsigned long numa_pages_migrated; struct rseq *rseq; u32 rseq_sig; unsigned long rseq_event_mask; struct tlbflush_unmap_batch tlb_ubc; struct callback_head rcu; struct pipe_inode_info *splice_pipe; struct page_frag task_frag; struct task_delay_info *delays; int make_it_fail; unsigned int fail_nth; int nr_dirtied; int nr_dirtied_pause; unsigned long dirty_paused_when; int latency_record_count; struct latency_record latency_record[32]; u64 timer_slack_ns; u64 default_timer_slack_ns; unsigned int kasan_depth; int curr_ret_stack; int curr_ret_depth; struct ftrace_ret_stack *ret_stack; unsigned long long ftrace_timestamp; atomic_t trace_overrun; atomic_t tracing_graph_pause; unsigned long trace; unsigned long trace_recursion; unsigned int kcov_mode; unsigned int kcov_size; void *kcov_area; struct kcov *kcov; struct mem_cgroup *memcg_in_oom; gfp_t memcg_oom_gfp_mask; int memcg_oom_order; unsigned int memcg_nr_pages_over_high; struct mem_cgroup *active_memcg; struct request_queue *throttle_queue; struct uprobe_task *utask; unsigned int sequential_io; unsigned int sequential_io_avg; unsigned long task_state_change; int pagefault_disabled; struct task_struct *oom_reaper_list; refcount_t stack_refcount; int patch_state; void *security; # 1271 "../include/linux/sched.h" unsigned long getblk_stamp; unsigned int getblk_executed; unsigned int getblk_bh_count; unsigned long getblk_bh_state; # 1284 "../include/linux/sched.h" struct thread_struct thread; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct pid *task_pid(struct task_struct *task) { return task->thread_pid; } # 1310 "../include/linux/sched.h" pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type, struct pid_namespace *ns); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t task_pid_nr(struct task_struct *tsk) { return tsk->pid; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t task_pid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns) { return __task_pid_nr_ns(tsk, PIDTYPE_PID, ns); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t task_pid_vnr(struct task_struct *tsk) { return __task_pid_nr_ns(tsk, PIDTYPE_PID, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t task_tgid_nr(struct task_struct *tsk) { return tsk->tgid; } # 1343 "../include/linux/sched.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pid_alive(const struct task_struct *p) { return p->thread_pid != ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t task_pgrp_nr_ns(struct task_struct *tsk, struct pid_namespace *ns) { return __task_pid_nr_ns(tsk, PIDTYPE_PGID, ns); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t task_pgrp_vnr(struct task_struct *tsk) { return __task_pid_nr_ns(tsk, PIDTYPE_PGID, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t task_session_nr_ns(struct task_struct *tsk, struct pid_namespace *ns) { return __task_pid_nr_ns(tsk, PIDTYPE_SID, ns); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t task_session_vnr(struct task_struct *tsk) { return __task_pid_nr_ns(tsk, PIDTYPE_SID, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t task_tgid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns) { return __task_pid_nr_ns(tsk, PIDTYPE_TGID, ns); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t task_tgid_vnr(struct task_struct *tsk) { return __task_pid_nr_ns(tsk, PIDTYPE_TGID, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t task_ppid_nr_ns(const struct task_struct *tsk, struct pid_namespace *ns) { pid_t pid = 0; rcu_read_lock(); if (pid_alive(tsk)) pid = task_tgid_nr_ns(({ typeof(*(tsk->real_parent)) *________p1 = (typeof(*(tsk->real_parent)) *)({ union { typeof((tsk->real_parent)) __val; char __c[1]; } __u; if (1) __read_once_size(&((tsk->real_parent)), __u.__c, sizeof((tsk->real_parent))); else __read_once_size_nocheck(&((tsk->real_parent)), __u.__c, sizeof((tsk->real_parent))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_held()))) { __warned = true; lockdep_rcu_suspicious("../include/linux/sched.h", 1385, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(tsk->real_parent)) *)(________p1)); }), ns); rcu_read_unlock(); return pid; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t task_ppid_nr(const struct task_struct *tsk) { return task_ppid_nr_ns(tsk, &init_pid_ns); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pid_t task_pgrp_nr(struct task_struct *tsk) { return task_pgrp_nr_ns(tsk, &init_pid_ns); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int task_state_index(struct task_struct *tsk) { unsigned int tsk_state = ({ union { typeof(tsk->state) __val; char __c[1]; } __u; if (1) __read_once_size(&(tsk->state), __u.__c, sizeof(tsk->state)); else __read_once_size_nocheck(&(tsk->state), __u.__c, sizeof(tsk->state)); do { } while (0); __u.__val; }); unsigned int state = (tsk_state | tsk->exit_state) & (0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040); do { extern void __compiletime_assert_1410(void) ; if (!(!(((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) == 0 || ((((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) - 1)) != 0)))) __compiletime_assert_1410(); } while (0); if (tsk_state == (0x0002 | 0x0400)) state = ((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1); return fls(state); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) char task_index_to_char(unsigned int state) { static const char state_char[] = "RSDTtXZPI"; do { extern void __compiletime_assert_1422(void) ; if (!(!(1 + ( __builtin_constant_p((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) ? ( __builtin_constant_p((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) ? ( ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) < 2 ? 0 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 63) ? 63 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 62) ? 62 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 61) ? 61 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 60) ? 60 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 59) ? 59 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 58) ? 58 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 57) ? 57 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 56) ? 56 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 55) ? 55 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 54) ? 54 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 53) ? 53 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 52) ? 52 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 51) ? 51 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 50) ? 50 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 49) ? 49 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 48) ? 48 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 47) ? 47 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 46) ? 46 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 45) ? 45 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 44) ? 44 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 43) ? 43 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 42) ? 42 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 41) ? 41 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 40) ? 40 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 39) ? 39 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 38) ? 38 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 37) ? 37 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 36) ? 36 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 35) ? 35 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 34) ? 34 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 33) ? 33 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 32) ? 32 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 31) ? 31 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 30) ? 30 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 29) ? 29 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 28) ? 28 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 27) ? 27 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 26) ? 26 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 25) ? 25 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 24) ? 24 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 23) ? 23 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 22) ? 22 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 21) ? 21 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 20) ? 20 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 19) ? 19 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 18) ? 18 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 17) ? 17 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 16) ? 16 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 15) ? 15 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 14) ? 14 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 13) ? 13 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 12) ? 12 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 11) ? 11 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 10) ? 10 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 9) ? 9 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 8) ? 8 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 7) ? 7 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 6) ? 6 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 5) ? 5 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 4) ? 4 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 3) ? 3 : ((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (1ULL << 2) ? 2 : 1) : -1) : (sizeof((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) <= 4) ? __ilog2_u32((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) : __ilog2_u64((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) ) != sizeof(state_char) - 1))) __compiletime_assert_1422(); } while (0); return state_char[state]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) char task_state_to_char(struct task_struct *tsk) { return task_index_to_char(task_state_index(tsk)); } # 1441 "../include/linux/sched.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int is_global_init(struct task_struct *tsk) { return task_tgid_nr(tsk) == 1; } extern struct pid *cad_pid; # 1510 "../include/linux/sched.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_percpu_thread(void) { return (get_current()->flags & 0x04000000) && (get_current()->nr_cpus_allowed == 1); } # 1542 "../include/linux/sched.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool task_no_new_privs(struct task_struct *p) { return test_bit(0, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_set_no_new_privs(struct task_struct *p) { set_bit(0, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool task_spread_page(struct task_struct *p) { return test_bit(1, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_set_spread_page(struct task_struct *p) { set_bit(1, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_clear_spread_page(struct task_struct *p) { clear_bit(1, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool task_spread_slab(struct task_struct *p) { return test_bit(2, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_set_spread_slab(struct task_struct *p) { set_bit(2, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_clear_spread_slab(struct task_struct *p) { clear_bit(2, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool task_spec_ssb_disable(struct task_struct *p) { return test_bit(3, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_set_spec_ssb_disable(struct task_struct *p) { set_bit(3, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_clear_spec_ssb_disable(struct task_struct *p) { clear_bit(3, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool task_spec_ssb_noexec(struct task_struct *p) { return test_bit(7, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_set_spec_ssb_noexec(struct task_struct *p) { set_bit(7, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_clear_spec_ssb_noexec(struct task_struct *p) { clear_bit(7, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool task_spec_ssb_force_disable(struct task_struct *p) { return test_bit(4, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_set_spec_ssb_force_disable(struct task_struct *p) { set_bit(4, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool task_spec_ib_disable(struct task_struct *p) { return test_bit(5, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_set_spec_ib_disable(struct task_struct *p) { set_bit(5, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_clear_spec_ib_disable(struct task_struct *p) { clear_bit(5, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool task_spec_ib_force_disable(struct task_struct *p) { return test_bit(6, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_set_spec_ib_force_disable(struct task_struct *p) { set_bit(6, &p->atomic_flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void current_restore_flags(unsigned long orig_flags, unsigned long flags) { get_current()->flags &= ~flags; get_current()->flags |= orig_flags & flags; } extern int cpuset_cpumask_can_shrink(const struct cpumask *cur, const struct cpumask *trial); extern int task_can_attach(struct task_struct *p, const struct cpumask *cs_cpus_allowed); extern void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask); extern int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask); # 1595 "../include/linux/sched.h" extern int yield_to(struct task_struct *p, bool preempt); extern void set_user_nice(struct task_struct *p, long nice); extern int task_prio(const struct task_struct *p); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int task_nice(const struct task_struct *p) { return (((p)->static_prio) - (100 + (19 - -20 + 1) / 2)); } extern int can_nice(const struct task_struct *p, const int nice); extern int task_curr(const struct task_struct *p); extern int idle_cpu(int cpu); extern int available_idle_cpu(int cpu); extern int sched_setscheduler(struct task_struct *, int, const struct sched_param *); extern int sched_setscheduler_nocheck(struct task_struct *, int, const struct sched_param *); extern int sched_setattr(struct task_struct *, const struct sched_attr *); extern int sched_setattr_nocheck(struct task_struct *, const struct sched_attr *); extern struct task_struct *idle_task(int cpu); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_idle_task(const struct task_struct *p) { return !!(p->flags & 0x00000002); } extern struct task_struct *curr_task(int cpu); extern void ia64_set_curr_task(int cpu, struct task_struct *p); void yield(void); union thread_union { struct task_struct task; unsigned long stack[(((1UL) << 12) << (2 + 1))/sizeof(long)]; }; extern unsigned long init_stack[(((1UL) << 12) << (2 + 1)) / sizeof(unsigned long)]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct thread_info *task_thread_info(struct task_struct *task) { return &task->thread_info; } # 1672 "../include/linux/sched.h" extern struct task_struct *find_task_by_vpid(pid_t nr); extern struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns); extern struct task_struct *find_get_task_by_vpid(pid_t nr); extern int wake_up_state(struct task_struct *tsk, unsigned int state); extern int wake_up_process(struct task_struct *tsk); extern void wake_up_new_task(struct task_struct *tsk); extern void kick_process(struct task_struct *tsk); extern void __set_task_comm(struct task_struct *tsk, const char *from, bool exec); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_task_comm(struct task_struct *tsk, const char *from) { __set_task_comm(tsk, from, false); } extern char *__get_task_comm(char *to, size_t len, struct task_struct *tsk); void scheduler_ipi(void); extern unsigned long wait_task_inactive(struct task_struct *, long match_state); # 1718 "../include/linux/sched.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_tsk_thread_flag(struct task_struct *tsk, int flag) { set_ti_thread_flag(task_thread_info(tsk), flag); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_tsk_thread_flag(struct task_struct *tsk, int flag) { clear_ti_thread_flag(task_thread_info(tsk), flag); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void update_tsk_thread_flag(struct task_struct *tsk, int flag, bool value) { update_ti_thread_flag(task_thread_info(tsk), flag, value); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int test_and_set_tsk_thread_flag(struct task_struct *tsk, int flag) { return test_and_set_ti_thread_flag(task_thread_info(tsk), flag); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int test_and_clear_tsk_thread_flag(struct task_struct *tsk, int flag) { return test_and_clear_ti_thread_flag(task_thread_info(tsk), flag); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int test_tsk_thread_flag(struct task_struct *tsk, int flag) { return test_ti_thread_flag(task_thread_info(tsk), flag); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_tsk_need_resched(struct task_struct *tsk) { set_tsk_thread_flag(tsk,3); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_tsk_need_resched(struct task_struct *tsk) { clear_tsk_thread_flag(tsk,3); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int test_tsk_need_resched(struct task_struct *tsk) { return __builtin_expect(!!(test_tsk_thread_flag(tsk,3)), 0); } # 1771 "../include/linux/sched.h" extern int _cond_resched(void); # 1781 "../include/linux/sched.h" extern int __cond_resched_lock(spinlock_t *lock); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cond_resched_rcu(void) { rcu_read_unlock(); ({ ___might_sleep("../include/linux/sched.h", 1792, 0); _cond_resched(); }); rcu_read_lock(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int spin_needbreak(spinlock_t *lock) { return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool need_resched(void) { return __builtin_expect(!!(test_ti_thread_flag(((struct thread_info *)get_current()), 3)), 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int task_cpu(const struct task_struct *p) { return ({ union { typeof(p->cpu) __val; char __c[1]; } __u; if (1) __read_once_size(&(p->cpu), __u.__c, sizeof(p->cpu)); else __read_once_size_nocheck(&(p->cpu), __u.__c, sizeof(p->cpu)); do { } while (0); __u.__val; }); } extern void set_task_cpu(struct task_struct *p, unsigned int cpu); # 1857 "../include/linux/sched.h" extern long sched_setaffinity(pid_t pid, const struct cpumask *new_mask); extern long sched_getaffinity(pid_t pid, struct cpumask *mask); # 1870 "../include/linux/sched.h" enum rseq_event_mask_bits { RSEQ_EVENT_PREEMPT_BIT = RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT, RSEQ_EVENT_SIGNAL_BIT = RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT, RSEQ_EVENT_MIGRATE_BIT = RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT, }; enum rseq_event_mask { RSEQ_EVENT_PREEMPT = (1U << RSEQ_EVENT_PREEMPT_BIT), RSEQ_EVENT_SIGNAL = (1U << RSEQ_EVENT_SIGNAL_BIT), RSEQ_EVENT_MIGRATE = (1U << RSEQ_EVENT_MIGRATE_BIT), }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rseq_set_notify_resume(struct task_struct *t) { if (t->rseq) set_tsk_thread_flag(t, 1); } void __rseq_handle_notify_resume(struct ksignal *sig, struct pt_regs *regs); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rseq_handle_notify_resume(struct ksignal *ksig, struct pt_regs *regs) { if (get_current()->rseq) __rseq_handle_notify_resume(ksig, regs); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rseq_signal_deliver(struct ksignal *ksig, struct pt_regs *regs) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); __set_bit(RSEQ_EVENT_SIGNAL_BIT, &get_current()->rseq_event_mask); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); rseq_handle_notify_resume(ksig, regs); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rseq_preempt(struct task_struct *t) { __set_bit(RSEQ_EVENT_PREEMPT_BIT, &t->rseq_event_mask); rseq_set_notify_resume(t); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rseq_migrate(struct task_struct *t) { __set_bit(RSEQ_EVENT_MIGRATE_BIT, &t->rseq_event_mask); rseq_set_notify_resume(t); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rseq_fork(struct task_struct *t, unsigned long clone_flags) { if (clone_flags & 0x00010000) { t->rseq = ((void *)0); t->rseq_sig = 0; t->rseq_event_mask = 0; } else { t->rseq = get_current()->rseq; t->rseq_sig = get_current()->rseq_sig; t->rseq_event_mask = get_current()->rseq_event_mask; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rseq_execve(struct task_struct *t) { t->rseq = ((void *)0); t->rseq_sig = 0; t->rseq_event_mask = 0; } # 1972 "../include/linux/sched.h" void __exit_umh(struct task_struct *tsk); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void exit_umh(struct task_struct *tsk) { if (__builtin_expect(!!(tsk->flags & 0x02000000), 0)) __exit_umh(tsk); } void rseq_syscall(struct pt_regs *regs); # 1992 "../include/linux/sched.h" const struct sched_avg *sched_trace_cfs_rq_avg(struct cfs_rq *cfs_rq); char *sched_trace_cfs_rq_path(struct cfs_rq *cfs_rq, char *str, int len); int sched_trace_cfs_rq_cpu(struct cfs_rq *cfs_rq); const struct sched_avg *sched_trace_rq_avg_rt(struct rq *rq); const struct sched_avg *sched_trace_rq_avg_dl(struct rq *rq); const struct sched_avg *sched_trace_rq_avg_irq(struct rq *rq); int sched_trace_rq_cpu(struct rq *rq); const struct cpumask *sched_trace_rd_span(struct root_domain *rd); # 7 "../include/linux/ratelimit.h" 2 struct ratelimit_state { raw_spinlock_t lock; int interval; int burst; int printed; int missed; unsigned long begin; unsigned long flags; }; # 40 "../include/linux/ratelimit.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ratelimit_state_init(struct ratelimit_state *rs, int interval, int burst) { __memset(rs, 0, sizeof(*rs)); do { static struct lock_class_key __key; __raw_spin_lock_init((&rs->lock), "&rs->lock", &__key); } while (0); rs->interval = interval; rs->burst = burst; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ratelimit_default_init(struct ratelimit_state *rs) { return ratelimit_state_init(rs, (5 * 250), 10); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ratelimit_state_exit(struct ratelimit_state *rs) { if (!(rs->flags & ((((1UL))) << (0)))) return; if (rs->missed) { printk("\001" "4" "%s: %d output lines suppressed due to ratelimiting\n", get_current()->comm, rs->missed); rs->missed = 0; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ratelimit_set_flags(struct ratelimit_state *rs, unsigned long flags) { rs->flags = flags; } extern struct ratelimit_state printk_ratelimit_state; extern int ___ratelimit(struct ratelimit_state *rs, const char *func); # 26 "../include/linux/device.h" 2 # 1 "../arch/x86/include/asm/device.h" 1 struct dev_archdata { void *iommu; }; struct dma_domain { struct list_head node; const struct dma_map_ops *dma_ops; int domain_nr; }; void add_dma_domain(struct dma_domain *domain); void del_dma_domain(struct dma_domain *domain); struct pdev_archdata { }; # 30 "../include/linux/device.h" 2 struct device; struct device_private; struct device_driver; struct driver_private; struct module; struct class; struct subsys_private; struct bus_type; struct device_node; struct fwnode_handle; struct iommu_ops; struct iommu_group; struct iommu_fwspec; struct dev_pin_info; struct iommu_param; struct bus_attribute { struct attribute attr; ssize_t (*show)(struct bus_type *bus, char *buf); ssize_t (*store)(struct bus_type *bus, const char *buf, size_t count); }; # 60 "../include/linux/device.h" extern int __attribute__((__warn_unused_result__)) bus_create_file(struct bus_type *, struct bus_attribute *); extern void bus_remove_file(struct bus_type *, struct bus_attribute *); # 115 "../include/linux/device.h" struct bus_type { const char *name; const char *dev_name; struct device *dev_root; const struct attribute_group **bus_groups; const struct attribute_group **dev_groups; const struct attribute_group **drv_groups; int (*match)(struct device *dev, struct device_driver *drv); int (*uevent)(struct device *dev, struct kobj_uevent_env *env); int (*probe)(struct device *dev); int (*remove)(struct device *dev); void (*shutdown)(struct device *dev); int (*online)(struct device *dev); int (*offline)(struct device *dev); int (*suspend)(struct device *dev, pm_message_t state); int (*resume)(struct device *dev); int (*num_vf)(struct device *dev); int (*dma_configure)(struct device *dev); const struct dev_pm_ops *pm; const struct iommu_ops *iommu_ops; struct subsys_private *p; struct lock_class_key lock_key; bool need_parent_lock; }; extern int __attribute__((__warn_unused_result__)) bus_register(struct bus_type *bus); extern void bus_unregister(struct bus_type *bus); extern int __attribute__((__warn_unused_result__)) bus_rescan_devices(struct bus_type *bus); struct subsys_dev_iter { struct klist_iter ki; const struct device_type *type; }; void subsys_dev_iter_init(struct subsys_dev_iter *iter, struct bus_type *subsys, struct device *start, const struct device_type *type); struct device *subsys_dev_iter_next(struct subsys_dev_iter *iter); void subsys_dev_iter_exit(struct subsys_dev_iter *iter); int device_match_of_node(struct device *dev, const void *np); int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, int (*fn)(struct device *dev, void *data)); struct device *bus_find_device(struct bus_type *bus, struct device *start, const void *data, int (*match)(struct device *dev, const void *data)); struct device *bus_find_device_by_name(struct bus_type *bus, struct device *start, const char *name); struct device *subsys_find_device_by_id(struct bus_type *bus, unsigned int id, struct device *hint); int bus_for_each_drv(struct bus_type *bus, struct device_driver *start, void *data, int (*fn)(struct device_driver *, void *)); void bus_sort_breadthfirst(struct bus_type *bus, int (*compare)(const struct device *a, const struct device *b)); struct notifier_block; extern int bus_register_notifier(struct bus_type *bus, struct notifier_block *nb); extern int bus_unregister_notifier(struct bus_type *bus, struct notifier_block *nb); # 213 "../include/linux/device.h" extern struct kset *bus_get_kset(struct bus_type *bus); extern struct klist *bus_get_device_klist(struct bus_type *bus); # 238 "../include/linux/device.h" enum probe_type { PROBE_DEFAULT_STRATEGY, PROBE_PREFER_ASYNCHRONOUS, PROBE_FORCE_SYNCHRONOUS, }; # 280 "../include/linux/device.h" struct device_driver { const char *name; struct bus_type *bus; struct module *owner; const char *mod_name; bool suppress_bind_attrs; enum probe_type probe_type; const struct of_device_id *of_match_table; const struct acpi_device_id *acpi_match_table; int (*probe) (struct device *dev); int (*remove) (struct device *dev); void (*shutdown) (struct device *dev); int (*suspend) (struct device *dev, pm_message_t state); int (*resume) (struct device *dev); const struct attribute_group **groups; const struct dev_pm_ops *pm; void (*coredump) (struct device *dev); struct driver_private *p; }; extern int __attribute__((__warn_unused_result__)) driver_register(struct device_driver *drv); extern void driver_unregister(struct device_driver *drv); extern struct device_driver *driver_find(const char *name, struct bus_type *bus); extern int driver_probe_done(void); extern void wait_for_device_probe(void); struct driver_attribute { struct attribute attr; ssize_t (*show)(struct device_driver *driver, char *buf); ssize_t (*store)(struct device_driver *driver, const char *buf, size_t count); }; # 331 "../include/linux/device.h" extern int __attribute__((__warn_unused_result__)) driver_create_file(struct device_driver *driver, const struct driver_attribute *attr); extern void driver_remove_file(struct device_driver *driver, const struct driver_attribute *attr); extern int __attribute__((__warn_unused_result__)) driver_for_each_device(struct device_driver *drv, struct device *start, void *data, int (*fn)(struct device *dev, void *)); struct device *driver_find_device(struct device_driver *drv, struct device *start, const void *data, int (*match)(struct device *dev, const void *data)); void driver_deferred_probe_add(struct device *dev); int driver_deferred_probe_check_state(struct device *dev); # 361 "../include/linux/device.h" struct subsys_interface { const char *name; struct bus_type *subsys; struct list_head node; int (*add_dev)(struct device *dev, struct subsys_interface *sif); void (*remove_dev)(struct device *dev, struct subsys_interface *sif); }; int subsys_interface_register(struct subsys_interface *sif); void subsys_interface_unregister(struct subsys_interface *sif); int subsys_system_register(struct bus_type *subsys, const struct attribute_group **groups); int subsys_virtual_register(struct bus_type *subsys, const struct attribute_group **groups); # 406 "../include/linux/device.h" struct class { const char *name; struct module *owner; const struct attribute_group **class_groups; const struct attribute_group **dev_groups; struct kobject *dev_kobj; int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env); char *(*devnode)(struct device *dev, umode_t *mode); void (*class_release)(struct class *class); void (*dev_release)(struct device *dev); int (*shutdown_pre)(struct device *dev); const struct kobj_ns_type_operations *ns_type; const void *(*namespace)(struct device *dev); void (*get_ownership)(struct device *dev, kuid_t *uid, kgid_t *gid); const struct dev_pm_ops *pm; struct subsys_private *p; }; struct class_dev_iter { struct klist_iter ki; const struct device_type *type; }; extern struct kobject *sysfs_dev_block_kobj; extern struct kobject *sysfs_dev_char_kobj; extern int __attribute__((__warn_unused_result__)) __class_register(struct class *class, struct lock_class_key *key); extern void class_unregister(struct class *class); # 451 "../include/linux/device.h" struct class_compat; struct class_compat *class_compat_register(const char *name); void class_compat_unregister(struct class_compat *cls); int class_compat_create_link(struct class_compat *cls, struct device *dev, struct device *device_link); void class_compat_remove_link(struct class_compat *cls, struct device *dev, struct device *device_link); extern void class_dev_iter_init(struct class_dev_iter *iter, struct class *class, struct device *start, const struct device_type *type); extern struct device *class_dev_iter_next(struct class_dev_iter *iter); extern void class_dev_iter_exit(struct class_dev_iter *iter); extern int class_for_each_device(struct class *class, struct device *start, void *data, int (*fn)(struct device *dev, void *data)); extern struct device *class_find_device(struct class *class, struct device *start, const void *data, int (*match)(struct device *, const void *)); struct class_attribute { struct attribute attr; ssize_t (*show)(struct class *class, struct class_attribute *attr, char *buf); ssize_t (*store)(struct class *class, struct class_attribute *attr, const char *buf, size_t count); }; # 488 "../include/linux/device.h" extern int __attribute__((__warn_unused_result__)) class_create_file_ns(struct class *class, const struct class_attribute *attr, const void *ns); extern void class_remove_file_ns(struct class *class, const struct class_attribute *attr, const void *ns); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) class_create_file(struct class *class, const struct class_attribute *attr) { return class_create_file_ns(class, attr, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void class_remove_file(struct class *class, const struct class_attribute *attr) { return class_remove_file_ns(class, attr, ((void *)0)); } struct class_attribute_string { struct class_attribute attr; char *str; }; # 520 "../include/linux/device.h" extern ssize_t show_class_attr_string(struct class *class, struct class_attribute *attr, char *buf); struct class_interface { struct list_head node; struct class *class; int (*add_dev) (struct device *, struct class_interface *); void (*remove_dev) (struct device *, struct class_interface *); }; extern int __attribute__((__warn_unused_result__)) class_interface_register(struct class_interface *); extern void class_interface_unregister(struct class_interface *); extern struct class * __attribute__((__warn_unused_result__)) __class_create(struct module *owner, const char *name, struct lock_class_key *key); extern void class_destroy(struct class *cls); # 556 "../include/linux/device.h" struct device_type { const char *name; const struct attribute_group **groups; int (*uevent)(struct device *dev, struct kobj_uevent_env *env); char *(*devnode)(struct device *dev, umode_t *mode, kuid_t *uid, kgid_t *gid); void (*release)(struct device *dev); const struct dev_pm_ops *pm; }; struct device_attribute { struct attribute attr; ssize_t (*show)(struct device *dev, struct device_attribute *attr, char *buf); ssize_t (*store)(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); }; struct dev_ext_attribute { struct device_attribute attr; void *var; }; ssize_t device_show_ulong(struct device *dev, struct device_attribute *attr, char *buf); ssize_t device_store_ulong(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); ssize_t device_show_int(struct device *dev, struct device_attribute *attr, char *buf); ssize_t device_store_int(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); ssize_t device_show_bool(struct device *dev, struct device_attribute *attr, char *buf); ssize_t device_store_bool(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); # 618 "../include/linux/device.h" extern int device_create_file(struct device *device, const struct device_attribute *entry); extern void device_remove_file(struct device *dev, const struct device_attribute *attr); extern bool device_remove_file_self(struct device *dev, const struct device_attribute *attr); extern int __attribute__((__warn_unused_result__)) device_create_bin_file(struct device *dev, const struct bin_attribute *attr); extern void device_remove_bin_file(struct device *dev, const struct bin_attribute *attr); typedef void (*dr_release_t)(struct device *dev, void *res); typedef int (*dr_match_t)(struct device *dev, void *res, void *match_data); extern void *__devres_alloc_node(dr_release_t release, size_t size, gfp_t gfp, int nid, const char *name) __attribute__((__malloc__)); # 649 "../include/linux/device.h" extern void devres_for_each_res(struct device *dev, dr_release_t release, dr_match_t match, void *match_data, void (*fn)(struct device *, void *, void *), void *data); extern void devres_free(void *res); extern void devres_add(struct device *dev, void *res); extern void *devres_find(struct device *dev, dr_release_t release, dr_match_t match, void *match_data); extern void *devres_get(struct device *dev, void *new_res, dr_match_t match, void *match_data); extern void *devres_remove(struct device *dev, dr_release_t release, dr_match_t match, void *match_data); extern int devres_destroy(struct device *dev, dr_release_t release, dr_match_t match, void *match_data); extern int devres_release(struct device *dev, dr_release_t release, dr_match_t match, void *match_data); extern void * __attribute__((__warn_unused_result__)) devres_open_group(struct device *dev, void *id, gfp_t gfp); extern void devres_close_group(struct device *dev, void *id); extern void devres_remove_group(struct device *dev, void *id); extern int devres_release_group(struct device *dev, void *id); extern void *devm_kmalloc(struct device *dev, size_t size, gfp_t gfp) __attribute__((__malloc__)); extern __attribute__((__format__(printf, 3, 0))) char *devm_kvasprintf(struct device *dev, gfp_t gfp, const char *fmt, va_list ap) __attribute__((__malloc__)); extern __attribute__((__format__(printf, 3, 4))) char *devm_kasprintf(struct device *dev, gfp_t gfp, const char *fmt, ...) __attribute__((__malloc__)); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp) { return devm_kmalloc(dev, size, gfp | (( gfp_t)0x100u)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *devm_kmalloc_array(struct device *dev, size_t n, size_t size, gfp_t flags) { size_t bytes; if (__builtin_expect(!!(({ typeof(n) __a = (n); typeof(size) __b = (size); typeof(&bytes) __d = (&bytes); (void) (&__a == &__b); (void) (&__a == __d); __builtin_mul_overflow(__a, __b, __d); })), 0)) return ((void *)0); return devm_kmalloc(dev, bytes, flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *devm_kcalloc(struct device *dev, size_t n, size_t size, gfp_t flags) { return devm_kmalloc_array(dev, n, size, flags | (( gfp_t)0x100u)); } extern void devm_kfree(struct device *dev, const void *p); extern char *devm_kstrdup(struct device *dev, const char *s, gfp_t gfp) __attribute__((__malloc__)); extern const char *devm_kstrdup_const(struct device *dev, const char *s, gfp_t gfp); extern void *devm_kmemdup(struct device *dev, const void *src, size_t len, gfp_t gfp); extern unsigned long devm_get_free_pages(struct device *dev, gfp_t gfp_mask, unsigned int order); extern void devm_free_pages(struct device *dev, unsigned long addr); void *devm_ioremap_resource(struct device *dev, struct resource *res); void *devm_of_iomap(struct device *dev, struct device_node *node, int index, resource_size_t *size); int devm_add_action(struct device *dev, void (*action)(void *), void *data); void devm_remove_action(struct device *dev, void (*action)(void *), void *data); void devm_release_action(struct device *dev, void (*action)(void *), void *data); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int devm_add_action_or_reset(struct device *dev, void (*action)(void *), void *data) { int ret; ret = devm_add_action(dev, action, data); if (ret) action(data); return ret; } # 748 "../include/linux/device.h" void *__devm_alloc_percpu(struct device *dev, size_t size, size_t align); void devm_free_percpu(struct device *dev, void *pdata); struct device_dma_parameters { unsigned int max_segment_size; unsigned long segment_boundary_mask; }; # 772 "../include/linux/device.h" struct device_connection { struct fwnode_handle *fwnode; const char *endpoint[2]; const char *id; struct list_head list; }; void *device_connection_find_match(struct device *dev, const char *con_id, void *data, void *(*match)(struct device_connection *con, int ep, void *data)); struct device *device_connection_find(struct device *dev, const char *con_id); void device_connection_add(struct device_connection *con); void device_connection_remove(struct device_connection *con); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void device_connections_add(struct device_connection *cons) { struct device_connection *c; for (c = cons; c->endpoint[0]; c++) device_connection_add(c); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void device_connections_remove(struct device_connection *cons) { struct device_connection *c; for (c = cons; c->endpoint[0]; c++) device_connection_remove(c); } # 822 "../include/linux/device.h" enum device_link_state { DL_STATE_NONE = -1, DL_STATE_DORMANT = 0, DL_STATE_AVAILABLE, DL_STATE_CONSUMER_PROBE, DL_STATE_ACTIVE, DL_STATE_SUPPLIER_UNBIND, }; # 861 "../include/linux/device.h" struct device_link { struct device *supplier; struct list_head s_node; struct device *consumer; struct list_head c_node; enum device_link_state status; u32 flags; refcount_t rpm_active; struct kref kref; struct callback_head callback_head; bool supplier_preactivated; }; # 883 "../include/linux/device.h" enum dl_dev_state { DL_DEV_NO_DRIVER = 0, DL_DEV_PROBING, DL_DEV_DRIVER_BOUND, DL_DEV_UNBINDING, }; struct dev_links_info { struct list_head suppliers; struct list_head consumers; enum dl_dev_state status; }; # 983 "../include/linux/device.h" struct device { struct kobject kobj; struct device *parent; struct device_private *p; const char *init_name; const struct device_type *type; struct bus_type *bus; struct device_driver *driver; void *platform_data; void *driver_data; struct mutex mutex; struct dev_links_info links; struct dev_pm_info power; struct dev_pm_domain *pm_domain; struct irq_domain *msi_domain; struct dev_pin_info *pins; struct list_head msi_list; const struct dma_map_ops *dma_ops; u64 *dma_mask; u64 coherent_dma_mask; u64 bus_dma_mask; unsigned long dma_pfn_offset; struct device_dma_parameters *dma_parms; struct list_head dma_pools; struct dma_coherent_mem *dma_mem; struct cma *cma_area; struct dev_archdata archdata; struct device_node *of_node; struct fwnode_handle *fwnode; int numa_node; dev_t devt; u32 id; spinlock_t devres_lock; struct list_head devres_head; struct class *class; const struct attribute_group **groups; void (*release)(struct device *dev); struct iommu_group *iommu_group; struct iommu_fwspec *iommu_fwspec; struct iommu_param *iommu_param; bool offline_disabled:1; bool offline:1; bool of_node_reused:1; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct device *kobj_to_dev(struct kobject *kobj) { return ({ void *__mptr = (void *)(kobj); do { extern void __compiletime_assert_1074(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(kobj)), typeof(((struct device *)0)->kobj)) && !__builtin_types_compatible_p(typeof(*(kobj)), typeof(void))))) __compiletime_assert_1074(); } while (0); ((struct device *)(__mptr - __builtin_offsetof(struct device, kobj))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool device_iommu_mapped(struct device *dev) { return (dev->iommu_group != ((void *)0)); } # 1 "../include/linux/pm_wakeup.h" 1 # 18 "../include/linux/pm_wakeup.h" struct wake_irq; # 41 "../include/linux/pm_wakeup.h" struct wakeup_source { const char *name; struct list_head entry; spinlock_t lock; struct wake_irq *wakeirq; struct timer_list timer; unsigned long timer_expires; ktime_t total_time; ktime_t max_time; ktime_t last_time; ktime_t start_prevent_time; ktime_t prevent_sleep_time; unsigned long event_count; unsigned long active_count; unsigned long relax_count; unsigned long expire_count; unsigned long wakeup_count; bool active:1; bool autosleep_enabled:1; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool device_can_wakeup(struct device *dev) { return dev->power.can_wakeup; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool device_may_wakeup(struct device *dev) { return dev->power.can_wakeup && !!dev->power.wakeup; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void device_set_wakeup_path(struct device *dev) { dev->power.wakeup_path = true; } extern void wakeup_source_prepare(struct wakeup_source *ws, const char *name); extern struct wakeup_source *wakeup_source_create(const char *name); extern void wakeup_source_destroy(struct wakeup_source *ws); extern void wakeup_source_add(struct wakeup_source *ws); extern void wakeup_source_remove(struct wakeup_source *ws); extern struct wakeup_source *wakeup_source_register(const char *name); extern void wakeup_source_unregister(struct wakeup_source *ws); extern int device_wakeup_enable(struct device *dev); extern int device_wakeup_disable(struct device *dev); extern void device_set_wakeup_capable(struct device *dev, bool capable); extern int device_init_wakeup(struct device *dev, bool val); extern int device_set_wakeup_enable(struct device *dev, bool enable); extern void __pm_stay_awake(struct wakeup_source *ws); extern void pm_stay_awake(struct device *dev); extern void __pm_relax(struct wakeup_source *ws); extern void pm_relax(struct device *dev); extern void pm_wakeup_ws_event(struct wakeup_source *ws, unsigned int msec, bool hard); extern void pm_wakeup_dev_event(struct device *dev, unsigned int msec, bool hard); # 184 "../include/linux/pm_wakeup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void wakeup_source_init(struct wakeup_source *ws, const char *name) { wakeup_source_prepare(ws, name); wakeup_source_add(ws); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __pm_wakeup_event(struct wakeup_source *ws, unsigned int msec) { return pm_wakeup_ws_event(ws, msec, false); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pm_wakeup_event(struct device *dev, unsigned int msec) { return pm_wakeup_dev_event(dev, msec, false); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pm_wakeup_hard_event(struct device *dev) { return pm_wakeup_dev_event(dev, 0, true); } # 1089 "../include/linux/device.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *dev_name(const struct device *dev) { if (dev->init_name) return dev->init_name; return kobject_name(&dev->kobj); } extern __attribute__((__format__(printf, 2, 3))) int dev_set_name(struct device *dev, const char *name, ...); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dev_to_node(struct device *dev) { return dev->numa_node; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_dev_node(struct device *dev, int node) { dev->numa_node = node; } # 1121 "../include/linux/device.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct irq_domain *dev_get_msi_domain(const struct device *dev) { return dev->msi_domain; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_set_msi_domain(struct device *dev, struct irq_domain *d) { dev->msi_domain = d; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *dev_get_drvdata(const struct device *dev) { return dev->driver_data; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_set_drvdata(struct device *dev, void *data) { dev->driver_data = data; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct pm_subsys_data *dev_to_psd(struct device *dev) { return dev ? dev->power.subsys_data : ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int dev_get_uevent_suppress(const struct device *dev) { return dev->kobj.uevent_suppress; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_set_uevent_suppress(struct device *dev, int val) { dev->kobj.uevent_suppress = val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int device_is_registered(struct device *dev) { return dev->kobj.state_in_sysfs; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void device_enable_async_suspend(struct device *dev) { if (!dev->power.is_prepared) dev->power.async_suspend = true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void device_disable_async_suspend(struct device *dev) { if (!dev->power.is_prepared) dev->power.async_suspend = false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool device_async_suspend_enabled(struct device *dev) { return !!dev->power.async_suspend; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool device_pm_not_required(struct device *dev) { return dev->power.no_pm; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void device_set_pm_not_required(struct device *dev) { dev->power.no_pm = true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_pm_syscore_device(struct device *dev, bool val) { dev->power.syscore = val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_pm_set_driver_flags(struct device *dev, u32 flags) { dev->power.driver_flags = flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool dev_pm_test_driver_flags(struct device *dev, u32 flags) { return !!(dev->power.driver_flags & flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void device_lock(struct device *dev) { mutex_lock_nested(&dev->mutex, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int device_lock_interruptible(struct device *dev) { return mutex_lock_interruptible_nested(&dev->mutex, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int device_trylock(struct device *dev) { return mutex_trylock(&dev->mutex); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void device_unlock(struct device *dev) { mutex_unlock(&dev->mutex); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void device_lock_assert(struct device *dev) { do { ({ int __ret_warn_on = !!(debug_locks && !lock_is_held(&(&dev->mutex)->dep_map)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/device.h"), "i" (1233), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (338)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct device_node *dev_of_node(struct device *dev) { if (!1 || !dev) return ((void *)0); return dev->of_node; } void driver_init(void); extern int __attribute__((__warn_unused_result__)) device_register(struct device *dev); extern void device_unregister(struct device *dev); extern void device_initialize(struct device *dev); extern int __attribute__((__warn_unused_result__)) device_add(struct device *dev); extern void device_del(struct device *dev); extern int device_for_each_child(struct device *dev, void *data, int (*fn)(struct device *dev, void *data)); extern int device_for_each_child_reverse(struct device *dev, void *data, int (*fn)(struct device *dev, void *data)); extern struct device *device_find_child(struct device *dev, void *data, int (*match)(struct device *dev, void *data)); extern struct device *device_find_child_by_name(struct device *parent, const char *name); extern int device_rename(struct device *dev, const char *new_name); extern int device_move(struct device *dev, struct device *new_parent, enum dpm_order dpm_order); extern const char *device_get_devnode(struct device *dev, umode_t *mode, kuid_t *uid, kgid_t *gid, const char **tmp); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool device_supports_offline(struct device *dev) { return dev->bus && dev->bus->offline && dev->bus->online; } extern void lock_device_hotplug(void); extern void unlock_device_hotplug(void); extern int lock_device_hotplug_sysfs(void); extern int device_offline(struct device *dev); extern int device_online(struct device *dev); extern void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode); extern void set_secondary_fwnode(struct device *dev, struct fwnode_handle *fwnode); void device_set_of_node_from_dev(struct device *dev, const struct device *dev2); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dev_num_vf(struct device *dev) { if (dev->bus && dev->bus->num_vf) return dev->bus->num_vf(dev); return 0; } extern struct device *__root_device_register(const char *name, struct module *owner); extern void root_device_unregister(struct device *root); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *dev_get_platdata(const struct device *dev) { return dev->platform_data; } extern int __attribute__((__warn_unused_result__)) device_bind_driver(struct device *dev); extern void device_release_driver(struct device *dev); extern int __attribute__((__warn_unused_result__)) device_attach(struct device *dev); extern int __attribute__((__warn_unused_result__)) driver_attach(struct device_driver *drv); extern void device_initial_probe(struct device *dev); extern int __attribute__((__warn_unused_result__)) device_reprobe(struct device *dev); extern bool device_is_bound(struct device *dev); extern __attribute__((__format__(printf, 5, 0))) struct device *device_create_vargs(struct class *cls, struct device *parent, dev_t devt, void *drvdata, const char *fmt, va_list vargs); extern __attribute__((__format__(printf, 5, 6))) struct device *device_create(struct class *cls, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...); extern __attribute__((__format__(printf, 6, 7))) struct device *device_create_with_groups(struct class *cls, struct device *parent, dev_t devt, void *drvdata, const struct attribute_group **groups, const char *fmt, ...); extern void device_destroy(struct class *cls, dev_t devt); extern int __attribute__((__warn_unused_result__)) device_add_groups(struct device *dev, const struct attribute_group **groups); extern void device_remove_groups(struct device *dev, const struct attribute_group **groups); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) device_add_group(struct device *dev, const struct attribute_group *grp) { const struct attribute_group *groups[] = { grp, ((void *)0) }; return device_add_groups(dev, groups); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void device_remove_group(struct device *dev, const struct attribute_group *grp) { const struct attribute_group *groups[] = { grp, ((void *)0) }; return device_remove_groups(dev, groups); } extern int __attribute__((__warn_unused_result__)) devm_device_add_groups(struct device *dev, const struct attribute_group **groups); extern void devm_device_remove_groups(struct device *dev, const struct attribute_group **groups); extern int __attribute__((__warn_unused_result__)) devm_device_add_group(struct device *dev, const struct attribute_group *grp); extern void devm_device_remove_group(struct device *dev, const struct attribute_group *grp); extern int (*platform_notify)(struct device *dev); extern int (*platform_notify_remove)(struct device *dev); extern struct device *get_device(struct device *dev); extern void put_device(struct device *dev); extern bool kill_device(struct device *dev); extern int devtmpfs_create_node(struct device *dev); extern int devtmpfs_delete_node(struct device *dev); extern int devtmpfs_mount(const char *mntdir); extern void device_shutdown(void); extern const char *dev_driver_string(const struct device *dev); struct device_link *device_link_add(struct device *consumer, struct device *supplier, u32 flags); void device_link_del(struct device_link *link); void device_link_remove(void *consumer, struct device *supplier); __attribute__((__format__(printf, 3, 0))) __attribute__((__cold__)) int dev_vprintk_emit(int level, const struct device *dev, const char *fmt, va_list args); __attribute__((__format__(printf, 3, 4))) __attribute__((__cold__)) int dev_printk_emit(int level, const struct device *dev, const char *fmt, ...); __attribute__((__format__(printf, 3, 4))) __attribute__((__cold__)) void dev_printk(const char *level, const struct device *dev, const char *fmt, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void _dev_emerg(const struct device *dev, const char *fmt, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void _dev_alert(const struct device *dev, const char *fmt, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void _dev_crit(const struct device *dev, const char *fmt, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void _dev_err(const struct device *dev, const char *fmt, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void _dev_warn(const struct device *dev, const char *fmt, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void _dev_notice(const struct device *dev, const char *fmt, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void _dev_info(const struct device *dev, const char *fmt, ...); # 1630 "../include/linux/device.h" extern long sysfs_deprecated; # 9 "../include/linux/devcoredump.h" 2 # 1 "../include/linux/module.h" 1 # 13 "../include/linux/module.h" # 1 "../include/linux/kmod.h" 1 # 1 "../include/linux/umh.h" 1 # 1 "../include/linux/sysctl.h" 1 # 30 "../include/linux/sysctl.h" # 1 "../include/uapi/linux/sysctl.h" 1 # 35 "../include/uapi/linux/sysctl.h" struct __sysctl_args { int *name; int nlen; void *oldval; size_t *oldlenp; void *newval; size_t newlen; unsigned long __unused[4]; }; enum { CTL_KERN=1, CTL_VM=2, CTL_NET=3, CTL_PROC=4, CTL_FS=5, CTL_DEBUG=6, CTL_DEV=7, CTL_BUS=8, CTL_ABI=9, CTL_CPU=10, CTL_ARLAN=254, CTL_S390DBF=5677, CTL_SUNRPC=7249, CTL_PM=9899, CTL_FRV=9898, }; enum { CTL_BUS_ISA=1 }; enum { INOTIFY_MAX_USER_INSTANCES=1, INOTIFY_MAX_USER_WATCHES=2, INOTIFY_MAX_QUEUED_EVENTS=3 }; enum { KERN_OSTYPE=1, KERN_OSRELEASE=2, KERN_OSREV=3, KERN_VERSION=4, KERN_SECUREMASK=5, KERN_PROF=6, KERN_NODENAME=7, KERN_DOMAINNAME=8, KERN_PANIC=15, KERN_REALROOTDEV=16, KERN_SPARC_REBOOT=21, KERN_CTLALTDEL=22, KERN_PRINTK=23, KERN_NAMETRANS=24, KERN_PPC_HTABRECLAIM=25, KERN_PPC_ZEROPAGED=26, KERN_PPC_POWERSAVE_NAP=27, KERN_MODPROBE=28, KERN_SG_BIG_BUFF=29, KERN_ACCT=30, KERN_PPC_L2CR=31, KERN_RTSIGNR=32, KERN_RTSIGMAX=33, KERN_SHMMAX=34, KERN_MSGMAX=35, KERN_MSGMNB=36, KERN_MSGPOOL=37, KERN_SYSRQ=38, KERN_MAX_THREADS=39, KERN_RANDOM=40, KERN_SHMALL=41, KERN_MSGMNI=42, KERN_SEM=43, KERN_SPARC_STOP_A=44, KERN_SHMMNI=45, KERN_OVERFLOWUID=46, KERN_OVERFLOWGID=47, KERN_SHMPATH=48, KERN_HOTPLUG=49, KERN_IEEE_EMULATION_WARNINGS=50, KERN_S390_USER_DEBUG_LOGGING=51, KERN_CORE_USES_PID=52, KERN_TAINTED=53, KERN_CADPID=54, KERN_PIDMAX=55, KERN_CORE_PATTERN=56, KERN_PANIC_ON_OOPS=57, KERN_HPPA_PWRSW=58, KERN_HPPA_UNALIGNED=59, KERN_PRINTK_RATELIMIT=60, KERN_PRINTK_RATELIMIT_BURST=61, KERN_PTY=62, KERN_NGROUPS_MAX=63, KERN_SPARC_SCONS_PWROFF=64, KERN_HZ_TIMER=65, KERN_UNKNOWN_NMI_PANIC=66, KERN_BOOTLOADER_TYPE=67, KERN_RANDOMIZE=68, KERN_SETUID_DUMPABLE=69, KERN_SPIN_RETRY=70, KERN_ACPI_VIDEO_FLAGS=71, KERN_IA64_UNALIGNED=72, KERN_COMPAT_LOG=73, KERN_MAX_LOCK_DEPTH=74, KERN_NMI_WATCHDOG=75, KERN_PANIC_ON_NMI=76, KERN_PANIC_ON_WARN=77, KERN_PANIC_PRINT=78, }; enum { VM_UNUSED1=1, VM_UNUSED2=2, VM_UNUSED3=3, VM_UNUSED4=4, VM_OVERCOMMIT_MEMORY=5, VM_UNUSED5=6, VM_UNUSED7=7, VM_UNUSED8=8, VM_UNUSED9=9, VM_PAGE_CLUSTER=10, VM_DIRTY_BACKGROUND=11, VM_DIRTY_RATIO=12, VM_DIRTY_WB_CS=13, VM_DIRTY_EXPIRE_CS=14, VM_NR_PDFLUSH_THREADS=15, VM_OVERCOMMIT_RATIO=16, VM_PAGEBUF=17, VM_HUGETLB_PAGES=18, VM_SWAPPINESS=19, VM_LOWMEM_RESERVE_RATIO=20, VM_MIN_FREE_KBYTES=21, VM_MAX_MAP_COUNT=22, VM_LAPTOP_MODE=23, VM_BLOCK_DUMP=24, VM_HUGETLB_GROUP=25, VM_VFS_CACHE_PRESSURE=26, VM_LEGACY_VA_LAYOUT=27, VM_SWAP_TOKEN_TIMEOUT=28, VM_DROP_PAGECACHE=29, VM_PERCPU_PAGELIST_FRACTION=30, VM_ZONE_RECLAIM_MODE=31, VM_MIN_UNMAPPED=32, VM_PANIC_ON_OOM=33, VM_VDSO_ENABLED=34, VM_MIN_SLAB=35, }; enum { NET_CORE=1, NET_ETHER=2, NET_802=3, NET_UNIX=4, NET_IPV4=5, NET_IPX=6, NET_ATALK=7, NET_NETROM=8, NET_AX25=9, NET_BRIDGE=10, NET_ROSE=11, NET_IPV6=12, NET_X25=13, NET_TR=14, NET_DECNET=15, NET_ECONET=16, NET_SCTP=17, NET_LLC=18, NET_NETFILTER=19, NET_DCCP=20, NET_IRDA=412, }; enum { RANDOM_POOLSIZE=1, RANDOM_ENTROPY_COUNT=2, RANDOM_READ_THRESH=3, RANDOM_WRITE_THRESH=4, RANDOM_BOOT_ID=5, RANDOM_UUID=6 }; enum { PTY_MAX=1, PTY_NR=2 }; enum { BUS_ISA_MEM_BASE=1, BUS_ISA_PORT_BASE=2, BUS_ISA_PORT_SHIFT=3 }; enum { NET_CORE_WMEM_MAX=1, NET_CORE_RMEM_MAX=2, NET_CORE_WMEM_DEFAULT=3, NET_CORE_RMEM_DEFAULT=4, NET_CORE_MAX_BACKLOG=6, NET_CORE_FASTROUTE=7, NET_CORE_MSG_COST=8, NET_CORE_MSG_BURST=9, NET_CORE_OPTMEM_MAX=10, NET_CORE_HOT_LIST_LENGTH=11, NET_CORE_DIVERT_VERSION=12, NET_CORE_NO_CONG_THRESH=13, NET_CORE_NO_CONG=14, NET_CORE_LO_CONG=15, NET_CORE_MOD_CONG=16, NET_CORE_DEV_WEIGHT=17, NET_CORE_SOMAXCONN=18, NET_CORE_BUDGET=19, NET_CORE_AEVENT_ETIME=20, NET_CORE_AEVENT_RSEQTH=21, NET_CORE_WARNINGS=22, }; enum { NET_UNIX_DESTROY_DELAY=1, NET_UNIX_DELETE_DELAY=2, NET_UNIX_MAX_DGRAM_QLEN=3, }; enum { NET_NF_CONNTRACK_MAX=1, NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=2, NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3, NET_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=4, NET_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=5, NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=6, NET_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=7, NET_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=8, NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=9, NET_NF_CONNTRACK_UDP_TIMEOUT=10, NET_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11, NET_NF_CONNTRACK_ICMP_TIMEOUT=12, NET_NF_CONNTRACK_GENERIC_TIMEOUT=13, NET_NF_CONNTRACK_BUCKETS=14, NET_NF_CONNTRACK_LOG_INVALID=15, NET_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=16, NET_NF_CONNTRACK_TCP_LOOSE=17, NET_NF_CONNTRACK_TCP_BE_LIBERAL=18, NET_NF_CONNTRACK_TCP_MAX_RETRANS=19, NET_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=20, NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=21, NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=22, NET_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=23, NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=24, NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=25, NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=26, NET_NF_CONNTRACK_COUNT=27, NET_NF_CONNTRACK_ICMPV6_TIMEOUT=28, NET_NF_CONNTRACK_FRAG6_TIMEOUT=29, NET_NF_CONNTRACK_FRAG6_LOW_THRESH=30, NET_NF_CONNTRACK_FRAG6_HIGH_THRESH=31, NET_NF_CONNTRACK_CHECKSUM=32, }; enum { NET_IPV4_FORWARD=8, NET_IPV4_DYNADDR=9, NET_IPV4_CONF=16, NET_IPV4_NEIGH=17, NET_IPV4_ROUTE=18, NET_IPV4_FIB_HASH=19, NET_IPV4_NETFILTER=20, NET_IPV4_TCP_TIMESTAMPS=33, NET_IPV4_TCP_WINDOW_SCALING=34, NET_IPV4_TCP_SACK=35, NET_IPV4_TCP_RETRANS_COLLAPSE=36, NET_IPV4_DEFAULT_TTL=37, NET_IPV4_AUTOCONFIG=38, NET_IPV4_NO_PMTU_DISC=39, NET_IPV4_TCP_SYN_RETRIES=40, NET_IPV4_IPFRAG_HIGH_THRESH=41, NET_IPV4_IPFRAG_LOW_THRESH=42, NET_IPV4_IPFRAG_TIME=43, NET_IPV4_TCP_MAX_KA_PROBES=44, NET_IPV4_TCP_KEEPALIVE_TIME=45, NET_IPV4_TCP_KEEPALIVE_PROBES=46, NET_IPV4_TCP_RETRIES1=47, NET_IPV4_TCP_RETRIES2=48, NET_IPV4_TCP_FIN_TIMEOUT=49, NET_IPV4_IP_MASQ_DEBUG=50, NET_TCP_SYNCOOKIES=51, NET_TCP_STDURG=52, NET_TCP_RFC1337=53, NET_TCP_SYN_TAILDROP=54, NET_TCP_MAX_SYN_BACKLOG=55, NET_IPV4_LOCAL_PORT_RANGE=56, NET_IPV4_ICMP_ECHO_IGNORE_ALL=57, NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS=58, NET_IPV4_ICMP_SOURCEQUENCH_RATE=59, NET_IPV4_ICMP_DESTUNREACH_RATE=60, NET_IPV4_ICMP_TIMEEXCEED_RATE=61, NET_IPV4_ICMP_PARAMPROB_RATE=62, NET_IPV4_ICMP_ECHOREPLY_RATE=63, NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES=64, NET_IPV4_IGMP_MAX_MEMBERSHIPS=65, NET_TCP_TW_RECYCLE=66, NET_IPV4_ALWAYS_DEFRAG=67, NET_IPV4_TCP_KEEPALIVE_INTVL=68, NET_IPV4_INET_PEER_THRESHOLD=69, NET_IPV4_INET_PEER_MINTTL=70, NET_IPV4_INET_PEER_MAXTTL=71, NET_IPV4_INET_PEER_GC_MINTIME=72, NET_IPV4_INET_PEER_GC_MAXTIME=73, NET_TCP_ORPHAN_RETRIES=74, NET_TCP_ABORT_ON_OVERFLOW=75, NET_TCP_SYNACK_RETRIES=76, NET_TCP_MAX_ORPHANS=77, NET_TCP_MAX_TW_BUCKETS=78, NET_TCP_FACK=79, NET_TCP_REORDERING=80, NET_TCP_ECN=81, NET_TCP_DSACK=82, NET_TCP_MEM=83, NET_TCP_WMEM=84, NET_TCP_RMEM=85, NET_TCP_APP_WIN=86, NET_TCP_ADV_WIN_SCALE=87, NET_IPV4_NONLOCAL_BIND=88, NET_IPV4_ICMP_RATELIMIT=89, NET_IPV4_ICMP_RATEMASK=90, NET_TCP_TW_REUSE=91, NET_TCP_FRTO=92, NET_TCP_LOW_LATENCY=93, NET_IPV4_IPFRAG_SECRET_INTERVAL=94, NET_IPV4_IGMP_MAX_MSF=96, NET_TCP_NO_METRICS_SAVE=97, NET_TCP_DEFAULT_WIN_SCALE=105, NET_TCP_MODERATE_RCVBUF=106, NET_TCP_TSO_WIN_DIVISOR=107, NET_TCP_BIC_BETA=108, NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR=109, NET_TCP_CONG_CONTROL=110, NET_TCP_ABC=111, NET_IPV4_IPFRAG_MAX_DIST=112, NET_TCP_MTU_PROBING=113, NET_TCP_BASE_MSS=114, NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS=115, NET_TCP_DMA_COPYBREAK=116, NET_TCP_SLOW_START_AFTER_IDLE=117, NET_CIPSOV4_CACHE_ENABLE=118, NET_CIPSOV4_CACHE_BUCKET_SIZE=119, NET_CIPSOV4_RBM_OPTFMT=120, NET_CIPSOV4_RBM_STRICTVALID=121, NET_TCP_AVAIL_CONG_CONTROL=122, NET_TCP_ALLOWED_CONG_CONTROL=123, NET_TCP_MAX_SSTHRESH=124, NET_TCP_FRTO_RESPONSE=125, }; enum { NET_IPV4_ROUTE_FLUSH=1, NET_IPV4_ROUTE_MIN_DELAY=2, NET_IPV4_ROUTE_MAX_DELAY=3, NET_IPV4_ROUTE_GC_THRESH=4, NET_IPV4_ROUTE_MAX_SIZE=5, NET_IPV4_ROUTE_GC_MIN_INTERVAL=6, NET_IPV4_ROUTE_GC_TIMEOUT=7, NET_IPV4_ROUTE_GC_INTERVAL=8, NET_IPV4_ROUTE_REDIRECT_LOAD=9, NET_IPV4_ROUTE_REDIRECT_NUMBER=10, NET_IPV4_ROUTE_REDIRECT_SILENCE=11, NET_IPV4_ROUTE_ERROR_COST=12, NET_IPV4_ROUTE_ERROR_BURST=13, NET_IPV4_ROUTE_GC_ELASTICITY=14, NET_IPV4_ROUTE_MTU_EXPIRES=15, NET_IPV4_ROUTE_MIN_PMTU=16, NET_IPV4_ROUTE_MIN_ADVMSS=17, NET_IPV4_ROUTE_SECRET_INTERVAL=18, NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS=19, }; enum { NET_PROTO_CONF_ALL=-2, NET_PROTO_CONF_DEFAULT=-3 }; enum { NET_IPV4_CONF_FORWARDING=1, NET_IPV4_CONF_MC_FORWARDING=2, NET_IPV4_CONF_PROXY_ARP=3, NET_IPV4_CONF_ACCEPT_REDIRECTS=4, NET_IPV4_CONF_SECURE_REDIRECTS=5, NET_IPV4_CONF_SEND_REDIRECTS=6, NET_IPV4_CONF_SHARED_MEDIA=7, NET_IPV4_CONF_RP_FILTER=8, NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE=9, NET_IPV4_CONF_BOOTP_RELAY=10, NET_IPV4_CONF_LOG_MARTIANS=11, NET_IPV4_CONF_TAG=12, NET_IPV4_CONF_ARPFILTER=13, NET_IPV4_CONF_MEDIUM_ID=14, NET_IPV4_CONF_NOXFRM=15, NET_IPV4_CONF_NOPOLICY=16, NET_IPV4_CONF_FORCE_IGMP_VERSION=17, NET_IPV4_CONF_ARP_ANNOUNCE=18, NET_IPV4_CONF_ARP_IGNORE=19, NET_IPV4_CONF_PROMOTE_SECONDARIES=20, NET_IPV4_CONF_ARP_ACCEPT=21, NET_IPV4_CONF_ARP_NOTIFY=22, }; enum { NET_IPV4_NF_CONNTRACK_MAX=1, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=2, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=4, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=5, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=6, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=7, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=8, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=9, NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT=10, NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11, NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT=12, NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT=13, NET_IPV4_NF_CONNTRACK_BUCKETS=14, NET_IPV4_NF_CONNTRACK_LOG_INVALID=15, NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=16, NET_IPV4_NF_CONNTRACK_TCP_LOOSE=17, NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL=18, NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS=19, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=20, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=21, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=22, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=23, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=24, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=25, NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=26, NET_IPV4_NF_CONNTRACK_COUNT=27, NET_IPV4_NF_CONNTRACK_CHECKSUM=28, }; enum { NET_IPV6_CONF=16, NET_IPV6_NEIGH=17, NET_IPV6_ROUTE=18, NET_IPV6_ICMP=19, NET_IPV6_BINDV6ONLY=20, NET_IPV6_IP6FRAG_HIGH_THRESH=21, NET_IPV6_IP6FRAG_LOW_THRESH=22, NET_IPV6_IP6FRAG_TIME=23, NET_IPV6_IP6FRAG_SECRET_INTERVAL=24, NET_IPV6_MLD_MAX_MSF=25, }; enum { NET_IPV6_ROUTE_FLUSH=1, NET_IPV6_ROUTE_GC_THRESH=2, NET_IPV6_ROUTE_MAX_SIZE=3, NET_IPV6_ROUTE_GC_MIN_INTERVAL=4, NET_IPV6_ROUTE_GC_TIMEOUT=5, NET_IPV6_ROUTE_GC_INTERVAL=6, NET_IPV6_ROUTE_GC_ELASTICITY=7, NET_IPV6_ROUTE_MTU_EXPIRES=8, NET_IPV6_ROUTE_MIN_ADVMSS=9, NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS=10 }; enum { NET_IPV6_FORWARDING=1, NET_IPV6_HOP_LIMIT=2, NET_IPV6_MTU=3, NET_IPV6_ACCEPT_RA=4, NET_IPV6_ACCEPT_REDIRECTS=5, NET_IPV6_AUTOCONF=6, NET_IPV6_DAD_TRANSMITS=7, NET_IPV6_RTR_SOLICITS=8, NET_IPV6_RTR_SOLICIT_INTERVAL=9, NET_IPV6_RTR_SOLICIT_DELAY=10, NET_IPV6_USE_TEMPADDR=11, NET_IPV6_TEMP_VALID_LFT=12, NET_IPV6_TEMP_PREFERED_LFT=13, NET_IPV6_REGEN_MAX_RETRY=14, NET_IPV6_MAX_DESYNC_FACTOR=15, NET_IPV6_MAX_ADDRESSES=16, NET_IPV6_FORCE_MLD_VERSION=17, NET_IPV6_ACCEPT_RA_DEFRTR=18, NET_IPV6_ACCEPT_RA_PINFO=19, NET_IPV6_ACCEPT_RA_RTR_PREF=20, NET_IPV6_RTR_PROBE_INTERVAL=21, NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN=22, NET_IPV6_PROXY_NDP=23, NET_IPV6_ACCEPT_SOURCE_ROUTE=25, NET_IPV6_ACCEPT_RA_FROM_LOCAL=26, NET_IPV6_ACCEPT_RA_RT_INFO_MIN_PLEN=27, __NET_IPV6_MAX }; enum { NET_IPV6_ICMP_RATELIMIT = 1, NET_IPV6_ICMP_ECHO_IGNORE_ALL = 2 }; enum { NET_NEIGH_MCAST_SOLICIT=1, NET_NEIGH_UCAST_SOLICIT=2, NET_NEIGH_APP_SOLICIT=3, NET_NEIGH_RETRANS_TIME=4, NET_NEIGH_REACHABLE_TIME=5, NET_NEIGH_DELAY_PROBE_TIME=6, NET_NEIGH_GC_STALE_TIME=7, NET_NEIGH_UNRES_QLEN=8, NET_NEIGH_PROXY_QLEN=9, NET_NEIGH_ANYCAST_DELAY=10, NET_NEIGH_PROXY_DELAY=11, NET_NEIGH_LOCKTIME=12, NET_NEIGH_GC_INTERVAL=13, NET_NEIGH_GC_THRESH1=14, NET_NEIGH_GC_THRESH2=15, NET_NEIGH_GC_THRESH3=16, NET_NEIGH_RETRANS_TIME_MS=17, NET_NEIGH_REACHABLE_TIME_MS=18, }; enum { NET_DCCP_DEFAULT=1, }; enum { NET_IPX_PPROP_BROADCASTING=1, NET_IPX_FORWARDING=2 }; enum { NET_LLC2=1, NET_LLC_STATION=2, }; enum { NET_LLC2_TIMEOUT=1, }; enum { NET_LLC_STATION_ACK_TIMEOUT=1, }; enum { NET_LLC2_ACK_TIMEOUT=1, NET_LLC2_P_TIMEOUT=2, NET_LLC2_REJ_TIMEOUT=3, NET_LLC2_BUSY_TIMEOUT=4, }; enum { NET_ATALK_AARP_EXPIRY_TIME=1, NET_ATALK_AARP_TICK_TIME=2, NET_ATALK_AARP_RETRANSMIT_LIMIT=3, NET_ATALK_AARP_RESOLVE_TIME=4 }; enum { NET_NETROM_DEFAULT_PATH_QUALITY=1, NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER=2, NET_NETROM_NETWORK_TTL_INITIALISER=3, NET_NETROM_TRANSPORT_TIMEOUT=4, NET_NETROM_TRANSPORT_MAXIMUM_TRIES=5, NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY=6, NET_NETROM_TRANSPORT_BUSY_DELAY=7, NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE=8, NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT=9, NET_NETROM_ROUTING_CONTROL=10, NET_NETROM_LINK_FAILS_COUNT=11, NET_NETROM_RESET=12 }; enum { NET_AX25_IP_DEFAULT_MODE=1, NET_AX25_DEFAULT_MODE=2, NET_AX25_BACKOFF_TYPE=3, NET_AX25_CONNECT_MODE=4, NET_AX25_STANDARD_WINDOW=5, NET_AX25_EXTENDED_WINDOW=6, NET_AX25_T1_TIMEOUT=7, NET_AX25_T2_TIMEOUT=8, NET_AX25_T3_TIMEOUT=9, NET_AX25_IDLE_TIMEOUT=10, NET_AX25_N2=11, NET_AX25_PACLEN=12, NET_AX25_PROTOCOL=13, NET_AX25_DAMA_SLAVE_TIMEOUT=14 }; enum { NET_ROSE_RESTART_REQUEST_TIMEOUT=1, NET_ROSE_CALL_REQUEST_TIMEOUT=2, NET_ROSE_RESET_REQUEST_TIMEOUT=3, NET_ROSE_CLEAR_REQUEST_TIMEOUT=4, NET_ROSE_ACK_HOLD_BACK_TIMEOUT=5, NET_ROSE_ROUTING_CONTROL=6, NET_ROSE_LINK_FAIL_TIMEOUT=7, NET_ROSE_MAX_VCS=8, NET_ROSE_WINDOW_SIZE=9, NET_ROSE_NO_ACTIVITY_TIMEOUT=10 }; enum { NET_X25_RESTART_REQUEST_TIMEOUT=1, NET_X25_CALL_REQUEST_TIMEOUT=2, NET_X25_RESET_REQUEST_TIMEOUT=3, NET_X25_CLEAR_REQUEST_TIMEOUT=4, NET_X25_ACK_HOLD_BACK_TIMEOUT=5, NET_X25_FORWARD=6 }; enum { NET_TR_RIF_TIMEOUT=1 }; enum { NET_DECNET_NODE_TYPE = 1, NET_DECNET_NODE_ADDRESS = 2, NET_DECNET_NODE_NAME = 3, NET_DECNET_DEFAULT_DEVICE = 4, NET_DECNET_TIME_WAIT = 5, NET_DECNET_DN_COUNT = 6, NET_DECNET_DI_COUNT = 7, NET_DECNET_DR_COUNT = 8, NET_DECNET_DST_GC_INTERVAL = 9, NET_DECNET_CONF = 10, NET_DECNET_NO_FC_MAX_CWND = 11, NET_DECNET_MEM = 12, NET_DECNET_RMEM = 13, NET_DECNET_WMEM = 14, NET_DECNET_DEBUG_LEVEL = 255 }; enum { NET_DECNET_CONF_LOOPBACK = -2, NET_DECNET_CONF_DDCMP = -3, NET_DECNET_CONF_PPP = -4, NET_DECNET_CONF_X25 = -5, NET_DECNET_CONF_GRE = -6, NET_DECNET_CONF_ETHER = -7 }; enum { NET_DECNET_CONF_DEV_PRIORITY = 1, NET_DECNET_CONF_DEV_T1 = 2, NET_DECNET_CONF_DEV_T2 = 3, NET_DECNET_CONF_DEV_T3 = 4, NET_DECNET_CONF_DEV_FORWARDING = 5, NET_DECNET_CONF_DEV_BLKSIZE = 6, NET_DECNET_CONF_DEV_STATE = 7 }; enum { NET_SCTP_RTO_INITIAL = 1, NET_SCTP_RTO_MIN = 2, NET_SCTP_RTO_MAX = 3, NET_SCTP_RTO_ALPHA = 4, NET_SCTP_RTO_BETA = 5, NET_SCTP_VALID_COOKIE_LIFE = 6, NET_SCTP_ASSOCIATION_MAX_RETRANS = 7, NET_SCTP_PATH_MAX_RETRANS = 8, NET_SCTP_MAX_INIT_RETRANSMITS = 9, NET_SCTP_HB_INTERVAL = 10, NET_SCTP_PRESERVE_ENABLE = 11, NET_SCTP_MAX_BURST = 12, NET_SCTP_ADDIP_ENABLE = 13, NET_SCTP_PRSCTP_ENABLE = 14, NET_SCTP_SNDBUF_POLICY = 15, NET_SCTP_SACK_TIMEOUT = 16, NET_SCTP_RCVBUF_POLICY = 17, }; enum { NET_BRIDGE_NF_CALL_ARPTABLES = 1, NET_BRIDGE_NF_CALL_IPTABLES = 2, NET_BRIDGE_NF_CALL_IP6TABLES = 3, NET_BRIDGE_NF_FILTER_VLAN_TAGGED = 4, NET_BRIDGE_NF_FILTER_PPPOE_TAGGED = 5, }; enum { FS_NRINODE=1, FS_STATINODE=2, FS_MAXINODE=3, FS_NRDQUOT=4, FS_MAXDQUOT=5, FS_NRFILE=6, FS_MAXFILE=7, FS_DENTRY=8, FS_NRSUPER=9, FS_MAXSUPER=10, FS_OVERFLOWUID=11, FS_OVERFLOWGID=12, FS_LEASES=13, FS_DIR_NOTIFY=14, FS_LEASE_TIME=15, FS_DQSTATS=16, FS_XFS=17, FS_AIO_NR=18, FS_AIO_MAX_NR=19, FS_INOTIFY=20, FS_OCFS2=988, }; enum { FS_DQ_LOOKUPS = 1, FS_DQ_DROPS = 2, FS_DQ_READS = 3, FS_DQ_WRITES = 4, FS_DQ_CACHE_HITS = 5, FS_DQ_ALLOCATED = 6, FS_DQ_FREE = 7, FS_DQ_SYNCS = 8, FS_DQ_WARNINGS = 9, }; enum { DEV_CDROM=1, DEV_HWMON=2, DEV_PARPORT=3, DEV_RAID=4, DEV_MAC_HID=5, DEV_SCSI=6, DEV_IPMI=7, }; enum { DEV_CDROM_INFO=1, DEV_CDROM_AUTOCLOSE=2, DEV_CDROM_AUTOEJECT=3, DEV_CDROM_DEBUG=4, DEV_CDROM_LOCK=5, DEV_CDROM_CHECK_MEDIA=6 }; enum { DEV_PARPORT_DEFAULT=-3 }; enum { DEV_RAID_SPEED_LIMIT_MIN=1, DEV_RAID_SPEED_LIMIT_MAX=2 }; enum { DEV_PARPORT_DEFAULT_TIMESLICE=1, DEV_PARPORT_DEFAULT_SPINTIME=2 }; enum { DEV_PARPORT_SPINTIME=1, DEV_PARPORT_BASE_ADDR=2, DEV_PARPORT_IRQ=3, DEV_PARPORT_DMA=4, DEV_PARPORT_MODES=5, DEV_PARPORT_DEVICES=6, DEV_PARPORT_AUTOPROBE=16 }; enum { DEV_PARPORT_DEVICES_ACTIVE=-3, }; enum { DEV_PARPORT_DEVICE_TIMESLICE=1, }; enum { DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES=1, DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES=2, DEV_MAC_HID_MOUSE_BUTTON_EMULATION=3, DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE=4, DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE=5, DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES=6 }; enum { DEV_SCSI_LOGGING_LEVEL=1, }; enum { DEV_IPMI_POWEROFF_POWERCYCLE=1, }; enum { ABI_DEFHANDLER_COFF=1, ABI_DEFHANDLER_ELF=2, ABI_DEFHANDLER_LCALL7=3, ABI_DEFHANDLER_LIBCSO=4, ABI_TRACE=5, ABI_FAKE_UTSNAME=6, }; # 31 "../include/linux/sysctl.h" 2 struct completion; struct ctl_table; struct nsproxy; struct ctl_table_root; struct ctl_table_header; struct ctl_dir; extern const int sysctl_vals[]; typedef int proc_handler (struct ctl_table *ctl, int write, void *buffer, size_t *lenp, loff_t *ppos); extern int proc_dostring(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_dointvec(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_douintvec(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_dointvec_minmax(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_douintvec_minmax(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); extern int proc_dointvec_jiffies(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_dointvec_userhz_jiffies(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_dointvec_ms_jiffies(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_doulongvec_minmax(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int, void *, size_t *, loff_t *); extern int proc_do_large_bitmap(struct ctl_table *, int, void *, size_t *, loff_t *); extern int proc_do_static_key(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); # 105 "../include/linux/sysctl.h" struct ctl_table_poll { atomic_t event; wait_queue_head_t wait; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *proc_sys_poll_event(struct ctl_table_poll *poll) { return (void *)(unsigned long)atomic_read(&poll->event); } # 123 "../include/linux/sysctl.h" struct ctl_table { const char *procname; void *data; int maxlen; umode_t mode; struct ctl_table *child; proc_handler *proc_handler; struct ctl_table_poll *poll; void *extra1; void *extra2; } ; struct ctl_node { struct rb_node node; struct ctl_table_header *header; }; struct ctl_table_header { union { struct { struct ctl_table *ctl_table; int used; int count; int nreg; }; struct callback_head rcu; }; struct completion *unregistering; struct ctl_table *ctl_table_arg; struct ctl_table_root *root; struct ctl_table_set *set; struct ctl_dir *parent; struct ctl_node *node; struct hlist_head inodes; }; struct ctl_dir { struct ctl_table_header header; struct rb_root root; }; struct ctl_table_set { int (*is_seen)(struct ctl_table_set *); struct ctl_dir dir; }; struct ctl_table_root { struct ctl_table_set default_set; struct ctl_table_set *(*lookup)(struct ctl_table_root *root); void (*set_ownership)(struct ctl_table_header *head, struct ctl_table *table, kuid_t *uid, kgid_t *gid); int (*permissions)(struct ctl_table_header *head, struct ctl_table *table); }; struct ctl_path { const char *procname; }; void proc_sys_poll_notify(struct ctl_table_poll *poll); extern void setup_sysctl_set(struct ctl_table_set *p, struct ctl_table_root *root, int (*is_seen)(struct ctl_table_set *)); extern void retire_sysctl_set(struct ctl_table_set *set); struct ctl_table_header *__register_sysctl_table( struct ctl_table_set *set, const char *path, struct ctl_table *table); struct ctl_table_header *__register_sysctl_paths( struct ctl_table_set *set, const struct ctl_path *path, struct ctl_table *table); struct ctl_table_header *register_sysctl(const char *path, struct ctl_table *table); struct ctl_table_header *register_sysctl_table(struct ctl_table * table); struct ctl_table_header *register_sysctl_paths(const struct ctl_path *path, struct ctl_table *table); void unregister_sysctl_table(struct ctl_table_header * table); extern int sysctl_init(void); extern struct ctl_table sysctl_mount_point[]; # 243 "../include/linux/sysctl.h" int sysctl_max_threads(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); # 10 "../include/linux/umh.h" 2 struct cred; struct file; struct subprocess_info { struct work_struct work; struct completion *complete; const char *path; char **argv; char **envp; struct file *file; int wait; int retval; pid_t pid; int (*init)(struct subprocess_info *info, struct cred *new); void (*cleanup)(struct subprocess_info *info); void *data; } ; extern int call_usermodehelper(const char *path, char **argv, char **envp, int wait); extern struct subprocess_info * call_usermodehelper_setup(const char *path, char **argv, char **envp, gfp_t gfp_mask, int (*init)(struct subprocess_info *info, struct cred *new), void (*cleanup)(struct subprocess_info *), void *data); struct subprocess_info *call_usermodehelper_setup_file(struct file *file, int (*init)(struct subprocess_info *info, struct cred *new), void (*cleanup)(struct subprocess_info *), void *data); struct umh_info { const char *cmdline; struct file *pipe_to_umh; struct file *pipe_from_umh; struct list_head list; void (*cleanup)(struct umh_info *info); pid_t pid; }; int fork_usermode_blob(void *data, size_t len, struct umh_info *info); extern int call_usermodehelper_exec(struct subprocess_info *info, int wait); extern struct ctl_table usermodehelper_table[]; enum umh_disable_depth { UMH_ENABLED = 0, UMH_FREEZING, UMH_DISABLED, }; extern int __usermodehelper_disable(enum umh_disable_depth depth); extern void __usermodehelper_set_disable_depth(enum umh_disable_depth depth); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int usermodehelper_disable(void) { return __usermodehelper_disable(UMH_DISABLED); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void usermodehelper_enable(void) { __usermodehelper_set_disable_depth(UMH_ENABLED); } extern int usermodehelper_read_trylock(void); extern long usermodehelper_read_lock_wait(long timeout); extern void usermodehelper_read_unlock(void); # 10 "../include/linux/kmod.h" 2 # 20 "../include/linux/kmod.h" extern char modprobe_path[]; extern __attribute__((__format__(printf, 2, 3))) int __request_module(bool wait, const char *name, ...); # 14 "../include/linux/module.h" 2 # 1 "../include/linux/elf.h" 1 # 1 "../arch/x86/include/asm/elf.h" 1 # 11 "../arch/x86/include/asm/elf.h" # 1 "../arch/x86/include/asm/user.h" 1 # 1 "../arch/x86/include/asm/user_64.h" 1 # 51 "../arch/x86/include/asm/user_64.h" struct user_i387_struct { unsigned short cwd; unsigned short swd; unsigned short twd; unsigned short fop; __u64 rip; __u64 rdp; __u32 mxcsr; __u32 mxcsr_mask; __u32 st_space[32]; __u32 xmm_space[64]; __u32 padding[24]; }; struct user_regs_struct { unsigned long r15; unsigned long r14; unsigned long r13; unsigned long r12; unsigned long bp; unsigned long bx; unsigned long r11; unsigned long r10; unsigned long r9; unsigned long r8; unsigned long ax; unsigned long cx; unsigned long dx; unsigned long si; unsigned long di; unsigned long orig_ax; unsigned long ip; unsigned long cs; unsigned long flags; unsigned long sp; unsigned long ss; unsigned long fs_base; unsigned long gs_base; unsigned long ds; unsigned long es; unsigned long fs; unsigned long gs; }; struct user { struct user_regs_struct regs; int u_fpvalid; int pad0; struct user_i387_struct i387; unsigned long int u_tsize; unsigned long int u_dsize; unsigned long int u_ssize; unsigned long start_code; unsigned long start_stack; long int signal; int reserved; int pad1; unsigned long u_ar0; struct user_i387_struct *u_fpstate; unsigned long magic; char u_comm[32]; unsigned long u_debugreg[8]; unsigned long error_code; unsigned long fault_address; }; # 9 "../arch/x86/include/asm/user.h" 2 struct user_ymmh_regs { __u32 ymmh_space[64]; }; struct user_xstate_header { __u64 xfeatures; __u64 reserved1[2]; __u64 reserved2[5]; }; # 54 "../arch/x86/include/asm/user.h" struct user_xstateregs { struct { __u64 fpx_space[58]; __u64 xstate_fx_sw[6]; } i387; struct user_xstate_header header; struct user_ymmh_regs ymmh; }; # 12 "../arch/x86/include/asm/elf.h" 2 # 1 "../arch/x86/include/asm/fsgsbase.h" 1 # 17 "../arch/x86/include/asm/fsgsbase.h" extern unsigned long x86_fsbase_read_task(struct task_struct *task); extern unsigned long x86_gsbase_read_task(struct task_struct *task); extern void x86_fsbase_write_task(struct task_struct *task, unsigned long fsbase); extern void x86_gsbase_write_task(struct task_struct *task, unsigned long gsbase); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long rdfsbase(void) { unsigned long fsbase; asm volatile("rdfsbase %0" : "=r" (fsbase) :: "memory"); return fsbase; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long rdgsbase(void) { unsigned long gsbase; asm volatile("rdgsbase %0" : "=r" (gsbase) :: "memory"); return gsbase; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void wrfsbase(unsigned long fsbase) { asm volatile("wrfsbase %0" :: "r" (fsbase) : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void wrgsbase(unsigned long gsbase) { asm volatile("wrgsbase %0" :: "r" (gsbase) : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long x86_fsbase_read_cpu(void) { unsigned long fsbase; if (( __builtin_constant_p((__builtin_constant_p(( 9*32+ 0)) && ( (((( 9*32+ 0))>>5)==(0) && (1UL<<((( 9*32+ 0))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 9*32+ 0))>>5)==(1) && (1UL<<((( 9*32+ 0))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 9*32+ 0))>>5)==(2) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(3) && (1UL<<((( 9*32+ 0))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 9*32+ 0))>>5)==(4) && (1UL<<((( 9*32+ 0))&31) & (0) )) || (((( 9*32+ 0))>>5)==(5) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(6) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(7) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(8) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(9) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(10) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(11) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(12) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(13) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(14) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(15) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(16) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(17) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(18) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 9*32+ 0), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p(( 9*32+ 0)) && ( (((( 9*32+ 0))>>5)==(0) && (1UL<<((( 9*32+ 0))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 9*32+ 0))>>5)==(1) && (1UL<<((( 9*32+ 0))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 9*32+ 0))>>5)==(2) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(3) && (1UL<<((( 9*32+ 0))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 9*32+ 0))>>5)==(4) && (1UL<<((( 9*32+ 0))&31) & (0) )) || (((( 9*32+ 0))>>5)==(5) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(6) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(7) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(8) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(9) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(10) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(11) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(12) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(13) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(14) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(15) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(16) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(17) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(18) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 9*32+ 0), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has(( 9*32+ 0)) )) fsbase = rdfsbase(); else do { fsbase = paravirt_read_msr(0xc0000100); } while (0); return fsbase; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void x86_fsbase_write_cpu(unsigned long fsbase) { if (( __builtin_constant_p((__builtin_constant_p(( 9*32+ 0)) && ( (((( 9*32+ 0))>>5)==(0) && (1UL<<((( 9*32+ 0))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 9*32+ 0))>>5)==(1) && (1UL<<((( 9*32+ 0))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 9*32+ 0))>>5)==(2) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(3) && (1UL<<((( 9*32+ 0))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 9*32+ 0))>>5)==(4) && (1UL<<((( 9*32+ 0))&31) & (0) )) || (((( 9*32+ 0))>>5)==(5) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(6) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(7) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(8) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(9) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(10) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(11) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(12) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(13) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(14) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(15) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(16) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(17) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(18) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 9*32+ 0), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p(( 9*32+ 0)) && ( (((( 9*32+ 0))>>5)==(0) && (1UL<<((( 9*32+ 0))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 9*32+ 0))>>5)==(1) && (1UL<<((( 9*32+ 0))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 9*32+ 0))>>5)==(2) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(3) && (1UL<<((( 9*32+ 0))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 9*32+ 0))>>5)==(4) && (1UL<<((( 9*32+ 0))&31) & (0) )) || (((( 9*32+ 0))>>5)==(5) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(6) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(7) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(8) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(9) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(10) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(11) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(12) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(13) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(14) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(15) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(16) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(17) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (((( 9*32+ 0))>>5)==(18) && (1UL<<((( 9*32+ 0))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 9*32+ 0), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has(( 9*32+ 0)) )) wrfsbase(fsbase); else wrmsrl(0xc0000100, fsbase); } extern unsigned long x86_gsbase_read_cpu_inactive(void); extern void x86_gsbase_write_cpu_inactive(unsigned long gsbase); # 14 "../arch/x86/include/asm/elf.h" 2 typedef unsigned long elf_greg_t; typedef elf_greg_t elf_gregset_t[(sizeof(struct user_regs_struct) / sizeof(elf_greg_t))]; typedef struct user_i387_struct elf_fpregset_t; # 77 "../arch/x86/include/asm/elf.h" # 1 "../arch/x86/include/asm/vdso.h" 1 # 13 "../arch/x86/include/asm/vdso.h" struct vdso_image { void *data; unsigned long size; unsigned long alt, alt_len; long sym_vvar_start; long sym_vvar_page; long sym_pvclock_page; long sym_hvclock_page; long sym_VDSO32_NOTE_MASK; long sym___kernel_sigreturn; long sym___kernel_rt_sigreturn; long sym___kernel_vsyscall; long sym_int80_landing_pad; }; extern const struct vdso_image vdso_image_64; extern const struct vdso_image vdso_image_x32; extern const struct vdso_image vdso_image_32; extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) init_vdso_image(const struct vdso_image *image); extern int map_vdso_once(const struct vdso_image *image, unsigned long addr); # 78 "../arch/x86/include/asm/elf.h" 2 extern unsigned int vdso64_enabled; extern unsigned int vdso32_enabled; # 172 "../arch/x86/include/asm/elf.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void elf_common_init(struct thread_struct *t, struct pt_regs *regs, const u16 ds) { regs->bx = regs->cx = regs->dx = 0; regs->si = regs->di = regs->bp = 0; regs->r8 = regs->r9 = regs->r10 = regs->r11 = 0; regs->r12 = regs->r13 = regs->r14 = regs->r15 = 0; t->fsbase = t->gsbase = 0; t->fsindex = t->gsindex = 0; t->ds = t->es = ds; } void compat_start_thread(struct pt_regs *regs, u32 new_ip, u32 new_sp); void set_personality_ia32(bool); # 240 "../arch/x86/include/asm/elf.h" extern void set_personality_64bit(void); extern unsigned int sysctl_vsyscall32; extern int force_personality32; # 263 "../arch/x86/include/asm/elf.h" extern u32 elf_hwcap2; # 288 "../arch/x86/include/asm/elf.h" struct task_struct; # 301 "../arch/x86/include/asm/elf.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int mmap_is_ia32(void) { return 0 || (1 && test_ti_thread_flag(((struct thread_info *)get_current()), 29)); } extern unsigned long task_size_32bit(void); extern unsigned long task_size_64bit(int full_addr_space); extern unsigned long get_mmap_base(int is_legacy); extern bool mmap_address_hint_valid(unsigned long addr, unsigned long len); # 361 "../arch/x86/include/asm/elf.h" struct linux_binprm; extern int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp); extern int compat_arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp); enum align_flags { ALIGN_VA_32 = ((((1UL))) << (0)), ALIGN_VA_64 = ((((1UL))) << (1)), }; struct va_alignment { int flags; unsigned long mask; unsigned long bits; } __attribute__((__aligned__((1 << (6))))); extern struct va_alignment va_align; extern unsigned long align_vdso_addr(unsigned long); # 6 "../include/linux/elf.h" 2 # 1 "../include/uapi/linux/elf.h" 1 # 1 "../include/uapi/linux/elf-em.h" 1 # 7 "../include/uapi/linux/elf.h" 2 typedef __u32 Elf32_Addr; typedef __u16 Elf32_Half; typedef __u32 Elf32_Off; typedef __s32 Elf32_Sword; typedef __u32 Elf32_Word; typedef __u64 Elf64_Addr; typedef __u16 Elf64_Half; typedef __s16 Elf64_SHalf; typedef __u64 Elf64_Off; typedef __s32 Elf64_Sword; typedef __u32 Elf64_Word; typedef __u64 Elf64_Xword; typedef __s64 Elf64_Sxword; # 138 "../include/uapi/linux/elf.h" typedef struct dynamic{ Elf32_Sword d_tag; union{ Elf32_Sword d_val; Elf32_Addr d_ptr; } d_un; } Elf32_Dyn; typedef struct { Elf64_Sxword d_tag; union { Elf64_Xword d_val; Elf64_Addr d_ptr; } d_un; } Elf64_Dyn; # 161 "../include/uapi/linux/elf.h" typedef struct elf32_rel { Elf32_Addr r_offset; Elf32_Word r_info; } Elf32_Rel; typedef struct elf64_rel { Elf64_Addr r_offset; Elf64_Xword r_info; } Elf64_Rel; typedef struct elf32_rela{ Elf32_Addr r_offset; Elf32_Word r_info; Elf32_Sword r_addend; } Elf32_Rela; typedef struct elf64_rela { Elf64_Addr r_offset; Elf64_Xword r_info; Elf64_Sxword r_addend; } Elf64_Rela; typedef struct elf32_sym{ Elf32_Word st_name; Elf32_Addr st_value; Elf32_Word st_size; unsigned char st_info; unsigned char st_other; Elf32_Half st_shndx; } Elf32_Sym; typedef struct elf64_sym { Elf64_Word st_name; unsigned char st_info; unsigned char st_other; Elf64_Half st_shndx; Elf64_Addr st_value; Elf64_Xword st_size; } Elf64_Sym; typedef struct elf32_hdr{ unsigned char e_ident[16]; Elf32_Half e_type; Elf32_Half e_machine; Elf32_Word e_version; Elf32_Addr e_entry; Elf32_Off e_phoff; Elf32_Off e_shoff; Elf32_Word e_flags; Elf32_Half e_ehsize; Elf32_Half e_phentsize; Elf32_Half e_phnum; Elf32_Half e_shentsize; Elf32_Half e_shnum; Elf32_Half e_shstrndx; } Elf32_Ehdr; typedef struct elf64_hdr { unsigned char e_ident[16]; Elf64_Half e_type; Elf64_Half e_machine; Elf64_Word e_version; Elf64_Addr e_entry; Elf64_Off e_phoff; Elf64_Off e_shoff; Elf64_Word e_flags; Elf64_Half e_ehsize; Elf64_Half e_phentsize; Elf64_Half e_phnum; Elf64_Half e_shentsize; Elf64_Half e_shnum; Elf64_Half e_shstrndx; } Elf64_Ehdr; typedef struct elf32_phdr{ Elf32_Word p_type; Elf32_Off p_offset; Elf32_Addr p_vaddr; Elf32_Addr p_paddr; Elf32_Word p_filesz; Elf32_Word p_memsz; Elf32_Word p_flags; Elf32_Word p_align; } Elf32_Phdr; typedef struct elf64_phdr { Elf64_Word p_type; Elf64_Word p_flags; Elf64_Off p_offset; Elf64_Addr p_vaddr; Elf64_Addr p_paddr; Elf64_Xword p_filesz; Elf64_Xword p_memsz; Elf64_Xword p_align; } Elf64_Phdr; # 303 "../include/uapi/linux/elf.h" typedef struct elf32_shdr { Elf32_Word sh_name; Elf32_Word sh_type; Elf32_Word sh_flags; Elf32_Addr sh_addr; Elf32_Off sh_offset; Elf32_Word sh_size; Elf32_Word sh_link; Elf32_Word sh_info; Elf32_Word sh_addralign; Elf32_Word sh_entsize; } Elf32_Shdr; typedef struct elf64_shdr { Elf64_Word sh_name; Elf64_Word sh_type; Elf64_Xword sh_flags; Elf64_Addr sh_addr; Elf64_Off sh_offset; Elf64_Xword sh_size; Elf64_Word sh_link; Elf64_Word sh_info; Elf64_Xword sh_addralign; Elf64_Xword sh_entsize; } Elf64_Shdr; # 433 "../include/uapi/linux/elf.h" typedef struct elf32_note { Elf32_Word n_namesz; Elf32_Word n_descsz; Elf32_Word n_type; } Elf32_Nhdr; typedef struct elf64_note { Elf64_Word n_namesz; Elf64_Word n_descsz; Elf64_Word n_type; } Elf64_Nhdr; # 7 "../include/linux/elf.h" 2 # 37 "../include/linux/elf.h" extern Elf64_Dyn _DYNAMIC []; # 49 "../include/linux/elf.h" struct file; struct coredump_params; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int elf_coredump_extra_notes_size(void) { return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int elf_coredump_extra_notes_write(struct coredump_params *cprm) { return 0; } # 16 "../include/linux/module.h" 2 # 1 "../include/linux/moduleparam.h" 1 # 36 "../include/linux/moduleparam.h" struct kernel_param; enum { KERNEL_PARAM_OPS_FL_NOARG = (1 << 0) }; struct kernel_param_ops { unsigned int flags; int (*set)(const char *val, const struct kernel_param *kp); int (*get)(char *buffer, const struct kernel_param *kp); void (*free)(void *arg); }; enum { KERNEL_PARAM_FL_UNSAFE = (1 << 0), KERNEL_PARAM_FL_HWPARAM = (1 << 1), }; struct kernel_param { const char *name; struct module *mod; const struct kernel_param_ops *ops; const u16 perm; s8 level; u8 flags; union { void *arg; const struct kparam_string *str; const struct kparam_array *arr; }; }; extern const struct kernel_param __start___param[], __stop___param[]; struct kparam_string { unsigned int maxlen; char *string; }; struct kparam_array { unsigned int max; unsigned int elemsize; unsigned int *num; const struct kernel_param_ops *ops; void *elem; }; # 236 "../include/linux/moduleparam.h" extern void kernel_param_lock(struct module *mod); extern void kernel_param_unlock(struct module *mod); # 300 "../include/linux/moduleparam.h" extern bool parameq(const char *name1, const char *name2); # 310 "../include/linux/moduleparam.h" extern bool parameqn(const char *name1, const char *name2, size_t n); extern char *parse_args(const char *name, char *args, const struct kernel_param *params, unsigned num, s16 level_min, s16 level_max, void *arg, int (*unknown)(char *param, char *val, const char *doing, void *arg)); extern void destroy_params(const struct kernel_param *params, unsigned num); # 339 "../include/linux/moduleparam.h" extern const struct kernel_param_ops param_ops_byte; extern int param_set_byte(const char *val, const struct kernel_param *kp); extern int param_get_byte(char *buffer, const struct kernel_param *kp); extern const struct kernel_param_ops param_ops_short; extern int param_set_short(const char *val, const struct kernel_param *kp); extern int param_get_short(char *buffer, const struct kernel_param *kp); extern const struct kernel_param_ops param_ops_ushort; extern int param_set_ushort(const char *val, const struct kernel_param *kp); extern int param_get_ushort(char *buffer, const struct kernel_param *kp); extern const struct kernel_param_ops param_ops_int; extern int param_set_int(const char *val, const struct kernel_param *kp); extern int param_get_int(char *buffer, const struct kernel_param *kp); extern const struct kernel_param_ops param_ops_uint; extern int param_set_uint(const char *val, const struct kernel_param *kp); extern int param_get_uint(char *buffer, const struct kernel_param *kp); extern const struct kernel_param_ops param_ops_long; extern int param_set_long(const char *val, const struct kernel_param *kp); extern int param_get_long(char *buffer, const struct kernel_param *kp); extern const struct kernel_param_ops param_ops_ulong; extern int param_set_ulong(const char *val, const struct kernel_param *kp); extern int param_get_ulong(char *buffer, const struct kernel_param *kp); extern const struct kernel_param_ops param_ops_ullong; extern int param_set_ullong(const char *val, const struct kernel_param *kp); extern int param_get_ullong(char *buffer, const struct kernel_param *kp); extern const struct kernel_param_ops param_ops_charp; extern int param_set_charp(const char *val, const struct kernel_param *kp); extern int param_get_charp(char *buffer, const struct kernel_param *kp); extern void param_free_charp(void *arg); extern const struct kernel_param_ops param_ops_bool; extern int param_set_bool(const char *val, const struct kernel_param *kp); extern int param_get_bool(char *buffer, const struct kernel_param *kp); extern const struct kernel_param_ops param_ops_bool_enable_only; extern int param_set_bool_enable_only(const char *val, const struct kernel_param *kp); extern const struct kernel_param_ops param_ops_invbool; extern int param_set_invbool(const char *val, const struct kernel_param *kp); extern int param_get_invbool(char *buffer, const struct kernel_param *kp); extern const struct kernel_param_ops param_ops_bint; extern int param_set_bint(const char *val, const struct kernel_param *kp); # 447 "../include/linux/moduleparam.h" enum hwparam_type { hwparam_ioport, hwparam_iomem, hwparam_ioport_or_iomem, hwparam_irq, hwparam_dma, hwparam_dma_addr, hwparam_other, }; # 508 "../include/linux/moduleparam.h" extern const struct kernel_param_ops param_array_ops; extern const struct kernel_param_ops param_ops_string; extern int param_set_copystring(const char *val, const struct kernel_param *); extern int param_get_string(char *buffer, const struct kernel_param *kp); struct module; extern int module_param_sysfs_setup(struct module *mod, const struct kernel_param *kparam, unsigned int num_params); extern void module_param_sysfs_remove(struct module *mod); # 19 "../include/linux/module.h" 2 # 1 "../include/linux/rbtree_latch.h" 1 # 40 "../include/linux/rbtree_latch.h" struct latch_tree_node { struct rb_node node[2]; }; struct latch_tree_root { seqcount_t seq; struct rb_root tree[2]; }; # 64 "../include/linux/rbtree_latch.h" struct latch_tree_ops { bool (*less)(struct latch_tree_node *a, struct latch_tree_node *b); int (*comp)(void *key, struct latch_tree_node *b); }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) struct latch_tree_node * __lt_from_rb(struct rb_node *node, int idx) { return ({ void *__mptr = (void *)(node); do { extern void __compiletime_assert_72(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(node)), typeof(((struct latch_tree_node *)0)->node[idx])) && !__builtin_types_compatible_p(typeof(*(node)), typeof(void))))) __compiletime_assert_72(); } while (0); ((struct latch_tree_node *)(__mptr - __builtin_offsetof(struct latch_tree_node, node[idx]))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __lt_insert(struct latch_tree_node *ltn, struct latch_tree_root *ltr, int idx, bool (*less)(struct latch_tree_node *a, struct latch_tree_node *b)) { struct rb_root *root = <r->tree[idx]; struct rb_node **link = &root->rb_node; struct rb_node *node = <n->node[idx]; struct rb_node *parent = ((void *)0); struct latch_tree_node *ltp; while (*link) { parent = *link; ltp = __lt_from_rb(parent, idx); if (less(ltn, ltp)) link = &parent->rb_left; else link = &parent->rb_right; } rb_link_node_rcu(node, parent, link); rb_insert_color(node, root); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __lt_erase(struct latch_tree_node *ltn, struct latch_tree_root *ltr, int idx) { rb_erase(<n->node[idx], <r->tree[idx]); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) struct latch_tree_node * __lt_find(void *key, struct latch_tree_root *ltr, int idx, int (*comp)(void *key, struct latch_tree_node *node)) { struct rb_node *node = ({ typeof(ltr->tree[idx].rb_node) ________p1 = ({ union { typeof(ltr->tree[idx].rb_node) __val; char __c[1]; } __u; if (1) __read_once_size(&(ltr->tree[idx].rb_node), __u.__c, sizeof(ltr->tree[idx].rb_node)); else __read_once_size_nocheck(&(ltr->tree[idx].rb_node), __u.__c, sizeof(ltr->tree[idx].rb_node)); do { } while (0); __u.__val; }); ((typeof(*ltr->tree[idx].rb_node) *)(________p1)); }); struct latch_tree_node *ltn; int c; while (node) { ltn = __lt_from_rb(node, idx); c = comp(key, ltn); if (c < 0) node = ({ typeof(node->rb_left) ________p1 = ({ union { typeof(node->rb_left) __val; char __c[1]; } __u; if (1) __read_once_size(&(node->rb_left), __u.__c, sizeof(node->rb_left)); else __read_once_size_nocheck(&(node->rb_left), __u.__c, sizeof(node->rb_left)); do { } while (0); __u.__val; }); ((typeof(*node->rb_left) *)(________p1)); }); else if (c > 0) node = ({ typeof(node->rb_right) ________p1 = ({ union { typeof(node->rb_right) __val; char __c[1]; } __u; if (1) __read_once_size(&(node->rb_right), __u.__c, sizeof(node->rb_right)); else __read_once_size_nocheck(&(node->rb_right), __u.__c, sizeof(node->rb_right)); do { } while (0); __u.__val; }); ((typeof(*node->rb_right) *)(________p1)); }); else return ltn; } return ((void *)0); } # 143 "../include/linux/rbtree_latch.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void latch_tree_insert(struct latch_tree_node *node, struct latch_tree_root *root, const struct latch_tree_ops *ops) { raw_write_seqcount_latch(&root->seq); __lt_insert(node, root, 0, ops->less); raw_write_seqcount_latch(&root->seq); __lt_insert(node, root, 1, ops->less); } # 170 "../include/linux/rbtree_latch.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void latch_tree_erase(struct latch_tree_node *node, struct latch_tree_root *root, const struct latch_tree_ops *ops) { raw_write_seqcount_latch(&root->seq); __lt_erase(node, root, 0); raw_write_seqcount_latch(&root->seq); __lt_erase(node, root, 1); } # 199 "../include/linux/rbtree_latch.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) struct latch_tree_node * latch_tree_find(void *key, struct latch_tree_root *root, const struct latch_tree_ops *ops) { struct latch_tree_node *node; unsigned int seq; do { seq = raw_read_seqcount_latch(&root->seq); node = __lt_find(key, root, seq & 1, ops->comp); } while (read_seqcount_retry(&root->seq, seq)); return node; } # 22 "../include/linux/module.h" 2 # 1 "../include/linux/error-injection.h" 1 # 1 "../arch/x86/include/asm/error-injection.h" 1 # 1 "../include/asm-generic/error-injection.h" 1 enum { EI_ETYPE_NONE, EI_ETYPE_NULL, EI_ETYPE_ERRNO, EI_ETYPE_ERRNO_NULL, EI_ETYPE_TRUE, }; struct error_injection_entry { unsigned long addr; int etype; }; # 9 "../arch/x86/include/asm/error-injection.h" 2 void just_return_func(void); void override_function_with_return(struct pt_regs *regs); # 8 "../include/linux/error-injection.h" 2 extern bool within_error_injection_list(unsigned long addr); extern int get_injectable_error_type(unsigned long addr); # 23 "../include/linux/module.h" 2 # 1 "../arch/x86/include/asm/module.h" 1 # 1 "../include/asm-generic/module.h" 1 # 6 "../arch/x86/include/asm/module.h" 2 struct mod_arch_specific { unsigned int num_orcs; int *orc_unwind_ip; struct orc_entry *orc_unwind; }; # 28 "../include/linux/module.h" 2 # 37 "../include/linux/module.h" struct modversion_info { unsigned long crc; char name[(64 - sizeof(unsigned long))]; }; struct module; struct exception_table_entry; struct module_kobject { struct kobject kobj; struct module *mod; struct kobject *drivers_dir; struct module_param_attrs *mp; struct completion *kobj_completion; } ; struct module_attribute { struct attribute attr; ssize_t (*show)(struct module_attribute *, struct module_kobject *, char *); ssize_t (*store)(struct module_attribute *, struct module_kobject *, const char *, size_t count); void (*setup)(struct module *, const char *); int (*test)(struct module *); void (*free)(struct module *); }; struct module_version_attribute { struct module_attribute mattr; const char *module_name; const char *version; } __attribute__ ((__aligned__(sizeof(void *)))); extern ssize_t __modver_version_show(struct module_attribute *, struct module_kobject *, char *); extern struct module_attribute module_uevent; extern int init_module(void); extern void cleanup_module(void); # 279 "../include/linux/module.h" struct notifier_block; extern int modules_disabled; void *__symbol_get(const char *symbol); void *__symbol_get_gpl(const char *symbol); struct module_use { struct list_head source_list; struct list_head target_list; struct module *source, *target; }; enum module_state { MODULE_STATE_LIVE, MODULE_STATE_COMING, MODULE_STATE_GOING, MODULE_STATE_UNFORMED, }; struct mod_tree_node { struct module *mod; struct latch_tree_node node; }; struct module_layout { void *base; unsigned int size; unsigned int text_size; unsigned int ro_size; unsigned int ro_after_init_size; struct mod_tree_node mtn; }; # 332 "../include/linux/module.h" struct mod_kallsyms { Elf64_Sym *symtab; unsigned int num_symtab; char *strtab; char *typetab; }; struct klp_modinfo { Elf64_Ehdr hdr; Elf64_Shdr *sechdrs; char *secstrings; unsigned int symndx; }; struct module { enum module_state state; struct list_head list; char name[(64 - sizeof(unsigned long))]; struct module_kobject mkobj; struct module_attribute *modinfo_attrs; const char *version; const char *srcversion; struct kobject *holders_dir; const struct kernel_symbol *syms; const s32 *crcs; unsigned int num_syms; struct mutex param_lock; struct kernel_param *kp; unsigned int num_kp; unsigned int num_gpl_syms; const struct kernel_symbol *gpl_syms; const s32 *gpl_crcs; const struct kernel_symbol *unused_syms; const s32 *unused_crcs; unsigned int num_unused_syms; unsigned int num_unused_gpl_syms; const struct kernel_symbol *unused_gpl_syms; const s32 *unused_gpl_crcs; bool sig_ok; bool async_probe_requested; const struct kernel_symbol *gpl_future_syms; const s32 *gpl_future_crcs; unsigned int num_gpl_future_syms; unsigned int num_exentries; struct exception_table_entry *extable; int (*init)(void); struct module_layout core_layout __attribute__((__aligned__((1 << (6))))); struct module_layout init_layout; struct mod_arch_specific arch; unsigned long taints; unsigned num_bugs; struct list_head bug_list; struct bug_entry *bug_table; struct mod_kallsyms *kallsyms; struct mod_kallsyms core_kallsyms; struct module_sect_attrs *sect_attrs; struct module_notes_attrs *notes_attrs; char *args; void *percpu; unsigned int percpu_size; unsigned int num_tracepoints; tracepoint_ptr_t *tracepoints_ptrs; unsigned int num_srcu_structs; struct srcu_struct **srcu_struct_ptrs; unsigned int num_bpf_raw_events; struct bpf_raw_event_map *bpf_raw_events; struct jump_entry *jump_entries; unsigned int num_jump_entries; unsigned int num_trace_bprintk_fmt; const char **trace_bprintk_fmt_start; struct trace_event_call **trace_events; unsigned int num_trace_events; struct trace_eval_map **trace_evals; unsigned int num_trace_evals; unsigned int num_ftrace_callsites; unsigned long *ftrace_callsites; bool klp; bool klp_alive; struct klp_modinfo *klp_info; struct list_head source_list; struct list_head target_list; void (*exit)(void); atomic_t refcnt; ctor_fn_t *ctors; unsigned int num_ctors; struct error_injection_entry *ei_funcs; unsigned int num_ei_funcs; } __attribute__((__aligned__((1 << (6))))) ; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long kallsyms_symbol_value(const Elf64_Sym *sym) { return sym->st_value; } extern struct mutex module_mutex; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool module_is_live(struct module *mod) { return mod->state != MODULE_STATE_GOING; } struct module *__module_text_address(unsigned long addr); struct module *__module_address(unsigned long addr); bool is_module_address(unsigned long addr); bool __is_module_percpu_address(unsigned long addr, unsigned long *can_addr); bool is_module_percpu_address(unsigned long addr); bool is_module_text_address(unsigned long addr); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool within_module_core(unsigned long addr, const struct module *mod) { return (unsigned long)mod->core_layout.base <= addr && addr < (unsigned long)mod->core_layout.base + mod->core_layout.size; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool within_module_init(unsigned long addr, const struct module *mod) { return (unsigned long)mod->init_layout.base <= addr && addr < (unsigned long)mod->init_layout.base + mod->init_layout.size; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool within_module(unsigned long addr, const struct module *mod) { return within_module_init(addr, mod) || within_module_core(addr, mod); } struct module *find_module(const char *name); struct symsearch { const struct kernel_symbol *start, *stop; const s32 *crcs; enum { NOT_GPL_ONLY, GPL_ONLY, WILL_BE_GPL_ONLY, } licence; bool unused; }; const struct kernel_symbol *find_symbol(const char *name, struct module **owner, const s32 **crc, bool gplok, bool warn); bool each_symbol_section(bool (*fn)(const struct symsearch *arr, struct module *owner, void *data), void *data); int module_get_kallsym(unsigned int symnum, unsigned long *value, char *type, char *name, char *module_name, int *exported); unsigned long module_kallsyms_lookup_name(const char *name); int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *, struct module *, unsigned long), void *data); extern void __attribute__((__noreturn__)) __module_put_and_exit(struct module *mod, long code); int module_refcount(struct module *mod); void __symbol_put(const char *symbol); void symbol_put_addr(void *addr); extern void __module_get(struct module *module); extern bool try_module_get(struct module *module); extern void module_put(struct module *module); # 640 "../include/linux/module.h" int ref_module(struct module *a, struct module *b); # 650 "../include/linux/module.h" void *dereference_module_function_descriptor(struct module *mod, void *ptr); const char *module_address_lookup(unsigned long addr, unsigned long *symbolsize, unsigned long *offset, char **modname, char *namebuf); int lookup_module_symbol_name(unsigned long addr, char *symname); int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name); int register_module_notifier(struct notifier_block *nb); int unregister_module_notifier(struct notifier_block *nb); extern void print_modules(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool module_requested_async_probing(struct module *module) { return module && module->async_probe_requested; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_livepatch_module(struct module *mod) { return mod->klp; } bool is_module_sig_enforced(void); void set_module_sig_enforced(void); # 838 "../include/linux/module.h" extern struct kset *module_kset; extern struct kobj_type module_ktype; extern int module_sysfs_initialized; # 850 "../include/linux/module.h" extern void set_all_modules_text_rw(void); extern void set_all_modules_text_ro(void); extern void module_enable_ro(const struct module *mod, bool after_init); extern void module_disable_ro(const struct module *mod); # 862 "../include/linux/module.h" void module_bug_finalize(const Elf64_Ehdr *, const Elf64_Shdr *, struct module *); void module_bug_cleanup(struct module *); # 877 "../include/linux/module.h" extern bool retpoline_module_ok(bool has_retpoline); # 886 "../include/linux/module.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool module_sig_ok(struct module *module) { return module->sig_ok; } # 10 "../include/linux/devcoredump.h" 2 # 1 "../include/linux/scatterlist.h" 1 # 1 "../include/linux/mm.h" 1 # 20 "../include/linux/mm.h" # 1 "../include/linux/percpu-refcount.h" 1 # 59 "../include/linux/percpu-refcount.h" struct percpu_ref; typedef void (percpu_ref_func_t)(struct percpu_ref *); enum { __PERCPU_REF_ATOMIC = 1LU << 0, __PERCPU_REF_DEAD = 1LU << 1, __PERCPU_REF_ATOMIC_DEAD = __PERCPU_REF_ATOMIC | __PERCPU_REF_DEAD, __PERCPU_REF_FLAG_BITS = 2, }; enum { PERCPU_REF_INIT_ATOMIC = 1 << 0, PERCPU_REF_INIT_DEAD = 1 << 1, PERCPU_REF_ALLOW_REINIT = 1 << 2, }; struct percpu_ref { atomic_long_t count; unsigned long percpu_count_ptr; percpu_ref_func_t *release; percpu_ref_func_t *confirm_switch; bool force_atomic:1; bool allow_reinit:1; struct callback_head rcu; }; int __attribute__((__warn_unused_result__)) percpu_ref_init(struct percpu_ref *ref, percpu_ref_func_t *release, unsigned int flags, gfp_t gfp); void percpu_ref_exit(struct percpu_ref *ref); void percpu_ref_switch_to_atomic(struct percpu_ref *ref, percpu_ref_func_t *confirm_switch); void percpu_ref_switch_to_atomic_sync(struct percpu_ref *ref); void percpu_ref_switch_to_percpu(struct percpu_ref *ref); void percpu_ref_kill_and_confirm(struct percpu_ref *ref, percpu_ref_func_t *confirm_kill); void percpu_ref_resurrect(struct percpu_ref *ref); void percpu_ref_reinit(struct percpu_ref *ref); # 134 "../include/linux/percpu-refcount.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void percpu_ref_kill(struct percpu_ref *ref) { percpu_ref_kill_and_confirm(ref, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __ref_is_percpu(struct percpu_ref *ref, unsigned long **percpu_countp) { unsigned long percpu_ptr; # 161 "../include/linux/percpu-refcount.h" percpu_ptr = ({ union { typeof(ref->percpu_count_ptr) __val; char __c[1]; } __u; if (1) __read_once_size(&(ref->percpu_count_ptr), __u.__c, sizeof(ref->percpu_count_ptr)); else __read_once_size_nocheck(&(ref->percpu_count_ptr), __u.__c, sizeof(ref->percpu_count_ptr)); do { } while (0); __u.__val; }); if (__builtin_expect(!!(percpu_ptr & __PERCPU_REF_ATOMIC_DEAD), 0)) return false; *percpu_countp = (unsigned long *)percpu_ptr; return true; } # 185 "../include/linux/percpu-refcount.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void percpu_ref_get_many(struct percpu_ref *ref, unsigned long nr) { unsigned long *percpu_count; rcu_read_lock_sched(); if (__ref_is_percpu(ref, &percpu_count)) do { do { const void *__vpp_verify = (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*percpu_count)) { case 1: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(nr) && ((nr) == 1 || (nr) == -1)) ? (int)(nr) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (nr); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(nr))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(nr))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(nr))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(nr))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(nr) && ((nr) == 1 || (nr) == -1)) ? (int)(nr) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (nr); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(nr))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(nr))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(nr))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(nr))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(nr) && ((nr) == 1 || (nr) == -1)) ? (int)(nr) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (nr); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(nr))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(nr))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(nr))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(nr))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(nr) && ((nr) == 1 || (nr) == -1)) ? (int)(nr) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (nr); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(nr))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(nr))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(nr))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(nr))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else atomic_long_add(nr, &ref->count); rcu_read_unlock_sched(); } # 207 "../include/linux/percpu-refcount.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void percpu_ref_get(struct percpu_ref *ref) { percpu_ref_get_many(ref, 1); } # 221 "../include/linux/percpu-refcount.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool percpu_ref_tryget(struct percpu_ref *ref) { unsigned long *percpu_count; bool ret; rcu_read_lock_sched(); if (__ref_is_percpu(ref, &percpu_count)) { do { do { const void *__vpp_verify = (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*percpu_count)) { case 1: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); ret = true; } else { ret = atomic_long_inc_not_zero(&ref->count); } rcu_read_unlock_sched(); return ret; } # 255 "../include/linux/percpu-refcount.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool percpu_ref_tryget_live(struct percpu_ref *ref) { unsigned long *percpu_count; bool ret = false; rcu_read_lock_sched(); if (__ref_is_percpu(ref, &percpu_count)) { do { do { const void *__vpp_verify = (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*percpu_count)) { case 1: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); ret = true; } else if (!(ref->percpu_count_ptr & __PERCPU_REF_DEAD)) { ret = atomic_long_inc_not_zero(&ref->count); } rcu_read_unlock_sched(); return ret; } # 284 "../include/linux/percpu-refcount.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void percpu_ref_put_many(struct percpu_ref *ref, unsigned long nr) { unsigned long *percpu_count; rcu_read_lock_sched(); if (__ref_is_percpu(ref, &percpu_count)) do { do { const void *__vpp_verify = (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*percpu_count)) { case 1: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(*percpu_count))(nr)) && ((-(typeof(*percpu_count))(nr)) == 1 || (-(typeof(*percpu_count))(nr)) == -1)) ? (int)(-(typeof(*percpu_count))(nr)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(*percpu_count))(nr)); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(*percpu_count))(nr)) && ((-(typeof(*percpu_count))(nr)) == 1 || (-(typeof(*percpu_count))(nr)) == -1)) ? (int)(-(typeof(*percpu_count))(nr)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(*percpu_count))(nr)); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(*percpu_count))(nr)) && ((-(typeof(*percpu_count))(nr)) == 1 || (-(typeof(*percpu_count))(nr)) == -1)) ? (int)(-(typeof(*percpu_count))(nr)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(*percpu_count))(nr)); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((*percpu_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(*percpu_count))(nr)) && ((-(typeof(*percpu_count))(nr)) == 1 || (-(typeof(*percpu_count))(nr)) == -1)) ? (int)(-(typeof(*percpu_count))(nr)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(*percpu_count))(nr)); (void)pao_tmp__; } switch (sizeof((*percpu_count))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "qi" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "ri" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*percpu_count))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*percpu_count)) : "re" ((pao_T__)(-(typeof(*percpu_count))(nr)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); else if (__builtin_expect(!!(atomic_long_sub_and_test(nr, &ref->count)), 0)) ref->release(ref); rcu_read_unlock_sched(); } # 307 "../include/linux/percpu-refcount.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void percpu_ref_put(struct percpu_ref *ref) { percpu_ref_put_many(ref, 1); } # 321 "../include/linux/percpu-refcount.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool percpu_ref_is_dying(struct percpu_ref *ref) { return ref->percpu_count_ptr & __PERCPU_REF_DEAD; } # 334 "../include/linux/percpu-refcount.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool percpu_ref_is_zero(struct percpu_ref *ref) { unsigned long *percpu_count; if (__ref_is_percpu(ref, &percpu_count)) return false; return !atomic_long_read(&ref->count); } # 21 "../include/linux/mm.h" 2 # 1 "../include/linux/bit_spinlock.h" 1 # 16 "../include/linux/bit_spinlock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bit_spin_lock(int bitnum, unsigned long *addr) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); while (__builtin_expect(!!(test_and_set_bit_lock(bitnum, addr)), 0)) { do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); do { cpu_relax(); } while (test_bit(bitnum, addr)); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); } (void)0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int bit_spin_trylock(int bitnum, unsigned long *addr) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (__builtin_expect(!!(test_and_set_bit_lock(bitnum, addr)), 0)) { do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); return 0; } (void)0; return 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bit_spin_unlock(int bitnum, unsigned long *addr) { do { if (__builtin_expect(!!(!test_bit(bitnum, addr)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/bit_spinlock.h"), "i" (60), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (339)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); clear_bit_unlock(bitnum, addr); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); (void)0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __bit_spin_unlock(int bitnum, unsigned long *addr) { do { if (__builtin_expect(!!(!test_bit(bitnum, addr)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/bit_spinlock.h"), "i" (77), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (340)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); __clear_bit_unlock(bitnum, addr); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); (void)0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int bit_spin_is_locked(int bitnum, unsigned long *addr) { return test_bit(bitnum, addr); } # 22 "../include/linux/mm.h" 2 # 1 "../include/linux/shrinker.h" 1 # 12 "../include/linux/shrinker.h" struct shrink_control { gfp_t gfp_mask; int nid; unsigned long nr_to_scan; unsigned long nr_scanned; struct mem_cgroup *memcg; }; # 60 "../include/linux/shrinker.h" struct shrinker { unsigned long (*count_objects)(struct shrinker *, struct shrink_control *sc); unsigned long (*scan_objects)(struct shrinker *, struct shrink_control *sc); long batch; int seeks; unsigned flags; struct list_head list; int id; atomic_long_t *nr_deferred; }; extern int prealloc_shrinker(struct shrinker *shrinker); extern void register_shrinker_prepared(struct shrinker *shrinker); extern int register_shrinker(struct shrinker *shrinker); extern void unregister_shrinker(struct shrinker *shrinker); extern void free_prealloced_shrinker(struct shrinker *shrinker); # 23 "../include/linux/mm.h" 2 # 1 "../include/linux/page_ext.h" 1 # 1 "../include/linux/stackdepot.h" 1 # 14 "../include/linux/stackdepot.h" typedef u32 depot_stack_handle_t; depot_stack_handle_t stack_depot_save(unsigned long *entries, unsigned int nr_entries, gfp_t gfp_flags); unsigned int stack_depot_fetch(depot_stack_handle_t handle, unsigned long **entries); # 8 "../include/linux/page_ext.h" 2 struct pglist_data; struct page_ext_operations { size_t offset; size_t size; bool (*need)(void); void (*init)(void); }; enum page_ext_flags { PAGE_EXT_OWNER, }; # 34 "../include/linux/page_ext.h" struct page_ext { unsigned long flags; }; extern void pgdat_page_ext_init(struct pglist_data *pgdat); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void page_ext_init_flatmem(void) { } extern void page_ext_init(void); struct page_ext *lookup_page_ext(const struct page *page); # 25 "../include/linux/mm.h" 2 # 1 "../include/linux/page_ref.h" 1 # 10 "../include/linux/page_ref.h" extern struct tracepoint __tracepoint_page_ref_set; extern struct tracepoint __tracepoint_page_ref_mod; extern struct tracepoint __tracepoint_page_ref_mod_and_test; extern struct tracepoint __tracepoint_page_ref_mod_and_return; extern struct tracepoint __tracepoint_page_ref_mod_unless; extern struct tracepoint __tracepoint_page_ref_freeze; extern struct tracepoint __tracepoint_page_ref_unfreeze; # 29 "../include/linux/page_ref.h" extern void __page_ref_set(struct page *page, int v); extern void __page_ref_mod(struct page *page, int v); extern void __page_ref_mod_and_test(struct page *page, int v, int ret); extern void __page_ref_mod_and_return(struct page *page, int v, int ret); extern void __page_ref_mod_unless(struct page *page, int v, int u); extern void __page_ref_freeze(struct page *page, int v, int ret); extern void __page_ref_unfreeze(struct page *page, int v); # 65 "../include/linux/page_ref.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_ref_count(struct page *page) { return atomic_read(&page->_refcount); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_count(struct page *page) { return atomic_read(&compound_head(page)->_refcount); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_page_count(struct page *page, int v) { atomic_set(&page->_refcount, v); if (static_key_false(&(__tracepoint_page_ref_set).key)) __page_ref_set(page, v); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void init_page_count(struct page *page) { set_page_count(page, 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void page_ref_add(struct page *page, int nr) { atomic_add(nr, &page->_refcount); if (static_key_false(&(__tracepoint_page_ref_mod).key)) __page_ref_mod(page, nr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void page_ref_sub(struct page *page, int nr) { atomic_sub(nr, &page->_refcount); if (static_key_false(&(__tracepoint_page_ref_mod).key)) __page_ref_mod(page, -nr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void page_ref_inc(struct page *page) { atomic_inc(&page->_refcount); if (static_key_false(&(__tracepoint_page_ref_mod).key)) __page_ref_mod(page, 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void page_ref_dec(struct page *page) { atomic_dec(&page->_refcount); if (static_key_false(&(__tracepoint_page_ref_mod).key)) __page_ref_mod(page, -1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_ref_sub_and_test(struct page *page, int nr) { int ret = atomic_sub_and_test(nr, &page->_refcount); if (static_key_false(&(__tracepoint_page_ref_mod_and_test).key)) __page_ref_mod_and_test(page, -nr, ret); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_ref_inc_return(struct page *page) { int ret = atomic_inc_return(&page->_refcount); if (static_key_false(&(__tracepoint_page_ref_mod_and_return).key)) __page_ref_mod_and_return(page, 1, ret); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_ref_dec_and_test(struct page *page) { int ret = atomic_dec_and_test(&page->_refcount); if (static_key_false(&(__tracepoint_page_ref_mod_and_test).key)) __page_ref_mod_and_test(page, -1, ret); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_ref_dec_return(struct page *page) { int ret = atomic_dec_return(&page->_refcount); if (static_key_false(&(__tracepoint_page_ref_mod_and_return).key)) __page_ref_mod_and_return(page, -1, ret); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_ref_add_unless(struct page *page, int nr, int u) { int ret = atomic_add_unless(&page->_refcount, nr, u); if (static_key_false(&(__tracepoint_page_ref_mod_unless).key)) __page_ref_mod_unless(page, nr, ret); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_ref_freeze(struct page *page, int count) { int ret = __builtin_expect(!!(atomic_cmpxchg(&page->_refcount, count, 0) == count), 1); if (static_key_false(&(__tracepoint_page_ref_freeze).key)) __page_ref_freeze(page, count, ret); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void page_ref_unfreeze(struct page *page, int count) { do { if (__builtin_expect(!!(page_count(page) != 0), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "page_count(page) != 0"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page_ref.h"), "i" (175), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (341)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); do { if (__builtin_expect(!!(count == 0), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/page_ref.h"), "i" (176), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (342)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); atomic_set_release(&page->_refcount, count); if (static_key_false(&(__tracepoint_page_ref_unfreeze).key)) __page_ref_unfreeze(page, count); } # 27 "../include/linux/mm.h" 2 # 1 "../include/linux/memremap.h" 1 struct resource; struct device; # 18 "../include/linux/memremap.h" struct vmem_altmap { const unsigned long base_pfn; const unsigned long reserve; unsigned long free; unsigned long align; unsigned long alloc; }; # 59 "../include/linux/memremap.h" enum memory_type { MEMORY_DEVICE_PRIVATE = 1, MEMORY_DEVICE_PUBLIC, MEMORY_DEVICE_FS_DAX, MEMORY_DEVICE_PCI_P2PDMA, }; # 75 "../include/linux/memremap.h" typedef void (*dev_page_free_t)(struct page *page, void *data); # 89 "../include/linux/memremap.h" struct dev_pagemap { dev_page_free_t page_free; struct vmem_altmap altmap; bool altmap_valid; struct resource res; struct percpu_ref *ref; void (*kill)(struct percpu_ref *ref); void (*cleanup)(struct percpu_ref *ref); struct device *dev; void *data; enum memory_type type; u64 pci_p2pdma_bus_offset; }; void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap); void devm_memunmap_pages(struct device *dev, struct dev_pagemap *pgmap); struct dev_pagemap *get_dev_pagemap(unsigned long pfn, struct dev_pagemap *pgmap); unsigned long vmem_altmap_offset(struct vmem_altmap *altmap); void vmem_altmap_free(struct vmem_altmap *altmap, unsigned long nr_pfns); # 146 "../include/linux/memremap.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void put_dev_pagemap(struct dev_pagemap *pgmap) { if (pgmap) percpu_ref_put(pgmap->ref); } # 28 "../include/linux/mm.h" 2 # 1 "../include/linux/sizes.h" 1 # 30 "../include/linux/mm.h" 2 struct mempolicy; struct anon_vma; struct anon_vma_chain; struct file_ra_state; struct user_struct; struct writeback_control; struct bdi_writeback; void init_mm_internals(void); # 49 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_max_mapnr(unsigned long limit) { } extern atomic_long_t _totalram_pages; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long totalram_pages(void) { return (unsigned long)atomic_long_read(&_totalram_pages); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void totalram_pages_inc(void) { atomic_long_inc(&_totalram_pages); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void totalram_pages_dec(void) { atomic_long_dec(&_totalram_pages); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void totalram_pages_add(long count) { atomic_long_add(count, &_totalram_pages); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void totalram_pages_set(long val) { atomic_long_set(&_totalram_pages, val); } extern void * high_memory; extern int page_cluster; extern int sysctl_legacy_va_layout; extern const int mmap_rnd_bits_min; extern const int mmap_rnd_bits_max; extern int mmap_rnd_bits __attribute__((__section__(".data..read_mostly"))); extern const int mmap_rnd_compat_bits_min; extern const int mmap_rnd_compat_bits_max; extern int mmap_rnd_compat_bits __attribute__((__section__(".data..read_mostly"))); # 1 "../arch/x86/include/asm/pgtable.h" 1 # 26 "../arch/x86/include/asm/pgtable.h" # 1 "../arch/x86/include/asm/fpu/xstate.h" 1 # 1 "../include/linux/uaccess.h" 1 # 11 "../include/linux/uaccess.h" # 1 "../arch/x86/include/asm/uaccess.h" 1 # 12 "../arch/x86/include/asm/uaccess.h" # 1 "../arch/x86/include/asm/smap.h" 1 # 44 "../arch/x86/include/asm/smap.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void clac(void) { asm volatile ("# ALT: oldnstr\n" "661:\n\t" "" "\n662:\n" "# ALT: padding\n" ".skip -(((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")) > 0) * " "((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")),0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 9*32+20)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" ".byte 0x0f,0x01,0xca" "\n" "665""1" ":\n" ".popsection\n" : : : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void stac(void) { asm volatile ("# ALT: oldnstr\n" "661:\n\t" "" "\n662:\n" "# ALT: padding\n" ".skip -(((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")) > 0) * " "((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")),0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 9*32+20)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" ".byte 0x0f,0x01,0xcb" "\n" "665""1" ":\n" ".popsection\n" : : : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long smap_save(void) { unsigned long flags; asm volatile ("# ALT: oldnstr\n" "661:\n\t" "" "\n662:\n" "# ALT: padding\n" ".skip -(((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")) > 0) * " "((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")),0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 9*32+20)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "pushf; pop %0; " ".byte 0x0f,0x01,0xca" "\n" "665""1" ":\n" ".popsection\n" : "=rm" (flags) : : "memory", "cc"); return flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void smap_restore(unsigned long flags) { asm volatile ("# ALT: oldnstr\n" "661:\n\t" "" "\n662:\n" "# ALT: padding\n" ".skip -(((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")) > 0) * " "((" "665""1""f-""664""1""f" ")-(" "662b-661b" ")),0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 9*32+20)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "push %0; popf" "\n" "665""1" ":\n" ".popsection\n" : : "g" (flags) : "memory", "cc"); } # 13 "../arch/x86/include/asm/uaccess.h" 2 # 1 "../arch/x86/include/asm/extable.h" 1 # 17 "../arch/x86/include/asm/extable.h" struct exception_table_entry { int insn, fixup, handler; }; struct pt_regs; # 32 "../arch/x86/include/asm/extable.h" extern int fixup_exception(struct pt_regs *regs, int trapnr, unsigned long error_code, unsigned long fault_addr); extern int fixup_bug(struct pt_regs *regs, int trapnr); extern bool ex_has_fault_handler(unsigned long ip); extern void early_fixup_exception(struct pt_regs *regs, int trapnr); # 14 "../arch/x86/include/asm/uaccess.h" 2 # 29 "../arch/x86/include/asm/uaccess.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_fs(mm_segment_t fs) { get_current()->thread.addr_limit = fs; set_ti_thread_flag(((struct thread_info *)get_current()), 31); } # 43 "../arch/x86/include/asm/uaccess.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __chk_range_not_ok(unsigned long addr, unsigned long size, unsigned long limit) { if (__builtin_constant_p(size)) return __builtin_expect(!!(addr > limit - size), 0); addr += size; if (__builtin_expect(!!(addr < size), 0)) return true; return __builtin_expect(!!(addr > limit), 0); } # 69 "../arch/x86/include/asm/uaccess.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pagefault_disabled(void); # 114 "../arch/x86/include/asm/uaccess.h" extern int __get_user_1(void); extern int __get_user_2(void); extern int __get_user_4(void); extern int __get_user_8(void); extern int __get_user_bad(void); # 216 "../arch/x86/include/asm/uaccess.h" extern void __put_user_bad(void); extern void __put_user_1(void); extern void __put_user_2(void); extern void __put_user_4(void); extern void __put_user_8(void); # 455 "../arch/x86/include/asm/uaccess.h" struct __large_struct { unsigned long buf[100]; }; # 575 "../arch/x86/include/asm/uaccess.h" extern unsigned long copy_from_user_nmi(void *to, const void *from, unsigned long n); extern __attribute__((__warn_unused_result__)) long strncpy_from_user(char *dst, const char *src, long count); extern __attribute__((__warn_unused_result__)) long strnlen_user(const char *str, long n); unsigned long __attribute__((__warn_unused_result__)) clear_user(void *mem, unsigned long len); unsigned long __attribute__((__warn_unused_result__)) __clear_user(void *mem, unsigned long len); extern void __cmpxchg_wrong_size(void) ; # 692 "../arch/x86/include/asm/uaccess.h" # 1 "../arch/x86/include/asm/uaccess_64.h" 1 # 20 "../arch/x86/include/asm/uaccess_64.h" __attribute__((__warn_unused_result__)) unsigned long copy_user_enhanced_fast_string(void *to, const void *from, unsigned len); __attribute__((__warn_unused_result__)) unsigned long copy_user_generic_string(void *to, const void *from, unsigned len); __attribute__((__warn_unused_result__)) unsigned long copy_user_generic_unrolled(void *to, const void *from, unsigned len); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __attribute__((__warn_unused_result__)) unsigned long copy_user_generic(void *to, const void *from, unsigned len) { unsigned ret; asm volatile ("# ALT: oldinstr2\n" "661:\n\t" "call %P[old]" "\n662:\n" "# ALT: padding2\n" ".skip -((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")) > 0) * " "(" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")), 0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 3*32+16)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" " .long 661b - .\n" " .long " "664""2""f - .\n" " .word " "( 9*32+ 9)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""2""f-""664""2""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "call %P[new1]" "\n" "665""1" ":\n" "# ALT: replacement " "2" "\n" "664""2"":\n\t" "call %P[new2]" "\n" "665""2" ":\n" ".popsection\n" : "=a" (ret), "=D" (to), "=S" (from), "=d" (len), "+r" (current_stack_pointer) : [old] "i" (copy_user_generic_unrolled), [new1] "i" (copy_user_generic_string), [new2] "i" (copy_user_enhanced_fast_string), "1" (to), "2" (from), "3" (len) : "memory", "rcx", "r8", "r9", "r10", "r11"); # 46 "../arch/x86/include/asm/uaccess_64.h" return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __attribute__((__warn_unused_result__)) unsigned long copy_to_user_mcsafe(void *to, const void *from, unsigned len) { unsigned long ret; stac(); ret = __memcpy_mcsafe(to, from, len); clac(); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __attribute__((__warn_unused_result__)) unsigned long raw_copy_from_user(void *dst, const void *src, unsigned long size) { int ret = 0; if (!__builtin_constant_p(size)) return copy_user_generic(dst, ( void *)src, size); switch (size) { case 1: ({ stac(); asm volatile("# ALT: oldinstr2\n" "661:\n\t" "" "\n662:\n" "# ALT: padding2\n" ".skip -((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")) > 0) * " "(" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")), 0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 3*32+17)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" " .long 661b - .\n" " .long " "664""2""f - .\n" " .word " "( 3*32+18)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""2""f-""664""2""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "mfence" "\n" "665""1" ":\n" "# ALT: replacement " "2" "\n" "664""2"":\n\t" "lfence" "\n" "665""2" ":\n" ".popsection\n" ::: "memory"); }); asm volatile("\n" "1: mov""b"" %2,%""b""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "3b" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : "=r" (ret), "=q"(*(u8 *)dst) : "m" ((*(struct __large_struct *)((u8 *)src))), "i" (1), "0" (ret)); clac(); return ret; case 2: ({ stac(); asm volatile("# ALT: oldinstr2\n" "661:\n\t" "" "\n662:\n" "# ALT: padding2\n" ".skip -((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")) > 0) * " "(" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")), 0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 3*32+17)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" " .long 661b - .\n" " .long " "664""2""f - .\n" " .word " "( 3*32+18)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""2""f-""664""2""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "mfence" "\n" "665""1" ":\n" "# ALT: replacement " "2" "\n" "664""2"":\n\t" "lfence" "\n" "665""2" ":\n" ".popsection\n" ::: "memory"); }); asm volatile("\n" "1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "3b" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : "=r" (ret), "=r"(*(u16 *)dst) : "m" ((*(struct __large_struct *)((u16 *)src))), "i" (2), "0" (ret)); clac(); return ret; case 4: ({ stac(); asm volatile("# ALT: oldinstr2\n" "661:\n\t" "" "\n662:\n" "# ALT: padding2\n" ".skip -((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")) > 0) * " "(" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")), 0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 3*32+17)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" " .long 661b - .\n" " .long " "664""2""f - .\n" " .word " "( 3*32+18)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""2""f-""664""2""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "mfence" "\n" "665""1" ":\n" "# ALT: replacement " "2" "\n" "664""2"":\n\t" "lfence" "\n" "665""2" ":\n" ".popsection\n" ::: "memory"); }); asm volatile("\n" "1: mov""l"" %2,%""k""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "3b" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : "=r" (ret), "=r"(*(u32 *)dst) : "m" ((*(struct __large_struct *)((u32 *)src))), "i" (4), "0" (ret)); clac(); return ret; case 8: ({ stac(); asm volatile("# ALT: oldinstr2\n" "661:\n\t" "" "\n662:\n" "# ALT: padding2\n" ".skip -((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")) > 0) * " "(" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")), 0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 3*32+17)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" " .long 661b - .\n" " .long " "664""2""f - .\n" " .word " "( 3*32+18)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""2""f-""664""2""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "mfence" "\n" "665""1" ":\n" "# ALT: replacement " "2" "\n" "664""2"":\n\t" "lfence" "\n" "665""2" ":\n" ".popsection\n" ::: "memory"); }); asm volatile("\n" "1: mov""q"" %2,%""""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "3b" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : "=r" (ret), "=r"(*(u64 *)dst) : "m" ((*(struct __large_struct *)((u64 *)src))), "i" (8), "0" (ret)); clac(); return ret; case 10: ({ stac(); asm volatile("# ALT: oldinstr2\n" "661:\n\t" "" "\n662:\n" "# ALT: padding2\n" ".skip -((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")) > 0) * " "(" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")), 0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 3*32+17)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" " .long 661b - .\n" " .long " "664""2""f - .\n" " .word " "( 3*32+18)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""2""f-""664""2""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "mfence" "\n" "665""1" ":\n" "# ALT: replacement " "2" "\n" "664""2"":\n\t" "lfence" "\n" "665""2" ":\n" ".popsection\n" ::: "memory"); }); asm volatile("\n" "1: mov""q"" %2,%""""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "3b" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : "=r" (ret), "=r"(*(u64 *)dst) : "m" ((*(struct __large_struct *)((u64 *)src))), "i" (10), "0" (ret)); if (__builtin_expect(!!(!ret), 1)) asm volatile("\n" "1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "3b" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : "=r" (ret), "=r"(*(u16 *)(8 + (char *)dst)) : "m" ((*(struct __large_struct *)((u16 *)(8 + (char *)src)))), "i" (2), "0" (ret)); clac(); return ret; case 16: ({ stac(); asm volatile("# ALT: oldinstr2\n" "661:\n\t" "" "\n662:\n" "# ALT: padding2\n" ".skip -((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")) > 0) * " "(" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")), 0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 3*32+17)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" " .long 661b - .\n" " .long " "664""2""f - .\n" " .word " "( 3*32+18)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""2""f-""664""2""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "mfence" "\n" "665""1" ":\n" "# ALT: replacement " "2" "\n" "664""2"":\n\t" "lfence" "\n" "665""2" ":\n" ".popsection\n" ::: "memory"); }); asm volatile("\n" "1: mov""q"" %2,%""""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "3b" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : "=r" (ret), "=r"(*(u64 *)dst) : "m" ((*(struct __large_struct *)((u64 *)src))), "i" (16), "0" (ret)); if (__builtin_expect(!!(!ret), 1)) asm volatile("\n" "1: mov""q"" %2,%""""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "3b" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : "=r" (ret), "=r"(*(u64 *)(8 + (char *)dst)) : "m" ((*(struct __large_struct *)((u64 *)(8 + (char *)src)))), "i" (8), "0" (ret)); clac(); return ret; default: return copy_user_generic(dst, ( void *)src, size); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __attribute__((__warn_unused_result__)) unsigned long raw_copy_to_user(void *dst, const void *src, unsigned long size) { int ret = 0; if (!__builtin_constant_p(size)) return copy_user_generic(( void *)dst, src, size); switch (size) { case 1: stac(); do { ret = ({ __label__ __puflab; int __pufret = 1; asm goto("\n" "1: mov""b"" %""b""0,%1\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "%l2" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : : "iq"(*(u8 *)src), "m" ((*(struct __large_struct *)((u8 *)dst))) : : __puflab); __pufret = 0; __puflab: __pufret; }); } while (0); clac(); return ret; case 2: stac(); do { ret = ({ __label__ __puflab; int __pufret = 2; asm goto("\n" "1: mov""w"" %""w""0,%1\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "%l2" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : : "ir"(*(u16 *)src), "m" ((*(struct __large_struct *)((u16 *)dst))) : : __puflab); __pufret = 0; __puflab: __pufret; }); } while (0); clac(); return ret; case 4: stac(); do { ret = ({ __label__ __puflab; int __pufret = 4; asm goto("\n" "1: mov""l"" %""k""0,%1\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "%l2" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : : "ir"(*(u32 *)src), "m" ((*(struct __large_struct *)((u32 *)dst))) : : __puflab); __pufret = 0; __puflab: __pufret; }); } while (0); clac(); return ret; case 8: stac(); do { ret = ({ __label__ __puflab; int __pufret = 8; asm goto("\n" "1: mov""q"" %""""0,%1\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "%l2" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : : "er"(*(u64 *)src), "m" ((*(struct __large_struct *)((u64 *)dst))) : : __puflab); __pufret = 0; __puflab: __pufret; }); } while (0); clac(); return ret; case 10: stac(); do { ret = ({ __label__ __puflab; int __pufret = 10; asm goto("\n" "1: mov""q"" %""""0,%1\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "%l2" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : : "er"(*(u64 *)src), "m" ((*(struct __large_struct *)((u64 *)dst))) : : __puflab); __pufret = 0; __puflab: __pufret; }); } while (0); if (__builtin_expect(!!(!ret), 1)) { asm("":::"memory"); do { ret = ({ __label__ __puflab; int __pufret = 2; asm goto("\n" "1: mov""w"" %""w""0,%1\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "%l2" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : : "ir"(4[(u16 *)src]), "m" ((*(struct __large_struct *)(4 + (u16 *)dst))) : : __puflab); __pufret = 0; __puflab: __pufret; }); } while (0); } clac(); return ret; case 16: stac(); do { ret = ({ __label__ __puflab; int __pufret = 16; asm goto("\n" "1: mov""q"" %""""0,%1\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "%l2" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : : "er"(*(u64 *)src), "m" ((*(struct __large_struct *)((u64 *)dst))) : : __puflab); __pufret = 0; __puflab: __pufret; }); } while (0); if (__builtin_expect(!!(!ret), 1)) { asm("":::"memory"); do { ret = ({ __label__ __puflab; int __pufret = 8; asm goto("\n" "1: mov""q"" %""""0,%1\n" " .pushsection \"__ex_table\",\"a\"\n" " .balign 4\n" " .long (" "1b" ") - .\n" " .long (" "%l2" ") - .\n" " .long (" "ex_handler_uaccess" ") - .\n" " .popsection\n" : : "er"(1[(u64 *)src]), "m" ((*(struct __large_struct *)(1 + (u64 *)dst))) : : __puflab); __pufret = 0; __puflab: __pufret; }); } while (0); } clac(); return ret; default: return copy_user_generic(( void *)dst, src, size); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __attribute__((__warn_unused_result__)) unsigned long raw_copy_in_user(void *dst, const void *src, unsigned long size) { return copy_user_generic(( void *)dst, ( void *)src, size); } extern long __copy_user_nocache(void *dst, const void *src, unsigned size, int zerorest); extern long __copy_user_flushcache(void *dst, const void *src, unsigned size); extern void memcpy_page_flushcache(char *to, struct page *page, size_t offset, size_t len); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __copy_from_user_inatomic_nocache(void *dst, const void *src, unsigned size) { kasan_check_write(dst, size); return __copy_user_nocache(dst, src, size, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __copy_from_user_flushcache(void *dst, const void *src, unsigned size) { kasan_check_write(dst, size); return __copy_user_flushcache(dst, src, size); } unsigned long mcsafe_handle_tail(char *to, char *from, unsigned len); # 693 "../arch/x86/include/asm/uaccess.h" 2 # 710 "../arch/x86/include/asm/uaccess.h" static __attribute__((__warn_unused_result__)) inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool user_access_begin(const void *ptr, size_t len) { if (__builtin_expect(!!(!({ ({ int __ret_warn_on = !!(!(!(preempt_count() & ((((1UL << (1))-1) << (((0 + 8) + 8) + 4)) | (((1UL << (4))-1) << ((0 + 8) + 8)) | (1UL << (0 + 8))))) && !pagefault_disabled()); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/uaccess.h"), "i" (712), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (343)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); __builtin_expect(!!(!({ (void)0; __chk_range_not_ok((unsigned long )(ptr), len, (get_current()->thread.addr_limit.seg)); })), 1); })), 0)) return 0; ({ stac(); asm volatile("# ALT: oldinstr2\n" "661:\n\t" "" "\n662:\n" "# ALT: padding2\n" ".skip -((" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")) > 0) * " "(" "((" "665""1""f-""664""1""f" ") ^ (((" "665""1""f-""664""1""f" ") ^ (" "665""2""f-""664""2""f" ")) & -(-((" "665""1""f-""664""1""f" ") < (" "665""2""f-""664""2""f" ")))))" " - (" "662b-661b" ")), 0x90\n" "663" ":\n" ".pushsection .altinstructions,\"a\"\n" " .long 661b - .\n" " .long " "664""1""f - .\n" " .word " "( 3*32+17)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""1""f-""664""1""f" "\n" " .byte " "663""b-662b" "\n" " .long 661b - .\n" " .long " "664""2""f - .\n" " .word " "( 3*32+18)" "\n" " .byte " "663""b-661b" "\n" " .byte " "665""2""f-""664""2""f" "\n" " .byte " "663""b-662b" "\n" ".popsection\n" ".pushsection .altinstr_replacement, \"ax\"\n" "# ALT: replacement " "1" "\n" "664""1"":\n\t" "mfence" "\n" "665""1" ":\n" "# ALT: replacement " "2" "\n" "664""2"":\n\t" "lfence" "\n" "665""2" ":\n" ".popsection\n" ::: "memory"); }); return 1; } # 12 "../include/linux/uaccess.h" 2 # 58 "../include/linux/uaccess.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long __copy_from_user_inatomic(void *to, const void *from, unsigned long n) { kasan_check_write(to, n); check_object_size(to, n, false); return raw_copy_from_user(to, from, n); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long __copy_from_user(void *to, const void *from, unsigned long n) { __might_fault("../include/linux/uaccess.h", 69); kasan_check_write(to, n); check_object_size(to, n, false); return raw_copy_from_user(to, from, n); } # 88 "../include/linux/uaccess.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long __copy_to_user_inatomic(void *to, const void *from, unsigned long n) { kasan_check_read(from, n); check_object_size(from, n, true); return raw_copy_to_user(to, from, n); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long __copy_to_user(void *to, const void *from, unsigned long n) { __might_fault("../include/linux/uaccess.h", 99); kasan_check_read(from, n); check_object_size(from, n, true); return raw_copy_to_user(to, from, n); } # 120 "../include/linux/uaccess.h" extern unsigned long _copy_from_user(void *, const void *, unsigned long); # 136 "../include/linux/uaccess.h" extern unsigned long _copy_to_user(void *, const void *, unsigned long); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long __attribute__((__warn_unused_result__)) copy_from_user(void *to, const void *from, unsigned long n) { if (__builtin_expect(!!(check_copy_size(to, n, false)), 1)) n = _copy_from_user(to, from, n); return n; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long __attribute__((__warn_unused_result__)) copy_to_user(void *to, const void *from, unsigned long n) { if (__builtin_expect(!!(check_copy_size(from, n, true)), 1)) n = _copy_to_user(to, from, n); return n; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned long __attribute__((__warn_unused_result__)) copy_in_user(void *to, const void *from, unsigned long n) { __might_fault("../include/linux/uaccess.h", 159); if (({ ({ int __ret_warn_on = !!(!(!(preempt_count() & ((((1UL << (1))-1) << (((0 + 8) + 8) + 4)) | (((1UL << (4))-1) << ((0 + 8) + 8)) | (1UL << (0 + 8))))) && !pagefault_disabled()); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/uaccess.h"), "i" (160), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (344)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); __builtin_expect(!!(!({ (void)0; __chk_range_not_ok((unsigned long )(to), n, (get_current()->thread.addr_limit.seg)); })), 1); }) && ({ ({ int __ret_warn_on = !!(!(!(preempt_count() & ((((1UL << (1))-1) << (((0 + 8) + 8) + 4)) | (((1UL << (4))-1) << ((0 + 8) + 8)) | (1UL << (0 + 8))))) && !pagefault_disabled()); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/uaccess.h"), "i" (160), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (345)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); __builtin_expect(!!(!({ (void)0; __chk_range_not_ok((unsigned long )(from), n, (get_current()->thread.addr_limit.seg)); })), 1); })) n = raw_copy_in_user(to, from, n); return n; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void pagefault_disabled_inc(void) { get_current()->pagefault_disabled++; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void pagefault_disabled_dec(void) { get_current()->pagefault_disabled--; } # 183 "../include/linux/uaccess.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pagefault_disable(void) { pagefault_disabled_inc(); __asm__ __volatile__("" : : : "memory"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pagefault_enable(void) { __asm__ __volatile__("" : : : "memory"); pagefault_disabled_dec(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pagefault_disabled(void) { return get_current()->pagefault_disabled != 0; } # 242 "../include/linux/uaccess.h" extern long probe_kernel_read(void *dst, const void *src, size_t size); extern long __probe_kernel_read(void *dst, const void *src, size_t size); # 254 "../include/linux/uaccess.h" extern long probe_user_read(void *dst, const void *src, size_t size); extern long __probe_user_read(void *dst, const void *src, size_t size); # 266 "../include/linux/uaccess.h" extern long __attribute__((no_instrument_function)) probe_kernel_write(void *dst, const void *src, size_t size); extern long __attribute__((no_instrument_function)) __probe_kernel_write(void *dst, const void *src, size_t size); extern long strncpy_from_unsafe(char *dst, const void *unsafe_addr, long count); extern long strncpy_from_unsafe_user(char *dst, const void *unsafe_addr, long count); extern long strnlen_unsafe_user(const void *unsafe_addr, long count); # 294 "../include/linux/uaccess.h" void usercopy_warn(const char *name, const char *detail, bool to_user, unsigned long offset, unsigned long len); void __attribute__((__noreturn__)) usercopy_abort(const char *name, const char *detail, bool to_user, unsigned long offset, unsigned long len); # 6 "../arch/x86/include/asm/fpu/xstate.h" 2 # 44 "../arch/x86/include/asm/fpu/xstate.h" extern u64 xfeatures_mask; extern u64 xstate_fx_sw_bytes[6]; extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) update_regset_xstate_info(unsigned int size, u64 xstate_mask); void fpu__xstate_clear_all_cpu_caps(void); void *get_xsave_addr(struct xregs_state *xsave, int xfeature_nr); const void *get_xsave_field_ptr(int xfeature_nr); int using_compacted_format(void); int copy_xstate_to_kernel(void *kbuf, struct xregs_state *xsave, unsigned int offset, unsigned int size); int copy_xstate_to_user(void *ubuf, struct xregs_state *xsave, unsigned int offset, unsigned int size); int copy_kernel_to_xstate(struct xregs_state *xsave, const void *kbuf); int copy_user_to_xstate(struct xregs_state *xsave, const void *ubuf); extern int validate_xstate_header(const struct xstate_header *hdr); # 27 "../arch/x86/include/asm/pgtable.h" 2 # 1 "../arch/x86/include/asm/fpu/api.h" 1 # 22 "../arch/x86/include/asm/fpu/api.h" extern void kernel_fpu_begin(void); extern void kernel_fpu_end(void); extern bool irq_fpu_usable(void); extern void fpregs_mark_activate(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void fpregs_lock(void) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); local_bh_disable(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void fpregs_unlock(void) { local_bh_enable(); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } extern void fpregs_assert_state_consistent(void); extern void switch_fpu_return(void); # 63 "../arch/x86/include/asm/fpu/api.h" extern int cpu_has_xfeatures(u64 xfeatures_mask, const char **feature_name); # 28 "../arch/x86/include/asm/pgtable.h" 2 extern pgd_t early_top_pgt[512]; int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) __early_make_pgtable(unsigned long address, pmdval_t pmd); void ptdump_walk_pgd_level(struct seq_file *m, pgd_t *pgd); void ptdump_walk_pgd_level_debugfs(struct seq_file *m, pgd_t *pgd, bool user); void ptdump_walk_pgd_level_checkwx(void); void ptdump_walk_user_pgd_level_checkwx(void); # 49 "../arch/x86/include/asm/pgtable.h" extern unsigned long empty_zero_page[((1UL) << 12) / sizeof(unsigned long)] ; extern spinlock_t pgd_lock; extern struct list_head pgd_list; extern struct mm_struct *pgd_page_get_mm(struct page *page); extern pmdval_t early_pmd_flags; # 123 "../arch/x86/include/asm/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_dirty(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 6); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 read_pkru(void) { if ((__builtin_constant_p((16*32+ 4)) && ( ((((16*32+ 4))>>5)==(0) && (1UL<<(((16*32+ 4))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+ 4))>>5)==(1) && (1UL<<(((16*32+ 4))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+ 4))>>5)==(2) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(3) && (1UL<<(((16*32+ 4))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+ 4))>>5)==(4) && (1UL<<(((16*32+ 4))&31) & (0) )) || ((((16*32+ 4))>>5)==(5) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(6) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(7) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(8) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(9) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(10) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(11) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(12) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(13) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(14) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(15) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(16) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(17) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(18) && (1UL<<(((16*32+ 4))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+ 4), (unsigned long *)((&boot_cpu_data)->x86_capability)))) return rdpkru(); return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_pkru(u32 pkru) { struct pkru_state *pk; if (!(__builtin_constant_p((16*32+ 4)) && ( ((((16*32+ 4))>>5)==(0) && (1UL<<(((16*32+ 4))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+ 4))>>5)==(1) && (1UL<<(((16*32+ 4))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+ 4))>>5)==(2) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(3) && (1UL<<(((16*32+ 4))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+ 4))>>5)==(4) && (1UL<<(((16*32+ 4))&31) & (0) )) || ((((16*32+ 4))>>5)==(5) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(6) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(7) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(8) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(9) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(10) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(11) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(12) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(13) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(14) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(15) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(16) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(17) && (1UL<<(((16*32+ 4))&31) & 0 )) || ((((16*32+ 4))>>5)==(18) && (1UL<<(((16*32+ 4))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+ 4), (unsigned long *)((&boot_cpu_data)->x86_capability)))) return; pk = get_xsave_addr(&get_current()->thread.fpu.state.xsave, XFEATURE_PKRU); fpregs_lock(); if (pk) pk->pkru = pkru; __write_pkru(pkru); fpregs_unlock(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_young(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 5); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_dirty(pmd_t pmd) { return pmd_flags(pmd) & (((pteval_t)(1)) << 6); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_young(pmd_t pmd) { return pmd_flags(pmd) & (((pteval_t)(1)) << 5); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pud_dirty(pud_t pud) { return pud_flags(pud) & (((pteval_t)(1)) << 6); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pud_young(pud_t pud) { return pud_flags(pud) & (((pteval_t)(1)) << 5); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_write(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_huge(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 7); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_global(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 8); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_exec(pte_t pte) { return !(pte_flags(pte) & (((pteval_t)(1)) << 63)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_special(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 9); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 protnone_mask(u64 val); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long pte_pfn(pte_t pte) { phys_addr_t pfn = pte_val(pte); pfn ^= protnone_mask(pfn); return (pfn & ((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask))) >> 12; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long pmd_pfn(pmd_t pmd) { phys_addr_t pfn = pmd_val(pmd); pfn ^= protnone_mask(pfn); return (pfn & pmd_pfn_mask(pmd)) >> 12; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long pud_pfn(pud_t pud) { phys_addr_t pfn = pud_val(pud); pfn ^= protnone_mask(pfn); return (pfn & pud_pfn_mask(pud)) >> 12; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long p4d_pfn(p4d_t p4d) { return (p4d_val(p4d) & p4d_pfn_mask(p4d)) >> 12; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long pgd_pfn(pgd_t pgd) { return (pgd_val(pgd) & ((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask))) >> 12; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int p4d_large(p4d_t p4d) { return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_large(pmd_t pte) { return pmd_flags(pte) & (((pteval_t)(1)) << 7); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_trans_huge(pmd_t pmd) { return (pmd_val(pmd) & ((((pteval_t)(1)) << 7)|(((u64)(1)) << 58))) == (((pteval_t)(1)) << 7); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pud_trans_huge(pud_t pud) { return (pud_val(pud) & ((((pteval_t)(1)) << 7)|(((u64)(1)) << 58))) == (((pteval_t)(1)) << 7); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int has_transparent_hugepage(void) { return (__builtin_constant_p(( 0*32+ 3)) && ( (((( 0*32+ 3))>>5)==(0) && (1UL<<((( 0*32+ 3))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 0*32+ 3))>>5)==(1) && (1UL<<((( 0*32+ 3))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 0*32+ 3))>>5)==(2) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(3) && (1UL<<((( 0*32+ 3))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 0*32+ 3))>>5)==(4) && (1UL<<((( 0*32+ 3))&31) & (0) )) || (((( 0*32+ 3))>>5)==(5) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(6) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(7) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(8) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(9) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(10) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(11) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(12) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(13) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(14) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(15) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(16) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(17) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (((( 0*32+ 3))>>5)==(18) && (1UL<<((( 0*32+ 3))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 0*32+ 3), (unsigned long *)((&boot_cpu_data)->x86_capability))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_devmap(pmd_t pmd) { return !!(pmd_val(pmd) & (((u64)(1)) << 58)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pud_devmap(pud_t pud) { return !!(pud_val(pud) & (((u64)(1)) << 58)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pgd_devmap(pgd_t pgd) { return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_set_flags(pte_t pte, pteval_t set) { pteval_t v = native_pte_val(pte); return native_make_pte(v | set); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_clear_flags(pte_t pte, pteval_t clear) { pteval_t v = native_pte_val(pte); return native_make_pte(v & ~clear); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_mkclean(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 6)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_mkold(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 5)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_wrprotect(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_mkexec(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 63)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_mkdirty(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 6) | (((pteval_t)(1)) << 11)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_mkyoung(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 5)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_mkwrite(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_mkhuge(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 7)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_clrhuge(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 7)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_mkglobal(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 8)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_clrglobal(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 8)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_mkspecial(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 9)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_mkdevmap(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 9)|(((u64)(1)) << 58)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_set_flags(pmd_t pmd, pmdval_t set) { pmdval_t v = native_pmd_val(pmd); return native_make_pmd(v | set); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_clear_flags(pmd_t pmd, pmdval_t clear) { pmdval_t v = native_pmd_val(pmd); return native_make_pmd(v & ~clear); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_mkold(pmd_t pmd) { return pmd_clear_flags(pmd, (((pteval_t)(1)) << 5)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_mkclean(pmd_t pmd) { return pmd_clear_flags(pmd, (((pteval_t)(1)) << 6)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_wrprotect(pmd_t pmd) { return pmd_clear_flags(pmd, (((pteval_t)(1)) << 1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_mkdirty(pmd_t pmd) { return pmd_set_flags(pmd, (((pteval_t)(1)) << 6) | (((pteval_t)(1)) << 11)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_mkdevmap(pmd_t pmd) { return pmd_set_flags(pmd, (((u64)(1)) << 58)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_mkhuge(pmd_t pmd) { return pmd_set_flags(pmd, (((pteval_t)(1)) << 7)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_mkyoung(pmd_t pmd) { return pmd_set_flags(pmd, (((pteval_t)(1)) << 5)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_mkwrite(pmd_t pmd) { return pmd_set_flags(pmd, (((pteval_t)(1)) << 1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pud_set_flags(pud_t pud, pudval_t set) { pudval_t v = native_pud_val(pud); return native_make_pud(v | set); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pud_clear_flags(pud_t pud, pudval_t clear) { pudval_t v = native_pud_val(pud); return native_make_pud(v & ~clear); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pud_mkold(pud_t pud) { return pud_clear_flags(pud, (((pteval_t)(1)) << 5)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pud_mkclean(pud_t pud) { return pud_clear_flags(pud, (((pteval_t)(1)) << 6)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pud_wrprotect(pud_t pud) { return pud_clear_flags(pud, (((pteval_t)(1)) << 1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pud_mkdirty(pud_t pud) { return pud_set_flags(pud, (((pteval_t)(1)) << 6) | (((pteval_t)(1)) << 11)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pud_mkdevmap(pud_t pud) { return pud_set_flags(pud, (((u64)(1)) << 58)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pud_mkhuge(pud_t pud) { return pud_set_flags(pud, (((pteval_t)(1)) << 7)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pud_mkyoung(pud_t pud) { return pud_set_flags(pud, (((pteval_t)(1)) << 5)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pud_mkwrite(pud_t pud) { return pud_set_flags(pud, (((pteval_t)(1)) << 1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_soft_dirty(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 11); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_soft_dirty(pmd_t pmd) { return pmd_flags(pmd) & (((pteval_t)(1)) << 11); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pud_soft_dirty(pud_t pud) { return pud_flags(pud) & (((pteval_t)(1)) << 11); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_mksoft_dirty(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 11)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_mksoft_dirty(pmd_t pmd) { return pmd_set_flags(pmd, (((pteval_t)(1)) << 11)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pud_mksoft_dirty(pud_t pud) { return pud_set_flags(pud, (((pteval_t)(1)) << 11)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_clear_soft_dirty(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 11)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_clear_soft_dirty(pmd_t pmd) { return pmd_clear_flags(pmd, (((pteval_t)(1)) << 11)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pud_clear_soft_dirty(pud_t pud) { return pud_clear_flags(pud, (((pteval_t)(1)) << 11)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgprotval_t massage_pgprot(pgprot_t pgprot) { pgprotval_t protval = ((pgprot).pgprot); if (protval & (((pteval_t)(1)) << 0)) protval &= __supported_pte_mask; return protval; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgprotval_t check_pgprot(pgprot_t pgprot) { pgprotval_t massaged_val = massage_pgprot(pgprot); ({ static bool __attribute__((__section__(".data.once"))) __warned; int __ret_warn_once = !!(((pgprot).pgprot) != massaged_val); if (__builtin_expect(!!(__ret_warn_once && !__warned), 0)) { __warned = true; ({ int __ret_warn_on = !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __warn_printk("attempted to set unsupported pgprot: %016llx " "bits: %016llx supported: %016llx\n", (u64)((pgprot).pgprot), (u64)((pgprot).pgprot) ^ massaged_val, (u64)__supported_pte_mask); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../arch/x86/include/asm/pgtable.h"), "i" (559), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (346)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } __builtin_expect(!!(__ret_warn_once), 0); }); return massaged_val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot) { phys_addr_t pfn = (phys_addr_t)page_nr << 12; pfn ^= protnone_mask(((pgprot).pgprot)); pfn &= ((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask)); return __pte(pfn | check_pgprot(pgprot)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot) { phys_addr_t pfn = (phys_addr_t)page_nr << 12; pfn ^= protnone_mask(((pgprot).pgprot)); pfn &= (((signed long)(~(((1UL) << 21)-1))) & physical_mask); return __pmd(pfn | check_pgprot(pgprot)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pfn_pud(unsigned long page_nr, pgprot_t pgprot) { phys_addr_t pfn = (phys_addr_t)page_nr << 12; pfn ^= protnone_mask(((pgprot).pgprot)); pfn &= (((signed long)(~(((1UL) << 30)-1))) & physical_mask); return __pud(pfn | check_pgprot(pgprot)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_mknotpresent(pmd_t pmd) { return pfn_pmd(pmd_pfn(pmd), ((pgprot_t) { (pmd_flags(pmd) & ~((((pteval_t)(1)) << 0)|(((pteval_t)(1)) << 8))) } )); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pud_mknotpresent(pud_t pud) { return pfn_pud(pud_pfn(pud), ((pgprot_t) { (pud_flags(pud) & ~((((pteval_t)(1)) << 0)|(((pteval_t)(1)) << 8))) } )); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 flip_protnone_guard(u64 oldval, u64 val, u64 mask); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_modify(pte_t pte, pgprot_t newprot) { pteval_t val = pte_val(pte), oldval = val; val &= (((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask)) | (((pteval_t)(1)) << 4) | (((pteval_t)(1)) << 3) | (((pteval_t)(1)) << 9) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6) | (((pteval_t)(1)) << 11) | (((u64)(1)) << 58)); val |= check_pgprot(newprot) & ~(((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask)) | (((pteval_t)(1)) << 4) | (((pteval_t)(1)) << 3) | (((pteval_t)(1)) << 9) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6) | (((pteval_t)(1)) << 11) | (((u64)(1)) << 58)); val = flip_protnone_guard(oldval, val, ((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask))); return __pte(val); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot) { pmdval_t val = pmd_val(pmd), oldval = val; val &= ((((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask)) | (((pteval_t)(1)) << 4) | (((pteval_t)(1)) << 3) | (((pteval_t)(1)) << 9) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6) | (((pteval_t)(1)) << 11) | (((u64)(1)) << 58)) | (((pteval_t)(1)) << 7)); val |= check_pgprot(newprot) & ~((((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask)) | (((pteval_t)(1)) << 4) | (((pteval_t)(1)) << 3) | (((pteval_t)(1)) << 9) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6) | (((pteval_t)(1)) << 11) | (((u64)(1)) << 58)) | (((pteval_t)(1)) << 7)); val = flip_protnone_guard(oldval, val, (((signed long)(~(((1UL) << 21)-1))) & physical_mask)); return __pmd(val); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot) { pgprotval_t preservebits = ((oldprot).pgprot) & (((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask)) | (((pteval_t)(1)) << 4) | (((pteval_t)(1)) << 3) | (((pteval_t)(1)) << 9) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6) | (((pteval_t)(1)) << 11) | (((u64)(1)) << 58)); pgprotval_t addbits = ((newprot).pgprot); return ((pgprot_t) { (preservebits | addbits) } ); } # 643 "../arch/x86/include/asm/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgprot_t arch_filter_pgprot(pgprot_t prot) { return ((pgprot_t) { (massage_pgprot(prot)) } ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int is_new_memtype_allowed(u64 paddr, unsigned long size, enum page_cache_mode pcm, enum page_cache_mode new_pcm) { if (x86_platform.is_untracked_pat_range(paddr, paddr + size)) return 1; # 666 "../arch/x86/include/asm/pgtable.h" if ((pcm == _PAGE_CACHE_MODE_UC_MINUS && new_pcm == _PAGE_CACHE_MODE_WB) || (pcm == _PAGE_CACHE_MODE_WC && new_pcm == _PAGE_CACHE_MODE_WB) || (pcm == _PAGE_CACHE_MODE_WT && new_pcm == _PAGE_CACHE_MODE_WB) || (pcm == _PAGE_CACHE_MODE_WT && new_pcm == _PAGE_CACHE_MODE_WC)) { return 0; } return 1; } pmd_t *populate_extra_pmd(unsigned long vaddr); pte_t *populate_extra_pte(unsigned long vaddr); pgd_t __pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgd_t pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd) { if (!( __builtin_constant_p((__builtin_constant_p(( 7*32+11)) && ( (((( 7*32+11))>>5)==(0) && (1UL<<((( 7*32+11))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 7*32+11))>>5)==(1) && (1UL<<((( 7*32+11))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 7*32+11))>>5)==(2) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(3) && (1UL<<((( 7*32+11))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 7*32+11))>>5)==(4) && (1UL<<((( 7*32+11))&31) & (0) )) || (((( 7*32+11))>>5)==(5) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(6) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(7) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(8) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(9) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(10) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(11) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(12) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(13) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(14) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(15) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(16) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(17) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(18) && (1UL<<((( 7*32+11))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 7*32+11), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p(( 7*32+11)) && ( (((( 7*32+11))>>5)==(0) && (1UL<<((( 7*32+11))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 7*32+11))>>5)==(1) && (1UL<<((( 7*32+11))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 7*32+11))>>5)==(2) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(3) && (1UL<<((( 7*32+11))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 7*32+11))>>5)==(4) && (1UL<<((( 7*32+11))&31) & (0) )) || (((( 7*32+11))>>5)==(5) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(6) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(7) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(8) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(9) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(10) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(11) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(12) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(13) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(14) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(15) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(16) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(17) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(18) && (1UL<<((( 7*32+11))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 7*32+11), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has(( 7*32+11)) )) return pgd; return __pti_set_user_pgtbl(pgdp, pgd); } # 710 "../arch/x86/include/asm/pgtable.h" # 1 "../arch/x86/include/asm/pgtable_64.h" 1 # 19 "../arch/x86/include/asm/pgtable_64.h" extern p4d_t level4_kernel_pgt[512]; extern p4d_t level4_ident_pgt[512]; extern pud_t level3_kernel_pgt[512]; extern pud_t level3_ident_pgt[512]; extern pmd_t level2_kernel_pgt[512]; extern pmd_t level2_fixmap_pgt[512]; extern pmd_t level2_ident_pgt[512]; extern pte_t level1_fixmap_pgt[512 * 2]; extern pgd_t init_top_pgt[]; extern void paging_init(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sync_initial_page_table(void) { } # 54 "../arch/x86/include/asm/pgtable_64.h" struct mm_struct; void set_pte_vaddr_p4d(p4d_t *p4d_page, unsigned long vaddr, pte_t new_pte); void set_pte_vaddr_pud(pud_t *pud_page, unsigned long vaddr, pte_t new_pte); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_set_pte(pte_t *ptep, pte_t pte) { ({ union { typeof(*ptep) __val; char __c[1]; } __u = { .__val = ( typeof(*ptep)) (pte) }; __write_once_size(&(*ptep), __u.__c, sizeof(*ptep)); __u.__val; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { native_set_pte(ptep, native_make_pte(0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_set_pte_atomic(pte_t *ptep, pte_t pte) { native_set_pte(ptep, pte); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_set_pmd(pmd_t *pmdp, pmd_t pmd) { ({ union { typeof(*pmdp) __val; char __c[1]; } __u = { .__val = ( typeof(*pmdp)) (pmd) }; __write_once_size(&(*pmdp), __u.__c, sizeof(*pmdp)); __u.__val; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_pmd_clear(pmd_t *pmd) { native_set_pmd(pmd, native_make_pmd(0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t native_ptep_get_and_clear(pte_t *xp) { return native_make_pte(({ typeof(&xp->pte) __ai_ptr = (&xp->pte); kasan_check_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__ (*((__ai_ptr))) __ret = ((0)); switch (sizeof(*((__ai_ptr)))) { case 1: asm volatile ("" "xchg" "b %b0, %1\n" : "+q" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 2: asm volatile ("" "xchg" "w %w0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 4: asm volatile ("" "xchg" "l %0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 8: asm volatile ("" "xchg" "q %q0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; default: __xchg_wrong_size(); } __ret; }); })); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t native_pmdp_get_and_clear(pmd_t *xp) { return native_make_pmd(({ typeof(&xp->pmd) __ai_ptr = (&xp->pmd); kasan_check_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__ (*((__ai_ptr))) __ret = ((0)); switch (sizeof(*((__ai_ptr)))) { case 1: asm volatile ("" "xchg" "b %b0, %1\n" : "+q" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 2: asm volatile ("" "xchg" "w %w0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 4: asm volatile ("" "xchg" "l %0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 8: asm volatile ("" "xchg" "q %q0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; default: __xchg_wrong_size(); } __ret; }); })); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_set_pud(pud_t *pudp, pud_t pud) { ({ union { typeof(*pudp) __val; char __c[1]; } __u = { .__val = ( typeof(*pudp)) (pud) }; __write_once_size(&(*pudp), __u.__c, sizeof(*pudp)); __u.__val; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_pud_clear(pud_t *pud) { native_set_pud(pud, native_make_pud(0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t native_pudp_get_and_clear(pud_t *xp) { return native_make_pud(({ typeof(&xp->pud) __ai_ptr = (&xp->pud); kasan_check_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__ (*((__ai_ptr))) __ret = ((0)); switch (sizeof(*((__ai_ptr)))) { case 1: asm volatile ("" "xchg" "b %b0, %1\n" : "+q" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 2: asm volatile ("" "xchg" "w %w0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 4: asm volatile ("" "xchg" "l %0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 8: asm volatile ("" "xchg" "q %q0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; default: __xchg_wrong_size(); } __ret; }); })); # 134 "../arch/x86/include/asm/pgtable_64.h" } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_set_p4d(p4d_t *p4dp, p4d_t p4d) { pgd_t pgd; if ((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+ 2) & 31))|(1<<(( 3*32+ 3) & 31))|(1<<(( 3*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & (0|0) )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & (0|0|0|0) )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 0 : ( __builtin_constant_p((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has((16*32+16)) )) || !1) { ({ union { typeof(*p4dp) __val; char __c[1]; } __u = { .__val = ( typeof(*p4dp)) (p4d) }; __write_once_size(&(*p4dp), __u.__c, sizeof(*p4dp)); __u.__val; }); return; } pgd = native_make_pgd(native_p4d_val(p4d)); pgd = pti_set_user_pgtbl((pgd_t *)p4dp, pgd); ({ union { typeof(*p4dp) __val; char __c[1]; } __u = { .__val = ( typeof(*p4dp)) (native_make_p4d(native_pgd_val(pgd))) }; __write_once_size(&(*p4dp), __u.__c, sizeof(*p4dp)); __u.__val; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_p4d_clear(p4d_t *p4d) { native_set_p4d(p4d, native_make_p4d(0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_set_pgd(pgd_t *pgdp, pgd_t pgd) { ({ union { typeof(*pgdp) __val; char __c[1]; } __u = { .__val = ( typeof(*pgdp)) (pti_set_user_pgtbl(pgdp, pgd)) }; __write_once_size(&(*pgdp), __u.__c, sizeof(*pgdp)); __u.__val; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_pgd_clear(pgd_t *pgd) { native_set_pgd(pgd, native_make_pgd(0)); } extern void sync_global_pgds(unsigned long start, unsigned long end); # 238 "../arch/x86/include/asm/pgtable_64.h" extern int kern_addr_valid(unsigned long addr); extern void cleanup_highmap(void); # 258 "../arch/x86/include/asm/pgtable_64.h" extern void init_extra_mapping_uc(unsigned long phys, unsigned long size); extern void init_extra_mapping_wb(unsigned long phys, unsigned long size); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool gup_fast_permitted(unsigned long start, unsigned long end) { if (end >> ((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+ 2) & 31))|(1<<(( 3*32+ 3) & 31))|(1<<(( 3*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & (0|0) )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & (0|0|0|0) )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 0 : ( __builtin_constant_p((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has((16*32+16)) )) ? 56 : 47)) return false; return true; } # 1 "../arch/x86/include/asm/pgtable-invert.h" 1 # 16 "../arch/x86/include/asm/pgtable-invert.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __pte_needs_invert(u64 val) { return val && !(val & (((pteval_t)(1)) << 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 protnone_mask(u64 val) { return __pte_needs_invert(val) ? ~0ull : 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 flip_protnone_guard(u64 oldval, u64 val, u64 mask) { if (__pte_needs_invert(oldval) != __pte_needs_invert(val)) val = (val & ~mask) | (~val & mask); return val; } # 270 "../arch/x86/include/asm/pgtable_64.h" 2 # 711 "../arch/x86/include/asm/pgtable.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_none(pte_t pte) { return !(pte.pte & ~(((((pteval_t)(1)) << 6) | (((pteval_t)(1)) << 5)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_same(pte_t a, pte_t b) { return a.pte == b.pte; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_present(pte_t a) { return pte_flags(a) & ((((pteval_t)(1)) << 0) | (((pteval_t)(1)) << 8)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_devmap(pte_t a) { return (pte_flags(a) & (((u64)(1)) << 58)) == (((u64)(1)) << 58); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pte_accessible(struct mm_struct *mm, pte_t a) { if (pte_flags(a) & (((pteval_t)(1)) << 0)) return true; if ((pte_flags(a) & (((pteval_t)(1)) << 8)) && mm_tlb_flush_pending(mm)) return true; return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_present(pmd_t pmd) { return pmd_flags(pmd) & ((((pteval_t)(1)) << 0) | (((pteval_t)(1)) << 8) | (((pteval_t)(1)) << 7)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_protnone(pte_t pte) { return (pte_flags(pte) & ((((pteval_t)(1)) << 8) | (((pteval_t)(1)) << 0))) == (((pteval_t)(1)) << 8); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_protnone(pmd_t pmd) { return (pmd_flags(pmd) & ((((pteval_t)(1)) << 8) | (((pteval_t)(1)) << 0))) == (((pteval_t)(1)) << 8); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_none(pmd_t pmd) { unsigned long val = native_pmd_val(pmd); return (val & ~((((pteval_t)(1)) << 6) | (((pteval_t)(1)) << 5))) == 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long pmd_page_vaddr(pmd_t pmd) { return (unsigned long)((void *)((unsigned long)(pmd_val(pmd) & pmd_pfn_mask(pmd))+((unsigned long)page_offset_base))); } # 809 "../arch/x86/include/asm/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long pmd_index(unsigned long address) { return (address >> 21) & (512 - 1); } # 829 "../arch/x86/include/asm/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long pte_index(unsigned long address) { return (address >> 12) & (512 - 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t *pte_offset_kernel(pmd_t *pmd, unsigned long address) { return (pte_t *)pmd_page_vaddr(*pmd) + pte_index(address); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_bad(pmd_t pmd) { return (pmd_flags(pmd) & ~(((pteval_t)(1)) << 2)) != ((((pteval_t)(1)) << 0) | (((pteval_t)(1)) << 1) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6) | (((pteval_t)(sme_me_mask)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long pages_to_mb(unsigned long npg) { return npg >> (20 - 12); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pud_none(pud_t pud) { return (native_pud_val(pud) & ~(((((pteval_t)(1)) << 6) | (((pteval_t)(1)) << 5)))) == 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pud_present(pud_t pud) { return pud_flags(pud) & (((pteval_t)(1)) << 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long pud_page_vaddr(pud_t pud) { return (unsigned long)((void *)((unsigned long)(pud_val(pud) & pud_pfn_mask(pud))+((unsigned long)page_offset_base))); } # 872 "../arch/x86/include/asm/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t *pmd_offset(pud_t *pud, unsigned long address) { return (pmd_t *)pud_page_vaddr(*pud) + pmd_index(address); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pud_large(pud_t pud) { return (pud_val(pud) & ((((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 0))) == ((((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pud_bad(pud_t pud) { return (pud_flags(pud) & ~(((((pteval_t)(1)) << 0) | (((pteval_t)(1)) << 1) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6) | (((pteval_t)(sme_me_mask)))) | (((pteval_t)(1)) << 2))) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long pud_index(unsigned long address) { return (address >> 30) & (512 - 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int p4d_none(p4d_t p4d) { return (native_p4d_val(p4d) & ~(((((pteval_t)(1)) << 6) | (((pteval_t)(1)) << 5)))) == 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int p4d_present(p4d_t p4d) { return p4d_flags(p4d) & (((pteval_t)(1)) << 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long p4d_page_vaddr(p4d_t p4d) { return (unsigned long)((void *)((unsigned long)(p4d_val(p4d) & p4d_pfn_mask(p4d))+((unsigned long)page_offset_base))); } # 922 "../arch/x86/include/asm/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t *pud_offset(p4d_t *p4d, unsigned long address) { return (pud_t *)p4d_page_vaddr(*p4d) + pud_index(address); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int p4d_bad(p4d_t p4d) { unsigned long ignore_flags = ((((pteval_t)(1)) << 0) | (((pteval_t)(1)) << 1) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6) | (((pteval_t)(sme_me_mask)))) | (((pteval_t)(1)) << 2); if (1) ignore_flags |= (((pteval_t)(1)) << 63); return (p4d_flags(p4d) & ~ignore_flags) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long p4d_index(unsigned long address) { return (address >> 39) & (ptrs_per_p4d - 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pgd_present(pgd_t pgd) { if (!(__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+ 2) & 31))|(1<<(( 3*32+ 3) & 31))|(1<<(( 3*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & (0|0) )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & (0|0|0|0) )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 0 : ( __builtin_constant_p((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has((16*32+16)) ))) return 1; return pgd_flags(pgd) & (((pteval_t)(1)) << 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long pgd_page_vaddr(pgd_t pgd) { return (unsigned long)((void *)((unsigned long)((unsigned long)pgd_val(pgd) & ((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & physical_mask)))+((unsigned long)page_offset_base))); } # 963 "../arch/x86/include/asm/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) p4d_t *p4d_offset(pgd_t *pgd, unsigned long address) { if (!(__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+ 2) & 31))|(1<<(( 3*32+ 3) & 31))|(1<<(( 3*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & (0|0) )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & (0|0|0|0) )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 0 : ( __builtin_constant_p((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has((16*32+16)) ))) return (p4d_t *)pgd; return (p4d_t *)pgd_page_vaddr(*pgd) + p4d_index(address); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pgd_bad(pgd_t pgd) { unsigned long ignore_flags = (((pteval_t)(1)) << 2); if (!(__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+ 2) & 31))|(1<<(( 3*32+ 3) & 31))|(1<<(( 3*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & (0|0) )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & (0|0|0|0) )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 0 : ( __builtin_constant_p((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has((16*32+16)) ))) return 0; if (1) ignore_flags |= (((pteval_t)(1)) << 63); return (pgd_flags(pgd) & ~ignore_flags) != ((((pteval_t)(1)) << 0) | (((pteval_t)(1)) << 1) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6) | (((pteval_t)(sme_me_mask)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pgd_none(pgd_t pgd) { if (!(__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+ 2) & 31))|(1<<(( 3*32+ 3) & 31))|(1<<(( 3*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & (0|0) )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & (0|0|0|0) )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 0 : ( __builtin_constant_p((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has((16*32+16)) ))) return 0; return !native_pgd_val(pgd); } # 1028 "../arch/x86/include/asm/pgtable.h" extern int direct_gbpages; void init_mem_mapping(void); void early_alloc_pgt_buf(void); extern void memblock_find_dma_reserve(void); extern pgd_t trampoline_pgd_entry; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __attribute__((__section__(".meminit.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) init_trampoline_default(void) { trampoline_pgd_entry = init_top_pgt[(((page_offset_base) >> pgdir_shift) & (512 - 1))]; } void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) poking_init(void); void __attribute__((__section__(".meminit.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) init_trampoline(void); # 1054 "../arch/x86/include/asm/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t native_local_ptep_get_and_clear(pte_t *ptep) { pte_t res = *ptep; native_pte_clear(((void *)0), 0, ptep); return res; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t native_local_pmdp_get_and_clear(pmd_t *pmdp) { pmd_t res = *pmdp; native_pmd_clear(pmdp); return res; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t native_local_pudp_get_and_clear(pud_t *pudp) { pud_t res = *pudp; native_pud_clear(pudp); return res; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void native_set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep , pte_t pte) { native_set_pte(ptep, pte); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_pmd_at(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp, pmd_t pmd) { set_pmd(pmdp, pmd); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_pud_at(struct mm_struct *mm, unsigned long addr, pud_t *pudp, pud_t pud) { native_set_pud(pudp, pud); } # 1104 "../arch/x86/include/asm/pgtable.h" struct vm_area_struct; extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address, pte_t *ptep, pte_t entry, int dirty); extern int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep); extern int ptep_clear_flush_young(struct vm_area_struct *vma, unsigned long address, pte_t *ptep); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { pte_t pte = native_ptep_get_and_clear(ptep); return pte; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t ptep_get_and_clear_full(struct mm_struct *mm, unsigned long addr, pte_t *ptep, int full) { pte_t pte; if (full) { pte = native_local_ptep_get_and_clear(ptep); } else { pte = ptep_get_and_clear(mm, addr, ptep); } return pte; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { clear_bit(1, (unsigned long *)&ptep->pte); } extern int pmdp_set_access_flags(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp, pmd_t entry, int dirty); extern int pudp_set_access_flags(struct vm_area_struct *vma, unsigned long address, pud_t *pudp, pud_t entry, int dirty); extern int pmdp_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pmd_t *pmdp); extern int pudp_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pud_t *pudp); extern int pmdp_clear_flush_young(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_write(pmd_t pmd) { return pmd_flags(pmd) & (((pteval_t)(1)) << 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp) { return native_pmdp_get_and_clear(pmdp); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pudp_huge_get_and_clear(struct mm_struct *mm, unsigned long addr, pud_t *pudp) { return native_pudp_get_and_clear(pudp); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pmdp_set_wrprotect(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp) { clear_bit(1, (unsigned long *)pmdp); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pud_write(pud_t pud) { return pud_flags(pud) & (((pteval_t)(1)) << 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmdp_establish(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp, pmd_t pmd) { if (1) { return ({ typeof(pmdp) __ai_ptr = (pmdp); kasan_check_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__ (*((__ai_ptr))) __ret = ((pmd)); switch (sizeof(*((__ai_ptr)))) { case 1: asm volatile ("" "xchg" "b %b0, %1\n" : "+q" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 2: asm volatile ("" "xchg" "w %w0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 4: asm volatile ("" "xchg" "l %0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; case 8: asm volatile ("" "xchg" "q %q0, %1\n" : "+r" (__ret), "+m" (*((__ai_ptr))) : : "memory", "cc"); break; default: __xchg_wrong_size(); } __ret; }); }); } else { pmd_t old = *pmdp; ({ union { typeof(*pmdp) __val; char __c[1]; } __u = { .__val = ( typeof(*pmdp)) (pmd) }; __write_once_size(&(*pmdp), __u.__c, sizeof(*pmdp)); __u.__val; }); return old; } } # 1229 "../arch/x86/include/asm/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pgdp_maps_userspace(void *__ptr) { unsigned long ptr = (unsigned long)__ptr; return (((ptr & ~(~(((1UL) << 12)-1))) / sizeof(pgd_t)) < ((((1UL) << 12) / 2) / sizeof(pgd_t))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pgd_large(pgd_t pgd) { return 0; } # 1251 "../arch/x86/include/asm/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *ptr_set_bit(void *ptr, int bit) { unsigned long __ptr = (unsigned long)ptr; __ptr |= ((((1UL))) << (bit)); return (void *)__ptr; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *ptr_clear_bit(void *ptr, int bit) { unsigned long __ptr = (unsigned long)ptr; __ptr &= ~((((1UL))) << (bit)); return (void *)__ptr; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgd_t *kernel_to_user_pgdp(pgd_t *pgdp) { return ptr_set_bit(pgdp, 12); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pgd_t *user_to_kernel_pgdp(pgd_t *pgdp) { return ptr_clear_bit(pgdp, 12); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) p4d_t *kernel_to_user_p4dp(p4d_t *p4dp) { return ptr_set_bit(p4dp, 12); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) p4d_t *user_to_kernel_p4dp(p4d_t *p4dp) { return ptr_clear_bit(p4dp, 12); } # 1297 "../arch/x86/include/asm/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clone_pgd_range(pgd_t *dst, pgd_t *src, int count) { __memcpy(dst, src, count * sizeof(pgd_t)); if (!( __builtin_constant_p((__builtin_constant_p(( 7*32+11)) && ( (((( 7*32+11))>>5)==(0) && (1UL<<((( 7*32+11))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 7*32+11))>>5)==(1) && (1UL<<((( 7*32+11))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 7*32+11))>>5)==(2) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(3) && (1UL<<((( 7*32+11))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 7*32+11))>>5)==(4) && (1UL<<((( 7*32+11))&31) & (0) )) || (((( 7*32+11))>>5)==(5) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(6) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(7) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(8) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(9) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(10) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(11) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(12) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(13) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(14) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(15) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(16) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(17) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(18) && (1UL<<((( 7*32+11))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 7*32+11), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p(( 7*32+11)) && ( (((( 7*32+11))>>5)==(0) && (1UL<<((( 7*32+11))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 7*32+11))>>5)==(1) && (1UL<<((( 7*32+11))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 7*32+11))>>5)==(2) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(3) && (1UL<<((( 7*32+11))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 7*32+11))>>5)==(4) && (1UL<<((( 7*32+11))&31) & (0) )) || (((( 7*32+11))>>5)==(5) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(6) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(7) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(8) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(9) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(10) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(11) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(12) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(13) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(14) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(15) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(16) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(17) && (1UL<<((( 7*32+11))&31) & 0 )) || (((( 7*32+11))>>5)==(18) && (1UL<<((( 7*32+11))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 7*32+11), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has(( 7*32+11)) )) return; __memcpy(kernel_to_user_pgdp(dst), kernel_to_user_pgdp(src), count * sizeof(pgd_t)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_level_shift(enum pg_level level) { return (12 - ( __builtin_constant_p(512) ? ( __builtin_constant_p(512) ? ( (512) < 2 ? 0 : (512) & (1ULL << 63) ? 63 : (512) & (1ULL << 62) ? 62 : (512) & (1ULL << 61) ? 61 : (512) & (1ULL << 60) ? 60 : (512) & (1ULL << 59) ? 59 : (512) & (1ULL << 58) ? 58 : (512) & (1ULL << 57) ? 57 : (512) & (1ULL << 56) ? 56 : (512) & (1ULL << 55) ? 55 : (512) & (1ULL << 54) ? 54 : (512) & (1ULL << 53) ? 53 : (512) & (1ULL << 52) ? 52 : (512) & (1ULL << 51) ? 51 : (512) & (1ULL << 50) ? 50 : (512) & (1ULL << 49) ? 49 : (512) & (1ULL << 48) ? 48 : (512) & (1ULL << 47) ? 47 : (512) & (1ULL << 46) ? 46 : (512) & (1ULL << 45) ? 45 : (512) & (1ULL << 44) ? 44 : (512) & (1ULL << 43) ? 43 : (512) & (1ULL << 42) ? 42 : (512) & (1ULL << 41) ? 41 : (512) & (1ULL << 40) ? 40 : (512) & (1ULL << 39) ? 39 : (512) & (1ULL << 38) ? 38 : (512) & (1ULL << 37) ? 37 : (512) & (1ULL << 36) ? 36 : (512) & (1ULL << 35) ? 35 : (512) & (1ULL << 34) ? 34 : (512) & (1ULL << 33) ? 33 : (512) & (1ULL << 32) ? 32 : (512) & (1ULL << 31) ? 31 : (512) & (1ULL << 30) ? 30 : (512) & (1ULL << 29) ? 29 : (512) & (1ULL << 28) ? 28 : (512) & (1ULL << 27) ? 27 : (512) & (1ULL << 26) ? 26 : (512) & (1ULL << 25) ? 25 : (512) & (1ULL << 24) ? 24 : (512) & (1ULL << 23) ? 23 : (512) & (1ULL << 22) ? 22 : (512) & (1ULL << 21) ? 21 : (512) & (1ULL << 20) ? 20 : (512) & (1ULL << 19) ? 19 : (512) & (1ULL << 18) ? 18 : (512) & (1ULL << 17) ? 17 : (512) & (1ULL << 16) ? 16 : (512) & (1ULL << 15) ? 15 : (512) & (1ULL << 14) ? 14 : (512) & (1ULL << 13) ? 13 : (512) & (1ULL << 12) ? 12 : (512) & (1ULL << 11) ? 11 : (512) & (1ULL << 10) ? 10 : (512) & (1ULL << 9) ? 9 : (512) & (1ULL << 8) ? 8 : (512) & (1ULL << 7) ? 7 : (512) & (1ULL << 6) ? 6 : (512) & (1ULL << 5) ? 5 : (512) & (1ULL << 4) ? 4 : (512) & (1ULL << 3) ? 3 : (512) & (1ULL << 2) ? 2 : 1) : -1) : (sizeof(512) <= 4) ? __ilog2_u32(512) : __ilog2_u64(512) )) + level * ( __builtin_constant_p(512) ? ( __builtin_constant_p(512) ? ( (512) < 2 ? 0 : (512) & (1ULL << 63) ? 63 : (512) & (1ULL << 62) ? 62 : (512) & (1ULL << 61) ? 61 : (512) & (1ULL << 60) ? 60 : (512) & (1ULL << 59) ? 59 : (512) & (1ULL << 58) ? 58 : (512) & (1ULL << 57) ? 57 : (512) & (1ULL << 56) ? 56 : (512) & (1ULL << 55) ? 55 : (512) & (1ULL << 54) ? 54 : (512) & (1ULL << 53) ? 53 : (512) & (1ULL << 52) ? 52 : (512) & (1ULL << 51) ? 51 : (512) & (1ULL << 50) ? 50 : (512) & (1ULL << 49) ? 49 : (512) & (1ULL << 48) ? 48 : (512) & (1ULL << 47) ? 47 : (512) & (1ULL << 46) ? 46 : (512) & (1ULL << 45) ? 45 : (512) & (1ULL << 44) ? 44 : (512) & (1ULL << 43) ? 43 : (512) & (1ULL << 42) ? 42 : (512) & (1ULL << 41) ? 41 : (512) & (1ULL << 40) ? 40 : (512) & (1ULL << 39) ? 39 : (512) & (1ULL << 38) ? 38 : (512) & (1ULL << 37) ? 37 : (512) & (1ULL << 36) ? 36 : (512) & (1ULL << 35) ? 35 : (512) & (1ULL << 34) ? 34 : (512) & (1ULL << 33) ? 33 : (512) & (1ULL << 32) ? 32 : (512) & (1ULL << 31) ? 31 : (512) & (1ULL << 30) ? 30 : (512) & (1ULL << 29) ? 29 : (512) & (1ULL << 28) ? 28 : (512) & (1ULL << 27) ? 27 : (512) & (1ULL << 26) ? 26 : (512) & (1ULL << 25) ? 25 : (512) & (1ULL << 24) ? 24 : (512) & (1ULL << 23) ? 23 : (512) & (1ULL << 22) ? 22 : (512) & (1ULL << 21) ? 21 : (512) & (1ULL << 20) ? 20 : (512) & (1ULL << 19) ? 19 : (512) & (1ULL << 18) ? 18 : (512) & (1ULL << 17) ? 17 : (512) & (1ULL << 16) ? 16 : (512) & (1ULL << 15) ? 15 : (512) & (1ULL << 14) ? 14 : (512) & (1ULL << 13) ? 13 : (512) & (1ULL << 12) ? 12 : (512) & (1ULL << 11) ? 11 : (512) & (1ULL << 10) ? 10 : (512) & (1ULL << 9) ? 9 : (512) & (1ULL << 8) ? 8 : (512) & (1ULL << 7) ? 7 : (512) & (1ULL << 6) ? 6 : (512) & (1ULL << 5) ? 5 : (512) & (1ULL << 4) ? 4 : (512) & (1ULL << 3) ? 3 : (512) & (1ULL << 2) ? 2 : 1) : -1) : (sizeof(512) <= 4) ? __ilog2_u32(512) : __ilog2_u64(512) ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long page_level_size(enum pg_level level) { return 1UL << page_level_shift(level); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long page_level_mask(enum pg_level level) { return ~(page_level_size(level) - 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr, pmd_t *pmd) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void update_mmu_cache_pud(struct vm_area_struct *vma, unsigned long addr, pud_t *pud) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_swp_mksoft_dirty(pte_t pte) { return pte_set_flags(pte, (((pteval_t)(1)) << 1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_swp_soft_dirty(pte_t pte) { return pte_flags(pte) & (((pteval_t)(1)) << 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t pte_swp_clear_soft_dirty(pte_t pte) { return pte_clear_flags(pte, (((pteval_t)(1)) << 1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_swp_mksoft_dirty(pmd_t pmd) { return pmd_set_flags(pmd, (((pteval_t)(1)) << 1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_swp_soft_dirty(pmd_t pmd) { return pmd_flags(pmd) & (((pteval_t)(1)) << 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_swp_clear_soft_dirty(pmd_t pmd) { return pmd_clear_flags(pmd, (((pteval_t)(1)) << 1)); } # 1379 "../arch/x86/include/asm/pgtable.h" extern u32 init_pkru_value; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __pkru_allows_read(u32 pkru, u16 pkey) { int pkru_pkey_bits = pkey * 2; return !(pkru & (0x1 << pkru_pkey_bits)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __pkru_allows_write(u32 pkru, u16 pkey) { int pkru_pkey_bits = pkey * 2; return !(pkru & ((0x1|0x2) << pkru_pkey_bits)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 pte_flags_pkey(unsigned long pte_flags) { return (pte_flags & ((((pteval_t)(1)) << 59) | (((pteval_t)(1)) << 60) | (((pteval_t)(1)) << 61) | (((pteval_t)(1)) << 62))) >> 59; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __pkru_allows_pkey(u16 pkey, bool write) { u32 pkru = read_pkru(); if (!__pkru_allows_read(pkru, pkey)) return false; if (write && !__pkru_allows_write(pkru, pkey)) return false; return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __pte_access_permitted(unsigned long pteval, bool write) { unsigned long need_pte_bits = (((pteval_t)(1)) << 0)|(((pteval_t)(1)) << 2); if (write) need_pte_bits |= (((pteval_t)(1)) << 1); if ((pteval & need_pte_bits) != need_pte_bits) return 0; return __pkru_allows_pkey(pte_flags_pkey(pteval), write); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pte_access_permitted(pte_t pte, bool write) { return __pte_access_permitted(pte_val(pte), write); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pmd_access_permitted(pmd_t pmd, bool write) { return __pte_access_permitted(pmd_val(pmd), write); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pud_access_permitted(pud_t pud, bool write) { return __pte_access_permitted(pud_val(pud), write); } extern bool pfn_modify_allowed(unsigned long pfn, pgprot_t prot); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool arch_has_pfn_modify_check(void) { return (__builtin_constant_p((((19*32 + (18))))) && ( ((((((19*32 + (18)))))>>5)==(0) && (1UL<<(((((19*32 + (18)))))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((((19*32 + (18)))))>>5)==(1) && (1UL<<(((((19*32 + (18)))))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((((19*32 + (18)))))>>5)==(2) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(3) && (1UL<<(((((19*32 + (18)))))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((((19*32 + (18)))))>>5)==(4) && (1UL<<(((((19*32 + (18)))))&31) & (0) )) || ((((((19*32 + (18)))))>>5)==(5) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(6) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(7) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(8) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(9) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(10) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(11) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(12) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(13) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(14) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(15) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(16) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(17) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || ((((((19*32 + (18)))))>>5)==(18) && (1UL<<(((((19*32 + (18)))))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((((19*32 + (18)))), (unsigned long *)((&boot_cpu_data)->x86_capability))); } # 1 "../include/asm-generic/pgtable.h" 1 # 161 "../include/asm-generic/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmdp_huge_get_and_clear_full(struct mm_struct *mm, unsigned long address, pmd_t *pmdp, int full) { return pmdp_huge_get_and_clear(mm, address, pmdp); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t pudp_huge_get_and_clear_full(struct mm_struct *mm, unsigned long address, pud_t *pudp, int full) { return pudp_huge_get_and_clear(mm, address, pudp); } # 196 "../include/asm-generic/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pte_clear_not_present_full(struct mm_struct *mm, unsigned long address, pte_t *ptep, int full) { pte_clear(mm, address, ptep); } extern pte_t ptep_clear_flush(struct vm_area_struct *vma, unsigned long address, pte_t *ptep); extern pmd_t pmdp_huge_clear_flush(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp); extern pud_t pudp_huge_clear_flush(struct vm_area_struct *vma, unsigned long address, pud_t *pudp); # 271 "../include/asm-generic/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pudp_set_wrprotect(struct mm_struct *mm, unsigned long address, pud_t *pudp) { pud_t old_pud = *pudp; set_pud_at(mm, address, pudp, pud_wrprotect(old_pud)); } # 289 "../include/asm-generic/pgtable.h" extern pmd_t pmdp_collapse_flush(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp); # 304 "../include/asm-generic/pgtable.h" extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp, pgtable_t pgtable); extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp); # 318 "../include/asm-generic/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t generic_pmdp_establish(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp, pmd_t pmd) { pmd_t old_pmd = *pmdp; set_pmd_at(vma->vm_mm, address, pmdp, pmd); return old_pmd; } extern pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address, pmd_t *pmdp); # 346 "../include/asm-generic/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pte_unused(pte_t pte) { return 0; } # 378 "../include/asm-generic/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_same(pmd_t pmd_a, pmd_t pmd_b) { return pmd_val(pmd_a) == pmd_val(pmd_b); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pud_same(pud_t pud_a, pud_t pud_b) { return pud_val(pud_a) == pud_val(pud_b); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int p4d_same(p4d_t p4d_a, p4d_t p4d_b) { return p4d_val(p4d_a) == p4d_val(p4d_b); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pgd_same(pgd_t pgd_a, pgd_t pgd_b) { return pgd_val(pgd_a) == pgd_val(pgd_b); } # 450 "../include/asm-generic/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long addr, pte_t pte, pte_t oldpte) { } # 468 "../include/asm-generic/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int arch_unmap_one(struct mm_struct *mm, struct vm_area_struct *vma, unsigned long addr, pte_t orig_pte) { return 0; } # 560 "../include/asm-generic/pgtable.h" void pgd_clear_bad(pgd_t *); void p4d_clear_bad(p4d_t *); void pud_clear_bad(pud_t *); void pmd_clear_bad(pmd_t *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pgd_none_or_clear_bad(pgd_t *pgd) { if (pgd_none(*pgd)) return 1; if (__builtin_expect(!!(pgd_bad(*pgd)), 0)) { pgd_clear_bad(pgd); return 1; } return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int p4d_none_or_clear_bad(p4d_t *p4d) { if (p4d_none(*p4d)) return 1; if (__builtin_expect(!!(p4d_bad(*p4d)), 0)) { p4d_clear_bad(p4d); return 1; } return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pud_none_or_clear_bad(pud_t *pud) { if (pud_none(*pud)) return 1; if (__builtin_expect(!!(pud_bad(*pud)), 0)) { pud_clear_bad(pud); return 1; } return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_none_or_clear_bad(pmd_t *pmd) { if (pmd_none(*pmd)) return 1; if (__builtin_expect(!!(pmd_bad(*pmd)), 0)) { pmd_clear_bad(pmd); return 1; } return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t __ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep) { return ptep_get_and_clear(vma->vm_mm, addr, ptep); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte) { set_pte_at(vma->vm_mm, addr, ptep, pte); } # 847 "../include/asm-generic/pgtable.h" extern int track_pfn_remap(struct vm_area_struct *vma, pgprot_t *prot, unsigned long pfn, unsigned long addr, unsigned long size); extern void track_pfn_insert(struct vm_area_struct *vma, pgprot_t *prot, pfn_t pfn); extern int track_pfn_copy(struct vm_area_struct *vma); extern void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn, unsigned long size); extern void untrack_pfn_moved(struct vm_area_struct *vma); # 869 "../include/asm-generic/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int is_zero_pfn(unsigned long pfn) { extern unsigned long zero_pfn; return pfn == zero_pfn; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long my_zero_pfn(unsigned long addr) { extern unsigned long zero_pfn; return zero_pfn; } # 916 "../include/asm-generic/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t pmd_read_atomic(pmd_t *pmdp) { return *pmdp; } # 951 "../include/asm-generic/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_none_or_trans_huge_or_clear_bad(pmd_t *pmd) { pmd_t pmdval = pmd_read_atomic(pmd); # 969 "../include/asm-generic/pgtable.h" __asm__ __volatile__("" : : : "memory"); # 986 "../include/asm-generic/pgtable.h" if (pmd_none(pmdval) || pmd_trans_huge(pmdval) || (1 && !pmd_present(pmdval))) return 1; if (__builtin_expect(!!(pmd_bad(pmdval)), 0)) { pmd_clear_bad(pmd); return 1; } return 0; } # 1009 "../include/asm-generic/pgtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pmd_trans_unstable(pmd_t *pmd) { return pmd_none_or_trans_huge_or_clear_bad(pmd); } # 1043 "../include/asm-generic/pgtable.h" int p4d_set_huge(p4d_t *p4d, phys_addr_t addr, pgprot_t prot); int p4d_clear_huge(p4d_t *p4d); # 1056 "../include/asm-generic/pgtable.h" int pud_set_huge(pud_t *pud, phys_addr_t addr, pgprot_t prot); int pmd_set_huge(pmd_t *pmd, phys_addr_t addr, pgprot_t prot); int pud_clear_huge(pud_t *pud); int pmd_clear_huge(pmd_t *pmd); int p4d_free_pud_page(p4d_t *p4d, unsigned long addr); int pud_free_pmd_page(pud_t *pud, unsigned long addr); int pmd_free_pte_page(pmd_t *pmd, unsigned long addr); # 1121 "../include/asm-generic/pgtable.h" struct file; int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, unsigned long size, pgprot_t *vma_prot); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) pgd_cache_init(void); # 1467 "../arch/x86/include/asm/pgtable.h" 2 # 100 "../include/linux/mm.h" 2 # 150 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __mm_zero_struct_page(struct page *page) { unsigned long *_pp = (void *)page; do { extern void __compiletime_assert_155(void) ; if (!(!(sizeof(struct page) & 7))) __compiletime_assert_155(); } while (0); do { extern void __compiletime_assert_156(void) ; if (!(!(sizeof(struct page) < 56))) __compiletime_assert_156(); } while (0); do { extern void __compiletime_assert_157(void) ; if (!(!(sizeof(struct page) > 80))) __compiletime_assert_157(); } while (0); switch (sizeof(struct page)) { case 80: _pp[9] = 0; case 72: _pp[8] = 0; case 64: _pp[7] = 0; case 56: _pp[6] = 0; _pp[5] = 0; _pp[4] = 0; _pp[3] = 0; _pp[2] = 0; _pp[1] = 0; _pp[0] = 0; } } # 199 "../include/linux/mm.h" extern int sysctl_max_map_count; extern unsigned long sysctl_user_reserve_kbytes; extern unsigned long sysctl_admin_reserve_kbytes; extern int sysctl_overcommit_memory; extern int sysctl_overcommit_ratio; extern unsigned long sysctl_overcommit_kbytes; extern int overcommit_ratio_handler(struct ctl_table *, int, void *, size_t *, loff_t *); extern int overcommit_kbytes_handler(struct ctl_table *, int, void *, size_t *, loff_t *); # 232 "../include/linux/mm.h" struct vm_area_struct *vm_area_alloc(struct mm_struct *); struct vm_area_struct *vm_area_dup(struct vm_area_struct *); void vm_area_free(struct vm_area_struct *); # 384 "../include/linux/mm.h" extern pgprot_t protection_map[16]; # 417 "../include/linux/mm.h" struct vm_fault { struct vm_area_struct *vma; unsigned int flags; gfp_t gfp_mask; unsigned long pgoff; unsigned long address; pmd_t *pmd; pud_t *pud; pte_t orig_pte; struct page *cow_page; struct mem_cgroup *memcg; struct page *page; pte_t *pte; spinlock_t *ptl; pgtable_t prealloc_pte; }; enum page_entry_size { PE_SIZE_PTE = 0, PE_SIZE_PMD, PE_SIZE_PUD, }; struct vm_operations_struct { void (*open)(struct vm_area_struct * area); void (*close)(struct vm_area_struct * area); int (*split)(struct vm_area_struct * area, unsigned long addr); int (*mremap)(struct vm_area_struct * area); vm_fault_t (*fault)(struct vm_fault *vmf); vm_fault_t (*huge_fault)(struct vm_fault *vmf, enum page_entry_size pe_size); void (*map_pages)(struct vm_fault *vmf, unsigned long start_pgoff, unsigned long end_pgoff); unsigned long (*pagesize)(struct vm_area_struct * area); vm_fault_t (*page_mkwrite)(struct vm_fault *vmf); vm_fault_t (*pfn_mkwrite)(struct vm_fault *vmf); int (*access)(struct vm_area_struct *vma, unsigned long addr, void *buf, int len, int write); const char *(*name)(struct vm_area_struct *vma); # 505 "../include/linux/mm.h" int (*set_policy)(struct vm_area_struct *vma, struct mempolicy *new); # 517 "../include/linux/mm.h" struct mempolicy *(*get_policy)(struct vm_area_struct *vma, unsigned long addr); struct page *(*find_special_page)(struct vm_area_struct *vma, unsigned long addr); }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vma_init(struct vm_area_struct *vma, struct mm_struct *mm) { static const struct vm_operations_struct dummy_vm_ops = {}; __memset(vma, 0, sizeof(*vma)); vma->vm_mm = mm; vma->vm_ops = &dummy_vm_ops; INIT_LIST_HEAD(&vma->anon_vma_chain); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vma_set_anonymous(struct vm_area_struct *vma) { vma->vm_ops = ((void *)0); } struct mmu_gather; struct inode; # 570 "../include/linux/mm.h" # 1 "../include/linux/huge_mm.h" 1 # 1 "../include/linux/sched/coredump.h" 1 # 17 "../include/linux/sched/coredump.h" extern void set_dumpable(struct mm_struct *mm, int value); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __get_dumpable(unsigned long mm_flags) { return mm_flags & ((1 << 2) - 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_dumpable(struct mm_struct *mm) { return __get_dumpable(mm->flags); } # 6 "../include/linux/huge_mm.h" 2 # 1 "../include/linux/fs.h" 1 # 1 "../include/linux/wait_bit.h" 1 # 10 "../include/linux/wait_bit.h" struct wait_bit_key { void *flags; int bit_nr; unsigned long timeout; }; struct wait_bit_queue_entry { struct wait_bit_key key; struct wait_queue_entry wq_entry; }; typedef int wait_bit_action_f(struct wait_bit_key *key, int mode); void __wake_up_bit(struct wait_queue_head *wq_head, void *word, int bit); int __wait_on_bit(struct wait_queue_head *wq_head, struct wait_bit_queue_entry *wbq_entry, wait_bit_action_f *action, unsigned int mode); int __wait_on_bit_lock(struct wait_queue_head *wq_head, struct wait_bit_queue_entry *wbq_entry, wait_bit_action_f *action, unsigned int mode); void wake_up_bit(void *word, int bit); int out_of_line_wait_on_bit(void *word, int, wait_bit_action_f *action, unsigned int mode); int out_of_line_wait_on_bit_timeout(void *word, int, wait_bit_action_f *action, unsigned int mode, unsigned long timeout); int out_of_line_wait_on_bit_lock(void *word, int, wait_bit_action_f *action, unsigned int mode); struct wait_queue_head *bit_waitqueue(void *word, int bit); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) wait_bit_init(void); int wake_bit_function(struct wait_queue_entry *wq_entry, unsigned mode, int sync, void *key); # 49 "../include/linux/wait_bit.h" extern int bit_wait(struct wait_bit_key *key, int mode); extern int bit_wait_io(struct wait_bit_key *key, int mode); extern int bit_wait_timeout(struct wait_bit_key *key, int mode); extern int bit_wait_io_timeout(struct wait_bit_key *key, int mode); # 70 "../include/linux/wait_bit.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int wait_on_bit(unsigned long *word, int bit, unsigned mode) { do { __might_sleep("../include/linux/wait_bit.h", 73, 0); do { } while (0); } while (0); if (!test_bit(bit, word)) return 0; return out_of_line_wait_on_bit(word, bit, bit_wait, mode); } # 95 "../include/linux/wait_bit.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int wait_on_bit_io(unsigned long *word, int bit, unsigned mode) { do { __might_sleep("../include/linux/wait_bit.h", 98, 0); do { } while (0); } while (0); if (!test_bit(bit, word)) return 0; return out_of_line_wait_on_bit(word, bit, bit_wait_io, mode); } # 121 "../include/linux/wait_bit.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int wait_on_bit_timeout(unsigned long *word, int bit, unsigned mode, unsigned long timeout) { do { __might_sleep("../include/linux/wait_bit.h", 125, 0); do { } while (0); } while (0); if (!test_bit(bit, word)) return 0; return out_of_line_wait_on_bit_timeout(word, bit, bit_wait_timeout, mode, timeout); } # 149 "../include/linux/wait_bit.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int wait_on_bit_action(unsigned long *word, int bit, wait_bit_action_f *action, unsigned mode) { do { __might_sleep("../include/linux/wait_bit.h", 153, 0); do { } while (0); } while (0); if (!test_bit(bit, word)) return 0; return out_of_line_wait_on_bit(word, bit, action, mode); } # 178 "../include/linux/wait_bit.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int wait_on_bit_lock(unsigned long *word, int bit, unsigned mode) { do { __might_sleep("../include/linux/wait_bit.h", 181, 0); do { } while (0); } while (0); if (!test_and_set_bit(bit, word)) return 0; return out_of_line_wait_on_bit_lock(word, bit, bit_wait, mode); } # 202 "../include/linux/wait_bit.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int wait_on_bit_lock_io(unsigned long *word, int bit, unsigned mode) { do { __might_sleep("../include/linux/wait_bit.h", 205, 0); do { } while (0); } while (0); if (!test_and_set_bit(bit, word)) return 0; return out_of_line_wait_on_bit_lock(word, bit, bit_wait_io, mode); } # 228 "../include/linux/wait_bit.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int wait_on_bit_lock_action(unsigned long *word, int bit, wait_bit_action_f *action, unsigned mode) { do { __might_sleep("../include/linux/wait_bit.h", 232, 0); do { } while (0); } while (0); if (!test_and_set_bit(bit, word)) return 0; return out_of_line_wait_on_bit_lock(word, bit, action, mode); } extern void init_wait_var_entry(struct wait_bit_queue_entry *wbq_entry, void *var, int flags); extern void wake_up_var(void *var); extern wait_queue_head_t *__var_waitqueue(void *p); # 330 "../include/linux/wait_bit.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_and_wake_up_bit(int bit, void *word) { clear_bit_unlock(bit, word); do { } while (0); wake_up_bit(word, bit); } # 7 "../include/linux/fs.h" 2 # 1 "../include/linux/kdev_t.h" 1 # 1 "../include/uapi/linux/kdev_t.h" 1 # 6 "../include/linux/kdev_t.h" 2 # 24 "../include/linux/kdev_t.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool old_valid_dev(dev_t dev) { return ((unsigned int) ((dev) >> 20)) < 256 && ((unsigned int) ((dev) & ((1U << 20) - 1))) < 256; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 old_encode_dev(dev_t dev) { return (((unsigned int) ((dev) >> 20)) << 8) | ((unsigned int) ((dev) & ((1U << 20) - 1))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) dev_t old_decode_dev(u16 val) { return ((((val >> 8) & 255) << 20) | (val & 255)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 new_encode_dev(dev_t dev) { unsigned major = ((unsigned int) ((dev) >> 20)); unsigned minor = ((unsigned int) ((dev) & ((1U << 20) - 1))); return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) dev_t new_decode_dev(u32 dev) { unsigned major = (dev & 0xfff00) >> 8; unsigned minor = (dev & 0xff) | ((dev >> 12) & 0xfff00); return (((major) << 20) | (minor)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 huge_encode_dev(dev_t dev) { return new_encode_dev(dev); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) dev_t huge_decode_dev(u64 dev) { return new_decode_dev(dev); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int sysv_valid_dev(dev_t dev) { return ((unsigned int) ((dev) >> 20)) < (1<<14) && ((unsigned int) ((dev) & ((1U << 20) - 1))) < (1<<18); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 sysv_encode_dev(dev_t dev) { return ((unsigned int) ((dev) & ((1U << 20) - 1))) | (((unsigned int) ((dev) >> 20)) << 18); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned sysv_major(u32 dev) { return (dev >> 18) & 0x3fff; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned sysv_minor(u32 dev) { return dev & 0x3ffff; } # 8 "../include/linux/fs.h" 2 # 1 "../include/linux/dcache.h" 1 # 1 "../include/linux/rculist_bl.h" 1 # 1 "../include/linux/list_bl.h" 1 # 34 "../include/linux/list_bl.h" struct hlist_bl_head { struct hlist_bl_node *first; }; struct hlist_bl_node { struct hlist_bl_node *next, **pprev; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void INIT_HLIST_BL_NODE(struct hlist_bl_node *h) { h->next = ((void *)0); h->pprev = ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool hlist_bl_unhashed(const struct hlist_bl_node *h) { return !h->pprev; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct hlist_bl_node *hlist_bl_first(struct hlist_bl_head *h) { return (struct hlist_bl_node *) ((unsigned long)h->first & ~1UL); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_bl_set_first(struct hlist_bl_head *h, struct hlist_bl_node *n) { do { if (__builtin_expect(!!((unsigned long)n & 1UL), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/list_bl.h"), "i" (66), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (347)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); do { if (__builtin_expect(!!(((unsigned long)h->first & 1UL) != 1UL), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/list_bl.h"), "i" (68), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (348)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); h->first = (struct hlist_bl_node *)((unsigned long)n | 1UL); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool hlist_bl_empty(const struct hlist_bl_head *h) { return !((unsigned long)({ union { typeof(h->first) __val; char __c[1]; } __u; if (1) __read_once_size(&(h->first), __u.__c, sizeof(h->first)); else __read_once_size_nocheck(&(h->first), __u.__c, sizeof(h->first)); do { } while (0); __u.__val; }) & ~1UL); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_bl_add_head(struct hlist_bl_node *n, struct hlist_bl_head *h) { struct hlist_bl_node *first = hlist_bl_first(h); n->next = first; if (first) first->pprev = &n->next; n->pprev = &h->first; hlist_bl_set_first(h, n); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_bl_add_before(struct hlist_bl_node *n, struct hlist_bl_node *next) { struct hlist_bl_node **pprev = next->pprev; n->pprev = pprev; n->next = next; next->pprev = &n->next; ({ union { typeof(*pprev) __val; char __c[1]; } __u = { .__val = ( typeof(*pprev)) ((struct hlist_bl_node *) ((uintptr_t)n | ((uintptr_t)*pprev & 1UL))) }; __write_once_size(&(*pprev), __u.__c, sizeof(*pprev)); __u.__val; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_bl_add_behind(struct hlist_bl_node *n, struct hlist_bl_node *prev) { n->next = prev->next; n->pprev = &prev->next; prev->next = n; if (n->next) n->next->pprev = &n->next; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __hlist_bl_del(struct hlist_bl_node *n) { struct hlist_bl_node *next = n->next; struct hlist_bl_node **pprev = n->pprev; do { if (__builtin_expect(!!((unsigned long)n & 1UL), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/list_bl.h"), "i" (120), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (349)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); ({ union { typeof(*pprev) __val; char __c[1]; } __u = { .__val = ( typeof(*pprev)) ((struct hlist_bl_node *) ((unsigned long)next | ((unsigned long)*pprev & 1UL))) }; __write_once_size(&(*pprev), __u.__c, sizeof(*pprev)); __u.__val; }); if (next) next->pprev = pprev; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_bl_del(struct hlist_bl_node *n) { __hlist_bl_del(n); n->next = ((void *) 0x100 + (0xdead000000000000UL)); n->pprev = ((void *) 0x122 + (0xdead000000000000UL)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_bl_del_init(struct hlist_bl_node *n) { if (!hlist_bl_unhashed(n)) { __hlist_bl_del(n); INIT_HLIST_BL_NODE(n); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_bl_lock(struct hlist_bl_head *b) { bit_spin_lock(0, (unsigned long *)b); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_bl_unlock(struct hlist_bl_head *b) { __bit_spin_unlock(0, (unsigned long *)b); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool hlist_bl_is_locked(struct hlist_bl_head *b) { return bit_spin_is_locked(0, (unsigned long *)b); } # 9 "../include/linux/rculist_bl.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_bl_set_first_rcu(struct hlist_bl_head *h, struct hlist_bl_node *n) { do { if (__builtin_expect(!!((unsigned long)n & 1UL), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/rculist_bl.h"), "i" (14), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (350)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); do { if (__builtin_expect(!!(((unsigned long)h->first & 1UL) != 1UL), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/rculist_bl.h"), "i" (16), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (351)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); do { uintptr_t _r_a_p__v = (uintptr_t)((struct hlist_bl_node *)((unsigned long)n | 1UL)); ; if (__builtin_constant_p((struct hlist_bl_node *)((unsigned long)n | 1UL)) && (_r_a_p__v) == (uintptr_t)((void *)0)) ({ union { typeof((h->first)) __val; char __c[1]; } __u = { .__val = ( typeof((h->first))) ((typeof(h->first))(_r_a_p__v)) }; __write_once_size(&((h->first)), __u.__c, sizeof((h->first))); __u.__val; }); else do { do { extern void __compiletime_assert_18(void) ; if (!((sizeof(*&h->first) == sizeof(char) || sizeof(*&h->first) == sizeof(short) || sizeof(*&h->first) == sizeof(int) || sizeof(*&h->first) == sizeof(long)))) __compiletime_assert_18(); } while (0); __asm__ __volatile__("" : : : "memory"); ({ union { typeof(*&h->first) __val; char __c[1]; } __u = { .__val = ( typeof(*&h->first)) ((typeof(*((typeof(h->first))_r_a_p__v)) *)((typeof(h->first))_r_a_p__v)) }; __write_once_size(&(*&h->first), __u.__c, sizeof(*&h->first)); __u.__val; }); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct hlist_bl_node *hlist_bl_first_rcu(struct hlist_bl_head *h) { return (struct hlist_bl_node *) ((unsigned long)({ typeof(*(h->first)) *________p1 = (typeof(*(h->first)) *)({ union { typeof((h->first)) __val; char __c[1]; } __u; if (1) __read_once_size(&((h->first)), __u.__c, sizeof((h->first))); else __read_once_size_nocheck(&((h->first)), __u.__c, sizeof((h->first))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((hlist_bl_is_locked(h)) || rcu_read_lock_held()))) { __warned = true; lockdep_rcu_suspicious("../include/linux/rculist_bl.h", 24, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(h->first)) *)(________p1)); }) & ~1UL); } # 47 "../include/linux/rculist_bl.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_bl_del_init_rcu(struct hlist_bl_node *n) { if (!hlist_bl_unhashed(n)) { __hlist_bl_del(n); n->pprev = ((void *)0); } } # 74 "../include/linux/rculist_bl.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_bl_del_rcu(struct hlist_bl_node *n) { __hlist_bl_del(n); n->pprev = ((void *) 0x122 + (0xdead000000000000UL)); } # 99 "../include/linux/rculist_bl.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_bl_add_head_rcu(struct hlist_bl_node *n, struct hlist_bl_head *h) { struct hlist_bl_node *first; first = hlist_bl_first(h); n->next = first; if (first) first->pprev = &n->next; n->pprev = &h->first; hlist_bl_set_first_rcu(h, n); } # 9 "../include/linux/dcache.h" 2 # 1 "../include/linux/lockref.h" 1 # 25 "../include/linux/lockref.h" struct lockref { union { struct { spinlock_t lock; int count; }; }; }; extern void lockref_get(struct lockref *); extern int lockref_put_return(struct lockref *); extern int lockref_get_not_zero(struct lockref *); extern int lockref_put_not_zero(struct lockref *); extern int lockref_get_or_lock(struct lockref *); extern int lockref_put_or_lock(struct lockref *); extern void lockref_mark_dead(struct lockref *); extern int lockref_get_not_dead(struct lockref *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __lockref_is_dead(const struct lockref *l) { return ((int)l->count < 0); } # 14 "../include/linux/dcache.h" 2 # 1 "../include/linux/stringhash.h" 1 # 1 "../include/linux/hash.h" 1 # 60 "../include/linux/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 __hash_32_generic(u32 val) { return val * 0x61C88647; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 hash_32_generic(u32 val, unsigned int bits) { return __hash_32_generic(val) >> (32 - bits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u32 hash_64_generic(u64 val, unsigned int bits) { return val * 0x61C8864680B583EBull >> (64 - bits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 hash_ptr(const void *ptr, unsigned int bits) { return hash_64_generic((unsigned long)ptr, bits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 hash32_ptr(const void *ptr) { unsigned long val = (unsigned long)ptr; val ^= (val >> 32); return (u32)val; } # 8 "../include/linux/stringhash.h" 2 # 42 "../include/linux/stringhash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long partial_name_hash(unsigned long c, unsigned long prevhash) { return (prevhash + (c << 4) + (c >> 4)) * 11; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int end_name_hash(unsigned long hash) { return hash_64_generic(hash, 32); } # 66 "../include/linux/stringhash.h" extern unsigned int __attribute__((__pure__)) full_name_hash(const void *salt, const char *, unsigned int); # 77 "../include/linux/stringhash.h" extern u64 __attribute__((__pure__)) hashlen_string(const void *salt, const char *name); # 15 "../include/linux/dcache.h" 2 struct path; struct vfsmount; # 47 "../include/linux/dcache.h" struct qstr { union { struct { u32 hash; u32 len; }; u64 hash_len; }; const unsigned char *name; }; extern const struct qstr empty_name; extern const struct qstr slash_name; struct dentry_stat_t { long nr_dentry; long nr_unused; long age_limit; long want_pages; long nr_negative; long dummy; }; extern struct dentry_stat_t dentry_stat; # 89 "../include/linux/dcache.h" struct dentry { unsigned int d_flags; seqcount_t d_seq; struct hlist_bl_node d_hash; struct dentry *d_parent; struct qstr d_name; struct inode *d_inode; unsigned char d_iname[32]; struct lockref d_lockref; const struct dentry_operations *d_op; struct super_block *d_sb; unsigned long d_time; void *d_fsdata; union { struct list_head d_lru; wait_queue_head_t *d_wait; }; struct list_head d_child; struct list_head d_subdirs; union { struct hlist_node d_alias; struct hlist_bl_node d_in_lookup_hash; struct callback_head d_rcu; } d_u; } ; enum dentry_d_lock_class { DENTRY_D_LOCK_NORMAL, DENTRY_D_LOCK_NESTED }; struct dentry_operations { int (*d_revalidate)(struct dentry *, unsigned int); int (*d_weak_revalidate)(struct dentry *, unsigned int); int (*d_hash)(const struct dentry *, struct qstr *); int (*d_compare)(const struct dentry *, unsigned int, const char *, const struct qstr *); int (*d_delete)(const struct dentry *); int (*d_init)(struct dentry *); void (*d_release)(struct dentry *); void (*d_prune)(struct dentry *); void (*d_iput)(struct dentry *, struct inode *); char *(*d_dname)(struct dentry *, char *, int); struct vfsmount *(*d_automount)(struct path *); int (*d_manage)(const struct path *, bool); struct dentry *(*d_real)(struct dentry *, const struct inode *); } __attribute__((__aligned__((1 << (6))))); # 221 "../include/linux/dcache.h" extern seqlock_t rename_lock; extern void d_instantiate(struct dentry *, struct inode *); extern void d_instantiate_new(struct dentry *, struct inode *); extern struct dentry * d_instantiate_unique(struct dentry *, struct inode *); extern struct dentry * d_instantiate_anon(struct dentry *, struct inode *); extern void __d_drop(struct dentry *dentry); extern void d_drop(struct dentry *dentry); extern void d_delete(struct dentry *); extern void d_set_d_op(struct dentry *dentry, const struct dentry_operations *op); extern struct dentry * d_alloc(struct dentry *, const struct qstr *); extern struct dentry * d_alloc_anon(struct super_block *); extern struct dentry * d_alloc_parallel(struct dentry *, const struct qstr *, wait_queue_head_t *); extern struct dentry * d_splice_alias(struct inode *, struct dentry *); extern struct dentry * d_add_ci(struct dentry *, struct inode *, struct qstr *); extern struct dentry * d_exact_alias(struct dentry *, struct inode *); extern struct dentry *d_find_any_alias(struct inode *inode); extern struct dentry * d_obtain_alias(struct inode *); extern struct dentry * d_obtain_root(struct inode *); extern void shrink_dcache_sb(struct super_block *); extern void shrink_dcache_parent(struct dentry *); extern void shrink_dcache_for_umount(struct super_block *); extern void d_invalidate(struct dentry *); extern struct dentry * d_make_root(struct inode *); extern void d_genocide(struct dentry *); extern void d_tmpfile(struct dentry *, struct inode *); extern struct dentry *d_find_alias(struct inode *); extern void d_prune_aliases(struct inode *); extern int path_has_submounts(const struct path *); extern void d_rehash(struct dentry *); extern void d_add(struct dentry *, struct inode *); extern void d_move(struct dentry *, struct dentry *); extern void d_exchange(struct dentry *, struct dentry *); extern struct dentry *d_ancestor(struct dentry *, struct dentry *); extern struct dentry *d_lookup(const struct dentry *, const struct qstr *); extern struct dentry *d_hash_and_lookup(struct dentry *, struct qstr *); extern struct dentry *__d_lookup(const struct dentry *, const struct qstr *); extern struct dentry *__d_lookup_rcu(const struct dentry *parent, const struct qstr *name, unsigned *seq); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned d_count(const struct dentry *dentry) { return dentry->d_lockref.count; } extern __attribute__((__format__(printf, 4, 5))) char *dynamic_dname(struct dentry *, char *, int, const char *, ...); extern char *simple_dname(struct dentry *, char *, int); extern char *__d_path(const struct path *, const struct path *, char *, int); extern char *d_absolute_path(const struct path *, char *, int); extern char *d_path(const struct path *, char *, int); extern char *dentry_path_raw(struct dentry *, char *, int); extern char *dentry_path(struct dentry *, char *, int); # 312 "../include/linux/dcache.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct dentry *dget_dlock(struct dentry *dentry) { if (dentry) dentry->d_lockref.count++; return dentry; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct dentry *dget(struct dentry *dentry) { if (dentry) lockref_get(&dentry->d_lockref); return dentry; } extern struct dentry *dget_parent(struct dentry *dentry); # 335 "../include/linux/dcache.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int d_unhashed(const struct dentry *dentry) { return hlist_bl_unhashed(&dentry->d_hash); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int d_unlinked(const struct dentry *dentry) { return d_unhashed(dentry) && !((dentry) == (dentry)->d_parent); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cant_mount(const struct dentry *dentry) { return (dentry->d_flags & 0x00000100); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dont_mount(struct dentry *dentry) { spin_lock(&dentry->d_lockref.lock); dentry->d_flags |= 0x00000100; spin_unlock(&dentry->d_lockref.lock); } extern void __d_lookup_done(struct dentry *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int d_in_lookup(const struct dentry *dentry) { return dentry->d_flags & 0x10000000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void d_lookup_done(struct dentry *dentry) { if (__builtin_expect(!!(d_in_lookup(dentry)), 0)) { spin_lock(&dentry->d_lockref.lock); __d_lookup_done(dentry); spin_unlock(&dentry->d_lockref.lock); } } extern void dput(struct dentry *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_managed(const struct dentry *dentry) { return dentry->d_flags & (0x00010000|0x00020000|0x00040000); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_mountpoint(const struct dentry *dentry) { return dentry->d_flags & 0x00010000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned __d_entry_type(const struct dentry *dentry) { return dentry->d_flags & 0x00700000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_is_miss(const struct dentry *dentry) { return __d_entry_type(dentry) == 0x00000000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_is_whiteout(const struct dentry *dentry) { return __d_entry_type(dentry) == 0x00100000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_can_lookup(const struct dentry *dentry) { return __d_entry_type(dentry) == 0x00200000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_is_autodir(const struct dentry *dentry) { return __d_entry_type(dentry) == 0x00300000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_is_dir(const struct dentry *dentry) { return d_can_lookup(dentry) || d_is_autodir(dentry); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_is_symlink(const struct dentry *dentry) { return __d_entry_type(dentry) == 0x00600000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_is_reg(const struct dentry *dentry) { return __d_entry_type(dentry) == 0x00400000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_is_special(const struct dentry *dentry) { return __d_entry_type(dentry) == 0x00500000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_is_file(const struct dentry *dentry) { return d_is_reg(dentry) || d_is_special(dentry); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_is_negative(const struct dentry *dentry) { return d_is_miss(dentry); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_is_positive(const struct dentry *dentry) { return !d_is_negative(dentry); } # 464 "../include/linux/dcache.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_really_is_negative(const struct dentry *dentry) { return dentry->d_inode == ((void *)0); } # 482 "../include/linux/dcache.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_really_is_positive(const struct dentry *dentry) { return dentry->d_inode != ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int simple_positive(const struct dentry *dentry) { return d_really_is_positive(dentry) && !d_unhashed(dentry); } extern void d_set_fallthru(struct dentry *dentry); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool d_is_fallthru(const struct dentry *dentry) { return dentry->d_flags & 0x01000000; } extern int sysctl_vfs_cache_pressure; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long vfs_pressure_ratio(unsigned long val) { return ( { typeof(val) quot = (val) / (100); typeof(val) rem = (val) % (100); (quot * (sysctl_vfs_cache_pressure)) + ((rem * (sysctl_vfs_cache_pressure)) / (100)); } ); } # 514 "../include/linux/dcache.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct inode *d_inode(const struct dentry *dentry) { return dentry->d_inode; } # 526 "../include/linux/dcache.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct inode *d_inode_rcu(const struct dentry *dentry) { return ({ union { typeof(dentry->d_inode) __val; char __c[1]; } __u; if (1) __read_once_size(&(dentry->d_inode), __u.__c, sizeof(dentry->d_inode)); else __read_once_size_nocheck(&(dentry->d_inode), __u.__c, sizeof(dentry->d_inode)); do { } while (0); __u.__val; }); } # 541 "../include/linux/dcache.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct inode *d_backing_inode(const struct dentry *upper) { struct inode *inode = upper->d_inode; return inode; } # 558 "../include/linux/dcache.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct dentry *d_backing_dentry(struct dentry *upper) { return upper; } # 573 "../include/linux/dcache.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct dentry *d_real(struct dentry *dentry, const struct inode *inode) { if (__builtin_expect(!!(dentry->d_flags & 0x04000000), 0)) return dentry->d_op->d_real(dentry, inode); else return dentry; } # 589 "../include/linux/dcache.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct inode *d_real_inode(const struct dentry *dentry) { return d_backing_inode(d_real((struct dentry *) dentry, ((void *)0))); } struct name_snapshot { struct qstr name; unsigned char inline_name[32]; }; void take_dentry_name_snapshot(struct name_snapshot *, struct dentry *); void release_dentry_name_snapshot(struct name_snapshot *); # 9 "../include/linux/fs.h" 2 # 1 "../include/linux/path.h" 1 struct dentry; struct vfsmount; struct path { struct vfsmount *mnt; struct dentry *dentry; } ; extern void path_get(const struct path *); extern void path_put(const struct path *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int path_equal(const struct path *path1, const struct path *path2) { return path1->mnt == path2->mnt && path1->dentry == path2->dentry; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void path_put_init(struct path *path) { path_put(path); *path = (struct path) { }; } # 10 "../include/linux/fs.h" 2 # 1 "../include/linux/list_lru.h" 1 # 15 "../include/linux/list_lru.h" struct mem_cgroup; enum lru_status { LRU_REMOVED, LRU_REMOVED_RETRY, LRU_ROTATE, LRU_SKIP, LRU_RETRY, }; struct list_lru_one { struct list_head list; long nr_items; }; struct list_lru_memcg { struct callback_head rcu; struct list_lru_one *lru[0]; }; struct list_lru_node { spinlock_t lock; struct list_lru_one lru; struct list_lru_memcg *memcg_lrus; long nr_items; } __attribute__((__aligned__((1 << (6))))); struct list_lru { struct list_lru_node *node; struct list_head list; int shrinker_id; bool memcg_aware; }; void list_lru_destroy(struct list_lru *lru); int __list_lru_init(struct list_lru *lru, bool memcg_aware, struct lock_class_key *key, struct shrinker *shrinker); # 72 "../include/linux/list_lru.h" int memcg_update_all_list_lrus(int num_memcgs); void memcg_drain_all_list_lrus(int src_idx, struct mem_cgroup *dst_memcg); # 91 "../include/linux/list_lru.h" bool list_lru_add(struct list_lru *lru, struct list_head *item); # 104 "../include/linux/list_lru.h" bool list_lru_del(struct list_lru *lru, struct list_head *item); # 116 "../include/linux/list_lru.h" unsigned long list_lru_count_one(struct list_lru *lru, int nid, struct mem_cgroup *memcg); unsigned long list_lru_count_node(struct list_lru *lru, int nid); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long list_lru_shrink_count(struct list_lru *lru, struct shrink_control *sc) { return list_lru_count_one(lru, sc->nid, sc->memcg); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long list_lru_count(struct list_lru *lru) { long count = 0; int nid; for (((nid)) = __first_node(&(node_states[N_NORMAL_MEMORY])); ((nid)) < (1 << 10); ((nid)) = __next_node((((nid))), &((node_states[N_NORMAL_MEMORY])))) count += list_lru_count_node(lru, nid); return count; } void list_lru_isolate(struct list_lru_one *list, struct list_head *item); void list_lru_isolate_move(struct list_lru_one *list, struct list_head *item, struct list_head *head); typedef enum lru_status (*list_lru_walk_cb)(struct list_head *item, struct list_lru_one *list, spinlock_t *lock, void *cb_arg); # 166 "../include/linux/list_lru.h" unsigned long list_lru_walk_one(struct list_lru *lru, int nid, struct mem_cgroup *memcg, list_lru_walk_cb isolate, void *cb_arg, unsigned long *nr_to_walk); # 183 "../include/linux/list_lru.h" unsigned long list_lru_walk_one_irq(struct list_lru *lru, int nid, struct mem_cgroup *memcg, list_lru_walk_cb isolate, void *cb_arg, unsigned long *nr_to_walk); unsigned long list_lru_walk_node(struct list_lru *lru, int nid, list_lru_walk_cb isolate, void *cb_arg, unsigned long *nr_to_walk); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long list_lru_shrink_walk(struct list_lru *lru, struct shrink_control *sc, list_lru_walk_cb isolate, void *cb_arg) { return list_lru_walk_one(lru, sc->nid, sc->memcg, isolate, cb_arg, &sc->nr_to_scan); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long list_lru_shrink_walk_irq(struct list_lru *lru, struct shrink_control *sc, list_lru_walk_cb isolate, void *cb_arg) { return list_lru_walk_one_irq(lru, sc->nid, sc->memcg, isolate, cb_arg, &sc->nr_to_scan); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long list_lru_walk(struct list_lru *lru, list_lru_walk_cb isolate, void *cb_arg, unsigned long nr_to_walk) { long isolated = 0; int nid; for (((nid)) = __first_node(&(node_states[N_NORMAL_MEMORY])); ((nid)) < (1 << 10); ((nid)) = __next_node((((nid))), &((node_states[N_NORMAL_MEMORY])))) { isolated += list_lru_walk_node(lru, nid, isolate, cb_arg, &nr_to_walk); if (nr_to_walk <= 0) break; } return isolated; } # 14 "../include/linux/fs.h" 2 # 24 "../include/linux/fs.h" # 1 "../include/linux/capability.h" 1 # 16 "../include/linux/capability.h" # 1 "../include/uapi/linux/capability.h" 1 # 39 "../include/uapi/linux/capability.h" typedef struct __user_cap_header_struct { __u32 version; int pid; } *cap_user_header_t; typedef struct __user_cap_data_struct { __u32 effective; __u32 permitted; __u32 inheritable; } *cap_user_data_t; # 72 "../include/uapi/linux/capability.h" struct vfs_cap_data { __le32 magic_etc; struct { __le32 permitted; __le32 inheritable; } data[2]; }; struct vfs_ns_cap_data { __le32 magic_etc; struct { __le32 permitted; __le32 inheritable; } data[2]; __le32 rootid; }; # 17 "../include/linux/capability.h" 2 extern int file_caps_enabled; typedef struct kernel_cap_struct { __u32 cap[2]; } kernel_cap_t; struct cpu_vfs_cap_data { __u32 magic_etc; kernel_cap_t permitted; kernel_cap_t inheritable; kuid_t rootid; }; struct file; struct inode; struct dentry; struct task_struct; struct user_namespace; extern const kernel_cap_t __cap_empty_set; extern const kernel_cap_t __cap_init_eff_set; # 118 "../include/linux/capability.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) kernel_cap_t cap_combine(const kernel_cap_t a, const kernel_cap_t b) { kernel_cap_t dest; do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = a.cap[__capi] | b.cap[__capi]; } } while (0); return dest; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) kernel_cap_t cap_intersect(const kernel_cap_t a, const kernel_cap_t b) { kernel_cap_t dest; do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = a.cap[__capi] & b.cap[__capi]; } } while (0); return dest; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) kernel_cap_t cap_drop(const kernel_cap_t a, const kernel_cap_t drop) { kernel_cap_t dest; do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = a.cap[__capi] &~ drop.cap[__capi]; } } while (0); return dest; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) kernel_cap_t cap_invert(const kernel_cap_t c) { kernel_cap_t dest; do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = ~ c.cap[__capi]; } } while (0); return dest; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cap_isclear(const kernel_cap_t a) { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { if (a.cap[__capi] != 0) return false; } return true; } # 166 "../include/linux/capability.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cap_issubset(const kernel_cap_t a, const kernel_cap_t set) { kernel_cap_t dest; dest = cap_drop(a, set); return cap_isclear(dest); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) kernel_cap_t cap_drop_fs_set(const kernel_cap_t a) { const kernel_cap_t __cap_fs_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((27) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31))) | (1 << ((9) & 31)), ((1 << ((32) & 31))) } }); return cap_drop(a, __cap_fs_set); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) kernel_cap_t cap_raise_fs_set(const kernel_cap_t a, const kernel_cap_t permitted) { const kernel_cap_t __cap_fs_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((27) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31))) | (1 << ((9) & 31)), ((1 << ((32) & 31))) } }); return cap_combine(a, cap_intersect(permitted, __cap_fs_set)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) kernel_cap_t cap_drop_nfsd_set(const kernel_cap_t a) { const kernel_cap_t __cap_fs_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((27) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31))) | (1 << ((24) & 31)), ((1 << ((32) & 31))) } }); return cap_drop(a, __cap_fs_set); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) kernel_cap_t cap_raise_nfsd_set(const kernel_cap_t a, const kernel_cap_t permitted) { const kernel_cap_t __cap_nfsd_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((27) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31))) | (1 << ((24) & 31)), ((1 << ((32) & 31))) } }); return cap_combine(a, cap_intersect(permitted, __cap_nfsd_set)); } extern bool has_capability(struct task_struct *t, int cap); extern bool has_ns_capability(struct task_struct *t, struct user_namespace *ns, int cap); extern bool has_capability_noaudit(struct task_struct *t, int cap); extern bool has_ns_capability_noaudit(struct task_struct *t, struct user_namespace *ns, int cap); extern bool capable(int cap); extern bool ns_capable(struct user_namespace *ns, int cap); extern bool ns_capable_noaudit(struct user_namespace *ns, int cap); extern bool ns_capable_setid(struct user_namespace *ns, int cap); # 250 "../include/linux/capability.h" extern bool privileged_wrt_inode_uidgid(struct user_namespace *ns, const struct inode *inode); extern bool capable_wrt_inode_uidgid(const struct inode *inode, int cap); extern bool file_ns_capable(const struct file *file, struct user_namespace *ns, int cap); extern bool ptracer_capable(struct task_struct *tsk, struct user_namespace *ns); extern int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data *cpu_caps); extern int cap_convert_nscap(struct dentry *dentry, void **ivalue, size_t size); # 25 "../include/linux/fs.h" 2 # 1 "../include/linux/semaphore.h" 1 # 15 "../include/linux/semaphore.h" struct semaphore { raw_spinlock_t lock; unsigned int count; struct list_head wait_list; }; # 31 "../include/linux/semaphore.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sema_init(struct semaphore *sem, int val) { static struct lock_class_key __key; *sem = (struct semaphore) { .lock = (raw_spinlock_t) { .raw_lock = { { .val = { (0) } } }, .magic = 0xdead4ead, .owner_cpu = -1, .owner = ((void *)-1L), .dep_map = { .name = "(*sem).lock" } }, .count = val, .wait_list = { &((*sem).wait_list), &((*sem).wait_list) }, }; lockdep_init_map(&sem->lock.dep_map, "semaphore->lock", &__key, 0); } extern void down(struct semaphore *sem); extern int __attribute__((__warn_unused_result__)) down_interruptible(struct semaphore *sem); extern int __attribute__((__warn_unused_result__)) down_killable(struct semaphore *sem); extern int __attribute__((__warn_unused_result__)) down_trylock(struct semaphore *sem); extern int __attribute__((__warn_unused_result__)) down_timeout(struct semaphore *sem, long jiffies); extern void up(struct semaphore *sem); # 26 "../include/linux/fs.h" 2 # 1 "../include/linux/fcntl.h" 1 # 1 "../include/uapi/linux/fcntl.h" 1 # 1 "../arch/x86/include/uapi/asm/fcntl.h" 1 # 1 "../include/uapi/asm-generic/fcntl.h" 1 # 156 "../include/uapi/asm-generic/fcntl.h" struct f_owner_ex { int type; __kernel_pid_t pid; }; # 196 "../include/uapi/asm-generic/fcntl.h" struct flock { short l_type; short l_whence; __kernel_off_t l_start; __kernel_off_t l_len; __kernel_pid_t l_pid; }; struct flock64 { short l_type; short l_whence; __kernel_loff_t l_start; __kernel_loff_t l_len; __kernel_pid_t l_pid; }; # 2 "../arch/x86/include/uapi/asm/fcntl.h" 2 # 6 "../include/uapi/linux/fcntl.h" 2 # 6 "../include/linux/fcntl.h" 2 # 27 "../include/linux/fs.h" 2 # 1 "../include/uapi/linux/fiemap.h" 1 # 17 "../include/uapi/linux/fiemap.h" struct fiemap_extent { __u64 fe_logical; __u64 fe_physical; __u64 fe_length; __u64 fe_reserved64[2]; __u32 fe_flags; __u32 fe_reserved[3]; }; struct fiemap { __u64 fm_start; __u64 fm_length; __u32 fm_flags; __u32 fm_mapped_extents; __u32 fm_extent_count; __u32 fm_reserved; struct fiemap_extent fm_extents[0]; }; # 28 "../include/linux/fs.h" 2 # 1 "../include/linux/migrate_mode.h" 1 # 15 "../include/linux/migrate_mode.h" enum migrate_mode { MIGRATE_ASYNC, MIGRATE_SYNC_LIGHT, MIGRATE_SYNC, MIGRATE_SYNC_NO_COPY, }; # 32 "../include/linux/fs.h" 2 # 1 "../include/linux/percpu-rwsem.h" 1 # 1 "../include/linux/rcuwait.h" 1 # 20 "../include/linux/rcuwait.h" struct rcuwait { struct task_struct *task; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rcuwait_init(struct rcuwait *w) { w->task = ((void *)0); } extern void rcuwait_wake_up(struct rcuwait *w); # 9 "../include/linux/percpu-rwsem.h" 2 # 1 "../include/linux/rcu_sync.h" 1 # 17 "../include/linux/rcu_sync.h" struct rcu_sync { int gp_state; int gp_count; wait_queue_head_t gp_wait; struct callback_head cb_head; }; # 32 "../include/linux/rcu_sync.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool rcu_sync_is_idle(struct rcu_sync *rsp) { do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!rcu_read_lock_held() && !rcu_read_lock_bh_held() && !rcu_read_lock_sched_held())) { __warned = true; lockdep_rcu_suspicious("../include/linux/rcu_sync.h", 37, "suspicious rcu_sync_is_idle() usage"); } } while (0); return !({ union { typeof(rsp->gp_state) __val; char __c[1]; } __u; if (1) __read_once_size(&(rsp->gp_state), __u.__c, sizeof(rsp->gp_state)); else __read_once_size_nocheck(&(rsp->gp_state), __u.__c, sizeof(rsp->gp_state)); do { } while (0); __u.__val; }); } extern void rcu_sync_init(struct rcu_sync *); extern void rcu_sync_enter_start(struct rcu_sync *); extern void rcu_sync_enter(struct rcu_sync *); extern void rcu_sync_exit(struct rcu_sync *); extern void rcu_sync_dtor(struct rcu_sync *); # 10 "../include/linux/percpu-rwsem.h" 2 struct percpu_rw_semaphore { struct rcu_sync rss; unsigned int *read_count; struct rw_semaphore rw_sem; struct rcuwait writer; int readers_block; }; # 33 "../include/linux/percpu-rwsem.h" extern int __percpu_down_read(struct percpu_rw_semaphore *, int); extern void __percpu_up_read(struct percpu_rw_semaphore *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void percpu_down_read(struct percpu_rw_semaphore *sem) { do { __might_sleep("../include/linux/percpu-rwsem.h", 38, 0); do { } while (0); } while (0); lock_acquire(&sem->rw_sem.dep_map, 0, 0, 1, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); # 51 "../include/linux/percpu-rwsem.h" ({ __this_cpu_preempt_check("add"); do { do { const void *__vpp_verify = (typeof((&(*sem->read_count)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*sem->read_count)) { case 1: do { typedef typeof((*sem->read_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*sem->read_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((*sem->read_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*sem->read_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((*sem->read_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*sem->read_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((*sem->read_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*sem->read_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); }); if (__builtin_expect(!!(!rcu_sync_is_idle(&sem->rss)), 0)) __percpu_down_read(sem, false); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int percpu_down_read_trylock(struct percpu_rw_semaphore *sem) { int ret = 1; do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); ({ __this_cpu_preempt_check("add"); do { do { const void *__vpp_verify = (typeof((&(*sem->read_count)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*sem->read_count)) { case 1: do { typedef typeof((*sem->read_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*sem->read_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((*sem->read_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*sem->read_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((*sem->read_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*sem->read_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((*sem->read_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*sem->read_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); }); if (__builtin_expect(!!(!rcu_sync_is_idle(&sem->rss)), 0)) ret = __percpu_down_read(sem, true); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); if (ret) lock_acquire(&sem->rw_sem.dep_map, 0, 1, 1, 1, ((void *)0), (unsigned long)__builtin_return_address(0)); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void percpu_up_read(struct percpu_rw_semaphore *sem) { do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (__builtin_expect(!!(rcu_sync_is_idle(&sem->rss)), 1)) ({ __this_cpu_preempt_check("add"); do { do { const void *__vpp_verify = (typeof((&(*sem->read_count)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*sem->read_count)) { case 1: do { typedef typeof((*sem->read_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(*sem->read_count))(1)) && ((-(typeof(*sem->read_count))(1)) == 1 || (-(typeof(*sem->read_count))(1)) == -1)) ? (int)(-(typeof(*sem->read_count))(1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(*sem->read_count))(1)); (void)pao_tmp__; } switch (sizeof((*sem->read_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "qi" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "re" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((*sem->read_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(*sem->read_count))(1)) && ((-(typeof(*sem->read_count))(1)) == 1 || (-(typeof(*sem->read_count))(1)) == -1)) ? (int)(-(typeof(*sem->read_count))(1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(*sem->read_count))(1)); (void)pao_tmp__; } switch (sizeof((*sem->read_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "qi" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "re" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((*sem->read_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(*sem->read_count))(1)) && ((-(typeof(*sem->read_count))(1)) == 1 || (-(typeof(*sem->read_count))(1)) == -1)) ? (int)(-(typeof(*sem->read_count))(1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(*sem->read_count))(1)); (void)pao_tmp__; } switch (sizeof((*sem->read_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "qi" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "re" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((*sem->read_count)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(*sem->read_count))(1)) && ((-(typeof(*sem->read_count))(1)) == 1 || (-(typeof(*sem->read_count))(1)) == -1)) ? (int)(-(typeof(*sem->read_count))(1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(*sem->read_count))(1)); (void)pao_tmp__; } switch (sizeof((*sem->read_count))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "qi" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "ri" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*sem->read_count)) : "re" ((pao_T__)(-(typeof(*sem->read_count))(1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); }); else __percpu_up_read(sem); do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); lock_release(&sem->rw_sem.dep_map, 1, (unsigned long)__builtin_return_address(0)); } extern void percpu_down_write(struct percpu_rw_semaphore *); extern void percpu_up_write(struct percpu_rw_semaphore *); extern int __percpu_init_rwsem(struct percpu_rw_semaphore *, const char *, struct lock_class_key *); extern void percpu_free_rwsem(struct percpu_rw_semaphore *); # 118 "../include/linux/percpu-rwsem.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void percpu_rwsem_release(struct percpu_rw_semaphore *sem, bool read, unsigned long ip) { lock_release(&sem->rw_sem.dep_map, 1, ip); if (!read) atomic_long_set(&sem->rw_sem.owner, (-2L)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void percpu_rwsem_acquire(struct percpu_rw_semaphore *sem, bool read, unsigned long ip) { lock_acquire(&sem->rw_sem.dep_map, 0, 1, read, 1, ((void *)0), ip); if (!read) atomic_long_set(&sem->rw_sem.owner, (long)get_current()); } # 35 "../include/linux/fs.h" 2 # 1 "../include/linux/delayed_call.h" 1 # 10 "../include/linux/delayed_call.h" struct delayed_call { void (*fn)(void *); void *arg; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_delayed_call(struct delayed_call *call, void (*fn)(void *), void *arg) { call->fn = fn; call->arg = arg; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void do_delayed_call(struct delayed_call *call) { if (call->fn) call->fn(call->arg); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_delayed_call(struct delayed_call *call) { call->fn = ((void *)0); } # 37 "../include/linux/fs.h" 2 # 1 "../include/linux/uuid.h" 1 # 11 "../include/linux/uuid.h" # 1 "../include/uapi/linux/uuid.h" 1 # 23 "../include/uapi/linux/uuid.h" typedef struct { __u8 b[16]; } guid_t; # 35 "../include/uapi/linux/uuid.h" typedef guid_t uuid_le; # 12 "../include/linux/uuid.h" 2 typedef struct { __u8 b[16]; } uuid_t; # 33 "../include/linux/uuid.h" extern const guid_t guid_null; extern const uuid_t uuid_null; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool guid_equal(const guid_t *u1, const guid_t *u2) { return memcmp(u1, u2, sizeof(guid_t)) == 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void guid_copy(guid_t *dst, const guid_t *src) { __memcpy(dst, src, sizeof(guid_t)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool guid_is_null(const guid_t *guid) { return guid_equal(guid, &guid_null); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool uuid_equal(const uuid_t *u1, const uuid_t *u2) { return memcmp(u1, u2, sizeof(uuid_t)) == 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void uuid_copy(uuid_t *dst, const uuid_t *src) { __memcpy(dst, src, sizeof(uuid_t)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool uuid_is_null(const uuid_t *uuid) { return uuid_equal(uuid, &uuid_null); } void generate_random_uuid(unsigned char uuid[16]); extern void guid_gen(guid_t *u); extern void uuid_gen(uuid_t *u); bool __attribute__((__warn_unused_result__)) uuid_is_valid(const char *uuid); extern const u8 guid_index[16]; extern const u8 uuid_index[16]; int guid_parse(const char *uuid, guid_t *u); int uuid_parse(const char *uuid, uuid_t *u); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int uuid_le_cmp(const guid_t u1, const guid_t u2) { return memcmp(&u1, &u2, sizeof(guid_t)); } # 38 "../include/linux/fs.h" 2 # 1 "../include/linux/errseq.h" 1 typedef u32 errseq_t; errseq_t errseq_set(errseq_t *eseq, int err); errseq_t errseq_sample(errseq_t *eseq); int errseq_check(errseq_t *eseq, errseq_t since); int errseq_check_and_advance(errseq_t *eseq, errseq_t *since); # 39 "../include/linux/fs.h" 2 # 1 "../include/linux/ioprio.h" 1 # 1 "../include/linux/sched/rt.h" 1 struct task_struct; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int rt_prio(int prio) { if (__builtin_expect(!!(prio < 100), 0)) return 1; return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int rt_task(struct task_struct *p) { return rt_prio(p->prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool task_is_realtime(struct task_struct *tsk) { int policy = tsk->policy; if (policy == 1 || policy == 2) return true; if (policy == 6) return true; return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct task_struct *rt_mutex_get_top_task(struct task_struct *p) { return p->pi_top_task; } extern void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task); extern void rt_mutex_adjust_pi(struct task_struct *p); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool tsk_is_pi_blocked(struct task_struct *tsk) { return tsk->pi_blocked_on != ((void *)0); } # 58 "../include/linux/sched/rt.h" extern void normalize_rt_tasks(void); # 7 "../include/linux/ioprio.h" 2 # 1 "../include/linux/iocontext.h" 1 enum { ICQ_EXITED = 1 << 2, }; # 72 "../include/linux/iocontext.h" struct io_cq { struct request_queue *q; struct io_context *ioc; union { struct list_head q_node; struct kmem_cache *__rcu_icq_cache; }; union { struct hlist_node ioc_node; struct callback_head __rcu_head; }; unsigned int flags; }; struct io_context { atomic_long_t refcount; atomic_t active_ref; atomic_t nr_tasks; spinlock_t lock; unsigned short ioprio; int nr_batch_requests; unsigned long last_waited; struct xarray icq_tree; struct io_cq *icq_hint; struct hlist_head icq_list; struct work_struct release_work; }; # 129 "../include/linux/iocontext.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void get_io_context_active(struct io_context *ioc) { ({ int __ret_warn_on = !!(atomic_long_read(&ioc->refcount) <= 0); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/iocontext.h"), "i" (131), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (352)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); ({ int __ret_warn_on = !!(atomic_read(&ioc->active_ref) <= 0); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/iocontext.h"), "i" (132), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (353)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); atomic_long_inc(&ioc->refcount); atomic_inc(&ioc->active_ref); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ioc_task_link(struct io_context *ioc) { get_io_context_active(ioc); ({ int __ret_warn_on = !!(atomic_read(&ioc->nr_tasks) <= 0); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/iocontext.h"), "i" (141), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (354)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); atomic_inc(&ioc->nr_tasks); } struct task_struct; void put_io_context(struct io_context *ioc); void put_io_context_active(struct io_context *ioc); void exit_io_context(struct task_struct *task); struct io_context *get_task_io_context(struct task_struct *task, gfp_t gfp_flags, int node); # 8 "../include/linux/ioprio.h" 2 # 27 "../include/linux/ioprio.h" enum { IOPRIO_CLASS_NONE, IOPRIO_CLASS_RT, IOPRIO_CLASS_BE, IOPRIO_CLASS_IDLE, }; enum { IOPRIO_WHO_PROCESS = 1, IOPRIO_WHO_PGRP, IOPRIO_WHO_USER, }; # 54 "../include/linux/ioprio.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int task_nice_ioprio(struct task_struct *task) { return (task_nice(task) + 20) / 5; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int task_nice_ioclass(struct task_struct *task) { if (task->policy == 5) return IOPRIO_CLASS_IDLE; else if (task_is_realtime(task)) return IOPRIO_CLASS_RT; else return IOPRIO_CLASS_BE; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_current_ioprio(void) { struct io_context *ioc = get_current()->io_context; if (ioc) return ioc->ioprio; return (((IOPRIO_CLASS_NONE) << (13)) | 0); } extern int ioprio_best(unsigned short aprio, unsigned short bprio); extern int set_task_ioprio(struct task_struct *task, int ioprio); extern int ioprio_check_cap(int ioprio); # 40 "../include/linux/fs.h" 2 # 1 "../include/linux/fs_types.h" 1 # 71 "../include/linux/fs_types.h" extern unsigned char fs_ftype_to_dtype(unsigned int filetype); extern unsigned char fs_umode_to_ftype(umode_t mode); extern unsigned char fs_umode_to_dtype(umode_t mode); # 41 "../include/linux/fs.h" 2 # 1 "../include/uapi/linux/fs.h" 1 # 51 "../include/uapi/linux/fs.h" struct file_clone_range { __s64 src_fd; __u64 src_offset; __u64 src_length; __u64 dest_offset; }; struct fstrim_range { __u64 start; __u64 len; __u64 minlen; }; struct file_dedupe_range_info { __s64 dest_fd; __u64 dest_offset; __u64 bytes_deduped; __s32 status; __u32 reserved; }; struct file_dedupe_range { __u64 src_offset; __u64 src_length; __u16 dest_count; __u16 reserved1; __u32 reserved2; struct file_dedupe_range_info info[0]; }; struct files_stat_struct { unsigned long nr_files; unsigned long nr_free_files; unsigned long max_files; }; struct inodes_stat_t { long nr_inodes; long nr_unused; long dummy[5]; }; struct fsxattr { __u32 fsx_xflags; __u32 fsx_extsize; __u32 fsx_nextents; __u32 fsx_projid; __u32 fsx_cowextsize; unsigned char fsx_pad[8]; }; # 241 "../include/uapi/linux/fs.h" struct fscrypt_policy { __u8 version; __u8 contents_encryption_mode; __u8 filenames_encryption_mode; __u8 flags; __u8 master_key_descriptor[8]; }; # 260 "../include/uapi/linux/fs.h" struct fscrypt_key { __u32 mode; __u8 raw[64]; __u32 size; }; # 331 "../include/uapi/linux/fs.h" typedef int __kernel_rwf_t; # 46 "../include/linux/fs.h" 2 struct backing_dev_info; struct bdi_writeback; struct bio; struct export_operations; struct hd_geometry; struct iovec; struct kiocb; struct kobject; struct pipe_inode_info; struct poll_table_struct; struct kstatfs; struct vm_area_struct; struct vfsmount; struct cred; struct swap_info_struct; struct seq_file; struct workqueue_struct; struct iov_iter; struct fscrypt_info; struct fscrypt_operations; struct fs_context; struct fs_parameter_description; extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) inode_init(void); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) inode_init_early(void); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) files_init(void); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) files_maxfiles_init(void); extern struct files_stat_struct files_stat; extern unsigned long get_max_files(void); extern unsigned int sysctl_nr_open; extern struct inodes_stat_t inodes_stat; extern int leases_enable, lease_break_time; extern int sysctl_protected_symlinks; extern int sysctl_protected_hardlinks; extern int sysctl_protected_fifos; extern int sysctl_protected_regular; typedef __kernel_rwf_t rwf_t; struct buffer_head; typedef int (get_block_t)(struct inode *inode, sector_t iblock, struct buffer_head *bh_result, int create); typedef int (dio_iodone_t)(struct kiocb *iocb, loff_t offset, ssize_t bytes, void *private); # 222 "../include/linux/fs.h" struct iattr { unsigned int ia_valid; umode_t ia_mode; kuid_t ia_uid; kgid_t ia_gid; loff_t ia_size; struct timespec64 ia_atime; struct timespec64 ia_mtime; struct timespec64 ia_ctime; struct file *ia_file; }; # 1 "../include/linux/quota.h" 1 # 40 "../include/linux/quota.h" # 1 "../include/linux/percpu_counter.h" 1 # 20 "../include/linux/percpu_counter.h" struct percpu_counter { raw_spinlock_t lock; s64 count; struct list_head list; s32 *counters; }; extern int percpu_counter_batch; int __percpu_counter_init(struct percpu_counter *fbc, s64 amount, gfp_t gfp, struct lock_class_key *key); # 41 "../include/linux/percpu_counter.h" void percpu_counter_destroy(struct percpu_counter *fbc); void percpu_counter_set(struct percpu_counter *fbc, s64 amount); void percpu_counter_add_batch(struct percpu_counter *fbc, s64 amount, s32 batch); s64 __percpu_counter_sum(struct percpu_counter *fbc); int __percpu_counter_compare(struct percpu_counter *fbc, s64 rhs, s32 batch); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int percpu_counter_compare(struct percpu_counter *fbc, s64 rhs) { return __percpu_counter_compare(fbc, rhs, percpu_counter_batch); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void percpu_counter_add(struct percpu_counter *fbc, s64 amount) { percpu_counter_add_batch(fbc, amount, percpu_counter_batch); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 percpu_counter_sum_positive(struct percpu_counter *fbc) { s64 ret = __percpu_counter_sum(fbc); return ret < 0 ? 0 : ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 percpu_counter_sum(struct percpu_counter *fbc) { return __percpu_counter_sum(fbc); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 percpu_counter_read(struct percpu_counter *fbc) { return fbc->count; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) s64 percpu_counter_read_positive(struct percpu_counter *fbc) { s64 ret = fbc->count; __asm__ __volatile__("" : : : "memory"); if (ret >= 0) return ret; return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool percpu_counter_initialized(struct percpu_counter *fbc) { return (fbc->counters != ((void *)0)); } # 177 "../include/linux/percpu_counter.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void percpu_counter_inc(struct percpu_counter *fbc) { percpu_counter_add(fbc, 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void percpu_counter_dec(struct percpu_counter *fbc) { percpu_counter_add(fbc, -1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void percpu_counter_sub(struct percpu_counter *fbc, s64 amount) { percpu_counter_add(fbc, -amount); } # 41 "../include/linux/quota.h" 2 # 1 "../include/uapi/linux/dqblk_xfs.h" 1 # 53 "../include/uapi/linux/dqblk_xfs.h" typedef struct fs_disk_quota { __s8 d_version; __s8 d_flags; __u16 d_fieldmask; __u32 d_id; __u64 d_blk_hardlimit; __u64 d_blk_softlimit; __u64 d_ino_hardlimit; __u64 d_ino_softlimit; __u64 d_bcount; __u64 d_icount; __s32 d_itimer; __s32 d_btimer; __u16 d_iwarns; __u16 d_bwarns; __s32 d_padding2; __u64 d_rtb_hardlimit; __u64 d_rtb_softlimit; __u64 d_rtbcount; __s32 d_rtbtimer; __u16 d_rtbwarns; __s16 d_padding3; char d_padding4[8]; } fs_disk_quota_t; # 149 "../include/uapi/linux/dqblk_xfs.h" typedef struct fs_qfilestat { __u64 qfs_ino; __u64 qfs_nblks; __u32 qfs_nextents; } fs_qfilestat_t; typedef struct fs_quota_stat { __s8 qs_version; __u16 qs_flags; __s8 qs_pad; fs_qfilestat_t qs_uquota; fs_qfilestat_t qs_gquota; __u32 qs_incoredqs; __s32 qs_btimelimit; __s32 qs_itimelimit; __s32 qs_rtbtimelimit; __u16 qs_bwarnlimit; __u16 qs_iwarnlimit; } fs_quota_stat_t; # 192 "../include/uapi/linux/dqblk_xfs.h" struct fs_qfilestatv { __u64 qfs_ino; __u64 qfs_nblks; __u32 qfs_nextents; __u32 qfs_pad; }; struct fs_quota_statv { __s8 qs_version; __u8 qs_pad1; __u16 qs_flags; __u32 qs_incoredqs; struct fs_qfilestatv qs_uquota; struct fs_qfilestatv qs_gquota; struct fs_qfilestatv qs_pquota; __s32 qs_btimelimit; __s32 qs_itimelimit; __s32 qs_rtbtimelimit; __u16 qs_bwarnlimit; __u16 qs_iwarnlimit; __u64 qs_pad2[8]; }; # 43 "../include/linux/quota.h" 2 # 1 "../include/linux/dqblk_v1.h" 1 # 44 "../include/linux/quota.h" 2 # 1 "../include/linux/dqblk_v2.h" 1 # 1 "../include/linux/dqblk_qtree.h" 1 # 18 "../include/linux/dqblk_qtree.h" struct dquot; struct kqid; struct qtree_fmt_operations { void (*mem2disk_dqblk)(void *disk, struct dquot *dquot); void (*disk2mem_dqblk)(struct dquot *dquot, void *disk); int (*is_id)(void *disk, struct dquot *dquot); }; struct qtree_mem_dqinfo { struct super_block *dqi_sb; int dqi_type; unsigned int dqi_blocks; unsigned int dqi_free_blk; unsigned int dqi_free_entry; unsigned int dqi_blocksize_bits; unsigned int dqi_entry_size; unsigned int dqi_usable_bs; unsigned int dqi_qtree_depth; const struct qtree_fmt_operations *dqi_ops; }; int qtree_write_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); int qtree_read_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); int qtree_delete_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); int qtree_release_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot); int qtree_entry_unused(struct qtree_mem_dqinfo *info, char *disk); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int qtree_depth(struct qtree_mem_dqinfo *info) { unsigned int epb = info->dqi_usable_bs >> 2; unsigned long long entries = epb; int i; for (i = 1; entries < (1ULL << 32); i++) entries *= epb; return i; } int qtree_get_next_id(struct qtree_mem_dqinfo *info, struct kqid *qid); # 10 "../include/linux/dqblk_v2.h" 2 # 45 "../include/linux/quota.h" 2 # 1 "../include/linux/projid.h" 1 # 17 "../include/linux/projid.h" struct user_namespace; extern struct user_namespace init_user_ns; typedef __kernel_uid32_t projid_t; typedef struct { projid_t val; } kprojid_t; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) projid_t __kprojid_val(kprojid_t projid) { return projid.val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool projid_eq(kprojid_t left, kprojid_t right) { return __kprojid_val(left) == __kprojid_val(right); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool projid_lt(kprojid_t left, kprojid_t right) { return __kprojid_val(left) < __kprojid_val(right); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool projid_valid(kprojid_t projid) { return !projid_eq(projid, (kprojid_t){ -1 }); } extern kprojid_t make_kprojid(struct user_namespace *from, projid_t projid); extern projid_t from_kprojid(struct user_namespace *to, kprojid_t projid); extern projid_t from_kprojid_munged(struct user_namespace *to, kprojid_t projid); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool kprojid_has_mapping(struct user_namespace *ns, kprojid_t projid) { return from_kprojid(ns, projid) != (projid_t)-1; } # 49 "../include/linux/quota.h" 2 # 1 "../include/uapi/linux/quota.h" 1 # 90 "../include/uapi/linux/quota.h" enum { QIF_BLIMITS_B = 0, QIF_SPACE_B, QIF_ILIMITS_B, QIF_INODES_B, QIF_BTIME_B, QIF_ITIME_B, }; # 110 "../include/uapi/linux/quota.h" struct if_dqblk { __u64 dqb_bhardlimit; __u64 dqb_bsoftlimit; __u64 dqb_curspace; __u64 dqb_ihardlimit; __u64 dqb_isoftlimit; __u64 dqb_curinodes; __u64 dqb_btime; __u64 dqb_itime; __u32 dqb_valid; }; struct if_nextdqblk { __u64 dqb_bhardlimit; __u64 dqb_bsoftlimit; __u64 dqb_curspace; __u64 dqb_ihardlimit; __u64 dqb_isoftlimit; __u64 dqb_curinodes; __u64 dqb_btime; __u64 dqb_itime; __u32 dqb_valid; __u32 dqb_id; }; # 144 "../include/uapi/linux/quota.h" enum { DQF_ROOT_SQUASH_B = 0, DQF_SYS_FILE_B = 16, DQF_PRIVATE }; struct if_dqinfo { __u64 dqi_bgrace; __u64 dqi_igrace; __u32 dqi_flags; __u32 dqi_valid; }; # 178 "../include/uapi/linux/quota.h" enum { QUOTA_NL_C_UNSPEC, QUOTA_NL_C_WARNING, __QUOTA_NL_C_MAX, }; enum { QUOTA_NL_A_UNSPEC, QUOTA_NL_A_QTYPE, QUOTA_NL_A_EXCESS_ID, QUOTA_NL_A_WARNING, QUOTA_NL_A_DEV_MAJOR, QUOTA_NL_A_DEV_MINOR, QUOTA_NL_A_CAUSED_ID, QUOTA_NL_A_PAD, __QUOTA_NL_A_MAX, }; # 50 "../include/linux/quota.h" 2 enum quota_type { USRQUOTA = 0, GRPQUOTA = 1, PRJQUOTA = 2, }; typedef __kernel_uid32_t qid_t; typedef long long qsize_t; struct kqid { union { kuid_t uid; kgid_t gid; kprojid_t projid; }; enum quota_type type; }; extern bool qid_eq(struct kqid left, struct kqid right); extern bool qid_lt(struct kqid left, struct kqid right); extern qid_t from_kqid(struct user_namespace *to, struct kqid qid); extern qid_t from_kqid_munged(struct user_namespace *to, struct kqid qid); extern bool qid_valid(struct kqid qid); # 97 "../include/linux/quota.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kqid make_kqid(struct user_namespace *from, enum quota_type type, qid_t qid) { struct kqid kqid; kqid.type = type; switch (type) { case USRQUOTA: kqid.uid = make_kuid(from, qid); break; case GRPQUOTA: kqid.gid = make_kgid(from, qid); break; case PRJQUOTA: kqid.projid = make_kprojid(from, qid); break; default: do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/quota.h"), "i" (114), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (355)); }); __builtin_unreachable(); } while (0); } while (0); } return kqid; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kqid make_kqid_invalid(enum quota_type type) { struct kqid kqid; kqid.type = type; switch (type) { case USRQUOTA: kqid.uid = (kuid_t){ -1 }; break; case GRPQUOTA: kqid.gid = (kgid_t){ -1 }; break; case PRJQUOTA: kqid.projid = (kprojid_t){ -1 }; break; default: do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/quota.h"), "i" (141), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (356)); }); __builtin_unreachable(); } while (0); } while (0); } return kqid; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kqid make_kqid_uid(kuid_t uid) { struct kqid kqid; kqid.type = USRQUOTA; kqid.uid = uid; return kqid; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kqid make_kqid_gid(kgid_t gid) { struct kqid kqid; kqid.type = GRPQUOTA; kqid.gid = gid; return kqid; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct kqid make_kqid_projid(kprojid_t projid) { struct kqid kqid; kqid.type = PRJQUOTA; kqid.projid = projid; return kqid; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool qid_has_mapping(struct user_namespace *ns, struct kqid qid) { return from_kqid(ns, qid) != (qid_t) -1; } extern spinlock_t dq_data_lock; # 205 "../include/linux/quota.h" struct mem_dqblk { qsize_t dqb_bhardlimit; qsize_t dqb_bsoftlimit; qsize_t dqb_curspace; qsize_t dqb_rsvspace; qsize_t dqb_ihardlimit; qsize_t dqb_isoftlimit; qsize_t dqb_curinodes; time64_t dqb_btime; time64_t dqb_itime; }; struct quota_format_type; struct mem_dqinfo { struct quota_format_type *dqi_format; int dqi_fmt_id; struct list_head dqi_dirty_list; unsigned long dqi_flags; unsigned int dqi_bgrace; unsigned int dqi_igrace; qsize_t dqi_max_spc_limit; qsize_t dqi_max_ino_limit; void *dqi_priv; }; struct super_block; enum { DQF_INFO_DIRTY_B = DQF_PRIVATE, }; extern void mark_info_dirty(struct super_block *sb, int type); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int info_dirty(struct mem_dqinfo *info) { return test_bit(DQF_INFO_DIRTY_B, &info->dqi_flags); } enum { DQST_LOOKUPS, DQST_DROPS, DQST_READS, DQST_WRITES, DQST_CACHE_HITS, DQST_ALLOC_DQUOTS, DQST_FREE_DQUOTS, DQST_SYNCS, _DQST_DQSTAT_LAST }; struct dqstats { int stat[_DQST_DQSTAT_LAST]; struct percpu_counter counter[_DQST_DQSTAT_LAST]; }; extern struct dqstats dqstats; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dqstats_inc(unsigned int type) { percpu_counter_inc(&dqstats.counter[type]); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dqstats_dec(unsigned int type) { percpu_counter_dec(&dqstats.counter[type]); } # 294 "../include/linux/quota.h" struct dquot { struct hlist_node dq_hash; struct list_head dq_inuse; struct list_head dq_free; struct list_head dq_dirty; struct mutex dq_lock; spinlock_t dq_dqb_lock; atomic_t dq_count; struct super_block *dq_sb; struct kqid dq_id; loff_t dq_off; unsigned long dq_flags; struct mem_dqblk dq_dqb; }; struct quota_format_ops { int (*check_quota_file)(struct super_block *sb, int type); int (*read_file_info)(struct super_block *sb, int type); int (*write_file_info)(struct super_block *sb, int type); int (*free_file_info)(struct super_block *sb, int type); int (*read_dqblk)(struct dquot *dquot); int (*commit_dqblk)(struct dquot *dquot); int (*release_dqblk)(struct dquot *dquot); int (*get_next_id)(struct super_block *sb, struct kqid *qid); }; struct dquot_operations { int (*write_dquot) (struct dquot *); struct dquot *(*alloc_dquot)(struct super_block *, int); void (*destroy_dquot)(struct dquot *); int (*acquire_dquot) (struct dquot *); int (*release_dquot) (struct dquot *); int (*mark_dirty) (struct dquot *); int (*write_info) (struct super_block *, int); qsize_t *(*get_reserved_space) (struct inode *); int (*get_projid) (struct inode *, kprojid_t *); int (*get_inode_usage) (struct inode *, qsize_t *); int (*get_next_id) (struct super_block *sb, struct kqid *qid); }; struct path; struct qc_dqblk { int d_fieldmask; u64 d_spc_hardlimit; u64 d_spc_softlimit; u64 d_ino_hardlimit; u64 d_ino_softlimit; u64 d_space; u64 d_ino_count; s64 d_ino_timer; s64 d_spc_timer; int d_ino_warns; int d_spc_warns; u64 d_rt_spc_hardlimit; u64 d_rt_spc_softlimit; u64 d_rt_space; s64 d_rt_spc_timer; int d_rt_spc_warns; }; # 395 "../include/linux/quota.h" struct qc_type_state { unsigned int flags; unsigned int spc_timelimit; unsigned int ino_timelimit; unsigned int rt_spc_timelimit; unsigned int spc_warnlimit; unsigned int ino_warnlimit; unsigned int rt_spc_warnlimit; unsigned long long ino; blkcnt_t blocks; blkcnt_t nextents; }; struct qc_state { unsigned int s_incoredqs; struct qc_type_state s_state[3]; }; struct qc_info { int i_fieldmask; unsigned int i_flags; unsigned int i_spc_timelimit; unsigned int i_ino_timelimit; unsigned int i_rt_spc_timelimit; unsigned int i_spc_warnlimit; unsigned int i_ino_warnlimit; unsigned int i_rt_spc_warnlimit; }; struct quotactl_ops { int (*quota_on)(struct super_block *, int, int, const struct path *); int (*quota_off)(struct super_block *, int); int (*quota_enable)(struct super_block *, unsigned int); int (*quota_disable)(struct super_block *, unsigned int); int (*quota_sync)(struct super_block *, int); int (*set_info)(struct super_block *, int, struct qc_info *); int (*get_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *); int (*get_nextdqblk)(struct super_block *, struct kqid *, struct qc_dqblk *); int (*set_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *); int (*get_state)(struct super_block *, struct qc_state *); int (*rm_xquota)(struct super_block *, unsigned int); }; struct quota_format_type { int qf_fmt_id; const struct quota_format_ops *qf_ops; struct module *qf_owner; struct quota_format_type *qf_next; }; # 463 "../include/linux/quota.h" enum { _DQUOT_USAGE_ENABLED = 0, _DQUOT_LIMITS_ENABLED, _DQUOT_SUSPENDED, _DQUOT_STATE_FLAGS }; # 490 "../include/linux/quota.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int dquot_state_flag(unsigned int flags, int type) { return flags << type; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int dquot_generic_flag(unsigned int flags, int type) { return (flags >> type) & ((1 << _DQUOT_USAGE_ENABLED * 3) | (1 << _DQUOT_LIMITS_ENABLED * 3) | (1 << _DQUOT_SUSPENDED * 3)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned dquot_state_types(unsigned flags, unsigned flag) { do { extern void __compiletime_assert_503(void) ; if (!(!((flag) == 0 || (((flag) & ((flag) - 1)) != 0)))) __compiletime_assert_503(); } while (0); return (flags / flag) & ((1 << 3) - 1); } extern void quota_send_warning(struct kqid qid, dev_t dev, const char warntype); # 518 "../include/linux/quota.h" struct quota_info { unsigned int flags; struct rw_semaphore dqio_sem; struct inode *files[3]; struct mem_dqinfo info[3]; const struct quota_format_ops *ops[3]; }; int register_quota_format(struct quota_format_type *fmt); void unregister_quota_format(struct quota_format_type *fmt); struct quota_module_name { int qm_fmt_id; char *qm_mod_name; }; # 244 "../include/linux/fs.h" 2 # 277 "../include/linux/fs.h" enum positive_aop_returns { AOP_WRITEPAGE_ACTIVATE = 0x80000, AOP_TRUNCATED_PAGE = 0x80001, }; # 290 "../include/linux/fs.h" struct page; struct address_space; struct writeback_control; enum rw_hint { WRITE_LIFE_NOT_SET = 0, WRITE_LIFE_NONE = 1, WRITE_LIFE_SHORT = 2, WRITE_LIFE_MEDIUM = 3, WRITE_LIFE_LONG = 4, WRITE_LIFE_EXTREME = 5, }; # 316 "../include/linux/fs.h" struct kiocb { struct file *ki_filp; loff_t ki_pos; void (*ki_complete)(struct kiocb *iocb, long ret, long ret2); void *private; int ki_flags; u16 ki_hint; u16 ki_ioprio; unsigned int ki_cookie; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_sync_kiocb(struct kiocb *kiocb) { return kiocb->ki_complete == ((void *)0); } # 347 "../include/linux/fs.h" typedef struct { size_t written; size_t count; union { char *buf; void *data; } arg; int error; } read_descriptor_t; typedef int (*read_actor_t)(read_descriptor_t *, struct page *, unsigned long, unsigned long); struct address_space_operations { int (*writepage)(struct page *page, struct writeback_control *wbc); int (*readpage)(struct file *, struct page *); int (*writepages)(struct address_space *, struct writeback_control *); int (*set_page_dirty)(struct page *page); int (*readpages)(struct file *filp, struct address_space *mapping, struct list_head *pages, unsigned nr_pages); int (*write_begin)(struct file *, struct address_space *mapping, loff_t pos, unsigned len, unsigned flags, struct page **pagep, void **fsdata); int (*write_end)(struct file *, struct address_space *mapping, loff_t pos, unsigned len, unsigned copied, struct page *page, void *fsdata); sector_t (*bmap)(struct address_space *, sector_t); void (*invalidatepage) (struct page *, unsigned int, unsigned int); int (*releasepage) (struct page *, gfp_t); void (*freepage)(struct page *); ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter); int (*migratepage) (struct address_space *, struct page *, struct page *, enum migrate_mode); bool (*isolate_page)(struct page *, isolate_mode_t); void (*putback_page)(struct page *); int (*launder_page) (struct page *); int (*is_partially_uptodate) (struct page *, unsigned long, unsigned long); void (*is_dirty_writeback) (struct page *, bool *, bool *); int (*error_remove_page)(struct address_space *, struct page *); int (*swap_activate)(struct swap_info_struct *sis, struct file *file, sector_t *span); void (*swap_deactivate)(struct file *file); }; extern const struct address_space_operations empty_aops; int pagecache_write_begin(struct file *, struct address_space *mapping, loff_t pos, unsigned len, unsigned flags, struct page **pagep, void **fsdata); int pagecache_write_end(struct file *, struct address_space *mapping, loff_t pos, unsigned len, unsigned copied, struct page *page, void *fsdata); # 442 "../include/linux/fs.h" struct address_space { struct inode *host; struct xarray i_pages; gfp_t gfp_mask; atomic_t i_mmap_writable; struct rb_root_cached i_mmap; struct rw_semaphore i_mmap_rwsem; unsigned long nrpages; unsigned long nrexceptional; unsigned long writeback_index; const struct address_space_operations *a_ops; unsigned long flags; errseq_t wb_err; spinlock_t private_lock; struct list_head private_list; void *private_data; } __attribute__((aligned(sizeof(long)))) ; struct request_queue; struct block_device { dev_t bd_dev; int bd_openers; struct inode * bd_inode; struct super_block * bd_super; struct mutex bd_mutex; void * bd_claiming; void * bd_holder; int bd_holders; bool bd_write_holder; struct list_head bd_holder_disks; struct block_device * bd_contains; unsigned bd_block_size; u8 bd_partno; struct hd_struct * bd_part; unsigned bd_part_count; int bd_invalidated; struct gendisk * bd_disk; struct request_queue * bd_queue; struct backing_dev_info *bd_bdi; struct list_head bd_list; unsigned long bd_private; int bd_fsfreeze_count; struct mutex bd_fsfreeze_mutex; } ; # 512 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool mapping_tagged(struct address_space *mapping, xa_mark_t tag) { return xa_marked(&mapping->i_pages, tag); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void i_mmap_lock_write(struct address_space *mapping) { down_write(&mapping->i_mmap_rwsem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void i_mmap_unlock_write(struct address_space *mapping) { up_write(&mapping->i_mmap_rwsem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void i_mmap_lock_read(struct address_space *mapping) { down_read(&mapping->i_mmap_rwsem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void i_mmap_unlock_read(struct address_space *mapping) { up_read(&mapping->i_mmap_rwsem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int mapping_mapped(struct address_space *mapping) { return !(({ union { typeof((&mapping->i_mmap.rb_root)->rb_node) __val; char __c[1]; } __u; if (1) __read_once_size(&((&mapping->i_mmap.rb_root)->rb_node), __u.__c, sizeof((&mapping->i_mmap.rb_root)->rb_node)); else __read_once_size_nocheck(&((&mapping->i_mmap.rb_root)->rb_node), __u.__c, sizeof((&mapping->i_mmap.rb_root)->rb_node)); do { } while (0); __u.__val; }) == ((void *)0)); } # 554 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int mapping_writably_mapped(struct address_space *mapping) { return atomic_read(&mapping->i_mmap_writable) > 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int mapping_map_writable(struct address_space *mapping) { return atomic_inc_unless_negative(&mapping->i_mmap_writable) ? 0 : -1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mapping_unmap_writable(struct address_space *mapping) { atomic_dec(&mapping->i_mmap_writable); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int mapping_deny_writable(struct address_space *mapping) { return atomic_dec_unless_positive(&mapping->i_mmap_writable) ? 0 : -16; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mapping_allow_writable(struct address_space *mapping) { atomic_inc(&mapping->i_mmap_writable); } # 592 "../include/linux/fs.h" struct posix_acl; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct posix_acl * uncached_acl_sentinel(struct task_struct *task) { return (void *)task + 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_uncached_acl(struct posix_acl *acl) { return (long)acl & 1; } struct fsnotify_mark_connector; struct inode { umode_t i_mode; unsigned short i_opflags; kuid_t i_uid; kgid_t i_gid; unsigned int i_flags; struct posix_acl *i_acl; struct posix_acl *i_default_acl; const struct inode_operations *i_op; struct super_block *i_sb; struct address_space *i_mapping; void *i_security; unsigned long i_ino; union { const unsigned int i_nlink; unsigned int __i_nlink; }; dev_t i_rdev; loff_t i_size; struct timespec64 i_atime; struct timespec64 i_mtime; struct timespec64 i_ctime; spinlock_t i_lock; unsigned short i_bytes; u8 i_blkbits; u8 i_write_hint; blkcnt_t i_blocks; unsigned long i_state; struct rw_semaphore i_rwsem; unsigned long dirtied_when; unsigned long dirtied_time_when; struct hlist_node i_hash; struct list_head i_io_list; struct bdi_writeback *i_wb; int i_wb_frn_winner; u16 i_wb_frn_avg_time; u16 i_wb_frn_history; struct list_head i_lru; struct list_head i_sb_list; struct list_head i_wb_list; union { struct hlist_head i_dentry; struct callback_head i_rcu; }; atomic64_t i_version; atomic_t i_count; atomic_t i_dio_count; atomic_t i_writecount; atomic_t i_readcount; union { const struct file_operations *i_fop; void (*free_inode)(struct inode *); }; struct file_lock_context *i_flctx; struct address_space i_data; struct list_head i_devices; union { struct pipe_inode_info *i_pipe; struct block_device *i_bdev; struct cdev *i_cdev; char *i_link; unsigned i_dir_seq; }; __u32 i_generation; __u32 i_fsnotify_mask; struct fsnotify_mark_connector *i_fsnotify_marks; struct fscrypt_info *i_crypt_info; void *i_private; } ; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int i_blocksize(const struct inode *node) { return (1 << node->i_blkbits); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int inode_unhashed(struct inode *inode) { return hlist_unhashed(&inode->i_hash); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inode_fake_hash(struct inode *inode) { hlist_add_fake(&inode->i_hash); } # 766 "../include/linux/fs.h" enum inode_i_mutex_lock_class { I_MUTEX_NORMAL, I_MUTEX_PARENT, I_MUTEX_CHILD, I_MUTEX_XATTR, I_MUTEX_NONDIR2, I_MUTEX_PARENT2, }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inode_lock(struct inode *inode) { down_write(&inode->i_rwsem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inode_unlock(struct inode *inode) { up_write(&inode->i_rwsem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inode_lock_shared(struct inode *inode) { down_read(&inode->i_rwsem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inode_unlock_shared(struct inode *inode) { up_read(&inode->i_rwsem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int inode_trylock(struct inode *inode) { return down_write_trylock(&inode->i_rwsem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int inode_trylock_shared(struct inode *inode) { return down_read_trylock(&inode->i_rwsem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int inode_is_locked(struct inode *inode) { return rwsem_is_locked(&inode->i_rwsem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inode_lock_nested(struct inode *inode, unsigned subclass) { down_write_nested(&inode->i_rwsem, subclass); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inode_lock_shared_nested(struct inode *inode, unsigned subclass) { down_read_nested(&inode->i_rwsem, subclass); } void lock_two_nondirectories(struct inode *, struct inode*); void unlock_two_nondirectories(struct inode *, struct inode*); # 834 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) loff_t i_size_read(const struct inode *inode) { # 853 "../include/linux/fs.h" return inode->i_size; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void i_size_write(struct inode *inode, loff_t i_size) { # 875 "../include/linux/fs.h" inode->i_size = i_size; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned iminor(const struct inode *inode) { return ((unsigned int) ((inode->i_rdev) & ((1U << 20) - 1))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned imajor(const struct inode *inode) { return ((unsigned int) ((inode->i_rdev) >> 20)); } extern struct block_device *I_BDEV(struct inode *inode); struct fown_struct { rwlock_t lock; struct pid *pid; enum pid_type pid_type; kuid_t uid, euid; int signum; }; struct file_ra_state { unsigned long start; unsigned int size; unsigned int async_size; unsigned int ra_pages; unsigned int mmap_miss; loff_t prev_pos; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int ra_has_index(struct file_ra_state *ra, unsigned long index) { return (index >= ra->start && index < ra->start + ra->size); } struct file { union { struct llist_node fu_llist; struct callback_head fu_rcuhead; } f_u; struct path f_path; struct inode *f_inode; const struct file_operations *f_op; spinlock_t f_lock; enum rw_hint f_write_hint; atomic_long_t f_count; unsigned int f_flags; fmode_t f_mode; struct mutex f_pos_lock; loff_t f_pos; struct fown_struct f_owner; const struct cred *f_cred; struct file_ra_state f_ra; u64 f_version; void *f_security; void *private_data; struct list_head f_ep_links; struct list_head f_tfile_llink; struct address_space *f_mapping; errseq_t f_wb_err; } __attribute__((aligned(4))); struct file_handle { __u32 handle_bytes; int handle_type; unsigned char f_handle[0]; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct file *get_file(struct file *f) { atomic_long_inc(&f->f_count); return f; } # 1012 "../include/linux/fs.h" typedef void *fl_owner_t; struct file_lock; struct file_lock_operations { void (*fl_copy_lock)(struct file_lock *, struct file_lock *); void (*fl_release_private)(struct file_lock *); }; struct lock_manager_operations { fl_owner_t (*lm_get_owner)(fl_owner_t); void (*lm_put_owner)(fl_owner_t); void (*lm_notify)(struct file_lock *); int (*lm_grant)(struct file_lock *, int); bool (*lm_break)(struct file_lock *); int (*lm_change)(struct file_lock *, int, struct list_head *); void (*lm_setup)(struct file_lock *, void **); }; struct lock_manager { struct list_head list; bool block_opens; }; struct net; void locks_start_grace(struct net *, struct lock_manager *); void locks_end_grace(struct lock_manager *); bool locks_in_grace(struct net *); bool opens_in_grace(struct net *); # 1 "../include/linux/nfs_fs_i.h" 1 struct nlm_lockowner; struct nfs_lock_info { u32 state; struct nlm_lockowner *owner; struct list_head list; }; struct nfs4_lock_state; struct nfs4_lock_info { struct nfs4_lock_state *owner; }; # 1048 "../include/linux/fs.h" 2 # 1066 "../include/linux/fs.h" struct file_lock { struct file_lock *fl_blocker; struct list_head fl_list; struct hlist_node fl_link; struct list_head fl_blocked_requests; struct list_head fl_blocked_member; fl_owner_t fl_owner; unsigned int fl_flags; unsigned char fl_type; unsigned int fl_pid; int fl_link_cpu; wait_queue_head_t fl_wait; struct file *fl_file; loff_t fl_start; loff_t fl_end; struct fasync_struct * fl_fasync; unsigned long fl_break_time; unsigned long fl_downgrade_time; const struct file_lock_operations *fl_ops; const struct lock_manager_operations *fl_lmops; union { struct nfs_lock_info nfs_fl; struct nfs4_lock_info nfs4_fl; struct { struct list_head link; int state; unsigned int debug_id; } afs; } fl_u; } ; struct file_lock_context { spinlock_t flc_lock; struct list_head flc_flock; struct list_head flc_posix; struct list_head flc_lease; }; # 1118 "../include/linux/fs.h" extern void send_sigio(struct fown_struct *fown, int fd, int band); extern int fcntl_getlk(struct file *, unsigned int, struct flock *); extern int fcntl_setlk(unsigned int, struct file *, unsigned int, struct flock *); extern int fcntl_setlease(unsigned int fd, struct file *filp, long arg); extern int fcntl_getlease(struct file *filp); void locks_free_lock_context(struct inode *inode); void locks_free_lock(struct file_lock *fl); extern void locks_init_lock(struct file_lock *); extern struct file_lock * locks_alloc_lock(void); extern void locks_copy_lock(struct file_lock *, struct file_lock *); extern void locks_copy_conflock(struct file_lock *, struct file_lock *); extern void locks_remove_posix(struct file *, fl_owner_t); extern void locks_remove_file(struct file *); extern void locks_release_private(struct file_lock *); extern void posix_test_lock(struct file *, struct file_lock *); extern int posix_lock_file(struct file *, struct file_lock *, struct file_lock *); extern int locks_delete_block(struct file_lock *); extern int vfs_test_lock(struct file *, struct file_lock *); extern int vfs_lock_file(struct file *, unsigned int, struct file_lock *, struct file_lock *); extern int vfs_cancel_lock(struct file *filp, struct file_lock *fl); extern int locks_lock_inode_wait(struct inode *inode, struct file_lock *fl); extern int __break_lease(struct inode *inode, unsigned int flags, unsigned int type); extern void lease_get_mtime(struct inode *, struct timespec64 *time); extern int generic_setlease(struct file *, long, struct file_lock **, void **priv); extern int vfs_setlease(struct file *, long, struct file_lock **, void **); extern int lease_modify(struct file_lock *, int, struct list_head *); struct files_struct; extern void show_fd_locks(struct seq_file *f, struct file *filp, struct files_struct *files); # 1298 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct inode *file_inode(const struct file *f) { return f->f_inode; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct dentry *file_dentry(const struct file *file) { return d_real(file->f_path.dentry, file_inode(file)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int locks_lock_file_wait(struct file *filp, struct file_lock *fl) { return locks_lock_inode_wait(file_inode(filp), fl); } struct fasync_struct { rwlock_t fa_lock; int magic; int fa_fd; struct fasync_struct *fa_next; struct file *fa_file; struct callback_head fa_rcu; }; extern int fasync_helper(int, struct file *, int, struct fasync_struct **); extern struct fasync_struct *fasync_insert_entry(int, struct file *, struct fasync_struct **, struct fasync_struct *); extern int fasync_remove_entry(struct file *, struct fasync_struct **); extern struct fasync_struct *fasync_alloc(void); extern void fasync_free(struct fasync_struct *); extern void kill_fasync(struct fasync_struct **, int, int); extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force); extern int f_setown(struct file *filp, unsigned long arg, int force); extern void f_delown(struct file *filp); extern pid_t f_getown(struct file *filp); extern int send_sigurg(struct fown_struct *fown); # 1389 "../include/linux/fs.h" enum { SB_UNFROZEN = 0, SB_FREEZE_WRITE = 1, SB_FREEZE_PAGEFAULT = 2, SB_FREEZE_FS = 3, SB_FREEZE_COMPLETE = 4, }; struct sb_writers { int frozen; wait_queue_head_t wait_unfrozen; struct percpu_rw_semaphore rw_sem[(SB_FREEZE_COMPLETE - 1)]; }; struct super_block { struct list_head s_list; dev_t s_dev; unsigned char s_blocksize_bits; unsigned long s_blocksize; loff_t s_maxbytes; struct file_system_type *s_type; const struct super_operations *s_op; const struct dquot_operations *dq_op; const struct quotactl_ops *s_qcop; const struct export_operations *s_export_op; unsigned long s_flags; unsigned long s_iflags; unsigned long s_magic; struct dentry *s_root; struct rw_semaphore s_umount; int s_count; atomic_t s_active; void *s_security; const struct xattr_handler **s_xattr; const struct fscrypt_operations *s_cop; struct hlist_bl_head s_roots; struct list_head s_mounts; struct block_device *s_bdev; struct backing_dev_info *s_bdi; struct mtd_info *s_mtd; struct hlist_node s_instances; unsigned int s_quota_types; struct quota_info s_dquot; struct sb_writers s_writers; void *s_fs_info; u32 s_time_gran; __u32 s_fsnotify_mask; struct fsnotify_mark_connector *s_fsnotify_marks; char s_id[32]; uuid_t s_uuid; unsigned int s_max_links; fmode_t s_mode; struct mutex s_vfs_rename_mutex; const char *s_subtype; const struct dentry_operations *s_d_op; int cleancache_poolid; struct shrinker s_shrink; atomic_long_t s_remove_count; atomic_long_t s_fsnotify_inode_refs; int s_readonly_remount; struct workqueue_struct *s_dio_done_wq; struct hlist_head s_pins; struct user_namespace *s_user_ns; struct list_lru s_dentry_lru; struct list_lru s_inode_lru; struct callback_head rcu; struct work_struct destroy_work; struct mutex s_sync_lock; int s_stack_depth; spinlock_t s_inode_list_lock __attribute__((__aligned__((1 << (6))))); struct list_head s_inodes; spinlock_t s_inode_wblist_lock; struct list_head s_inodes_wb; } ; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) uid_t i_uid_read(const struct inode *inode) { return from_kuid(inode->i_sb->s_user_ns, inode->i_uid); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) gid_t i_gid_read(const struct inode *inode) { return from_kgid(inode->i_sb->s_user_ns, inode->i_gid); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void i_uid_write(struct inode *inode, uid_t uid) { inode->i_uid = make_kuid(inode->i_sb->s_user_ns, uid); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void i_gid_write(struct inode *inode, gid_t gid) { inode->i_gid = make_kgid(inode->i_sb->s_user_ns, gid); } extern struct timespec64 timespec64_trunc(struct timespec64 t, unsigned gran); extern struct timespec64 current_time(struct inode *inode); void __sb_end_write(struct super_block *sb, int level); int __sb_start_write(struct super_block *sb, int level, bool wait); # 1575 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sb_end_write(struct super_block *sb) { __sb_end_write(sb, SB_FREEZE_WRITE); } # 1587 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sb_end_pagefault(struct super_block *sb) { __sb_end_write(sb, SB_FREEZE_PAGEFAULT); } # 1599 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sb_end_intwrite(struct super_block *sb) { __sb_end_write(sb, SB_FREEZE_FS); } # 1623 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sb_start_write(struct super_block *sb) { __sb_start_write(sb, SB_FREEZE_WRITE, true); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int sb_start_write_trylock(struct super_block *sb) { return __sb_start_write(sb, SB_FREEZE_WRITE, false); } # 1652 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sb_start_pagefault(struct super_block *sb) { __sb_start_write(sb, SB_FREEZE_PAGEFAULT, true); } # 1670 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sb_start_intwrite(struct super_block *sb) { __sb_start_write(sb, SB_FREEZE_FS, true); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int sb_start_intwrite_trylock(struct super_block *sb) { return __sb_start_write(sb, SB_FREEZE_FS, false); } extern bool inode_owner_or_capable(const struct inode *inode); extern int vfs_create(struct inode *, struct dentry *, umode_t, bool); extern int vfs_mkdir(struct inode *, struct dentry *, umode_t); extern int vfs_mknod(struct inode *, struct dentry *, umode_t, dev_t); extern int vfs_symlink(struct inode *, struct dentry *, const char *); extern int vfs_link(struct dentry *, struct inode *, struct dentry *, struct inode **); extern int vfs_rmdir(struct inode *, struct dentry *); extern int vfs_unlink(struct inode *, struct dentry *, struct inode **); extern int vfs_rename(struct inode *, struct dentry *, struct inode *, struct dentry *, struct inode **, unsigned int); extern int vfs_whiteout(struct inode *, struct dentry *); extern struct dentry *vfs_tmpfile(struct dentry *dentry, umode_t mode, int open_flag); int vfs_mkobj(struct dentry *, umode_t, int (*f)(struct dentry *, umode_t, void *), void *); extern long vfs_ioctl(struct file *file, unsigned int cmd, unsigned long arg); extern void inode_init_owner(struct inode *inode, const struct inode *dir, umode_t mode); extern bool may_open_dev(const struct path *path); struct fiemap_extent_info { unsigned int fi_flags; unsigned int fi_extents_mapped; unsigned int fi_extents_max; struct fiemap_extent *fi_extents_start; }; int fiemap_fill_next_extent(struct fiemap_extent_info *info, u64 logical, u64 phys, u64 len, u32 flags); int fiemap_check_flags(struct fiemap_extent_info *fieinfo, u32 fs_flags); struct dir_context; typedef int (*filldir_t)(struct dir_context *, const char *, int, loff_t, u64, unsigned); struct dir_context { filldir_t actor; loff_t pos; }; struct block_device_operations; # 1787 "../include/linux/fs.h" struct iov_iter; struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char *, size_t, loff_t *); ssize_t (*write) (struct file *, const char *, size_t, loff_t *); ssize_t (*read_iter) (struct kiocb *, struct iov_iter *); ssize_t (*write_iter) (struct kiocb *, struct iov_iter *); int (*iopoll)(struct kiocb *kiocb, bool spin); int (*iterate) (struct file *, struct dir_context *); int (*iterate_shared) (struct file *, struct dir_context *); __poll_t (*poll) (struct file *, struct poll_table_struct *); long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struct file *, unsigned int, unsigned long); int (*mmap) (struct file *, struct vm_area_struct *); unsigned long mmap_supported_flags; int (*open) (struct inode *, struct file *); int (*flush) (struct file *, fl_owner_t id); int (*release) (struct inode *, struct file *); int (*fsync) (struct file *, loff_t, loff_t, int datasync); int (*fasync) (int, struct file *, int); int (*lock) (struct file *, int, struct file_lock *); ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); int (*check_flags)(int); int (*flock) (struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); int (*setlease)(struct file *, long, struct file_lock **, void **); long (*fallocate)(struct file *file, int mode, loff_t offset, loff_t len); void (*show_fdinfo)(struct seq_file *m, struct file *f); ssize_t (*copy_file_range)(struct file *, loff_t, struct file *, loff_t, size_t, unsigned int); loff_t (*remap_file_range)(struct file *file_in, loff_t pos_in, struct file *file_out, loff_t pos_out, loff_t len, unsigned int remap_flags); int (*fadvise)(struct file *, loff_t, loff_t, int); } ; struct inode_operations { struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); const char * (*get_link) (struct dentry *, struct inode *, struct delayed_call *); int (*permission) (struct inode *, int); struct posix_acl * (*get_acl)(struct inode *, int); int (*readlink) (struct dentry *, char *,int); int (*create) (struct inode *,struct dentry *, umode_t, bool); int (*link) (struct dentry *,struct inode *,struct dentry *); int (*unlink) (struct inode *,struct dentry *); int (*symlink) (struct inode *,struct dentry *,const char *); int (*mkdir) (struct inode *,struct dentry *,umode_t); int (*rmdir) (struct inode *,struct dentry *); int (*mknod) (struct inode *,struct dentry *,umode_t,dev_t); int (*rename) (struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int); int (*setattr) (struct dentry *, struct iattr *); int (*getattr) (const struct path *, struct kstat *, u32, unsigned int); ssize_t (*listxattr) (struct dentry *, char *, size_t); int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); int (*update_time)(struct inode *, struct timespec64 *, int); int (*atomic_open)(struct inode *, struct dentry *, struct file *, unsigned open_flag, umode_t create_mode); int (*tmpfile) (struct inode *, struct dentry *, umode_t); int (*set_acl)(struct inode *, struct posix_acl *, int); } __attribute__((__aligned__((1 << (6))))); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ssize_t call_read_iter(struct file *file, struct kiocb *kio, struct iov_iter *iter) { return file->f_op->read_iter(kio, iter); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ssize_t call_write_iter(struct file *file, struct kiocb *kio, struct iov_iter *iter) { return file->f_op->write_iter(kio, iter); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int call_mmap(struct file *file, struct vm_area_struct *vma) { return file->f_op->mmap(file, vma); } ssize_t rw_copy_check_uvector(int type, const struct iovec * uvector, unsigned long nr_segs, unsigned long fast_segs, struct iovec *fast_pointer, struct iovec **ret_pointer); extern ssize_t __vfs_read(struct file *, char *, size_t, loff_t *); extern ssize_t vfs_read(struct file *, char *, size_t, loff_t *); extern ssize_t vfs_write(struct file *, const char *, size_t, loff_t *); extern ssize_t vfs_readv(struct file *, const struct iovec *, unsigned long, loff_t *, rwf_t); extern ssize_t vfs_copy_file_range(struct file *, loff_t , struct file *, loff_t, size_t, unsigned int); extern ssize_t generic_copy_file_range(struct file *file_in, loff_t pos_in, struct file *file_out, loff_t pos_out, size_t len, unsigned int flags); extern int generic_remap_file_range_prep(struct file *file_in, loff_t pos_in, struct file *file_out, loff_t pos_out, loff_t *count, unsigned int remap_flags); extern loff_t do_clone_file_range(struct file *file_in, loff_t pos_in, struct file *file_out, loff_t pos_out, loff_t len, unsigned int remap_flags); extern loff_t vfs_clone_file_range(struct file *file_in, loff_t pos_in, struct file *file_out, loff_t pos_out, loff_t len, unsigned int remap_flags); extern int vfs_dedupe_file_range(struct file *file, struct file_dedupe_range *same); extern loff_t vfs_dedupe_file_range_one(struct file *src_file, loff_t src_pos, struct file *dst_file, loff_t dst_pos, loff_t len, unsigned int remap_flags); struct super_operations { struct inode *(*alloc_inode)(struct super_block *sb); void (*destroy_inode)(struct inode *); void (*free_inode)(struct inode *); void (*dirty_inode) (struct inode *, int flags); int (*write_inode) (struct inode *, struct writeback_control *wbc); int (*drop_inode) (struct inode *); void (*evict_inode) (struct inode *); void (*put_super) (struct super_block *); int (*sync_fs)(struct super_block *sb, int wait); int (*freeze_super) (struct super_block *); int (*freeze_fs) (struct super_block *); int (*thaw_super) (struct super_block *); int (*unfreeze_fs) (struct super_block *); int (*statfs) (struct dentry *, struct kstatfs *); int (*remount_fs) (struct super_block *, int *, char *); void (*umount_begin) (struct super_block *); int (*show_options)(struct seq_file *, struct dentry *); int (*show_devname)(struct seq_file *, struct dentry *); int (*show_path)(struct seq_file *, struct dentry *); int (*show_stats)(struct seq_file *, struct dentry *); ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t); ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); struct dquot **(*get_dquots)(struct inode *); int (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t); long (*nr_cached_objects)(struct super_block *, struct shrink_control *); long (*free_cached_objects)(struct super_block *, struct shrink_control *); }; # 1984 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool sb_rdonly(const struct super_block *sb) { return sb->s_flags & 1; } # 2013 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool HAS_UNMAPPED_ID(struct inode *inode) { return !uid_valid(inode->i_uid) || !gid_valid(inode->i_gid); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) enum rw_hint file_write_hint(struct file *file) { if (file->f_write_hint != WRITE_LIFE_NOT_SET) return file->f_write_hint; return file_inode(file)->i_write_hint; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iocb_flags(struct file *file); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 ki_hint_validate(enum rw_hint hint) { typeof(((struct kiocb *)0)->ki_hint) max_hint = -1; if (hint <= max_hint) return hint; return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void init_sync_kiocb(struct kiocb *kiocb, struct file *filp) { *kiocb = (struct kiocb) { .ki_filp = filp, .ki_flags = iocb_flags(filp), .ki_hint = ki_hint_validate(file_write_hint(filp)), .ki_ioprio = get_current_ioprio(), }; } # 2135 "../include/linux/fs.h" extern void __mark_inode_dirty(struct inode *, int); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mark_inode_dirty(struct inode *inode) { __mark_inode_dirty(inode, (((1 << 0) | (1 << 1)) | (1 << 2))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mark_inode_dirty_sync(struct inode *inode) { __mark_inode_dirty(inode, (1 << 0)); } extern void inc_nlink(struct inode *inode); extern void drop_nlink(struct inode *inode); extern void clear_nlink(struct inode *inode); extern void set_nlink(struct inode *inode, unsigned int nlink); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inode_inc_link_count(struct inode *inode) { inc_nlink(inode); mark_inode_dirty(inode); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inode_dec_link_count(struct inode *inode) { drop_nlink(inode); mark_inode_dirty(inode); } enum file_time_flags { S_ATIME = 1, S_MTIME = 2, S_CTIME = 4, S_VERSION = 8, }; extern bool atime_needs_update(const struct path *, struct inode *); extern void touch_atime(const struct path *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void file_accessed(struct file *file) { if (!(file->f_flags & 01000000)) touch_atime(&file->f_path); } extern int file_modified(struct file *file); int sync_inode(struct inode *inode, struct writeback_control *wbc); int sync_inode_metadata(struct inode *inode, int wait); struct file_system_type { const char *name; int fs_flags; int (*init_fs_context)(struct fs_context *); const struct fs_parameter_description *parameters; struct dentry *(*mount) (struct file_system_type *, int, const char *, void *); void (*kill_sb) (struct super_block *); struct module *owner; struct file_system_type * next; struct hlist_head fs_supers; struct lock_class_key s_lock_key; struct lock_class_key s_umount_key; struct lock_class_key s_vfs_rename_key; struct lock_class_key s_writers_key[(SB_FREEZE_COMPLETE - 1)]; struct lock_class_key i_lock_key; struct lock_class_key i_mutex_key; struct lock_class_key i_mutex_dir_key; }; extern struct dentry *mount_ns(struct file_system_type *fs_type, int flags, void *data, void *ns, struct user_namespace *user_ns, int (*fill_super)(struct super_block *, void *, int)); extern struct dentry *mount_bdev(struct file_system_type *fs_type, int flags, const char *dev_name, void *data, int (*fill_super)(struct super_block *, void *, int)); # 2228 "../include/linux/fs.h" extern struct dentry *mount_single(struct file_system_type *fs_type, int flags, void *data, int (*fill_super)(struct super_block *, void *, int)); extern struct dentry *mount_nodev(struct file_system_type *fs_type, int flags, void *data, int (*fill_super)(struct super_block *, void *, int)); extern struct dentry *mount_subtree(struct vfsmount *mnt, const char *path); void generic_shutdown_super(struct super_block *sb); void kill_block_super(struct super_block *sb); void kill_anon_super(struct super_block *sb); void kill_litter_super(struct super_block *sb); void deactivate_super(struct super_block *sb); void deactivate_locked_super(struct super_block *sb); int set_anon_super(struct super_block *s, void *data); int set_anon_super_fc(struct super_block *s, struct fs_context *fc); int get_anon_bdev(dev_t *); void free_anon_bdev(dev_t); struct super_block *sget_fc(struct fs_context *fc, int (*test)(struct super_block *, struct fs_context *), int (*set)(struct super_block *, struct fs_context *)); struct super_block *sget_userns(struct file_system_type *type, int (*test)(struct super_block *,void *), int (*set)(struct super_block *,void *), int flags, struct user_namespace *user_ns, void *data); struct super_block *sget(struct file_system_type *type, int (*test)(struct super_block *,void *), int (*set)(struct super_block *,void *), int flags, void *data); extern struct dentry *mount_pseudo_xattr(struct file_system_type *, char *, const struct super_operations *ops, const struct xattr_handler **xattr, const struct dentry_operations *dops, unsigned long); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct dentry * mount_pseudo(struct file_system_type *fs_type, char *name, const struct super_operations *ops, const struct dentry_operations *dops, unsigned long magic) { return mount_pseudo_xattr(fs_type, name, ops, ((void *)0), dops, magic); } # 2295 "../include/linux/fs.h" extern int register_filesystem(struct file_system_type *); extern int unregister_filesystem(struct file_system_type *); extern struct vfsmount *kern_mount(struct file_system_type *); extern void kern_unmount(struct vfsmount *mnt); extern int may_umount_tree(struct vfsmount *); extern int may_umount(struct vfsmount *); extern long do_mount(const char *, const char *, const char *, unsigned long, void *); extern struct vfsmount *collect_mounts(const struct path *); extern void drop_collected_mounts(struct vfsmount *); extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *, struct vfsmount *); extern int vfs_statfs(const struct path *, struct kstatfs *); extern int user_statfs(const char *, struct kstatfs *); extern int fd_statfs(int, struct kstatfs *); extern int freeze_super(struct super_block *super); extern int thaw_super(struct super_block *super); extern bool our_mnt(struct vfsmount *mnt); extern __attribute__((__format__(printf, 2, 3))) int super_setup_bdi_name(struct super_block *sb, char *fmt, ...); extern int super_setup_bdi(struct super_block *sb); extern int current_umask(void); extern void ihold(struct inode * inode); extern void iput(struct inode *); extern int generic_update_time(struct inode *, struct timespec64 *, int); extern struct kobject *fs_kobj; extern int locks_mandatory_locked(struct file *); extern int locks_mandatory_area(struct inode *, struct file *, loff_t, loff_t, unsigned char); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __mandatory_lock(struct inode *ino) { return (ino->i_mode & (0002000 | 00010)) == 0002000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int mandatory_lock(struct inode *ino) { return ((ino)->i_sb->s_flags & (64)) && __mandatory_lock(ino); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int locks_verify_locked(struct file *file) { if (mandatory_lock(file_inode(file))) return locks_mandatory_locked(file); return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int locks_verify_truncate(struct inode *inode, struct file *f, loff_t size) { if (!inode->i_flctx || !mandatory_lock(inode)) return 0; if (size < inode->i_size) { return locks_mandatory_area(inode, f, size, inode->i_size - 1, 1); } else { return locks_mandatory_area(inode, f, inode->i_size, size - 1, 1); } } # 2413 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int break_lease(struct inode *inode, unsigned int mode) { asm volatile("lock; addl $0,-4(%%rsp)" ::: "memory", "cc"); if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease)) return __break_lease(inode, mode, 32); return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int break_deleg(struct inode *inode, unsigned int mode) { asm volatile("lock; addl $0,-4(%%rsp)" ::: "memory", "cc"); if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease)) return __break_lease(inode, mode, 4); return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int try_break_deleg(struct inode *inode, struct inode **delegated_inode) { int ret; ret = break_deleg(inode, 00000001|00004000); if (ret == -11 && delegated_inode) { *delegated_inode = inode; ihold(inode); } return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int break_deleg_wait(struct inode **delegated_inode) { int ret; ret = break_deleg(*delegated_inode, 00000001); iput(*delegated_inode); *delegated_inode = ((void *)0); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int break_layout(struct inode *inode, bool wait) { asm volatile("lock; addl $0,-4(%%rsp)" ::: "memory", "cc"); if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease)) return __break_lease(inode, wait ? 00000001 : 00000001 | 00004000, 2048); return 0; } # 2503 "../include/linux/fs.h" struct audit_names; struct filename { const char *name; const char *uptr; int refcnt; struct audit_names *aname; const char iname[]; }; _Static_assert(__builtin_offsetof(struct filename, iname) % sizeof(long) == 0, "offsetof(struct filename, iname) % sizeof(long) == 0"); extern long vfs_truncate(const struct path *, loff_t); extern int do_truncate(struct dentry *, loff_t start, unsigned int time_attrs, struct file *filp); extern int vfs_fallocate(struct file *file, int mode, loff_t offset, loff_t len); extern long do_sys_open(int dfd, const char *filename, int flags, umode_t mode); extern struct file *file_open_name(struct filename *, int, umode_t); extern struct file *filp_open(const char *, int, umode_t); extern struct file *file_open_root(struct dentry *, struct vfsmount *, const char *, int, umode_t); extern struct file * dentry_open(const struct path *, int, const struct cred *); extern struct file * open_with_fake_path(const struct path *, int, struct inode*, const struct cred *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct file *file_clone_open(struct file *file) { return dentry_open(&file->f_path, file->f_flags, file->f_cred); } extern int filp_close(struct file *, fl_owner_t id); extern struct filename *getname_flags(const char *, int, int *); extern struct filename *getname(const char *); extern struct filename *getname_kernel(const char *); extern void putname(struct filename *name); extern int finish_open(struct file *file, struct dentry *dentry, int (*open)(struct inode *, struct file *)); extern int finish_no_open(struct file *file, struct dentry *dentry); extern int ioctl_preallocate(struct file *filp, void *argp); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) vfs_caches_init_early(void); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) vfs_caches_init(void); extern struct kmem_cache *names_cachep; extern int register_blkdev(unsigned int, const char *); extern void unregister_blkdev(unsigned int, const char *); extern void bdev_unhash_inode(dev_t dev); extern struct block_device *bdget(dev_t); extern struct block_device *bdgrab(struct block_device *bdev); extern void bd_set_size(struct block_device *, loff_t size); extern void bd_forget(struct inode *inode); extern void bdput(struct block_device *); extern void invalidate_bdev(struct block_device *); extern void iterate_bdevs(void (*)(struct block_device *, void *), void *); extern int sync_blockdev(struct block_device *bdev); extern void kill_bdev(struct block_device *); extern struct super_block *freeze_bdev(struct block_device *); extern void emergency_thaw_all(void); extern void emergency_thaw_bdev(struct super_block *sb); extern int thaw_bdev(struct block_device *bdev, struct super_block *sb); extern int fsync_bdev(struct block_device *); extern struct super_block *blockdev_superblock; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool sb_is_blkdev_sb(struct super_block *sb) { return sb == blockdev_superblock; } # 2610 "../include/linux/fs.h" extern int sync_filesystem(struct super_block *); extern const struct file_operations def_blk_fops; extern const struct file_operations def_chr_fops; extern int ioctl_by_bdev(struct block_device *, unsigned, unsigned long); extern int blkdev_ioctl(struct block_device *, fmode_t, unsigned, unsigned long); extern long compat_blkdev_ioctl(struct file *, unsigned, unsigned long); extern int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder); extern struct block_device *blkdev_get_by_path(const char *path, fmode_t mode, void *holder); extern struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, void *holder); extern void blkdev_put(struct block_device *bdev, fmode_t mode); extern int __blkdev_reread_part(struct block_device *bdev); extern int blkdev_reread_part(struct block_device *bdev); extern int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk); extern void bd_unlink_disk_holder(struct block_device *bdev, struct gendisk *disk); # 2651 "../include/linux/fs.h" extern int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *); extern int register_chrdev_region(dev_t, unsigned, const char *); extern int __register_chrdev(unsigned int major, unsigned int baseminor, unsigned int count, const char *name, const struct file_operations *fops); extern void __unregister_chrdev(unsigned int major, unsigned int baseminor, unsigned int count, const char *name); extern void unregister_chrdev_region(dev_t, unsigned); extern void chrdev_show(struct seq_file *,off_t); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops) { return __register_chrdev(major, 0, 256, name, fops); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void unregister_chrdev(unsigned int major, const char *name) { __unregister_chrdev(major, 0, 256, name); } extern const char *__bdevname(dev_t, char *buffer); extern const char *bdevname(struct block_device *bdev, char *buffer); extern struct block_device *lookup_bdev(const char *); extern void blkdev_show(struct seq_file *,off_t); extern void init_special_inode(struct inode *, umode_t, dev_t); extern void make_bad_inode(struct inode *); extern bool is_bad_inode(struct inode *); extern void check_disk_size_change(struct gendisk *disk, struct block_device *bdev, bool verbose); extern int revalidate_disk(struct gendisk *); extern int check_disk_change(struct block_device *); extern int __invalidate_device(struct block_device *, bool); extern int invalidate_partition(struct gendisk *, int); unsigned long invalidate_mapping_pages(struct address_space *mapping, unsigned long start, unsigned long end); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void invalidate_remote_inode(struct inode *inode) { if ((((inode->i_mode) & 00170000) == 0100000) || (((inode->i_mode) & 00170000) == 0040000) || (((inode->i_mode) & 00170000) == 0120000)) invalidate_mapping_pages(inode->i_mapping, 0, -1); } extern int invalidate_inode_pages2(struct address_space *mapping); extern int invalidate_inode_pages2_range(struct address_space *mapping, unsigned long start, unsigned long end); extern int write_inode_now(struct inode *, int); extern int filemap_fdatawrite(struct address_space *); extern int filemap_flush(struct address_space *); extern int filemap_fdatawait_keep_errors(struct address_space *mapping); extern int filemap_fdatawait_range(struct address_space *, loff_t lstart, loff_t lend); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int filemap_fdatawait(struct address_space *mapping) { return filemap_fdatawait_range(mapping, 0, ((long long)(~0ULL >> 1))); } extern bool filemap_range_has_page(struct address_space *, loff_t lstart, loff_t lend); extern int filemap_write_and_wait(struct address_space *mapping); extern int filemap_write_and_wait_range(struct address_space *mapping, loff_t lstart, loff_t lend); extern int __filemap_fdatawrite_range(struct address_space *mapping, loff_t start, loff_t end, int sync_mode); extern int filemap_fdatawrite_range(struct address_space *mapping, loff_t start, loff_t end); extern int filemap_check_errors(struct address_space *mapping); extern void __filemap_set_wb_err(struct address_space *mapping, int err); extern int __attribute__((__warn_unused_result__)) file_fdatawait_range(struct file *file, loff_t lstart, loff_t lend); extern int __attribute__((__warn_unused_result__)) file_check_and_advance_wb_err(struct file *file); extern int __attribute__((__warn_unused_result__)) file_write_and_wait_range(struct file *file, loff_t start, loff_t end); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int file_write_and_wait(struct file *file) { return file_write_and_wait_range(file, 0, ((long long)(~0ULL >> 1))); } # 2762 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void filemap_set_wb_err(struct address_space *mapping, int err) { if (__builtin_expect(!!(err), 0)) __filemap_set_wb_err(mapping, err); } # 2779 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int filemap_check_wb_err(struct address_space *mapping, errseq_t since) { return errseq_check(&mapping->wb_err, since); } # 2792 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) errseq_t filemap_sample_wb_err(struct address_space *mapping) { return errseq_sample(&mapping->wb_err); } extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end, int datasync); extern int vfs_fsync(struct file *file, int datasync); extern int sync_file_range(struct file *file, loff_t offset, loff_t nbytes, unsigned int flags); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ssize_t generic_write_sync(struct kiocb *iocb, ssize_t count) { if (iocb->ki_flags & (1 << 4)) { int ret = vfs_fsync_range(iocb->ki_filp, iocb->ki_pos - count, iocb->ki_pos - 1, (iocb->ki_flags & (1 << 5)) ? 0 : 1); if (ret) return ret; } return count; } extern void emergency_sync(void); extern void emergency_remount(void); extern sector_t bmap(struct inode *, sector_t); extern int notify_change(struct dentry *, struct iattr *, struct inode **); extern int inode_permission(struct inode *, int); extern int generic_permission(struct inode *, int); extern int __check_sticky(struct inode *dir, struct inode *inode); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool execute_ok(struct inode *inode) { return (inode->i_mode & (00100|00010|00001)) || (((inode->i_mode) & 00170000) == 0040000); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void file_start_write(struct file *file) { if (!(((file_inode(file)->i_mode) & 00170000) == 0100000)) return; __sb_start_write(file_inode(file)->i_sb, SB_FREEZE_WRITE, true); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool file_start_write_trylock(struct file *file) { if (!(((file_inode(file)->i_mode) & 00170000) == 0100000)) return true; return __sb_start_write(file_inode(file)->i_sb, SB_FREEZE_WRITE, false); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void file_end_write(struct file *file) { if (!(((file_inode(file)->i_mode) & 00170000) == 0100000)) return; __sb_end_write(file_inode(file)->i_sb, SB_FREEZE_WRITE); } # 2874 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_write_access(struct inode *inode) { return atomic_inc_unless_negative(&inode->i_writecount) ? 0 : -26; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int deny_write_access(struct file *file) { struct inode *inode = file_inode(file); return atomic_dec_unless_positive(&inode->i_writecount) ? 0 : -26; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void put_write_access(struct inode * inode) { atomic_dec(&inode->i_writecount); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void allow_write_access(struct file *file) { if (file) atomic_inc(&file_inode(file)->i_writecount); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool inode_is_open_for_write(const struct inode *inode) { return atomic_read(&inode->i_writecount) > 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void i_readcount_dec(struct inode *inode) { do { if (__builtin_expect(!!(!atomic_read(&inode->i_readcount)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/fs.h"), "i" (2900), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (357)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); atomic_dec(&inode->i_readcount); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void i_readcount_inc(struct inode *inode) { atomic_inc(&inode->i_readcount); } # 2917 "../include/linux/fs.h" extern int do_pipe_flags(int *, int); # 2933 "../include/linux/fs.h" enum kernel_read_file_id { READING_UNKNOWN, READING_FIRMWARE, READING_FIRMWARE_PREALLOC_BUFFER, READING_MODULE, READING_KEXEC_IMAGE, READING_KEXEC_INITRAMFS, READING_POLICY, READING_X509_CERTIFICATE, READING_MAX_ID, }; static const char * const kernel_read_file_str[] = { "unknown", "firmware", "firmware", "kernel-module", "kexec-image", "kexec-initramfs", "security-policy", "x509-certificate", "", }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *kernel_read_file_id_str(enum kernel_read_file_id id) { if ((unsigned)id >= READING_MAX_ID) return kernel_read_file_str[READING_UNKNOWN]; return kernel_read_file_str[id]; } extern int kernel_read_file(struct file *, void **, loff_t *, loff_t, enum kernel_read_file_id); extern int kernel_read_file_from_path(const char *, void **, loff_t *, loff_t, enum kernel_read_file_id); extern int kernel_read_file_from_fd(int, void **, loff_t *, loff_t, enum kernel_read_file_id); extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *); extern ssize_t kernel_write(struct file *, const void *, size_t, loff_t *); extern ssize_t __kernel_write(struct file *, const void *, size_t, loff_t *); extern struct file * open_exec(const char *); extern bool is_subdir(struct dentry *, struct dentry *); extern bool path_is_under(const struct path *, const struct path *); extern char *file_path(struct file *, char *, int); extern loff_t default_llseek(struct file *file, loff_t offset, int whence); extern loff_t vfs_llseek(struct file *file, loff_t offset, int whence); extern int inode_init_always(struct super_block *, struct inode *); extern void inode_init_once(struct inode *); extern void address_space_init_once(struct address_space *mapping); extern struct inode * igrab(struct inode *); extern ino_t iunique(struct super_block *, ino_t); extern int inode_needs_sync(struct inode *inode); extern int generic_delete_inode(struct inode *inode); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int generic_drop_inode(struct inode *inode) { return !inode->i_nlink || inode_unhashed(inode); } extern struct inode *ilookup5_nowait(struct super_block *sb, unsigned long hashval, int (*test)(struct inode *, void *), void *data); extern struct inode *ilookup5(struct super_block *sb, unsigned long hashval, int (*test)(struct inode *, void *), void *data); extern struct inode *ilookup(struct super_block *sb, unsigned long ino); extern struct inode *inode_insert5(struct inode *inode, unsigned long hashval, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *data); extern struct inode * iget5_locked(struct super_block *, unsigned long, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *); extern struct inode * iget_locked(struct super_block *, unsigned long); extern struct inode *find_inode_nowait(struct super_block *, unsigned long, int (*match)(struct inode *, unsigned long, void *), void *data); extern int insert_inode_locked4(struct inode *, unsigned long, int (*test)(struct inode *, void *), void *); extern int insert_inode_locked(struct inode *); extern void lockdep_annotate_inode_mutex_key(struct inode *inode); extern void unlock_new_inode(struct inode *); extern void discard_new_inode(struct inode *); extern unsigned int get_next_ino(void); extern void evict_inodes(struct super_block *sb); extern void __iget(struct inode * inode); extern void iget_failed(struct inode *); extern void clear_inode(struct inode *); extern void __destroy_inode(struct inode *); extern struct inode *new_inode_pseudo(struct super_block *sb); extern struct inode *new_inode(struct super_block *sb); extern void free_inode_nonrcu(struct inode *inode); extern int should_remove_suid(struct dentry *); extern int file_remove_privs(struct file *); extern void __insert_inode_hash(struct inode *, unsigned long hashval); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void insert_inode_hash(struct inode *inode) { __insert_inode_hash(inode, inode->i_ino); } extern void __remove_inode_hash(struct inode *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void remove_inode_hash(struct inode *inode) { if (!inode_unhashed(inode) && !hlist_fake(&inode->i_hash)) __remove_inode_hash(inode); } extern void inode_sb_list_add(struct inode *inode); extern int bdev_read_only(struct block_device *); extern int set_blocksize(struct block_device *, int); extern int sb_set_blocksize(struct super_block *, int); extern int sb_min_blocksize(struct super_block *, int); extern int generic_file_mmap(struct file *, struct vm_area_struct *); extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct *); extern ssize_t generic_write_checks(struct kiocb *, struct iov_iter *); extern int generic_remap_checks(struct file *file_in, loff_t pos_in, struct file *file_out, loff_t pos_out, loff_t *count, unsigned int remap_flags); extern int generic_file_rw_checks(struct file *file_in, struct file *file_out); extern int generic_copy_file_checks(struct file *file_in, loff_t pos_in, struct file *file_out, loff_t pos_out, size_t *count, unsigned int flags); extern ssize_t generic_file_read_iter(struct kiocb *, struct iov_iter *); extern ssize_t __generic_file_write_iter(struct kiocb *, struct iov_iter *); extern ssize_t generic_file_write_iter(struct kiocb *, struct iov_iter *); extern ssize_t generic_file_direct_write(struct kiocb *, struct iov_iter *); extern ssize_t generic_perform_write(struct file *, struct iov_iter *, loff_t); ssize_t vfs_iter_read(struct file *file, struct iov_iter *iter, loff_t *ppos, rwf_t flags); ssize_t vfs_iter_write(struct file *file, struct iov_iter *iter, loff_t *ppos, rwf_t flags); extern ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to); extern ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from); extern int blkdev_fsync(struct file *filp, loff_t start, loff_t end, int datasync); extern void block_sync_page(struct page *page); extern ssize_t generic_file_splice_read(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); extern ssize_t iter_file_splice_write(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe, struct file *out, loff_t *, size_t len, unsigned int flags); extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out, loff_t *opos, size_t len, unsigned int flags); extern void file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping); extern loff_t noop_llseek(struct file *file, loff_t offset, int whence); extern loff_t no_llseek(struct file *file, loff_t offset, int whence); extern loff_t vfs_setpos(struct file *file, loff_t offset, loff_t maxsize); extern loff_t generic_file_llseek(struct file *file, loff_t offset, int whence); extern loff_t generic_file_llseek_size(struct file *file, loff_t offset, int whence, loff_t maxsize, loff_t eof); extern loff_t fixed_size_llseek(struct file *file, loff_t offset, int whence, loff_t size); extern loff_t no_seek_end_llseek_size(struct file *, loff_t, int, loff_t); extern loff_t no_seek_end_llseek(struct file *, loff_t, int); extern int generic_file_open(struct inode * inode, struct file * filp); extern int nonseekable_open(struct inode * inode, struct file * filp); extern int stream_open(struct inode * inode, struct file * filp); typedef void (dio_submit_t)(struct bio *bio, struct inode *inode, loff_t file_offset); enum { DIO_LOCKING = 0x01, DIO_SKIP_HOLES = 0x02, }; void dio_end_io(struct bio *bio); void dio_warn_stale_pagecache(struct file *filp); ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, struct block_device *bdev, struct iov_iter *iter, get_block_t get_block, dio_iodone_t end_io, dio_submit_t submit_io, int flags); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ssize_t blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, struct iov_iter *iter, get_block_t get_block) { return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, iter, get_block, ((void *)0), ((void *)0), DIO_LOCKING | DIO_SKIP_HOLES); } void inode_dio_wait(struct inode *inode); # 3142 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inode_dio_begin(struct inode *inode) { atomic_inc(&inode->i_dio_count); } # 3154 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inode_dio_end(struct inode *inode) { if (atomic_dec_and_test(&inode->i_dio_count)) wake_up_bit(&inode->i_state, 9); } extern void inode_set_flags(struct inode *inode, unsigned int flags, unsigned int mask); extern const struct file_operations generic_ro_fops; extern int readlink_copy(char *, int, const char *); extern int page_readlink(struct dentry *, char *, int); extern const char *page_get_link(struct dentry *, struct inode *, struct delayed_call *); extern void page_put_link(void *); extern int __page_symlink(struct inode *inode, const char *symname, int len, int nofs); extern int page_symlink(struct inode *inode, const char *symname, int len); extern const struct inode_operations page_symlink_inode_operations; extern void kfree_link(void *); extern void generic_fillattr(struct inode *, struct kstat *); extern int vfs_getattr_nosec(const struct path *, struct kstat *, u32, unsigned int); extern int vfs_getattr(const struct path *, struct kstat *, u32, unsigned int); void __inode_add_bytes(struct inode *inode, loff_t bytes); void inode_add_bytes(struct inode *inode, loff_t bytes); void __inode_sub_bytes(struct inode *inode, loff_t bytes); void inode_sub_bytes(struct inode *inode, loff_t bytes); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) loff_t __inode_get_bytes(struct inode *inode) { return (((loff_t)inode->i_blocks) << 9) + inode->i_bytes; } loff_t inode_get_bytes(struct inode *inode); void inode_set_bytes(struct inode *inode, loff_t bytes); const char *simple_get_link(struct dentry *, struct inode *, struct delayed_call *); extern const struct inode_operations simple_symlink_inode_operations; extern int iterate_dir(struct file *, struct dir_context *); extern int vfs_statx(int, const char *, int, struct kstat *, u32); extern int vfs_statx_fd(unsigned int, struct kstat *, u32, unsigned int); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int vfs_stat(const char *filename, struct kstat *stat) { return vfs_statx(-100, filename, 0x800, stat, 0x000007ffU); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int vfs_lstat(const char *name, struct kstat *stat) { return vfs_statx(-100, name, 0x100 | 0x800, stat, 0x000007ffU); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int vfs_fstatat(int dfd, const char *filename, struct kstat *stat, int flags) { return vfs_statx(dfd, filename, flags | 0x800, stat, 0x000007ffU); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int vfs_fstat(int fd, struct kstat *stat) { return vfs_statx_fd(fd, stat, 0x000007ffU, 0); } extern const char *vfs_get_link(struct dentry *, struct delayed_call *); extern int vfs_readlink(struct dentry *, char *, int); extern int __generic_block_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, loff_t start, loff_t len, get_block_t *get_block); extern int generic_block_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, u64 start, u64 len, get_block_t *get_block); extern struct file_system_type *get_filesystem(struct file_system_type *fs); extern void put_filesystem(struct file_system_type *fs); extern struct file_system_type *get_fs_type(const char *name); extern struct super_block *get_super(struct block_device *); extern struct super_block *get_super_thawed(struct block_device *); extern struct super_block *get_super_exclusive_thawed(struct block_device *bdev); extern struct super_block *get_active_super(struct block_device *bdev); extern void drop_super(struct super_block *sb); extern void drop_super_exclusive(struct super_block *sb); extern void iterate_supers(void (*)(struct super_block *, void *), void *); extern void iterate_supers_type(struct file_system_type *, void (*)(struct super_block *, void *), void *); extern int dcache_dir_open(struct inode *, struct file *); extern int dcache_dir_close(struct inode *, struct file *); extern loff_t dcache_dir_lseek(struct file *, loff_t, int); extern int dcache_readdir(struct file *, struct dir_context *); extern int simple_setattr(struct dentry *, struct iattr *); extern int simple_getattr(const struct path *, struct kstat *, u32, unsigned int); extern int simple_statfs(struct dentry *, struct kstatfs *); extern int simple_open(struct inode *inode, struct file *file); extern int simple_link(struct dentry *, struct inode *, struct dentry *); extern int simple_unlink(struct inode *, struct dentry *); extern int simple_rmdir(struct inode *, struct dentry *); extern int simple_rename(struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int); extern int noop_fsync(struct file *, loff_t, loff_t, int); extern int noop_set_page_dirty(struct page *page); extern void noop_invalidatepage(struct page *page, unsigned int offset, unsigned int length); extern ssize_t noop_direct_IO(struct kiocb *iocb, struct iov_iter *iter); extern int simple_empty(struct dentry *); extern int simple_readpage(struct file *file, struct page *page); extern int simple_write_begin(struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned flags, struct page **pagep, void **fsdata); extern int simple_write_end(struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned copied, struct page *page, void *fsdata); extern int always_delete_dentry(const struct dentry *); extern struct inode *alloc_anon_inode(struct super_block *); extern int simple_nosetlease(struct file *, long, struct file_lock **, void **); extern const struct dentry_operations simple_dentry_operations; extern struct dentry *simple_lookup(struct inode *, struct dentry *, unsigned int flags); extern ssize_t generic_read_dir(struct file *, char *, size_t, loff_t *); extern const struct file_operations simple_dir_operations; extern const struct inode_operations simple_dir_inode_operations; extern void make_empty_dir_inode(struct inode *inode); extern bool is_empty_dir_inode(struct inode *inode); struct tree_descr { const char *name; const struct file_operations *ops; int mode; }; struct dentry *d_alloc_name(struct dentry *, const char *); extern int simple_fill_super(struct super_block *, unsigned long, const struct tree_descr *); extern int simple_pin_fs(struct file_system_type *, struct vfsmount **mount, int *count); extern void simple_release_fs(struct vfsmount **mount, int *count); extern ssize_t simple_read_from_buffer(void *to, size_t count, loff_t *ppos, const void *from, size_t available); extern ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos, const void *from, size_t count); extern int __generic_file_fsync(struct file *, loff_t, loff_t, int); extern int generic_file_fsync(struct file *, loff_t, loff_t, int); extern int generic_check_addressable(unsigned, u64); extern int buffer_migrate_page(struct address_space *, struct page *, struct page *, enum migrate_mode); extern int buffer_migrate_page_norefs(struct address_space *, struct page *, struct page *, enum migrate_mode); extern int setattr_prepare(struct dentry *, struct iattr *); extern int inode_newsize_ok(const struct inode *, loff_t offset); extern void setattr_copy(struct inode *inode, const struct iattr *attr); extern int file_update_time(struct file *file); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool io_is_direct(struct file *filp) { return (filp->f_flags & 00040000) || ((filp->f_mapping->host)->i_flags & 8192); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool vma_is_dax(struct vm_area_struct *vma) { return vma->vm_file && ((vma->vm_file->f_mapping->host)->i_flags & 8192); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool vma_is_fsdax(struct vm_area_struct *vma) { struct inode *inode; if (!vma->vm_file) return false; if (!vma_is_dax(vma)) return false; inode = file_inode(vma->vm_file); if ((((inode->i_mode) & 00170000) == 0020000)) return false; return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iocb_flags(struct file *file) { int res = 0; if (file->f_flags & 00002000) res |= (1 << 1); if (io_is_direct(file)) res |= (1 << 2); if ((file->f_flags & 00010000) || (((file->f_mapping->host)->i_sb->s_flags & (16)) || ((file->f_mapping->host)->i_flags & 1))) res |= (1 << 4); if (file->f_flags & 04000000) res |= (1 << 5); return res; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int kiocb_set_rw_flags(struct kiocb *ki, rwf_t flags) { if (__builtin_expect(!!(flags & ~((( __kernel_rwf_t)0x00000001) | (( __kernel_rwf_t)0x00000002) | (( __kernel_rwf_t)0x00000004) | (( __kernel_rwf_t)0x00000008) | (( __kernel_rwf_t)0x00000010))), 0)) return -95; if (flags & (( __kernel_rwf_t)0x00000008)) { if (!(ki->ki_filp->f_mode & (( fmode_t)0x8000000))) return -95; ki->ki_flags |= (1 << 7); } if (flags & (( __kernel_rwf_t)0x00000001)) ki->ki_flags |= (1 << 3); if (flags & (( __kernel_rwf_t)0x00000002)) ki->ki_flags |= (1 << 4); if (flags & (( __kernel_rwf_t)0x00000004)) ki->ki_flags |= ((1 << 4) | (1 << 5)); if (flags & (( __kernel_rwf_t)0x00000010)) ki->ki_flags |= (1 << 1); return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ino_t parent_ino(struct dentry *dentry) { ino_t res; spin_lock(&dentry->d_lockref.lock); res = dentry->d_parent->d_inode->i_ino; spin_unlock(&dentry->d_lockref.lock); return res; } struct simple_transaction_argresp { ssize_t size; char data[0]; }; char *simple_transaction_get(struct file *file, const char *buf, size_t size); ssize_t simple_transaction_read(struct file *file, char *buf, size_t size, loff_t *pos); int simple_transaction_release(struct inode *inode, struct file *file); void simple_transaction_set(struct file *file, size_t n); # 3442 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__format__(printf, 1, 2))) void __simple_attr_check_format(const char *fmt, ...) { } int simple_attr_open(struct inode *inode, struct file *file, int (*get)(void *, u64 *), int (*set)(void *, u64), const char *fmt); int simple_attr_release(struct inode *inode, struct file *file); ssize_t simple_attr_read(struct file *file, char *buf, size_t len, loff_t *ppos); ssize_t simple_attr_write(struct file *file, const char *buf, size_t len, loff_t *ppos); struct ctl_table; int proc_nr_files(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); int proc_nr_dentry(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); int proc_nr_inodes(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) get_filesystem_list(char *buf); # 3473 "../include/linux/fs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_sxid(umode_t mode) { return (mode & 0004000) || ((mode & 0002000) && (mode & 00010)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int check_sticky(struct inode *dir, struct inode *inode) { if (!(dir->i_mode & 0001000)) return 0; return __check_sticky(dir, inode); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inode_has_no_xattr(struct inode *inode) { if (!is_sxid(inode->i_mode) && (inode->i_sb->s_flags & (1<<28))) inode->i_flags |= 4096; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_root_inode(struct inode *inode) { return inode == inode->i_sb->s_root->d_inode; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool dir_emit(struct dir_context *ctx, const char *name, int namelen, u64 ino, unsigned type) { return ctx->actor(ctx, name, namelen, ctx->pos, ino, type) == 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool dir_emit_dot(struct file *file, struct dir_context *ctx) { return ctx->actor(ctx, ".", 1, ctx->pos, file->f_path.dentry->d_inode->i_ino, 4) == 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool dir_emit_dotdot(struct file *file, struct dir_context *ctx) { return ctx->actor(ctx, "..", 2, ctx->pos, parent_ino(file->f_path.dentry), 4) == 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool dir_emit_dots(struct file *file, struct dir_context *ctx) { if (ctx->pos == 0) { if (!dir_emit_dot(file, ctx)) return false; ctx->pos = 1; } if (ctx->pos == 1) { if (!dir_emit_dotdot(file, ctx)) return false; ctx->pos = 2; } return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool dir_relax(struct inode *inode) { inode_unlock(inode); inode_lock(inode); return !((inode)->i_flags & 16); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool dir_relax_shared(struct inode *inode) { inode_unlock_shared(inode); inode_lock_shared(inode); return !((inode)->i_flags & 16); } extern bool path_noexec(const struct path *path); extern void inode_nohighmem(struct inode *inode); extern int vfs_fadvise(struct file *file, loff_t offset, loff_t len, int advice); extern struct sock *io_uring_get_socket(struct file *file); int vfs_ioc_setflags_prepare(struct inode *inode, unsigned int oldflags, unsigned int flags); int vfs_ioc_fssetxattr_check(struct inode *inode, const struct fsxattr *old_fa, struct fsxattr *fa); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void simple_fill_fsxattr(struct fsxattr *fa, __u32 xflags) { __memset(fa, 0, sizeof(*fa)); fa->fsx_xflags = xflags; } # 9 "../include/linux/huge_mm.h" 2 extern vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault *vmf); extern int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm, pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr, struct vm_area_struct *vma); extern void huge_pmd_set_accessed(struct vm_fault *vmf, pmd_t orig_pmd); extern int copy_huge_pud(struct mm_struct *dst_mm, struct mm_struct *src_mm, pud_t *dst_pud, pud_t *src_pud, unsigned long addr, struct vm_area_struct *vma); extern void huge_pud_set_accessed(struct vm_fault *vmf, pud_t orig_pud); extern vm_fault_t do_huge_pmd_wp_page(struct vm_fault *vmf, pmd_t orig_pmd); extern struct page *follow_trans_huge_pmd(struct vm_area_struct *vma, unsigned long addr, pmd_t *pmd, unsigned int flags); extern bool madvise_free_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, pmd_t *pmd, unsigned long addr, unsigned long next); extern int zap_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, pmd_t *pmd, unsigned long addr); extern int zap_huge_pud(struct mmu_gather *tlb, struct vm_area_struct *vma, pud_t *pud, unsigned long addr); extern int mincore_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, unsigned long addr, unsigned long end, unsigned char *vec); extern bool move_huge_pmd(struct vm_area_struct *vma, unsigned long old_addr, unsigned long new_addr, unsigned long old_end, pmd_t *old_pmd, pmd_t *new_pmd); extern int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, unsigned long addr, pgprot_t newprot, int prot_numa); vm_fault_t vmf_insert_pfn_pmd(struct vm_fault *vmf, pfn_t pfn, bool write); vm_fault_t vmf_insert_pfn_pud(struct vm_fault *vmf, pfn_t pfn, bool write); enum transparent_hugepage_flag { TRANSPARENT_HUGEPAGE_FLAG, TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG, TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG, TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG, TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG, TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG, TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG, TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG, TRANSPARENT_HUGEPAGE_DEBUG_COW_FLAG, }; struct kobject; struct kobj_attribute; extern ssize_t single_hugepage_flag_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count, enum transparent_hugepage_flag flag); extern ssize_t single_hugepage_flag_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf, enum transparent_hugepage_flag flag); extern struct kobj_attribute shmem_enabled_attr; # 90 "../include/linux/huge_mm.h" extern bool is_vma_temporary_stack(struct vm_area_struct *vma); extern unsigned long transparent_hugepage_flags; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __transparent_hugepage_enabled(struct vm_area_struct *vma) { if (vma->vm_flags & 0x40000000) return false; if (is_vma_temporary_stack(vma)) return false; if (test_bit(24, &vma->vm_mm->flags)) return false; if (transparent_hugepage_flags & (1 << TRANSPARENT_HUGEPAGE_FLAG)) return true; if (vma_is_dax(vma)) return true; if (transparent_hugepage_flags & (1 << TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG)) return !!(vma->vm_flags & 0x20000000); return false; } bool transparent_hugepage_enabled(struct vm_area_struct *vma); # 135 "../include/linux/huge_mm.h" extern unsigned long thp_get_unmapped_area(struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags); extern void prep_transhuge_page(struct page *page); extern void free_transhuge_page(struct page *page); bool can_split_huge_page(struct page *page, int *pextra_pins); int split_huge_page_to_list(struct page *page, struct list_head *list); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int split_huge_page(struct page *page) { return split_huge_page_to_list(page, ((void *)0)); } void deferred_split_huge_page(struct page *page); void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, unsigned long address, bool freeze, struct page *page); # 163 "../include/linux/huge_mm.h" void split_huge_pmd_address(struct vm_area_struct *vma, unsigned long address, bool freeze, struct page *page); void __split_huge_pud(struct vm_area_struct *vma, pud_t *pud, unsigned long address); # 177 "../include/linux/huge_mm.h" extern int hugepage_madvise(struct vm_area_struct *vma, unsigned long *vm_flags, int advice); extern void vma_adjust_trans_huge(struct vm_area_struct *vma, unsigned long start, unsigned long end, long adjust_next); extern spinlock_t *__pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma); extern spinlock_t *__pud_trans_huge_lock(pud_t *pud, struct vm_area_struct *vma); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int is_swap_pmd(pmd_t pmd) { return !pmd_none(pmd) && !pmd_present(pmd); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) spinlock_t *pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma) { do { if (__builtin_expect(!!(!rwsem_is_locked(&vma->vm_mm->mmap_sem)), 0)) { dump_vma(vma); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/huge_mm.h"), "i" (197), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (358)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); if (is_swap_pmd(*pmd) || pmd_trans_huge(*pmd) || pmd_devmap(*pmd)) return __pmd_trans_huge_lock(pmd, vma); else return ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) spinlock_t *pud_trans_huge_lock(pud_t *pud, struct vm_area_struct *vma) { do { if (__builtin_expect(!!(!rwsem_is_locked(&vma->vm_mm->mmap_sem)), 0)) { dump_vma(vma); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/huge_mm.h"), "i" (206), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (359)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); if (pud_trans_huge(*pud) || pud_devmap(*pud)) return __pud_trans_huge_lock(pud, vma); else return ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int hpage_nr_pages(struct page *page) { if (__builtin_expect(!!(PageTransHuge(page)), 0)) return (1<<(21 -12)); return 1; } struct page *follow_devmap_pmd(struct vm_area_struct *vma, unsigned long addr, pmd_t *pmd, int flags, struct dev_pagemap **pgmap); struct page *follow_devmap_pud(struct vm_area_struct *vma, unsigned long addr, pud_t *pud, int flags, struct dev_pagemap **pgmap); extern vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t orig_pmd); extern struct page *huge_zero_page; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_huge_zero_page(struct page *page) { return ({ union { typeof(huge_zero_page) __val; char __c[1]; } __u; if (1) __read_once_size(&(huge_zero_page), __u.__c, sizeof(huge_zero_page)); else __read_once_size_nocheck(&(huge_zero_page), __u.__c, sizeof(huge_zero_page)); do { } while (0); __u.__val; }) == page; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_huge_zero_pmd(pmd_t pmd) { return is_huge_zero_page((((struct page *)vmemmap_base) + (pmd_pfn(pmd)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_huge_zero_pud(pud_t pud) { return false; } struct page *mm_get_huge_zero_page(struct mm_struct *mm); void mm_put_huge_zero_page(struct mm_struct *mm); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool thp_migration_supported(void) { return 1; } # 571 "../include/linux/mm.h" 2 # 588 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int put_page_testzero(struct page *page) { do { if (__builtin_expect(!!(page_ref_count(page) == 0), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "page_ref_count(page) == 0"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/mm.h"), "i" (590), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (360)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); return page_ref_dec_and_test(page); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_page_unless_zero(struct page *page) { return page_ref_add_unless(page, 1, 0); } extern int page_is_ram(unsigned long pfn); enum { REGION_INTERSECTS, REGION_DISJOINT, REGION_MIXED, }; int region_intersects(resource_size_t offset, size_t size, unsigned long flags, unsigned long desc); struct page *vmalloc_to_page(const void *addr); unsigned long vmalloc_to_pfn(const void *addr); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_vmalloc_addr(const void *x) { unsigned long addr = (unsigned long)x; return addr >= vmalloc_base && addr < (vmalloc_base + (((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+ 2) & 31))|(1<<(( 3*32+ 3) & 31))|(1<<(( 3*32+ 1) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & (0|0) )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & (0|0|0|0) )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 0 : ( __builtin_constant_p((__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p((16*32+16)) && ( ((((16*32+16))>>5)==(0) && (1UL<<(((16*32+16))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || ((((16*32+16))>>5)==(1) && (1UL<<(((16*32+16))&31) & ((1<<(( 1*32+29) & 31))|0) )) || ((((16*32+16))>>5)==(2) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(3) && (1UL<<(((16*32+16))&31) & ((1<<(( 3*32+20) & 31))) )) || ((((16*32+16))>>5)==(4) && (1UL<<(((16*32+16))&31) & (0) )) || ((((16*32+16))>>5)==(5) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(6) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(7) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(8) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(9) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(10) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(11) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(12) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(13) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(14) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(15) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(16) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(17) && (1UL<<(((16*32+16))&31) & 0 )) || ((((16*32+16))>>5)==(18) && (1UL<<(((16*32+16))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit((16*32+16), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has((16*32+16)) )) ? 12800UL : 32UL) << 40) - 1); } extern int is_vmalloc_or_module_addr(const void *x); extern void *kvmalloc_node(size_t size, gfp_t flags, int node); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kvmalloc(size_t size, gfp_t flags) { return kvmalloc_node(size, flags, (-1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kvzalloc_node(size_t size, gfp_t flags, int node) { return kvmalloc_node(size, flags | (( gfp_t)0x100u), node); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kvzalloc(size_t size, gfp_t flags) { return kvmalloc(size, flags | (( gfp_t)0x100u)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kvmalloc_array(size_t n, size_t size, gfp_t flags) { size_t bytes; if (__builtin_expect(!!(({ typeof(n) __a = (n); typeof(size) __b = (size); typeof(&bytes) __d = (&bytes); (void) (&__a == &__b); (void) (&__a == __d); __builtin_mul_overflow(__a, __b, __d); })), 0)) return ((void *)0); return kvmalloc(bytes, flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kvcalloc(size_t n, size_t size, gfp_t flags) { return kvmalloc_array(n, size, flags | (( gfp_t)0x100u)); } extern void kvfree(const void *addr); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) atomic_t *compound_mapcount_ptr(struct page *page) { return &page[1].compound_mapcount; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int compound_mapcount(struct page *page) { do { if (__builtin_expect(!!(!PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageCompound(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/mm.h"), "i" (683), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (361)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page = compound_head(page); return atomic_read(compound_mapcount_ptr(page)) + 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void page_mapcount_reset(struct page *page) { atomic_set(&(page)->_mapcount, -1); } int __page_mapcount(struct page *page); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_mapcount(struct page *page) { do { if (__builtin_expect(!!(PageSlab(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PageSlab(page)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/mm.h"), "i" (702), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (362)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); if (__builtin_expect(!!(PageCompound(page)), 0)) return __page_mapcount(page); return atomic_read(&page->_mapcount) + 1; } int total_mapcount(struct page *page); int page_trans_huge_mapcount(struct page *page, int *total_mapcount); # 727 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page *virt_to_head_page(const void *x) { struct page *page = (((struct page *)vmemmap_base) + (__phys_addr((unsigned long)(x)) >> 12)); return compound_head(page); } void __put_page(struct page *page); void put_pages_list(struct list_head *pages); void split_page(struct page *page, unsigned int order); typedef void compound_page_dtor(struct page *); enum compound_dtor_id { NULL_COMPOUND_DTOR, COMPOUND_PAGE_DTOR, HUGETLB_PAGE_DTOR, TRANSHUGE_PAGE_DTOR, NR_COMPOUND_DTORS, }; extern compound_page_dtor * const compound_page_dtors[]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_compound_page_dtor(struct page *page, enum compound_dtor_id compound_dtor) { do { if (__builtin_expect(!!(compound_dtor >= NR_COMPOUND_DTORS), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "compound_dtor >= NR_COMPOUND_DTORS"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/mm.h"), "i" (764), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (363)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page[1].compound_dtor = compound_dtor; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) compound_page_dtor *get_compound_page_dtor(struct page *page) { do { if (__builtin_expect(!!(page[1].compound_dtor >= NR_COMPOUND_DTORS), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "page[1].compound_dtor >= NR_COMPOUND_DTORS"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/mm.h"), "i" (770), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (364)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); return compound_page_dtors[page[1].compound_dtor]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int compound_order(struct page *page) { if (!PageHead(page)) return 0; return page[1].compound_order; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_compound_order(struct page *page, unsigned int order) { page[1].compound_order = order; } void free_compound_page(struct page *page); # 795 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t maybe_mkwrite(pte_t pte, struct vm_area_struct *vma) { if (__builtin_expect(!!(vma->vm_flags & 0x00000002), 1)) pte = pte_mkwrite(pte); return pte; } vm_fault_t alloc_set_pte(struct vm_fault *vmf, struct mem_cgroup *memcg, struct page *page); vm_fault_t finish_fault(struct vm_fault *vmf); vm_fault_t finish_mkwrite_fault(struct vm_fault *vmf); # 915 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) enum zone_type page_zonenum(const struct page *page) { return (page->flags >> (((((sizeof(unsigned long)*8) - 0) - 10) - 3) * (3 != 0))) & ((1UL << 3) - 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_zone_device_page(const struct page *page) { return page_zonenum(page) == ZONE_DEVICE; } extern void memmap_init_zone_device(struct zone *, unsigned long, unsigned long, struct dev_pagemap *); # 935 "../include/linux/mm.h" void dev_pagemap_get_ops(void); void dev_pagemap_put_ops(void); void __put_devmap_managed_page(struct page *page); extern struct static_key_false devmap_managed_key; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool put_devmap_managed_page(struct page *page) { if (!({ bool branch; if (__builtin_types_compatible_p(typeof(*&devmap_managed_key), struct static_key_true)) branch = arch_static_branch_jump(&(&devmap_managed_key)->key, false); else if (__builtin_types_compatible_p(typeof(*&devmap_managed_key), struct static_key_false)) branch = arch_static_branch(&(&devmap_managed_key)->key, false); else branch = ____wrong_branch_error(); __builtin_expect(!!(branch), 0); })) return false; if (!is_zone_device_page(page)) return false; switch (page->pgmap->type) { case MEMORY_DEVICE_PRIVATE: case MEMORY_DEVICE_PUBLIC: case MEMORY_DEVICE_FS_DAX: __put_devmap_managed_page(page); return true; default: break; } return false; } # 971 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_device_private_page(const struct page *page) { return 1 && 1 && is_zone_device_page(page) && page->pgmap->type == MEMORY_DEVICE_PRIVATE; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_device_public_page(const struct page *page) { return 1 && 1 && is_zone_device_page(page) && page->pgmap->type == MEMORY_DEVICE_PUBLIC; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_pci_p2pdma_page(const struct page *page) { return 1 && 1 && is_zone_device_page(page) && page->pgmap->type == MEMORY_DEVICE_PCI_P2PDMA; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void get_page(struct page *page) { page = compound_head(page); do { if (__builtin_expect(!!(((unsigned int) page_ref_count(page) + 127u <= 127u)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "((unsigned int) page_ref_count(page) + 127u <= 127u)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/mm.h"), "i" (1006), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (365)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); page_ref_inc(page); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) bool try_get_page(struct page *page) { page = compound_head(page); if (({ int __ret_warn_on = !!(page_ref_count(page) <= 0); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/mm.h"), "i" (1013), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (366)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return false; page_ref_inc(page); return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void put_page(struct page *page) { page = compound_head(page); if (put_devmap_managed_page(page)) return; if (put_page_testzero(page)) __put_page(page); } # 1051 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void put_user_page(struct page *page) { put_page(page); } void put_user_pages_dirty(struct page **pages, unsigned long npages); void put_user_pages_dirty_lock(struct page **pages, unsigned long npages); void put_user_pages(struct page **pages, unsigned long npages); # 1072 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_zone_id(struct page *page) { return (page->flags >> ((((((sizeof(unsigned long)*8) - 0) - 10) < ((((sizeof(unsigned long)*8) - 0) - 10) - 3))? (((sizeof(unsigned long)*8) - 0) - 10) : ((((sizeof(unsigned long)*8) - 0) - 10) - 3)) * ((10 + 3) != 0))) & ((1UL << (10 + 3)) - 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_to_nid(const struct page *page) { struct page *p = (struct page *)page; return (({ do { if (__builtin_expect(!!(PagePoisoned(p)), 0)) { dump_page(p, "VM_BUG_ON_PAGE(" "PagePoisoned(p)"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/mm.h"), "i" (1084), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (367)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); p; })->flags >> ((((sizeof(unsigned long)*8) - 0) - 10) * (10 != 0))) & ((1UL << 10) - 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpu_pid_to_cpupid(int cpu, int pid) { return ((cpu & ((1 << 13)-1)) << 8) | (pid & ((1 << 8)-1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpupid_to_pid(int cpupid) { return cpupid & ((1 << 8)-1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpupid_to_cpu(int cpupid) { return (cpupid >> 8) & ((1 << 13)-1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cpupid_to_nid(int cpupid) { return __cpu_to_node(cpupid_to_cpu(cpupid)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cpupid_pid_unset(int cpupid) { return cpupid_to_pid(cpupid) == (-1 & ((1 << 8)-1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cpupid_cpu_unset(int cpupid) { return cpupid_to_cpu(cpupid) == (-1 & ((1 << 13)-1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __cpupid_match_pid(pid_t task_pid, int cpupid) { return (task_pid & ((1 << 8)-1)) == cpupid_to_pid(cpupid); } # 1140 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int page_cpupid_last(struct page *page) { return (page->flags >> ((((((sizeof(unsigned long)*8) - 0) - 10) - 3) - (8 +13)) * ((8 +13) != 0))) & ((1UL << (8 +13)) - 1); } extern int page_cpupid_xchg_last(struct page *page, int cpupid); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void page_cpupid_reset_last(struct page *page) { page->flags |= ((1UL << (8 +13)) - 1) << ((((((sizeof(unsigned long)*8) - 0) - 10) - 3) - (8 +13)) * ((8 +13) != 0)); } # 1215 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 page_kasan_tag(const struct page *page) { return 0xff; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void page_kasan_tag_set(struct page *page, u8 tag) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void page_kasan_tag_reset(struct page *page) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct zone *page_zone(const struct page *page) { return &(node_data[page_to_nid(page)])->node_zones[page_zonenum(page)]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pg_data_t *page_pgdat(const struct page *page) { return (node_data[page_to_nid(page)]); } # 1247 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_page_zone(struct page *page, enum zone_type zone) { page->flags &= ~(((1UL << 3) - 1) << (((((sizeof(unsigned long)*8) - 0) - 10) - 3) * (3 != 0))); page->flags |= (zone & ((1UL << 3) - 1)) << (((((sizeof(unsigned long)*8) - 0) - 10) - 3) * (3 != 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_page_node(struct page *page, unsigned long node) { page->flags &= ~(((1UL << 10) - 1) << ((((sizeof(unsigned long)*8) - 0) - 10) * (10 != 0))); page->flags |= (node & ((1UL << 10) - 1)) << ((((sizeof(unsigned long)*8) - 0) - 10) * (10 != 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_page_links(struct page *page, enum zone_type zone, unsigned long node, unsigned long pfn) { set_page_zone(page, zone); set_page_node(page, node); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct mem_cgroup *page_memcg(struct page *page) { return page->mem_cgroup; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct mem_cgroup *page_memcg_rcu(struct page *page) { ({ int __ret_warn_on = !!(!rcu_read_lock_held()); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/mm.h"), "i" (1276), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (368)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); return ({ union { typeof(page->mem_cgroup) __val; char __c[1]; } __u; if (1) __read_once_size(&(page->mem_cgroup), __u.__c, sizeof(page->mem_cgroup)); else __read_once_size_nocheck(&(page->mem_cgroup), __u.__c, sizeof(page->mem_cgroup)); do { } while (0); __u.__val; }); } # 1294 "../include/linux/mm.h" # 1 "../include/linux/vmstat.h" 1 # 1 "../include/linux/vm_event_item.h" 1 # 25 "../include/linux/vm_event_item.h" enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, PGALLOC_DMA, PGALLOC_DMA32, PGALLOC_NORMAL, PGALLOC_MOVABLE, ALLOCSTALL_DMA, ALLOCSTALL_DMA32, ALLOCSTALL_NORMAL, ALLOCSTALL_MOVABLE, PGSCAN_SKIP_DMA, PGSCAN_SKIP_DMA32, PGSCAN_SKIP_NORMAL, PGSCAN_SKIP_MOVABLE, PGFREE, PGACTIVATE, PGDEACTIVATE, PGLAZYFREE, PGFAULT, PGMAJFAULT, PGLAZYFREED, PGREFILL, PGSTEAL_KSWAPD, PGSTEAL_DIRECT, PGSCAN_KSWAPD, PGSCAN_DIRECT, PGSCAN_DIRECT_THROTTLE, PGSCAN_ZONE_RECLAIM_FAILED, PGINODESTEAL, SLABS_SCANNED, KSWAPD_INODESTEAL, KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY, PAGEOUTRUN, PGROTATED, DROP_PAGECACHE, DROP_SLAB, OOM_KILL, NUMA_PTE_UPDATES, NUMA_HUGE_PTE_UPDATES, NUMA_HINT_FAULTS, NUMA_HINT_FAULTS_LOCAL, NUMA_PAGE_MIGRATE, PGMIGRATE_SUCCESS, PGMIGRATE_FAIL, COMPACTMIGRATE_SCANNED, COMPACTFREE_SCANNED, COMPACTISOLATED, COMPACTSTALL, COMPACTFAIL, COMPACTSUCCESS, KCOMPACTD_WAKE, KCOMPACTD_MIGRATE_SCANNED, KCOMPACTD_FREE_SCANNED, HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL, UNEVICTABLE_PGCULLED, UNEVICTABLE_PGSCANNED, UNEVICTABLE_PGRESCUED, UNEVICTABLE_PGMLOCKED, UNEVICTABLE_PGMUNLOCKED, UNEVICTABLE_PGCLEARED, UNEVICTABLE_PGSTRANDED, THP_FAULT_ALLOC, THP_FAULT_FALLBACK, THP_COLLAPSE_ALLOC, THP_COLLAPSE_ALLOC_FAILED, THP_FILE_ALLOC, THP_FILE_MAPPED, THP_SPLIT_PAGE, THP_SPLIT_PAGE_FAILED, THP_DEFERRED_SPLIT_PAGE, THP_SPLIT_PMD, THP_SPLIT_PUD, THP_ZERO_PAGE_ALLOC, THP_ZERO_PAGE_ALLOC_FAILED, THP_SWPOUT, THP_SWPOUT_FALLBACK, BALLOON_INFLATE, BALLOON_DEFLATE, BALLOON_MIGRATE, NR_TLB_REMOTE_FLUSH, NR_TLB_REMOTE_FLUSH_RECEIVED, NR_TLB_LOCAL_FLUSH_ALL, NR_TLB_LOCAL_FLUSH_ONE, VMACACHE_FIND_CALLS, VMACACHE_FIND_HITS, SWAP_RA, SWAP_RA_HIT, NR_VM_EVENT_ITEMS }; # 9 "../include/linux/vmstat.h" 2 # 1 "../include/linux/static_key.h" 1 # 11 "../include/linux/vmstat.h" 2 extern int sysctl_stat_interval; extern int sysctl_vm_numa_stat; extern struct static_key_true vm_numa_stat_key; extern int sysctl_vm_numa_stat_handler(struct ctl_table *table, int write, void *buffer, size_t *length, loff_t *ppos); struct reclaim_stat { unsigned nr_dirty; unsigned nr_unqueued_dirty; unsigned nr_congested; unsigned nr_writeback; unsigned nr_immediate; unsigned nr_activate[2]; unsigned nr_ref_keep; unsigned nr_unmap_fail; }; # 45 "../include/linux/vmstat.h" struct vm_event_state { unsigned long event[NR_VM_EVENT_ITEMS]; }; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_vm_event_states; extern __attribute__((section(".data..percpu" ""))) __typeof__(struct vm_event_state) vm_event_states; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __count_vm_event(enum vm_event_item item) { do { do { const void *__vpp_verify = (typeof((&(vm_event_states.event[item])) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(vm_event_states.event[item])) { case 1: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void count_vm_event(enum vm_event_item item) { do { do { const void *__vpp_verify = (typeof((&(vm_event_states.event[item])) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(vm_event_states.event[item])) { case 1: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __count_vm_events(enum vm_event_item item, long delta) { do { do { const void *__vpp_verify = (typeof((&(vm_event_states.event[item])) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(vm_event_states.event[item])) { case 1: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(delta) && ((delta) == 1 || (delta) == -1)) ? (int)(delta) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (delta); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(delta))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(delta))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(delta) && ((delta) == 1 || (delta) == -1)) ? (int)(delta) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (delta); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(delta))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(delta))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(delta) && ((delta) == 1 || (delta) == -1)) ? (int)(delta) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (delta); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(delta))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(delta))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(delta) && ((delta) == 1 || (delta) == -1)) ? (int)(delta) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (delta); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(delta))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(delta))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void count_vm_events(enum vm_event_item item, long delta) { do { do { const void *__vpp_verify = (typeof((&(vm_event_states.event[item])) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(vm_event_states.event[item])) { case 1: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(delta) && ((delta) == 1 || (delta) == -1)) ? (int)(delta) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (delta); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(delta))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(delta))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(delta) && ((delta) == 1 || (delta) == -1)) ? (int)(delta) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (delta); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(delta))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(delta))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(delta) && ((delta) == 1 || (delta) == -1)) ? (int)(delta) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (delta); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(delta))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(delta))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((vm_event_states.event[item])) pao_T__; const int pao_ID__ = (__builtin_constant_p(delta) && ((delta) == 1 || (delta) == -1)) ? (int)(delta) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (delta); (void)pao_tmp__; } switch (sizeof((vm_event_states.event[item]))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "qi" ((pao_T__)(delta))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "ri" ((pao_T__)(delta))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item]))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((vm_event_states.event[item])) : "re" ((pao_T__)(delta))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } extern void all_vm_events(unsigned long *); extern void vm_events_fold_cpu(int cpu); # 131 "../include/linux/vmstat.h" extern atomic_long_t vm_zone_stat[NR_VM_ZONE_STAT_ITEMS]; extern atomic_long_t vm_numa_stat[NR_VM_NUMA_STAT_ITEMS]; extern atomic_long_t vm_node_stat[NR_VM_NODE_STAT_ITEMS]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void zone_numa_state_add(long x, struct zone *zone, enum numa_stat_item item) { atomic_long_add(x, &zone->vm_numa_stat[item]); atomic_long_add(x, &vm_numa_stat[item]); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long global_numa_state(enum numa_stat_item item) { long x = atomic_long_read(&vm_numa_stat[item]); return x; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long zone_numa_state_snapshot(struct zone *zone, enum numa_stat_item item) { long x = atomic_long_read(&zone->vm_numa_stat[item]); int cpu; for (((cpu)) = -1; ((cpu)) = cpumask_next(((cpu)), (((const struct cpumask *)&__cpu_online_mask))), ((cpu)) < nr_cpu_ids;) x += ({ do { const void *__vpp_verify = (typeof((zone->pageset) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = (unsigned long) ((typeof(*((zone->pageset))) *)((zone->pageset))); (typeof((typeof(*((zone->pageset))) *)((zone->pageset)))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); })->vm_numa_stat_diff[item]; return x; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void zone_page_state_add(long x, struct zone *zone, enum zone_stat_item item) { atomic_long_add(x, &zone->vm_stat[item]); atomic_long_add(x, &vm_zone_stat[item]); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void node_page_state_add(long x, struct pglist_data *pgdat, enum node_stat_item item) { atomic_long_add(x, &pgdat->vm_stat[item]); atomic_long_add(x, &vm_node_stat[item]); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long global_zone_page_state(enum zone_stat_item item) { long x = atomic_long_read(&vm_zone_stat[item]); if (x < 0) x = 0; return x; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long global_node_page_state(enum node_stat_item item) { long x = atomic_long_read(&vm_node_stat[item]); if (x < 0) x = 0; return x; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long zone_page_state(struct zone *zone, enum zone_stat_item item) { long x = atomic_long_read(&zone->vm_stat[item]); if (x < 0) x = 0; return x; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long zone_page_state_snapshot(struct zone *zone, enum zone_stat_item item) { long x = atomic_long_read(&zone->vm_stat[item]); int cpu; for (((cpu)) = -1; ((cpu)) = cpumask_next(((cpu)), (((const struct cpumask *)&__cpu_online_mask))), ((cpu)) < nr_cpu_ids;) x += ({ do { const void *__vpp_verify = (typeof((zone->pageset) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = (unsigned long) ((typeof(*((zone->pageset))) *)((zone->pageset))); (typeof((typeof(*((zone->pageset))) *)((zone->pageset)))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); })->vm_stat_diff[item]; if (x < 0) x = 0; return x; } extern void __inc_numa_state(struct zone *zone, enum numa_stat_item item); extern unsigned long sum_zone_node_page_state(int node, enum zone_stat_item item); extern unsigned long sum_zone_numa_state(int node, enum numa_stat_item item); extern unsigned long node_page_state(struct pglist_data *pgdat, enum node_stat_item item); void __mod_zone_page_state(struct zone *, enum zone_stat_item item, long); void __inc_zone_page_state(struct page *, enum zone_stat_item); void __dec_zone_page_state(struct page *, enum zone_stat_item); void __mod_node_page_state(struct pglist_data *, enum node_stat_item item, long); void __inc_node_page_state(struct page *, enum node_stat_item); void __dec_node_page_state(struct page *, enum node_stat_item); void mod_zone_page_state(struct zone *, enum zone_stat_item, long); void inc_zone_page_state(struct page *, enum zone_stat_item); void dec_zone_page_state(struct page *, enum zone_stat_item); void mod_node_page_state(struct pglist_data *, enum node_stat_item, long); void inc_node_page_state(struct page *, enum node_stat_item); void dec_node_page_state(struct page *, enum node_stat_item); extern void inc_node_state(struct pglist_data *, enum node_stat_item); extern void __inc_zone_state(struct zone *, enum zone_stat_item); extern void __inc_node_state(struct pglist_data *, enum node_stat_item); extern void dec_zone_state(struct zone *, enum zone_stat_item); extern void __dec_zone_state(struct zone *, enum zone_stat_item); extern void __dec_node_state(struct pglist_data *, enum node_stat_item); void quiet_vmstat(void); void cpu_vm_stats_fold(int cpu); void refresh_zone_stat_thresholds(void); struct ctl_table; int vmstat_refresh(struct ctl_table *, int write, void *buffer, size_t *lenp, loff_t *ppos); void drain_zonestat(struct zone *zone, struct per_cpu_pageset *); int calculate_pressure_threshold(struct zone *zone); int calculate_normal_threshold(struct zone *zone); void set_pgdat_percpu_threshold(pg_data_t *pgdat, int (*calculate_pressure)(struct zone *)); # 374 "../include/linux/vmstat.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __mod_zone_freepage_state(struct zone *zone, int nr_pages, int migratetype) { __mod_zone_page_state(zone, NR_FREE_PAGES, nr_pages); if (__builtin_expect(!!((migratetype) == MIGRATE_CMA), 0)) __mod_zone_page_state(zone, NR_FREE_CMA_PAGES, nr_pages); } extern const char * const vmstat_text[]; # 1295 "../include/linux/mm.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void *lowmem_page_address(const struct page *page) { return ((void *)((unsigned long)(((phys_addr_t)((unsigned long)((page) - ((struct page *)vmemmap_base))) << 12))+((unsigned long)page_offset_base))); } # 1329 "../include/linux/mm.h" extern void *page_rmapping(struct page *page); extern struct anon_vma *page_anon_vma(struct page *page); extern struct address_space *page_mapping(struct page *page); extern struct address_space *__page_file_mapping(struct page *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct address_space *page_file_mapping(struct page *page) { if (__builtin_expect(!!(PageSwapCache(page)), 0)) return __page_file_mapping(page); return page->mapping; } extern unsigned long __page_file_index(struct page *page); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long page_index(struct page *page) { if (__builtin_expect(!!(PageSwapCache(page)), 0)) return __page_file_index(page); return page->index; } bool page_mapped(struct page *page); struct address_space *page_mapping(struct page *page); struct address_space *page_mapping_file(struct page *page); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool page_is_pfmemalloc(struct page *page) { return page->index == -1UL; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_page_pfmemalloc(struct page *page) { page->index = -1UL; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_page_pfmemalloc(struct page *page) { page->index = 0; } extern void pagefault_out_of_memory(void); # 1402 "../include/linux/mm.h" extern void show_free_areas(unsigned int flags, nodemask_t *nodemask); extern bool can_do_mlock(void); extern int user_shm_lock(size_t, struct user_struct *); extern void user_shm_unlock(size_t, struct user_struct *); struct zap_details { struct address_space *check_mapping; unsigned long first_index; unsigned long last_index; }; struct page *_vm_normal_page(struct vm_area_struct *vma, unsigned long addr, pte_t pte, bool with_public_device); struct page *vm_normal_page_pmd(struct vm_area_struct *vma, unsigned long addr, pmd_t pmd); void zap_vma_ptes(struct vm_area_struct *vma, unsigned long address, unsigned long size); void zap_page_range(struct vm_area_struct *vma, unsigned long address, unsigned long size); void unmap_vmas(struct mmu_gather *tlb, struct vm_area_struct *start_vma, unsigned long start, unsigned long end); # 1455 "../include/linux/mm.h" struct mm_walk { int (*pud_entry)(pud_t *pud, unsigned long addr, unsigned long next, struct mm_walk *walk); int (*pmd_entry)(pmd_t *pmd, unsigned long addr, unsigned long next, struct mm_walk *walk); int (*pte_entry)(pte_t *pte, unsigned long addr, unsigned long next, struct mm_walk *walk); int (*pte_hole)(unsigned long addr, unsigned long next, struct mm_walk *walk); int (*hugetlb_entry)(pte_t *pte, unsigned long hmask, unsigned long addr, unsigned long next, struct mm_walk *walk); int (*test_walk)(unsigned long addr, unsigned long next, struct mm_walk *walk); struct mm_struct *mm; struct vm_area_struct *vma; void *private; }; struct mmu_notifier_range; int walk_page_range(unsigned long addr, unsigned long end, struct mm_walk *walk); int walk_page_vma(struct vm_area_struct *vma, struct mm_walk *walk); void free_pgd_range(struct mmu_gather *tlb, unsigned long addr, unsigned long end, unsigned long floor, unsigned long ceiling); int copy_page_range(struct mm_struct *dst, struct mm_struct *src, struct vm_area_struct *vma); int follow_pte_pmd(struct mm_struct *mm, unsigned long address, struct mmu_notifier_range *range, pte_t **ptepp, pmd_t **pmdpp, spinlock_t **ptlp); int follow_pfn(struct vm_area_struct *vma, unsigned long address, unsigned long *pfn); int follow_phys(struct vm_area_struct *vma, unsigned long address, unsigned int flags, unsigned long *prot, resource_size_t *phys); int generic_access_phys(struct vm_area_struct *vma, unsigned long addr, void *buf, int len, int write); extern void truncate_pagecache(struct inode *inode, loff_t new); extern void truncate_setsize(struct inode *inode, loff_t newsize); void pagecache_isize_extended(struct inode *inode, loff_t from, loff_t to); void truncate_pagecache_range(struct inode *inode, loff_t offset, loff_t end); int truncate_inode_page(struct address_space *mapping, struct page *page); int generic_error_remove_page(struct address_space *mapping, struct page *page); int invalidate_inode_page(struct page *page); extern vm_fault_t handle_mm_fault(struct vm_area_struct *vma, unsigned long address, unsigned int flags); extern int fixup_user_fault(struct task_struct *tsk, struct mm_struct *mm, unsigned long address, unsigned int fault_flags, bool *unlocked); void unmap_mapping_pages(struct address_space *mapping, unsigned long start, unsigned long nr, bool even_cows); void unmap_mapping_range(struct address_space *mapping, loff_t const holebegin, loff_t const holelen, int even_cows); # 1533 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void unmap_shared_mapping_range(struct address_space *mapping, loff_t const holebegin, loff_t const holelen) { unmap_mapping_range(mapping, holebegin, holelen, 0); } extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, unsigned int gup_flags); extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf, int len, unsigned int gup_flags); extern int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, unsigned long addr, void *buf, int len, unsigned int gup_flags); long get_user_pages_remote(struct task_struct *tsk, struct mm_struct *mm, unsigned long start, unsigned long nr_pages, unsigned int gup_flags, struct page **pages, struct vm_area_struct **vmas, int *locked); long get_user_pages(unsigned long start, unsigned long nr_pages, unsigned int gup_flags, struct page **pages, struct vm_area_struct **vmas); long get_user_pages_locked(unsigned long start, unsigned long nr_pages, unsigned int gup_flags, struct page **pages, int *locked); long get_user_pages_unlocked(unsigned long start, unsigned long nr_pages, struct page **pages, unsigned int gup_flags); int get_user_pages_fast(unsigned long start, int nr_pages, unsigned int gup_flags, struct page **pages); int account_locked_vm(struct mm_struct *mm, unsigned long pages, bool inc); int __account_locked_vm(struct mm_struct *mm, unsigned long pages, bool inc, struct task_struct *task, bool bypass_rlim); struct frame_vector { unsigned int nr_allocated; unsigned int nr_frames; bool got_ref; bool is_pfns; void *ptrs[0]; }; struct frame_vector *frame_vector_create(unsigned int nr_frames); void frame_vector_destroy(struct frame_vector *vec); int get_vaddr_frames(unsigned long start, unsigned int nr_pfns, unsigned int gup_flags, struct frame_vector *vec); void put_vaddr_frames(struct frame_vector *vec); int frame_vector_to_pages(struct frame_vector *vec); void frame_vector_to_pfns(struct frame_vector *vec); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int frame_vector_count(struct frame_vector *vec) { return vec->nr_frames; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page **frame_vector_pages(struct frame_vector *vec) { if (vec->is_pfns) { int err = frame_vector_to_pages(vec); if (err) return ERR_PTR(err); } return (struct page **)(vec->ptrs); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long *frame_vector_pfns(struct frame_vector *vec) { if (!vec->is_pfns) frame_vector_to_pfns(vec); return (unsigned long *)(vec->ptrs); } struct kvec; int get_kernel_pages(const struct kvec *iov, int nr_pages, int write, struct page **pages); int get_kernel_page(unsigned long start, int write, struct page **pages); struct page *get_dump_page(unsigned long addr); extern int try_to_release_page(struct page * page, gfp_t gfp_mask); extern void do_invalidatepage(struct page *page, unsigned int offset, unsigned int length); void __set_page_dirty(struct page *, struct address_space *, int warn); int __set_page_dirty_nobuffers(struct page *page); int __set_page_dirty_no_writeback(struct page *page); int redirty_page_for_writepage(struct writeback_control *wbc, struct page *page); void account_page_dirtied(struct page *page, struct address_space *mapping); void account_page_cleaned(struct page *page, struct address_space *mapping, struct bdi_writeback *wb); int set_page_dirty(struct page *page); int set_page_dirty_lock(struct page *page); void __cancel_dirty_page(struct page *page); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cancel_dirty_page(struct page *page) { if (PageDirty(page)) __cancel_dirty_page(page); } int clear_page_dirty_for_io(struct page *page); int get_cmdline(struct task_struct *task, char *buffer, int buflen); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool vma_is_anonymous(struct vm_area_struct *vma) { return !vma->vm_ops; } bool vma_is_shmem(struct vm_area_struct *vma); int vma_is_stack_for_current(struct vm_area_struct *vma); extern unsigned long move_page_tables(struct vm_area_struct *vma, unsigned long old_addr, struct vm_area_struct *new_vma, unsigned long new_addr, unsigned long len, bool need_rmap_locks); extern unsigned long change_protection(struct vm_area_struct *vma, unsigned long start, unsigned long end, pgprot_t newprot, int dirty_accountable, int prot_numa); extern int mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev, unsigned long start, unsigned long end, unsigned long newflags); int __get_user_pages_fast(unsigned long start, int nr_pages, int write, struct page **pages); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long get_mm_counter(struct mm_struct *mm, int member) { long val = atomic_long_read(&mm->rss_stat.count[member]); if (val < 0) val = 0; return (unsigned long)val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void add_mm_counter(struct mm_struct *mm, int member, long value) { atomic_long_add(value, &mm->rss_stat.count[member]); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inc_mm_counter(struct mm_struct *mm, int member) { atomic_long_inc(&mm->rss_stat.count[member]); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dec_mm_counter(struct mm_struct *mm, int member) { atomic_long_dec(&mm->rss_stat.count[member]); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int mm_counter_file(struct page *page) { if (PageSwapBacked(page)) return MM_SHMEMPAGES; return MM_FILEPAGES; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int mm_counter(struct page *page) { if (PageAnon(page)) return MM_ANONPAGES; return mm_counter_file(page); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long get_mm_rss(struct mm_struct *mm) { return get_mm_counter(mm, MM_FILEPAGES) + get_mm_counter(mm, MM_ANONPAGES) + get_mm_counter(mm, MM_SHMEMPAGES); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long get_mm_hiwater_rss(struct mm_struct *mm) { return __builtin_choose_expr(((!!(sizeof((typeof(mm->hiwater_rss) *)1 == (typeof(get_mm_rss(mm)) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)(mm->hiwater_rss) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)(get_mm_rss(mm)) * 0l)) : (int *)8))))), ((mm->hiwater_rss) > (get_mm_rss(mm)) ? (mm->hiwater_rss) : (get_mm_rss(mm))), ({ typeof(mm->hiwater_rss) __UNIQUE_ID___x369 = (mm->hiwater_rss); typeof(get_mm_rss(mm)) __UNIQUE_ID___y370 = (get_mm_rss(mm)); ((__UNIQUE_ID___x369) > (__UNIQUE_ID___y370) ? (__UNIQUE_ID___x369) : (__UNIQUE_ID___y370)); })); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long get_mm_hiwater_vm(struct mm_struct *mm) { return __builtin_choose_expr(((!!(sizeof((typeof(mm->hiwater_vm) *)1 == (typeof(mm->total_vm) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)(mm->hiwater_vm) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)(mm->total_vm) * 0l)) : (int *)8))))), ((mm->hiwater_vm) > (mm->total_vm) ? (mm->hiwater_vm) : (mm->total_vm)), ({ typeof(mm->hiwater_vm) __UNIQUE_ID___x371 = (mm->hiwater_vm); typeof(mm->total_vm) __UNIQUE_ID___y372 = (mm->total_vm); ((__UNIQUE_ID___x371) > (__UNIQUE_ID___y372) ? (__UNIQUE_ID___x371) : (__UNIQUE_ID___y372)); })); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void update_hiwater_rss(struct mm_struct *mm) { unsigned long _rss = get_mm_rss(mm); if ((mm)->hiwater_rss < _rss) (mm)->hiwater_rss = _rss; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void update_hiwater_vm(struct mm_struct *mm) { if (mm->hiwater_vm < mm->total_vm) mm->hiwater_vm = mm->total_vm; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void reset_mm_hiwater_rss(struct mm_struct *mm) { mm->hiwater_rss = get_mm_rss(mm); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void setmax_mm_hiwater_rss(unsigned long *maxrss, struct mm_struct *mm) { unsigned long hiwater_rss = get_mm_hiwater_rss(mm); if (*maxrss < hiwater_rss) *maxrss = hiwater_rss; } void sync_mm_rss(struct mm_struct *mm); # 1779 "../include/linux/mm.h" int vma_wants_writenotify(struct vm_area_struct *vma, pgprot_t vm_page_prot); extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pte_t *get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl) { pte_t *ptep; (ptep = __get_locked_pte(mm, addr, ptl)); return ptep; } # 1798 "../include/linux/mm.h" int __p4d_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address); # 1811 "../include/linux/mm.h" int __pud_alloc(struct mm_struct *mm, p4d_t *p4d, unsigned long address); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mm_inc_nr_puds(struct mm_struct *mm) { if (0) return; atomic_long_add(512 * sizeof(pud_t), &mm->pgtables_bytes); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mm_dec_nr_puds(struct mm_struct *mm) { if (0) return; atomic_long_sub(512 * sizeof(pud_t), &mm->pgtables_bytes); } # 1839 "../include/linux/mm.h" int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mm_inc_nr_pmds(struct mm_struct *mm) { if (0) return; atomic_long_add(512 * sizeof(pmd_t), &mm->pgtables_bytes); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mm_dec_nr_pmds(struct mm_struct *mm) { if (0) return; atomic_long_sub(512 * sizeof(pmd_t), &mm->pgtables_bytes); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mm_pgtables_bytes_init(struct mm_struct *mm) { atomic_long_set(&mm->pgtables_bytes, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long mm_pgtables_bytes(const struct mm_struct *mm) { return atomic_long_read(&mm->pgtables_bytes); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mm_inc_nr_ptes(struct mm_struct *mm) { atomic_long_add(512 * sizeof(pte_t), &mm->pgtables_bytes); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mm_dec_nr_ptes(struct mm_struct *mm) { atomic_long_sub(512 * sizeof(pte_t), &mm->pgtables_bytes); } # 1888 "../include/linux/mm.h" int __pte_alloc(struct mm_struct *mm, pmd_t *pmd); int __pte_alloc_kernel(pmd_t *pmd); # 1898 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) p4d_t *p4d_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) { return (__builtin_expect(!!(pgd_none(*pgd)), 0) && __p4d_alloc(mm, pgd, address)) ? ((void *)0) : p4d_offset(pgd, address); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pud_t *pud_alloc(struct mm_struct *mm, p4d_t *p4d, unsigned long address) { return (__builtin_expect(!!(p4d_none(*p4d)), 0) && __pud_alloc(mm, p4d, address)) ? ((void *)0) : pud_offset(p4d, address); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) { return (__builtin_expect(!!(pud_none(*pud)), 0) && __pmd_alloc(mm, pud, address))? ((void *)0): pmd_offset(pud, address); } void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) ptlock_cache_init(void); extern bool ptlock_alloc(struct page *page); extern void ptlock_free(struct page *page); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) spinlock_t *ptlock_ptr(struct page *page) { return page->ptl; } # 1950 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) spinlock_t *pte_lockptr(struct mm_struct *mm, pmd_t *pmd) { return ptlock_ptr((((struct page *)vmemmap_base) + (pmd_pfn(*pmd)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ptlock_init(struct page *page) { do { if (__builtin_expect(!!(*(unsigned long *)&page->ptl), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "*(unsigned long *)&page->ptl"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/mm.h"), "i" (1964), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (373)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); if (!ptlock_alloc(page)) return false; do { spinlock_check(ptlock_ptr(page)); do { static struct lock_class_key __key; __raw_spin_lock_init((&(ptlock_ptr(page))->rlock), "&(ptlock_ptr(page))->rlock", &__key); } while (0); } while (0); return true; } # 1984 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pgtable_init(void) { ptlock_cache_init(); do { } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pgtable_page_ctor(struct page *page) { if (!ptlock_init(page)) return false; __SetPageTable(page); inc_zone_page_state(page, NR_PAGETABLE); return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pgtable_page_dtor(struct page *page) { ptlock_free(page); __ClearPageTable(page); dec_zone_page_state(page, NR_PAGETABLE); } # 2035 "../include/linux/mm.h" static struct page *pmd_to_page(pmd_t *pmd) { unsigned long mask = ~(512 * sizeof(pmd_t) - 1); return (((struct page *)vmemmap_base) + (__phys_addr((unsigned long)((void *)((unsigned long) pmd & mask))) >> 12)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) spinlock_t *pmd_lockptr(struct mm_struct *mm, pmd_t *pmd) { return ptlock_ptr(pmd_to_page(pmd)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pgtable_pmd_page_ctor(struct page *page) { page->pmd_huge_pte = ((void *)0); return ptlock_init(page); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pgtable_pmd_page_dtor(struct page *page) { do { if (__builtin_expect(!!(page->pmd_huge_pte), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "page->pmd_huge_pte"")"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/mm.h"), "i" (2057), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (374)); }); __builtin_unreachable(); } while (0); } while (0); } } while (0); ptlock_free(page); } # 2078 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) spinlock_t *pmd_lock(struct mm_struct *mm, pmd_t *pmd) { spinlock_t *ptl = pmd_lockptr(mm, pmd); spin_lock(ptl); return ptl; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) spinlock_t *pud_lockptr(struct mm_struct *mm, pud_t *pud) { return &mm->page_table_lock; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) spinlock_t *pud_lock(struct mm_struct *mm, pud_t *pud) { spinlock_t *ptl = pud_lockptr(mm, pud); spin_lock(ptl); return ptl; } extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) pagecache_init(void); extern void free_area_init(unsigned long * zones_size); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) free_area_init_node(int nid, unsigned long * zones_size, unsigned long zone_start_pfn, unsigned long *zholes_size); extern void free_initmem(void); extern unsigned long free_reserved_area(void *start, void *end, int poison, const char *s); # 2127 "../include/linux/mm.h" extern void adjust_managed_page_count(struct page *page, long count); extern void mem_init_print_info(const char *str); extern void reserve_bootmem_region(phys_addr_t start, phys_addr_t end); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __free_reserved_page(struct page *page) { ClearPageReserved(page); init_page_count(page); __free_pages((page), 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void free_reserved_page(struct page *page) { __free_reserved_page(page); adjust_managed_page_count(page, 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mark_page_reserved(struct page *page) { SetPageReserved(page); adjust_managed_page_count(page, -1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long free_initmem_default(int poison) { extern char __init_begin[], __init_end[]; return free_reserved_area(&__init_begin, &__init_end, poison, "unused kernel"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long get_num_physpages(void) { int nid; unsigned long phys_pages = 0; for (((nid)) = __first_node(&(node_states[N_ONLINE])); ((nid)) < (1 << 10); ((nid)) = __next_node((((nid))), &((node_states[N_ONLINE])))) phys_pages += ((node_data[nid])->node_present_pages); return phys_pages; } # 2204 "../include/linux/mm.h" extern void free_area_init_nodes(unsigned long *max_zone_pfn); unsigned long node_map_pfn_alignment(void); unsigned long __absent_pages_in_range(int nid, unsigned long start_pfn, unsigned long end_pfn); extern unsigned long absent_pages_in_range(unsigned long start_pfn, unsigned long end_pfn); extern void get_pfn_range_for_nid(unsigned int nid, unsigned long *start_pfn, unsigned long *end_pfn); extern unsigned long find_min_pfn_with_active_regions(void); extern void free_bootmem_with_active_regions(int nid, unsigned long max_low_pfn); extern void sparse_memory_present_with_active_regions(int nid); # 2228 "../include/linux/mm.h" extern int __attribute__((__section__(".meminit.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) early_pfn_to_nid(unsigned long pfn); extern int __attribute__((__section__(".meminit.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) __early_pfn_to_nid(unsigned long pfn, struct mminit_pfnnid_cache *state); void zero_resv_unavail(void); extern void set_dma_reserve(unsigned long new_dma_reserve); extern void memmap_init_zone(unsigned long, int, unsigned long, unsigned long, enum memmap_context, struct vmem_altmap *); extern void setup_per_zone_wmarks(void); extern int __attribute__((__section__(".meminit.text"))) __attribute__((__cold__)) __attribute__((no_instrument_function)) init_per_zone_wmark_min(void); extern void mem_init(void); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) mmap_init(void); extern void show_mem(unsigned int flags, nodemask_t *nodemask); extern long si_mem_available(void); extern void si_meminfo(struct sysinfo * val); extern void si_meminfo_node(struct sysinfo *val, int nid); extern __attribute__((__format__(printf, 3, 4))) void warn_alloc(gfp_t gfp_mask, nodemask_t *nodemask, const char *fmt, ...); extern void setup_per_cpu_pageset(void); extern void zone_pcp_update(struct zone *zone); extern void zone_pcp_reset(struct zone *zone); extern int min_free_kbytes; extern int watermark_boost_factor; extern int watermark_scale_factor; extern atomic_long_t mmap_pages_allocated; extern int nommu_shrink_inode_mappings(struct inode *, size_t, size_t); void vma_interval_tree_insert(struct vm_area_struct *node, struct rb_root_cached *root); void vma_interval_tree_insert_after(struct vm_area_struct *node, struct vm_area_struct *prev, struct rb_root_cached *root); void vma_interval_tree_remove(struct vm_area_struct *node, struct rb_root_cached *root); struct vm_area_struct *vma_interval_tree_iter_first(struct rb_root_cached *root, unsigned long start, unsigned long last); struct vm_area_struct *vma_interval_tree_iter_next(struct vm_area_struct *node, unsigned long start, unsigned long last); void anon_vma_interval_tree_insert(struct anon_vma_chain *node, struct rb_root_cached *root); void anon_vma_interval_tree_remove(struct anon_vma_chain *node, struct rb_root_cached *root); struct anon_vma_chain * anon_vma_interval_tree_iter_first(struct rb_root_cached *root, unsigned long start, unsigned long last); struct anon_vma_chain *anon_vma_interval_tree_iter_next( struct anon_vma_chain *node, unsigned long start, unsigned long last); void anon_vma_interval_tree_verify(struct anon_vma_chain *node); extern int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin); extern int __vma_adjust(struct vm_area_struct *vma, unsigned long start, unsigned long end, unsigned long pgoff, struct vm_area_struct *insert, struct vm_area_struct *expand); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int vma_adjust(struct vm_area_struct *vma, unsigned long start, unsigned long end, unsigned long pgoff, struct vm_area_struct *insert) { return __vma_adjust(vma, start, end, pgoff, insert, ((void *)0)); } extern struct vm_area_struct *vma_merge(struct mm_struct *, struct vm_area_struct *prev, unsigned long addr, unsigned long end, unsigned long vm_flags, struct anon_vma *, struct file *, unsigned long, struct mempolicy *, struct vm_userfaultfd_ctx); extern struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *); extern int __split_vma(struct mm_struct *, struct vm_area_struct *, unsigned long addr, int new_below); extern int split_vma(struct mm_struct *, struct vm_area_struct *, unsigned long addr, int new_below); extern int insert_vm_struct(struct mm_struct *, struct vm_area_struct *); extern void __vma_link_rb(struct mm_struct *, struct vm_area_struct *, struct rb_node **, struct rb_node *); extern void unlink_file_vma(struct vm_area_struct *); extern struct vm_area_struct *copy_vma(struct vm_area_struct **, unsigned long addr, unsigned long len, unsigned long pgoff, bool *need_rmap_locks); extern void exit_mmap(struct mm_struct *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int check_data_rlimit(unsigned long rlim, unsigned long new, unsigned long start, unsigned long end_data, unsigned long start_data) { if (rlim < (~0UL)) { if (((new - start) + (end_data - start_data)) > rlim) return -28; } return 0; } extern int mm_take_all_locks(struct mm_struct *mm); extern void mm_drop_all_locks(struct mm_struct *mm); extern void set_mm_exe_file(struct mm_struct *mm, struct file *new_exe_file); extern struct file *get_mm_exe_file(struct mm_struct *mm); extern struct file *get_task_exe_file(struct task_struct *task); extern bool may_expand_vm(struct mm_struct *, vm_flags_t, unsigned long npages); extern void vm_stat_account(struct mm_struct *, vm_flags_t, long npages); extern bool vma_is_special_mapping(const struct vm_area_struct *vma, const struct vm_special_mapping *sm); extern struct vm_area_struct *_install_special_mapping(struct mm_struct *mm, unsigned long addr, unsigned long len, unsigned long flags, const struct vm_special_mapping *spec); extern int install_special_mapping(struct mm_struct *mm, unsigned long addr, unsigned long len, unsigned long flags, struct page **pages); extern unsigned long get_unmapped_area(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); extern unsigned long mmap_region(struct file *file, unsigned long addr, unsigned long len, vm_flags_t vm_flags, unsigned long pgoff, struct list_head *uf); extern unsigned long do_mmap(struct file *file, unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, vm_flags_t vm_flags, unsigned long pgoff, unsigned long *populate, struct list_head *uf); extern int __do_munmap(struct mm_struct *, unsigned long, size_t, struct list_head *uf, bool downgrade); extern int do_munmap(struct mm_struct *, unsigned long, size_t, struct list_head *uf); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, unsigned long len, unsigned long prot, unsigned long flags, unsigned long pgoff, unsigned long *populate, struct list_head *uf) { return do_mmap(file, addr, len, prot, flags, 0, pgoff, populate, uf); } extern int __mm_populate(unsigned long addr, unsigned long len, int ignore_errors); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void mm_populate(unsigned long addr, unsigned long len) { (void) __mm_populate(addr, len, 1); } extern int __attribute__((__warn_unused_result__)) vm_brk(unsigned long, unsigned long); extern int __attribute__((__warn_unused_result__)) vm_brk_flags(unsigned long, unsigned long, unsigned long); extern int vm_munmap(unsigned long, size_t); extern unsigned long __attribute__((__warn_unused_result__)) vm_mmap(struct file *, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long); struct vm_unmapped_area_info { unsigned long flags; unsigned long length; unsigned long low_limit; unsigned long high_limit; unsigned long align_mask; unsigned long align_offset; }; extern unsigned long unmapped_area(struct vm_unmapped_area_info *info); extern unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info); # 2434 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long vm_unmapped_area(struct vm_unmapped_area_info *info) { if (info->flags & 1) return unmapped_area_topdown(info); else return unmapped_area(info); } extern void truncate_inode_pages(struct address_space *, loff_t); extern void truncate_inode_pages_range(struct address_space *, loff_t lstart, loff_t lend); extern void truncate_inode_pages_final(struct address_space *); extern vm_fault_t filemap_fault(struct vm_fault *vmf); extern void filemap_map_pages(struct vm_fault *vmf, unsigned long start_pgoff, unsigned long end_pgoff); extern vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf); int __attribute__((__warn_unused_result__)) write_one_page(struct page *page); void task_dirty_inc(struct task_struct *tsk); int force_page_cache_readahead(struct address_space *mapping, struct file *filp, unsigned long offset, unsigned long nr_to_read); void page_cache_sync_readahead(struct address_space *mapping, struct file_ra_state *ra, struct file *filp, unsigned long offset, unsigned long size); void page_cache_async_readahead(struct address_space *mapping, struct file_ra_state *ra, struct file *filp, struct page *pg, unsigned long offset, unsigned long size); extern unsigned long stack_guard_gap; extern int expand_stack(struct vm_area_struct *vma, unsigned long address); extern int expand_downwards(struct vm_area_struct *vma, unsigned long address); extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr); extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr, struct vm_area_struct **pprev); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr) { struct vm_area_struct * vma = find_vma(mm,start_addr); if (vma && end_addr <= vma->vm_start) vma = ((void *)0); return vma; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long vm_start_gap(struct vm_area_struct *vma) { unsigned long vm_start = vma->vm_start; if (vma->vm_flags & 0x00000100) { vm_start -= stack_guard_gap; if (vm_start > vma->vm_start) vm_start = 0; } return vm_start; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long vm_end_gap(struct vm_area_struct *vma) { unsigned long vm_end = vma->vm_end; if (vma->vm_flags & 0x00000000) { vm_end += stack_guard_gap; if (vm_end < vma->vm_end) vm_end = -((1UL) << 12); } return vm_end; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long vma_pages(struct vm_area_struct *vma) { return (vma->vm_end - vma->vm_start) >> 12; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct vm_area_struct *find_exact_vma(struct mm_struct *mm, unsigned long vm_start, unsigned long vm_end) { struct vm_area_struct *vma = find_vma(mm, vm_start); if (vma && (vma->vm_start != vm_start || vma->vm_end != vm_end)) vma = ((void *)0); return vma; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool range_in_vma(struct vm_area_struct *vma, unsigned long start, unsigned long end) { return (vma && vma->vm_start <= start && end <= vma->vm_end); } pgprot_t vm_get_page_prot(unsigned long vm_flags); void vma_set_page_prot(struct vm_area_struct *vma); # 2569 "../include/linux/mm.h" unsigned long change_prot_numa(struct vm_area_struct *vma, unsigned long start, unsigned long end); struct vm_area_struct *find_extend_vma(struct mm_struct *, unsigned long addr); int remap_pfn_range(struct vm_area_struct *, unsigned long addr, unsigned long pfn, unsigned long size, pgprot_t); int vm_insert_page(struct vm_area_struct *, unsigned long addr, struct page *); int vm_map_pages(struct vm_area_struct *vma, struct page **pages, unsigned long num); int vm_map_pages_zero(struct vm_area_struct *vma, struct page **pages, unsigned long num); vm_fault_t vmf_insert_pfn(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); vm_fault_t vmf_insert_pfn_prot(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn, pgprot_t pgprot); vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr, pfn_t pfn); vm_fault_t vmf_insert_mixed_mkwrite(struct vm_area_struct *vma, unsigned long addr, pfn_t pfn); int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned long len); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) vm_fault_t vmf_insert_page(struct vm_area_struct *vma, unsigned long addr, struct page *page) { int err = vm_insert_page(vma, addr, page); if (err == -12) return VM_FAULT_OOM; if (err < 0 && err != -16) return VM_FAULT_SIGBUS; return VM_FAULT_NOPAGE; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) vm_fault_t vmf_error(int err) { if (err == -12) return VM_FAULT_OOM; return VM_FAULT_SIGBUS; } struct page *follow_page(struct vm_area_struct *vma, unsigned long address, unsigned int foll_flags); # 2660 "../include/linux/mm.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int vm_fault_to_errno(vm_fault_t vm_fault, int foll_flags) { if (vm_fault & VM_FAULT_OOM) return -12; if (vm_fault & (VM_FAULT_HWPOISON | VM_FAULT_HWPOISON_LARGE)) return (foll_flags & 0x100) ? -133 : -14; if (vm_fault & (VM_FAULT_SIGBUS | VM_FAULT_SIGSEGV)) return -14; return 0; } typedef int (*pte_fn_t)(pte_t *pte, unsigned long addr, void *data); extern int apply_to_page_range(struct mm_struct *mm, unsigned long address, unsigned long size, pte_fn_t fn, void *data); struct pfn_range_apply; typedef int (*pter_fn_t)(pte_t *pte, unsigned long addr, struct pfn_range_apply *closure); struct pfn_range_apply { struct mm_struct *mm; pter_fn_t ptefn; unsigned int alloc; }; extern int apply_to_pfn_range(struct pfn_range_apply *closure, unsigned long address, unsigned long size); unsigned long apply_as_wrprotect(struct address_space *mapping, unsigned long first_index, unsigned long nr); unsigned long apply_as_clean(struct address_space *mapping, unsigned long first_index, unsigned long nr, unsigned long bitmap_pgoff, unsigned long *bitmap, unsigned long *start, unsigned long *end); extern bool page_poisoning_enabled(void); extern void kernel_poison_pages(struct page *page, int numpages, int enable); extern struct static_key_true init_on_alloc; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool want_init_on_alloc(gfp_t flags) { if (({ bool branch; if (__builtin_types_compatible_p(typeof(*&init_on_alloc), struct static_key_true)) branch = arch_static_branch_jump(&(&init_on_alloc)->key, false); else if (__builtin_types_compatible_p(typeof(*&init_on_alloc), struct static_key_false)) branch = arch_static_branch(&(&init_on_alloc)->key, false); else branch = ____wrong_branch_error(); __builtin_expect(!!(branch), 0); })) return true; return flags & (( gfp_t)0x100u); } extern struct static_key_true init_on_free; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool want_init_on_free(void) { return ({ bool branch; if (__builtin_types_compatible_p(typeof(*&init_on_free), struct static_key_true)) branch = arch_static_branch_jump(&(&init_on_free)->key, false); else if (__builtin_types_compatible_p(typeof(*&init_on_free), struct static_key_false)) branch = arch_static_branch(&(&init_on_free)->key, false); else branch = ____wrong_branch_error(); __builtin_expect(!!(branch), 0); }); } extern struct static_key_true _debug_pagealloc_enabled; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool debug_pagealloc_enabled(void) { if (!1) return false; return ({ bool branch; if (__builtin_types_compatible_p(typeof(*&_debug_pagealloc_enabled), struct static_key_true)) branch = arch_static_branch_jump(&(&_debug_pagealloc_enabled)->key, false); else if (__builtin_types_compatible_p(typeof(*&_debug_pagealloc_enabled), struct static_key_false)) branch = arch_static_branch(&(&_debug_pagealloc_enabled)->key, false); else branch = ____wrong_branch_error(); __builtin_expect(!!(branch), 0); }); } extern void __kernel_map_pages(struct page *page, int numpages, int enable); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void kernel_map_pages(struct page *page, int numpages, int enable) { __kernel_map_pages(page, numpages, enable); } extern bool kernel_page_present(struct page *page); # 2758 "../include/linux/mm.h" extern struct vm_area_struct *get_gate_vma(struct mm_struct *mm); extern int in_gate_area_no_mm(unsigned long addr); extern int in_gate_area(struct mm_struct *mm, unsigned long addr); # 2773 "../include/linux/mm.h" extern bool process_shares_mm(struct task_struct *p, struct mm_struct *mm); extern int sysctl_drop_caches; int drop_caches_sysctl_handler(struct ctl_table *, int, void *, size_t *, loff_t *); void drop_slab(void); void drop_slab_node(int nid); extern int randomize_va_space; const char * arch_vma_name(struct vm_area_struct *vma); void print_vma_addr(char *prefix, unsigned long rip); void *sparse_buffer_alloc(unsigned long size); struct page * __populate_section_memmap(unsigned long pfn, unsigned long nr_pages, int nid, struct vmem_altmap *altmap); pgd_t *vmemmap_pgd_populate(unsigned long addr, int node); p4d_t *vmemmap_p4d_populate(pgd_t *pgd, unsigned long addr, int node); pud_t *vmemmap_pud_populate(p4d_t *p4d, unsigned long addr, int node); pmd_t *vmemmap_pmd_populate(pud_t *pud, unsigned long addr, int node); pte_t *vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, int node); void *vmemmap_alloc_block(unsigned long size, int node); struct vmem_altmap; void *vmemmap_alloc_block_buf(unsigned long size, int node); void *altmap_alloc_block_buf(unsigned long size, struct vmem_altmap *altmap); void vmemmap_verify(pte_t *, int, unsigned long, unsigned long); int vmemmap_populate_basepages(unsigned long start, unsigned long end, int node); int vmemmap_populate(unsigned long start, unsigned long end, int node, struct vmem_altmap *altmap); void vmemmap_populate_print_last(void); void vmemmap_free(unsigned long start, unsigned long end, struct vmem_altmap *altmap); void register_page_bootmem_memmap(unsigned long section_nr, struct page *map, unsigned long nr_pages); enum mf_flags { MF_COUNT_INCREASED = 1 << 0, MF_ACTION_REQUIRED = 1 << 1, MF_MUST_KILL = 1 << 2, MF_SOFT_OFFLINE = 1 << 3, }; extern int memory_failure(unsigned long pfn, int flags); extern void memory_failure_queue(unsigned long pfn, int flags); extern int unpoison_memory(unsigned long pfn); extern int get_hwpoison_page(struct page *page); extern int sysctl_memory_failure_early_kill; extern int sysctl_memory_failure_recovery; extern void shake_page(struct page *p, int access); extern atomic_long_t num_poisoned_pages __attribute__((__section__(".data..read_mostly"))); extern int soft_offline_page(struct page *page, int flags); enum mf_result { MF_IGNORED, MF_FAILED, MF_DELAYED, MF_RECOVERED, }; enum mf_action_page_type { MF_MSG_KERNEL, MF_MSG_KERNEL_HIGH_ORDER, MF_MSG_SLAB, MF_MSG_DIFFERENT_COMPOUND, MF_MSG_POISONED_HUGE, MF_MSG_HUGE, MF_MSG_FREE_HUGE, MF_MSG_NON_PMD_HUGE, MF_MSG_UNMAP_FAILED, MF_MSG_DIRTY_SWAPCACHE, MF_MSG_CLEAN_SWAPCACHE, MF_MSG_DIRTY_MLOCKED_LRU, MF_MSG_CLEAN_MLOCKED_LRU, MF_MSG_DIRTY_UNEVICTABLE_LRU, MF_MSG_CLEAN_UNEVICTABLE_LRU, MF_MSG_DIRTY_LRU, MF_MSG_CLEAN_LRU, MF_MSG_TRUNCATED_LRU, MF_MSG_BUDDY, MF_MSG_BUDDY_2ND, MF_MSG_DAX, MF_MSG_UNKNOWN, }; extern void clear_huge_page(struct page *page, unsigned long addr_hint, unsigned int pages_per_huge_page); extern void copy_user_huge_page(struct page *dst, struct page *src, unsigned long addr_hint, struct vm_area_struct *vma, unsigned int pages_per_huge_page); extern long copy_huge_page_from_user(struct page *dst_page, const void *usr_src, unsigned int pages_per_huge_page, bool allow_pagefault); extern unsigned int _debug_guardpage_minorder; extern struct static_key_false _debug_guardpage_enabled; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int debug_guardpage_minorder(void) { return _debug_guardpage_minorder; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool debug_guardpage_enabled(void) { return ({ bool branch; if (__builtin_types_compatible_p(typeof(*&_debug_guardpage_enabled), struct static_key_true)) branch = arch_static_branch_jump(&(&_debug_guardpage_enabled)->key, false); else if (__builtin_types_compatible_p(typeof(*&_debug_guardpage_enabled), struct static_key_false)) branch = arch_static_branch(&(&_debug_guardpage_enabled)->key, false); else branch = ____wrong_branch_error(); __builtin_expect(!!(branch), 0); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool page_is_guard(struct page *page) { if (!debug_guardpage_enabled()) return false; return PageGuard(page); } void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) setup_nr_node_ids(void); # 9 "../include/linux/scatterlist.h" 2 struct scatterlist { unsigned long page_link; unsigned int offset; unsigned int length; dma_addr_t dma_address; unsigned int dma_length; }; # 42 "../include/linux/scatterlist.h" struct sg_table { struct scatterlist *sgl; unsigned int nents; unsigned int orig_nents; }; # 87 "../include/linux/scatterlist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sg_assign_page(struct scatterlist *sg, struct page *page) { unsigned long page_link = sg->page_link & (0x01UL | 0x02UL); do { if (__builtin_expect(!!((unsigned long) page & (0x01UL | 0x02UL)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/scatterlist.h"), "i" (95), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (375)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); do { if (__builtin_expect(!!(((sg)->page_link & 0x01UL)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/scatterlist.h"), "i" (97), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (376)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); sg->page_link = page_link | (unsigned long) page; } # 116 "../include/linux/scatterlist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sg_set_page(struct scatterlist *sg, struct page *page, unsigned int len, unsigned int offset) { sg_assign_page(sg, page); sg->offset = offset; sg->length = len; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page *sg_page(struct scatterlist *sg) { do { if (__builtin_expect(!!(((sg)->page_link & 0x01UL)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/scatterlist.h"), "i" (127), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (377)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); return (struct page *)((sg)->page_link & ~(0x01UL | 0x02UL)); } # 139 "../include/linux/scatterlist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sg_set_buf(struct scatterlist *sg, const void *buf, unsigned int buflen) { do { if (__builtin_expect(!!(!__virt_addr_valid((unsigned long) (buf))), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/scatterlist.h"), "i" (143), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (378)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); sg_set_page(sg, (((struct page *)vmemmap_base) + (__phys_addr((unsigned long)(buf)) >> 12)), buflen, ((unsigned long)(buf) & ~(~(((1UL) << 12)-1)))); } # 164 "../include/linux/scatterlist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sg_chain(struct scatterlist *prv, unsigned int prv_nents, struct scatterlist *sgl) { prv[prv_nents - 1].offset = 0; prv[prv_nents - 1].length = 0; prv[prv_nents - 1].page_link = ((unsigned long) sgl | 0x01UL) & ~0x02UL; } # 190 "../include/linux/scatterlist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sg_mark_end(struct scatterlist *sg) { sg->page_link |= 0x02UL; sg->page_link &= ~0x01UL; } # 207 "../include/linux/scatterlist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sg_unmark_end(struct scatterlist *sg) { sg->page_link &= ~0x02UL; } # 222 "../include/linux/scatterlist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) dma_addr_t sg_phys(struct scatterlist *sg) { return ((dma_addr_t)(unsigned long)((sg_page(sg)) - ((struct page *)vmemmap_base)) << 12) + sg->offset; } # 237 "../include/linux/scatterlist.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *sg_virt(struct scatterlist *sg) { return lowmem_page_address(sg_page(sg)) + sg->offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sg_init_marker(struct scatterlist *sgl, unsigned int nents) { sg_mark_end(&sgl[nents - 1]); } int sg_nents(struct scatterlist *sg); int sg_nents_for_len(struct scatterlist *sg, u64 len); struct scatterlist *sg_next(struct scatterlist *); struct scatterlist *sg_last(struct scatterlist *s, unsigned int); void sg_init_table(struct scatterlist *, unsigned int); void sg_init_one(struct scatterlist *, const void *, unsigned int); int sg_split(struct scatterlist *in, const int in_mapped_nents, const off_t skip, const int nb_splits, const size_t *split_sizes, struct scatterlist **out, int *out_mapped_nents, gfp_t gfp_mask); typedef struct scatterlist *(sg_alloc_fn)(unsigned int, gfp_t); typedef void (sg_free_fn)(struct scatterlist *, unsigned int); void __sg_free_table(struct sg_table *, unsigned int, unsigned int, sg_free_fn *); void sg_free_table(struct sg_table *); int __sg_alloc_table(struct sg_table *, unsigned int, unsigned int, struct scatterlist *, unsigned int, gfp_t, sg_alloc_fn *); int sg_alloc_table(struct sg_table *, unsigned int, gfp_t); int __sg_alloc_table_from_pages(struct sg_table *sgt, struct page **pages, unsigned int n_pages, unsigned int offset, unsigned long size, unsigned int max_segment, gfp_t gfp_mask); int sg_alloc_table_from_pages(struct sg_table *sgt, struct page **pages, unsigned int n_pages, unsigned int offset, unsigned long size, gfp_t gfp_mask); struct scatterlist *sgl_alloc_order(unsigned long long length, unsigned int order, bool chainable, gfp_t gfp, unsigned int *nent_p); struct scatterlist *sgl_alloc(unsigned long long length, gfp_t gfp, unsigned int *nent_p); void sgl_free_n_order(struct scatterlist *sgl, int nents, int order); void sgl_free_order(struct scatterlist *sgl, int order); void sgl_free(struct scatterlist *sgl); size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, void *buf, size_t buflen, off_t skip, bool to_buffer); size_t sg_copy_from_buffer(struct scatterlist *sgl, unsigned int nents, const void *buf, size_t buflen); size_t sg_copy_to_buffer(struct scatterlist *sgl, unsigned int nents, void *buf, size_t buflen); size_t sg_pcopy_from_buffer(struct scatterlist *sgl, unsigned int nents, const void *buf, size_t buflen, off_t skip); size_t sg_pcopy_to_buffer(struct scatterlist *sgl, unsigned int nents, void *buf, size_t buflen, off_t skip); size_t sg_zero_buffer(struct scatterlist *sgl, unsigned int nents, size_t buflen, off_t skip); # 335 "../include/linux/scatterlist.h" void sg_free_table_chained(struct sg_table *table, unsigned nents_first_chunk); int sg_alloc_table_chained(struct sg_table *table, int nents, struct scatterlist *first_chunk, unsigned nents_first_chunk); # 352 "../include/linux/scatterlist.h" struct sg_page_iter { struct scatterlist *sg; unsigned int sg_pgoffset; unsigned int __nents; int __pg_advance; }; # 369 "../include/linux/scatterlist.h" struct sg_dma_page_iter { struct sg_page_iter base; }; bool __sg_page_iter_next(struct sg_page_iter *piter); bool __sg_page_iter_dma_next(struct sg_dma_page_iter *dma_iter); void __sg_page_iter_start(struct sg_page_iter *piter, struct scatterlist *sglist, unsigned int nents, unsigned long pgoffset); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page *sg_page_iter_page(struct sg_page_iter *piter) { return (((struct page *)vmemmap_base) + ((unsigned long)(((sg_page(piter->sg))) - ((struct page *)vmemmap_base)) + (piter->sg_pgoffset))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) dma_addr_t sg_page_iter_dma_address(struct sg_dma_page_iter *dma_iter) { return ((dma_iter->base.sg)->dma_address) + (dma_iter->base.sg_pgoffset << 12); } # 447 "../include/linux/scatterlist.h" struct sg_mapping_iter { struct page *page; void *addr; size_t length; size_t consumed; struct sg_page_iter piter; unsigned int __offset; unsigned int __remaining; unsigned int __flags; }; void sg_miter_start(struct sg_mapping_iter *miter, struct scatterlist *sgl, unsigned int nents, unsigned int flags); bool sg_miter_skip(struct sg_mapping_iter *miter, off_t offset); bool sg_miter_next(struct sg_mapping_iter *miter); void sg_miter_stop(struct sg_mapping_iter *miter); # 13 "../include/linux/devcoredump.h" 2 # 1 "../include/linux/slab.h" 1 # 136 "../include/linux/slab.h" # 1 "../include/linux/kasan.h" 1 struct kmem_cache; struct page; struct vm_struct; struct task_struct; # 1 "../arch/x86/include/asm/kasan.h" 1 # 29 "../arch/x86/include/asm/kasan.h" void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) kasan_early_init(void); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) kasan_init(void); # 15 "../include/linux/kasan.h" 2 extern unsigned char kasan_early_shadow_page[((1UL) << 12)]; extern pte_t kasan_early_shadow_pte[512]; extern pmd_t kasan_early_shadow_pmd[512]; extern pud_t kasan_early_shadow_pud[512]; extern p4d_t kasan_early_shadow_p4d[512]; int kasan_populate_early_shadow(const void *shadow_start, const void *shadow_end); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kasan_mem_to_shadow(const void *addr) { return (void *)((unsigned long)addr >> 3) + (0xdffffc0000000000UL); } extern void kasan_enable_current(void); extern void kasan_disable_current(void); void kasan_unpoison_shadow(const void *address, size_t size); void kasan_unpoison_task_stack(struct task_struct *task); void kasan_unpoison_stack_above_sp_to(const void *watermark); void kasan_alloc_pages(struct page *page, unsigned int order); void kasan_free_pages(struct page *page, unsigned int order); void kasan_cache_create(struct kmem_cache *cache, unsigned int *size, slab_flags_t *flags); void kasan_poison_slab(struct page *page); void kasan_unpoison_object_data(struct kmem_cache *cache, void *object); void kasan_poison_object_data(struct kmem_cache *cache, void *object); void * __attribute__((__warn_unused_result__)) kasan_init_slab_obj(struct kmem_cache *cache, const void *object); void * __attribute__((__warn_unused_result__)) kasan_kmalloc_large(const void *ptr, size_t size, gfp_t flags); void kasan_kfree_large(void *ptr, unsigned long ip); void kasan_poison_kfree(void *ptr, unsigned long ip); void * __attribute__((__warn_unused_result__)) kasan_kmalloc(struct kmem_cache *s, const void *object, size_t size, gfp_t flags); void * __attribute__((__warn_unused_result__)) kasan_krealloc(const void *object, size_t new_size, gfp_t flags); void * __attribute__((__warn_unused_result__)) kasan_slab_alloc(struct kmem_cache *s, void *object, gfp_t flags); bool kasan_slab_free(struct kmem_cache *s, void *object, unsigned long ip); struct kasan_cache { int alloc_meta_offset; int free_meta_offset; }; int kasan_module_alloc(void *addr, size_t size); void kasan_free_shadow(const struct vm_struct *vm); int kasan_add_zero_shadow(void *start, unsigned long size); void kasan_remove_zero_shadow(void *start, unsigned long size); size_t ksize(const void *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void kasan_unpoison_slab(const void *ptr) { ksize(ptr); } size_t kasan_metadata_size(struct kmem_cache *cache); bool kasan_save_enable_multi_shot(void); void kasan_restore_multi_shot(bool enabled); # 162 "../include/linux/kasan.h" void kasan_cache_shrink(struct kmem_cache *cache); void kasan_cache_shutdown(struct kmem_cache *cache); # 185 "../include/linux/kasan.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void kasan_init_tags(void) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kasan_reset_tag(const void *addr) { return (void *)addr; } # 137 "../include/linux/slab.h" 2 struct mem_cgroup; void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) kmem_cache_init(void); bool slab_is_available(void); extern bool usercopy_fallback; struct kmem_cache *kmem_cache_create(const char *name, unsigned int size, unsigned int align, slab_flags_t flags, void (*ctor)(void *)); struct kmem_cache *kmem_cache_create_usercopy(const char *name, unsigned int size, unsigned int align, slab_flags_t flags, unsigned int useroffset, unsigned int usersize, void (*ctor)(void *)); void kmem_cache_destroy(struct kmem_cache *); int kmem_cache_shrink(struct kmem_cache *); void memcg_create_kmem_cache(struct mem_cgroup *, struct kmem_cache *); void memcg_deactivate_kmem_caches(struct mem_cgroup *, struct mem_cgroup *); # 187 "../include/linux/slab.h" void * __attribute__((__warn_unused_result__)) __krealloc(const void *, size_t, gfp_t); void * __attribute__((__warn_unused_result__)) krealloc(const void *, size_t, gfp_t); void kfree(const void *); void kzfree(const void *); size_t ksize(const void *); void __check_heap_object(const void *ptr, unsigned long n, struct page *page, bool to_user); # 308 "../include/linux/slab.h" enum kmalloc_cache_type { KMALLOC_NORMAL = 0, KMALLOC_RECLAIM, KMALLOC_DMA, NR_KMALLOC_TYPES }; extern struct kmem_cache * kmalloc_caches[NR_KMALLOC_TYPES][(12 + 1) + 1]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) enum kmalloc_cache_type kmalloc_type(gfp_t flags) { if (__builtin_expect(!!((flags & ((( gfp_t)0x01u) | (( gfp_t)0x10u))) == 0), 1)) return KMALLOC_NORMAL; return flags & (( gfp_t)0x01u) ? KMALLOC_DMA : KMALLOC_RECLAIM; } # 349 "../include/linux/slab.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned int kmalloc_index(size_t size) { if (!size) return 0; if (size <= (1 << 3)) return 3; if ((1 << 3) <= 32 && size > 64 && size <= 96) return 1; if ((1 << 3) <= 64 && size > 128 && size <= 192) return 2; if (size <= 8) return 3; if (size <= 16) return 4; if (size <= 32) return 5; if (size <= 64) return 6; if (size <= 128) return 7; if (size <= 256) return 8; if (size <= 512) return 9; if (size <= 1024) return 10; if (size <= 2 * 1024) return 11; if (size <= 4 * 1024) return 12; if (size <= 8 * 1024) return 13; if (size <= 16 * 1024) return 14; if (size <= 32 * 1024) return 15; if (size <= 64 * 1024) return 16; if (size <= 128 * 1024) return 17; if (size <= 256 * 1024) return 18; if (size <= 512 * 1024) return 19; if (size <= 1024 * 1024) return 20; if (size <= 2 * 1024 * 1024) return 21; if (size <= 4 * 1024 * 1024) return 22; if (size <= 8 * 1024 * 1024) return 23; if (size <= 16 * 1024 * 1024) return 24; if (size <= 32 * 1024 * 1024) return 25; if (size <= 64 * 1024 * 1024) return 26; do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/slab.h"), "i" (385), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (379)); }); __builtin_unreachable(); } while (0); } while (0); return -1; } void *__kmalloc(size_t size, gfp_t flags) __attribute__((__assume_aligned__(__alignof__(unsigned long long)))) __attribute__((__malloc__)); void *kmem_cache_alloc(struct kmem_cache *, gfp_t flags) __attribute__((__assume_aligned__(__alignof__(unsigned long long)))) __attribute__((__malloc__)); void kmem_cache_free(struct kmem_cache *, void *); # 403 "../include/linux/slab.h" void kmem_cache_free_bulk(struct kmem_cache *, size_t, void **); int kmem_cache_alloc_bulk(struct kmem_cache *, gfp_t, size_t, void **); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void kfree_bulk(size_t size, void **p) { kmem_cache_free_bulk(((void *)0), size, p); } void *__kmalloc_node(size_t size, gfp_t flags, int node) __attribute__((__assume_aligned__(__alignof__(unsigned long long)))) __attribute__((__malloc__)); void *kmem_cache_alloc_node(struct kmem_cache *, gfp_t flags, int node) __attribute__((__assume_aligned__(__alignof__(unsigned long long)))) __attribute__((__malloc__)); # 431 "../include/linux/slab.h" extern void *kmem_cache_alloc_trace(struct kmem_cache *, gfp_t, size_t) __attribute__((__assume_aligned__(__alignof__(unsigned long long)))) __attribute__((__malloc__)); extern void *kmem_cache_alloc_node_trace(struct kmem_cache *s, gfp_t gfpflags, int node, size_t size) __attribute__((__assume_aligned__(__alignof__(unsigned long long)))) __attribute__((__malloc__)); # 469 "../include/linux/slab.h" extern void *kmalloc_order(size_t size, gfp_t flags, unsigned int order) __attribute__((__assume_aligned__(((1UL) << 12)))) __attribute__((__malloc__)); extern void *kmalloc_order_trace(size_t size, gfp_t flags, unsigned int order) __attribute__((__assume_aligned__(((1UL) << 12)))) __attribute__((__malloc__)); # 481 "../include/linux/slab.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void *kmalloc_large(size_t size, gfp_t flags) { unsigned int order = ( __builtin_constant_p(size) ? ( ((size) == 0UL) ? 64 - 12 : (((size) < (1UL << 12)) ? 0 : ( __builtin_constant_p((size) - 1) ? ( __builtin_constant_p((size) - 1) ? ( ((size) - 1) < 2 ? 0 : ((size) - 1) & (1ULL << 63) ? 63 : ((size) - 1) & (1ULL << 62) ? 62 : ((size) - 1) & (1ULL << 61) ? 61 : ((size) - 1) & (1ULL << 60) ? 60 : ((size) - 1) & (1ULL << 59) ? 59 : ((size) - 1) & (1ULL << 58) ? 58 : ((size) - 1) & (1ULL << 57) ? 57 : ((size) - 1) & (1ULL << 56) ? 56 : ((size) - 1) & (1ULL << 55) ? 55 : ((size) - 1) & (1ULL << 54) ? 54 : ((size) - 1) & (1ULL << 53) ? 53 : ((size) - 1) & (1ULL << 52) ? 52 : ((size) - 1) & (1ULL << 51) ? 51 : ((size) - 1) & (1ULL << 50) ? 50 : ((size) - 1) & (1ULL << 49) ? 49 : ((size) - 1) & (1ULL << 48) ? 48 : ((size) - 1) & (1ULL << 47) ? 47 : ((size) - 1) & (1ULL << 46) ? 46 : ((size) - 1) & (1ULL << 45) ? 45 : ((size) - 1) & (1ULL << 44) ? 44 : ((size) - 1) & (1ULL << 43) ? 43 : ((size) - 1) & (1ULL << 42) ? 42 : ((size) - 1) & (1ULL << 41) ? 41 : ((size) - 1) & (1ULL << 40) ? 40 : ((size) - 1) & (1ULL << 39) ? 39 : ((size) - 1) & (1ULL << 38) ? 38 : ((size) - 1) & (1ULL << 37) ? 37 : ((size) - 1) & (1ULL << 36) ? 36 : ((size) - 1) & (1ULL << 35) ? 35 : ((size) - 1) & (1ULL << 34) ? 34 : ((size) - 1) & (1ULL << 33) ? 33 : ((size) - 1) & (1ULL << 32) ? 32 : ((size) - 1) & (1ULL << 31) ? 31 : ((size) - 1) & (1ULL << 30) ? 30 : ((size) - 1) & (1ULL << 29) ? 29 : ((size) - 1) & (1ULL << 28) ? 28 : ((size) - 1) & (1ULL << 27) ? 27 : ((size) - 1) & (1ULL << 26) ? 26 : ((size) - 1) & (1ULL << 25) ? 25 : ((size) - 1) & (1ULL << 24) ? 24 : ((size) - 1) & (1ULL << 23) ? 23 : ((size) - 1) & (1ULL << 22) ? 22 : ((size) - 1) & (1ULL << 21) ? 21 : ((size) - 1) & (1ULL << 20) ? 20 : ((size) - 1) & (1ULL << 19) ? 19 : ((size) - 1) & (1ULL << 18) ? 18 : ((size) - 1) & (1ULL << 17) ? 17 : ((size) - 1) & (1ULL << 16) ? 16 : ((size) - 1) & (1ULL << 15) ? 15 : ((size) - 1) & (1ULL << 14) ? 14 : ((size) - 1) & (1ULL << 13) ? 13 : ((size) - 1) & (1ULL << 12) ? 12 : ((size) - 1) & (1ULL << 11) ? 11 : ((size) - 1) & (1ULL << 10) ? 10 : ((size) - 1) & (1ULL << 9) ? 9 : ((size) - 1) & (1ULL << 8) ? 8 : ((size) - 1) & (1ULL << 7) ? 7 : ((size) - 1) & (1ULL << 6) ? 6 : ((size) - 1) & (1ULL << 5) ? 5 : ((size) - 1) & (1ULL << 4) ? 4 : ((size) - 1) & (1ULL << 3) ? 3 : ((size) - 1) & (1ULL << 2) ? 2 : 1) : -1) : (sizeof((size) - 1) <= 4) ? __ilog2_u32((size) - 1) : __ilog2_u64((size) - 1) ) - 12 + 1) ) : __get_order(size) ); return kmalloc_order_trace(size, flags, order); } # 537 "../include/linux/slab.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void *kmalloc(size_t size, gfp_t flags) { if (__builtin_constant_p(size)) { unsigned int index; if (size > (1UL << (12 + 1))) return kmalloc_large(size, flags); index = kmalloc_index(size); if (!index) return ((void *)16); return kmem_cache_alloc_trace( kmalloc_caches[kmalloc_type(flags)][index], flags, size); } return __kmalloc(size, flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) unsigned int kmalloc_size(unsigned int n) { if (n > 2) return 1U << n; if (n == 1 && (1 << 3) <= 32) return 96; if (n == 2 && (1 << 3) <= 64) return 192; return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void *kmalloc_node(size_t size, gfp_t flags, int node) { if (__builtin_constant_p(size) && size <= (1UL << (12 + 1))) { unsigned int i = kmalloc_index(size); if (!i) return ((void *)16); return kmem_cache_alloc_node_trace( kmalloc_caches[kmalloc_type(flags)][i], flags, node, size); } return __kmalloc_node(size, flags, node); } struct memcg_cache_array { struct callback_head rcu; struct kmem_cache *entries[0]; }; # 635 "../include/linux/slab.h" struct memcg_cache_params { struct kmem_cache *root_cache; union { struct { struct memcg_cache_array *memcg_caches; struct list_head __root_caches_node; struct list_head children; bool dying; }; struct { struct mem_cgroup *memcg; struct list_head children_node; struct list_head kmem_caches_node; struct percpu_ref refcnt; void (*work_fn)(struct kmem_cache *); union { struct callback_head callback_head; struct work_struct work; }; }; }; }; int memcg_update_all_caches(int num_memcgs); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kmalloc_array(size_t n, size_t size, gfp_t flags) { size_t bytes; if (__builtin_expect(!!(({ typeof(n) __a = (n); typeof(size) __b = (size); typeof(&bytes) __d = (&bytes); (void) (&__a == &__b); (void) (&__a == __d); __builtin_mul_overflow(__a, __b, __d); })), 0)) return ((void *)0); if (__builtin_constant_p(n) && __builtin_constant_p(size)) return kmalloc(bytes, flags); return __kmalloc(bytes, flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kcalloc(size_t n, size_t size, gfp_t flags) { return kmalloc_array(n, size, flags | (( gfp_t)0x100u)); } # 697 "../include/linux/slab.h" extern void *__kmalloc_track_caller(size_t, gfp_t, unsigned long); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kmalloc_array_node(size_t n, size_t size, gfp_t flags, int node) { size_t bytes; if (__builtin_expect(!!(({ typeof(n) __a = (n); typeof(size) __b = (size); typeof(&bytes) __d = (&bytes); (void) (&__a == &__b); (void) (&__a == __d); __builtin_mul_overflow(__a, __b, __d); })), 0)) return ((void *)0); if (__builtin_constant_p(n) && __builtin_constant_p(size)) return kmalloc_node(bytes, flags, node); return __kmalloc_node(bytes, flags, node); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kcalloc_node(size_t n, size_t size, gfp_t flags, int node) { return kmalloc_array_node(n, size, flags | (( gfp_t)0x100u), node); } extern void *__kmalloc_node_track_caller(size_t, gfp_t, int, unsigned long); # 735 "../include/linux/slab.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kmem_cache_zalloc(struct kmem_cache *k, gfp_t flags) { return kmem_cache_alloc(k, flags | (( gfp_t)0x100u)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kzalloc(size_t size, gfp_t flags) { return kmalloc(size, flags | (( gfp_t)0x100u)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *kzalloc_node(size_t size, gfp_t flags, int node) { return kmalloc_node(size, flags | (( gfp_t)0x100u), node); } unsigned int kmem_cache_size(struct kmem_cache *s); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) kmem_cache_init_late(void); # 14 "../include/linux/devcoredump.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void _devcd_free_sgtable(struct scatterlist *table) { int i; struct page *page; struct scatterlist *iter; struct scatterlist *delete_iter; iter = table; for (i = 0, iter = (table); i < (sg_nents(table)); i++, iter = sg_next(iter)) { page = sg_page(iter); if (page) __free_pages((page), 0); } iter = table; delete_iter = table; while (!((iter)->page_link & 0x02UL)) { iter++; if (((iter)->page_link & 0x01UL)) { iter = ((struct scatterlist *) ((iter)->page_link & ~(0x01UL | 0x02UL))); kfree(delete_iter); delete_iter = iter; } } kfree(delete_iter); } void dev_coredumpv(struct device *dev, void *data, size_t datalen, gfp_t gfp); void dev_coredumpm(struct device *dev, struct module *owner, void *data, size_t datalen, gfp_t gfp, ssize_t (*read)(char *buffer, loff_t offset, size_t count, void *data, size_t datalen), void (*free)(void *data)); void dev_coredumpsg(struct device *dev, struct scatterlist *table, size_t datalen, gfp_t gfp); # 65 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.c" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-drv.h" 1 # 109 "../drivers/net/wireless/intel/iwlwifi/iwl-drv.h" struct iwl_drv; struct iwl_trans; struct iwl_cfg; # 122 "../drivers/net/wireless/intel/iwlwifi/iwl-drv.h" struct iwl_drv *iwl_drv_start(struct iwl_trans *trans); # 133 "../drivers/net/wireless/intel/iwlwifi/iwl-drv.h" void iwl_drv_stop(struct iwl_drv *drv); # 66 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.c" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/fw/runtime.h" 1 # 63 "../drivers/net/wireless/intel/iwlwifi/fw/runtime.h" # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-config.h" 1 # 66 "../drivers/net/wireless/intel/iwlwifi/iwl-config.h" # 1 "../include/linux/netdevice.h" 1 # 26 "../include/linux/netdevice.h" # 1 "../include/linux/delay.h" 1 # 24 "../include/linux/delay.h" extern unsigned long loops_per_jiffy; # 1 "../arch/x86/include/asm/delay.h" 1 # 1 "../include/asm-generic/delay.h" 1 extern void __bad_udelay(void); extern void __bad_ndelay(void); extern void __udelay(unsigned long usecs); extern void __ndelay(unsigned long nsecs); extern void __const_udelay(unsigned long xloops); extern void __delay(unsigned long loops); # 6 "../arch/x86/include/asm/delay.h" 2 void use_tsc_delay(void); void use_mwaitx_delay(void); # 27 "../include/linux/delay.h" 2 # 56 "../include/linux/delay.h" extern unsigned long lpj_fine; void calibrate_delay(void); void __attribute__((weak)) calibration_delay_done(void); void msleep(unsigned int msecs); unsigned long msleep_interruptible(unsigned int msecs); void usleep_range(unsigned long min, unsigned long max); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ssleep(unsigned int seconds) { msleep(seconds * 1000); } # 27 "../include/linux/netdevice.h" 2 # 1 "../include/linux/prefetch.h" 1 # 54 "../include/linux/prefetch.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void prefetch_range(void *addr, size_t len) { } # 29 "../include/linux/netdevice.h" 2 # 1 "../include/linux/dynamic_queue_limits.h" 1 # 41 "../include/linux/dynamic_queue_limits.h" struct dql { unsigned int num_queued; unsigned int adj_limit; unsigned int last_obj_cnt; unsigned int limit __attribute__((__aligned__((1 << (6))))); unsigned int num_completed; unsigned int prev_ovlimit; unsigned int prev_num_queued; unsigned int prev_last_obj_cnt; unsigned int lowest_slack; unsigned long slack_start_time; unsigned int max_limit; unsigned int min_limit; unsigned int slack_hold_time; }; # 73 "../include/linux/dynamic_queue_limits.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dql_queued(struct dql *dql, unsigned int count) { do { if (__builtin_expect(!!(count > ((~0U) / 16)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/dynamic_queue_limits.h"), "i" (75), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (380)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); dql->last_obj_cnt = count; __asm__ __volatile__("" : : : "memory"); dql->num_queued += count; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dql_avail(const struct dql *dql) { return ({ union { typeof(dql->adj_limit) __val; char __c[1]; } __u; if (1) __read_once_size(&(dql->adj_limit), __u.__c, sizeof(dql->adj_limit)); else __read_once_size_nocheck(&(dql->adj_limit), __u.__c, sizeof(dql->adj_limit)); do { } while (0); __u.__val; }) - ({ union { typeof(dql->num_queued) __val; char __c[1]; } __u; if (1) __read_once_size(&(dql->num_queued), __u.__c, sizeof(dql->num_queued)); else __read_once_size_nocheck(&(dql->num_queued), __u.__c, sizeof(dql->num_queued)); do { } while (0); __u.__val; }); } void dql_completed(struct dql *dql, unsigned int count); void dql_reset(struct dql *dql); void dql_init(struct dql *dql, unsigned int hold_time); # 36 "../include/linux/netdevice.h" 2 # 1 "../include/linux/ethtool.h" 1 # 17 "../include/linux/ethtool.h" # 1 "../include/linux/compat.h" 1 # 15 "../include/linux/compat.h" # 1 "../include/linux/socket.h" 1 # 1 "./arch/x86/include/generated/uapi/asm/socket.h" 1 # 1 "../include/uapi/asm-generic/socket.h" 1 # 1 "./arch/x86/include/generated/uapi/asm/sockios.h" 1 # 1 "../include/uapi/asm-generic/sockios.h" 1 # 2 "./arch/x86/include/generated/uapi/asm/sockios.h" 2 # 7 "../include/uapi/asm-generic/socket.h" 2 # 2 "./arch/x86/include/generated/uapi/asm/socket.h" 2 # 7 "../include/linux/socket.h" 2 # 1 "../include/uapi/linux/sockios.h" 1 # 23 "../include/uapi/linux/sockios.h" # 1 "./arch/x86/include/generated/uapi/asm/sockios.h" 1 # 24 "../include/uapi/linux/sockios.h" 2 # 8 "../include/linux/socket.h" 2 # 1 "../include/linux/uio.h" 1 # 10 "../include/linux/uio.h" # 1 "../include/crypto/hash.h" 1 # 11 "../include/crypto/hash.h" # 1 "../include/linux/crypto.h" 1 # 141 "../include/linux/crypto.h" struct scatterlist; struct crypto_ablkcipher; struct crypto_async_request; struct crypto_blkcipher; struct crypto_tfm; struct crypto_type; typedef void (*crypto_completion_t)(struct crypto_async_request *req, int err); # 157 "../include/linux/crypto.h" struct crypto_async_request { struct list_head list; crypto_completion_t complete; void *data; struct crypto_tfm *tfm; u32 flags; }; struct ablkcipher_request { struct crypto_async_request base; unsigned int nbytes; void *info; struct scatterlist *src; struct scatterlist *dst; void *__ctx[] __attribute__ ((__aligned__(__alignof__(unsigned long long)))); }; struct blkcipher_desc { struct crypto_blkcipher *tfm; void *info; u32 flags; }; # 232 "../include/linux/crypto.h" struct ablkcipher_alg { int (*setkey)(struct crypto_ablkcipher *tfm, const u8 *key, unsigned int keylen); int (*encrypt)(struct ablkcipher_request *req); int (*decrypt)(struct ablkcipher_request *req); unsigned int min_keysize; unsigned int max_keysize; unsigned int ivsize; }; # 254 "../include/linux/crypto.h" struct blkcipher_alg { int (*setkey)(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen); int (*encrypt)(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes); int (*decrypt)(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes); unsigned int min_keysize; unsigned int max_keysize; unsigned int ivsize; }; # 316 "../include/linux/crypto.h" struct cipher_alg { unsigned int cia_min_keysize; unsigned int cia_max_keysize; int (*cia_setkey)(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen); void (*cia_encrypt)(struct crypto_tfm *tfm, u8 *dst, const u8 *src); void (*cia_decrypt)(struct crypto_tfm *tfm, u8 *dst, const u8 *src); }; struct compress_alg { int (*coa_compress)(struct crypto_tfm *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen); int (*coa_decompress)(struct crypto_tfm *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen); }; # 341 "../include/linux/crypto.h" struct crypto_istat_aead { atomic64_t encrypt_cnt; atomic64_t encrypt_tlen; atomic64_t decrypt_cnt; atomic64_t decrypt_tlen; atomic64_t err_cnt; }; # 359 "../include/linux/crypto.h" struct crypto_istat_akcipher { atomic64_t encrypt_cnt; atomic64_t encrypt_tlen; atomic64_t decrypt_cnt; atomic64_t decrypt_tlen; atomic64_t verify_cnt; atomic64_t sign_cnt; atomic64_t err_cnt; }; # 377 "../include/linux/crypto.h" struct crypto_istat_cipher { atomic64_t encrypt_cnt; atomic64_t encrypt_tlen; atomic64_t decrypt_cnt; atomic64_t decrypt_tlen; atomic64_t err_cnt; }; # 393 "../include/linux/crypto.h" struct crypto_istat_compress { atomic64_t compress_cnt; atomic64_t compress_tlen; atomic64_t decompress_cnt; atomic64_t decompress_tlen; atomic64_t err_cnt; }; struct crypto_istat_hash { atomic64_t hash_cnt; atomic64_t hash_tlen; atomic64_t err_cnt; }; # 420 "../include/linux/crypto.h" struct crypto_istat_kpp { atomic64_t setsecret_cnt; atomic64_t generate_public_key_cnt; atomic64_t compute_shared_secret_cnt; atomic64_t err_cnt; }; # 434 "../include/linux/crypto.h" struct crypto_istat_rng { atomic64_t generate_cnt; atomic64_t generate_tlen; atomic64_t seed_cnt; atomic64_t err_cnt; }; # 539 "../include/linux/crypto.h" struct crypto_alg { struct list_head cra_list; struct list_head cra_users; u32 cra_flags; unsigned int cra_blocksize; unsigned int cra_ctxsize; unsigned int cra_alignmask; int cra_priority; refcount_t cra_refcnt; char cra_name[128]; char cra_driver_name[128]; const struct crypto_type *cra_type; union { struct ablkcipher_alg ablkcipher; struct blkcipher_alg blkcipher; struct cipher_alg cipher; struct compress_alg compress; } cra_u; int (*cra_init)(struct crypto_tfm *tfm); void (*cra_exit)(struct crypto_tfm *tfm); void (*cra_destroy)(struct crypto_alg *alg); struct module *cra_module; union { struct crypto_istat_aead aead; struct crypto_istat_akcipher akcipher; struct crypto_istat_cipher cipher; struct crypto_istat_compress compress; struct crypto_istat_hash hash; struct crypto_istat_rng rng; struct crypto_istat_kpp kpp; } stats; } __attribute__ ((__aligned__(__alignof__(unsigned long long)))); void crypto_stats_init(struct crypto_alg *alg); void crypto_stats_get(struct crypto_alg *alg); void crypto_stats_ablkcipher_encrypt(unsigned int nbytes, int ret, struct crypto_alg *alg); void crypto_stats_ablkcipher_decrypt(unsigned int nbytes, int ret, struct crypto_alg *alg); void crypto_stats_aead_encrypt(unsigned int cryptlen, struct crypto_alg *alg, int ret); void crypto_stats_aead_decrypt(unsigned int cryptlen, struct crypto_alg *alg, int ret); void crypto_stats_ahash_update(unsigned int nbytes, int ret, struct crypto_alg *alg); void crypto_stats_ahash_final(unsigned int nbytes, int ret, struct crypto_alg *alg); void crypto_stats_akcipher_encrypt(unsigned int src_len, int ret, struct crypto_alg *alg); void crypto_stats_akcipher_decrypt(unsigned int src_len, int ret, struct crypto_alg *alg); void crypto_stats_akcipher_sign(int ret, struct crypto_alg *alg); void crypto_stats_akcipher_verify(int ret, struct crypto_alg *alg); void crypto_stats_compress(unsigned int slen, int ret, struct crypto_alg *alg); void crypto_stats_decompress(unsigned int slen, int ret, struct crypto_alg *alg); void crypto_stats_kpp_set_secret(struct crypto_alg *alg, int ret); void crypto_stats_kpp_generate_public_key(struct crypto_alg *alg, int ret); void crypto_stats_kpp_compute_shared_secret(struct crypto_alg *alg, int ret); void crypto_stats_rng_seed(struct crypto_alg *alg, int ret); void crypto_stats_rng_generate(struct crypto_alg *alg, unsigned int dlen, int ret); void crypto_stats_skcipher_encrypt(unsigned int cryptlen, int ret, struct crypto_alg *alg); void crypto_stats_skcipher_decrypt(unsigned int cryptlen, int ret, struct crypto_alg *alg); # 652 "../include/linux/crypto.h" struct crypto_wait { struct completion completion; int err; }; # 667 "../include/linux/crypto.h" void crypto_req_done(struct crypto_async_request *req, int err); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_wait_req(int err, struct crypto_wait *wait) { switch (err) { case -115: case -16: wait_for_completion(&wait->completion); reinit_completion(&wait->completion); err = wait->err; break; }; return err; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_init_wait(struct crypto_wait *wait) { __init_completion(&wait->completion); } int crypto_register_alg(struct crypto_alg *alg); int crypto_unregister_alg(struct crypto_alg *alg); int crypto_register_algs(struct crypto_alg *algs, int count); int crypto_unregister_algs(struct crypto_alg *algs, int count); int crypto_has_alg(const char *name, u32 type, u32 mask); struct ablkcipher_tfm { int (*setkey)(struct crypto_ablkcipher *tfm, const u8 *key, unsigned int keylen); int (*encrypt)(struct ablkcipher_request *req); int (*decrypt)(struct ablkcipher_request *req); struct crypto_ablkcipher *base; unsigned int ivsize; unsigned int reqsize; }; struct blkcipher_tfm { void *iv; int (*setkey)(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen); int (*encrypt)(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes); int (*decrypt)(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes); }; struct cipher_tfm { int (*cit_setkey)(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen); void (*cit_encrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src); void (*cit_decrypt_one)(struct crypto_tfm *tfm, u8 *dst, const u8 *src); }; struct compress_tfm { int (*cot_compress)(struct crypto_tfm *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen); int (*cot_decompress)(struct crypto_tfm *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen); }; struct crypto_tfm { u32 crt_flags; union { struct ablkcipher_tfm ablkcipher; struct blkcipher_tfm blkcipher; struct cipher_tfm cipher; struct compress_tfm compress; } crt_u; void (*exit)(struct crypto_tfm *tfm); struct crypto_alg *__crt_alg; void *__crt_ctx[] __attribute__ ((__aligned__(__alignof__(unsigned long long)))); }; struct crypto_ablkcipher { struct crypto_tfm base; }; struct crypto_blkcipher { struct crypto_tfm base; }; struct crypto_cipher { struct crypto_tfm base; }; struct crypto_comp { struct crypto_tfm base; }; enum { CRYPTOA_UNSPEC, CRYPTOA_ALG, CRYPTOA_TYPE, CRYPTOA_U32, __CRYPTOA_MAX, }; struct crypto_attr_alg { char name[128]; }; struct crypto_attr_type { u32 type; u32 mask; }; struct crypto_attr_u32 { u32 num; }; struct crypto_tfm *crypto_alloc_base(const char *alg_name, u32 type, u32 mask); void crypto_destroy_tfm(void *mem, struct crypto_tfm *tfm); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_free_tfm(struct crypto_tfm *tfm) { return crypto_destroy_tfm(tfm, tfm); } int alg_test(const char *driver, const char *alg, u32 type, u32 mask); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *crypto_tfm_alg_name(struct crypto_tfm *tfm) { return tfm->__crt_alg->cra_name; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *crypto_tfm_alg_driver_name(struct crypto_tfm *tfm) { return tfm->__crt_alg->cra_driver_name; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_tfm_alg_priority(struct crypto_tfm *tfm) { return tfm->__crt_alg->cra_priority; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 crypto_tfm_alg_type(struct crypto_tfm *tfm) { return tfm->__crt_alg->cra_flags & 0x0000000f; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_tfm_alg_blocksize(struct crypto_tfm *tfm) { return tfm->__crt_alg->cra_blocksize; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_tfm_alg_alignmask(struct crypto_tfm *tfm) { return tfm->__crt_alg->cra_alignmask; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 crypto_tfm_get_flags(struct crypto_tfm *tfm) { return tfm->crt_flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_tfm_set_flags(struct crypto_tfm *tfm, u32 flags) { tfm->crt_flags |= flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_tfm_clear_flags(struct crypto_tfm *tfm, u32 flags) { tfm->crt_flags &= ~flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *crypto_tfm_ctx(struct crypto_tfm *tfm) { return tfm->__crt_ctx; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_tfm_ctx_alignment(void) { struct crypto_tfm *tfm; return __alignof__(tfm->__crt_ctx); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_ablkcipher *__crypto_ablkcipher_cast( struct crypto_tfm *tfm) { return (struct crypto_ablkcipher *)tfm; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 crypto_skcipher_type(u32 type) { type &= ~0x0000000f; type |= 0x00000004; return type; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 crypto_skcipher_mask(u32 mask) { mask &= ~0x0000000f; mask |= 0x0000000c; return mask; } # 936 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_tfm *crypto_ablkcipher_tfm( struct crypto_ablkcipher *tfm) { return &tfm->base; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_free_ablkcipher(struct crypto_ablkcipher *tfm) { crypto_free_tfm(crypto_ablkcipher_tfm(tfm)); } # 961 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_has_ablkcipher(const char *alg_name, u32 type, u32 mask) { return crypto_has_alg(alg_name, crypto_skcipher_type(type), crypto_skcipher_mask(mask)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct ablkcipher_tfm *crypto_ablkcipher_crt( struct crypto_ablkcipher *tfm) { return &crypto_ablkcipher_tfm(tfm)->crt_u.ablkcipher; } # 983 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_ablkcipher_ivsize( struct crypto_ablkcipher *tfm) { return crypto_ablkcipher_crt(tfm)->ivsize; } # 999 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_ablkcipher_blocksize( struct crypto_ablkcipher *tfm) { return crypto_tfm_alg_blocksize(crypto_ablkcipher_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_ablkcipher_alignmask( struct crypto_ablkcipher *tfm) { return crypto_tfm_alg_alignmask(crypto_ablkcipher_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 crypto_ablkcipher_get_flags(struct crypto_ablkcipher *tfm) { return crypto_tfm_get_flags(crypto_ablkcipher_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_ablkcipher_set_flags(struct crypto_ablkcipher *tfm, u32 flags) { crypto_tfm_set_flags(crypto_ablkcipher_tfm(tfm), flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_ablkcipher_clear_flags(struct crypto_ablkcipher *tfm, u32 flags) { crypto_tfm_clear_flags(crypto_ablkcipher_tfm(tfm), flags); } # 1044 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_ablkcipher_setkey(struct crypto_ablkcipher *tfm, const u8 *key, unsigned int keylen) { struct ablkcipher_tfm *crt = crypto_ablkcipher_crt(tfm); return crt->setkey(crt->base, key, keylen); } # 1061 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_ablkcipher *crypto_ablkcipher_reqtfm( struct ablkcipher_request *req) { return __crypto_ablkcipher_cast(req->base.tfm); } # 1078 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_ablkcipher_encrypt(struct ablkcipher_request *req) { struct ablkcipher_tfm *crt = crypto_ablkcipher_crt(crypto_ablkcipher_reqtfm(req)); struct crypto_alg *alg = crt->base->base.__crt_alg; unsigned int nbytes = req->nbytes; int ret; crypto_stats_get(alg); ret = crt->encrypt(req); crypto_stats_ablkcipher_encrypt(nbytes, ret, alg); return ret; } # 1103 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_ablkcipher_decrypt(struct ablkcipher_request *req) { struct ablkcipher_tfm *crt = crypto_ablkcipher_crt(crypto_ablkcipher_reqtfm(req)); struct crypto_alg *alg = crt->base->base.__crt_alg; unsigned int nbytes = req->nbytes; int ret; crypto_stats_get(alg); ret = crt->decrypt(req); crypto_stats_ablkcipher_decrypt(nbytes, ret, alg); return ret; } # 1134 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_ablkcipher_reqsize( struct crypto_ablkcipher *tfm) { return crypto_ablkcipher_crt(tfm)->reqsize; } # 1148 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ablkcipher_request_set_tfm( struct ablkcipher_request *req, struct crypto_ablkcipher *tfm) { req->base.tfm = crypto_ablkcipher_tfm(crypto_ablkcipher_crt(tfm)->base); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct ablkcipher_request *ablkcipher_request_cast( struct crypto_async_request *req) { return ({ void *__mptr = (void *)(req); do { extern void __compiletime_assert_1157(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(req)), typeof(((struct ablkcipher_request *)0)->base)) && !__builtin_types_compatible_p(typeof(*(req)), typeof(void))))) __compiletime_assert_1157(); } while (0); ((struct ablkcipher_request *)(__mptr - __builtin_offsetof(struct ablkcipher_request, base))); }); } # 1171 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct ablkcipher_request *ablkcipher_request_alloc( struct crypto_ablkcipher *tfm, gfp_t gfp) { struct ablkcipher_request *req; req = kmalloc(sizeof(struct ablkcipher_request) + crypto_ablkcipher_reqsize(tfm), gfp); if (__builtin_expect(!!(req), 1)) ablkcipher_request_set_tfm(req, tfm); return req; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ablkcipher_request_free(struct ablkcipher_request *req) { kzfree(req); } # 1219 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ablkcipher_request_set_callback( struct ablkcipher_request *req, u32 flags, crypto_completion_t compl, void *data) { req->base.complete = compl; req->base.data = data; req->base.flags = flags; } # 1244 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ablkcipher_request_set_crypt( struct ablkcipher_request *req, struct scatterlist *src, struct scatterlist *dst, unsigned int nbytes, void *iv) { req->src = src; req->dst = dst; req->nbytes = nbytes; req->info = iv; } # 1285 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_blkcipher *__crypto_blkcipher_cast( struct crypto_tfm *tfm) { return (struct crypto_blkcipher *)tfm; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_blkcipher *crypto_blkcipher_cast( struct crypto_tfm *tfm) { do { if (__builtin_expect(!!(crypto_tfm_alg_type(tfm) != 0x00000004), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/crypto.h"), "i" (1294), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (381)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); return __crypto_blkcipher_cast(tfm); } # 1312 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_blkcipher *crypto_alloc_blkcipher( const char *alg_name, u32 type, u32 mask) { type &= ~0x0000000f; type |= 0x00000004; mask |= 0x0000000f; return __crypto_blkcipher_cast(crypto_alloc_base(alg_name, type, mask)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_tfm *crypto_blkcipher_tfm( struct crypto_blkcipher *tfm) { return &tfm->base; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_free_blkcipher(struct crypto_blkcipher *tfm) { crypto_free_tfm(crypto_blkcipher_tfm(tfm)); } # 1347 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_has_blkcipher(const char *alg_name, u32 type, u32 mask) { type &= ~0x0000000f; type |= 0x00000004; mask |= 0x0000000f; return crypto_has_alg(alg_name, type, mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *crypto_blkcipher_name(struct crypto_blkcipher *tfm) { return crypto_tfm_alg_name(crypto_blkcipher_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct blkcipher_tfm *crypto_blkcipher_crt( struct crypto_blkcipher *tfm) { return &crypto_blkcipher_tfm(tfm)->crt_u.blkcipher; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct blkcipher_alg *crypto_blkcipher_alg( struct crypto_blkcipher *tfm) { return &crypto_blkcipher_tfm(tfm)->__crt_alg->cra_u.blkcipher; } # 1388 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_blkcipher_ivsize(struct crypto_blkcipher *tfm) { return crypto_blkcipher_alg(tfm)->ivsize; } # 1403 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_blkcipher_blocksize( struct crypto_blkcipher *tfm) { return crypto_tfm_alg_blocksize(crypto_blkcipher_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_blkcipher_alignmask( struct crypto_blkcipher *tfm) { return crypto_tfm_alg_alignmask(crypto_blkcipher_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 crypto_blkcipher_get_flags(struct crypto_blkcipher *tfm) { return crypto_tfm_get_flags(crypto_blkcipher_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_blkcipher_set_flags(struct crypto_blkcipher *tfm, u32 flags) { crypto_tfm_set_flags(crypto_blkcipher_tfm(tfm), flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_blkcipher_clear_flags(struct crypto_blkcipher *tfm, u32 flags) { crypto_tfm_clear_flags(crypto_blkcipher_tfm(tfm), flags); } # 1448 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_blkcipher_setkey(struct crypto_blkcipher *tfm, const u8 *key, unsigned int keylen) { return crypto_blkcipher_crt(tfm)->setkey(crypto_blkcipher_tfm(tfm), key, keylen); } # 1473 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_blkcipher_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes) { desc->info = crypto_blkcipher_crt(desc->tfm)->iv; return crypto_blkcipher_crt(desc->tfm)->encrypt(desc, dst, src, nbytes); } # 1501 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_blkcipher_encrypt_iv(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes) { return crypto_blkcipher_crt(desc->tfm)->encrypt(desc, dst, src, nbytes); } # 1526 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_blkcipher_decrypt(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes) { desc->info = crypto_blkcipher_crt(desc->tfm)->iv; return crypto_blkcipher_crt(desc->tfm)->decrypt(desc, dst, src, nbytes); } # 1551 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_blkcipher_decrypt_iv(struct blkcipher_desc *desc, struct scatterlist *dst, struct scatterlist *src, unsigned int nbytes) { return crypto_blkcipher_crt(desc->tfm)->decrypt(desc, dst, src, nbytes); } # 1568 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_blkcipher_set_iv(struct crypto_blkcipher *tfm, const u8 *src, unsigned int len) { __memcpy(crypto_blkcipher_crt(tfm)->iv, src, len); } # 1584 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_blkcipher_get_iv(struct crypto_blkcipher *tfm, u8 *dst, unsigned int len) { __memcpy(dst, crypto_blkcipher_crt(tfm)->iv, len); } # 1607 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_cipher *__crypto_cipher_cast(struct crypto_tfm *tfm) { return (struct crypto_cipher *)tfm; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_cipher *crypto_cipher_cast(struct crypto_tfm *tfm) { do { if (__builtin_expect(!!(crypto_tfm_alg_type(tfm) != 0x00000001), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/crypto.h"), "i" (1614), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (382)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); return __crypto_cipher_cast(tfm); } # 1632 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_cipher *crypto_alloc_cipher(const char *alg_name, u32 type, u32 mask) { type &= ~0x0000000f; type |= 0x00000001; mask |= 0x0000000f; return __crypto_cipher_cast(crypto_alloc_base(alg_name, type, mask)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_tfm *crypto_cipher_tfm(struct crypto_cipher *tfm) { return &tfm->base; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_free_cipher(struct crypto_cipher *tfm) { crypto_free_tfm(crypto_cipher_tfm(tfm)); } # 1666 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_has_cipher(const char *alg_name, u32 type, u32 mask) { type &= ~0x0000000f; type |= 0x00000001; mask |= 0x0000000f; return crypto_has_alg(alg_name, type, mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cipher_tfm *crypto_cipher_crt(struct crypto_cipher *tfm) { return &crypto_cipher_tfm(tfm)->crt_u.cipher; } # 1690 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_cipher_blocksize(struct crypto_cipher *tfm) { return crypto_tfm_alg_blocksize(crypto_cipher_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_cipher_alignmask(struct crypto_cipher *tfm) { return crypto_tfm_alg_alignmask(crypto_cipher_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 crypto_cipher_get_flags(struct crypto_cipher *tfm) { return crypto_tfm_get_flags(crypto_cipher_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_cipher_set_flags(struct crypto_cipher *tfm, u32 flags) { crypto_tfm_set_flags(crypto_cipher_tfm(tfm), flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_cipher_clear_flags(struct crypto_cipher *tfm, u32 flags) { crypto_tfm_clear_flags(crypto_cipher_tfm(tfm), flags); } # 1733 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_cipher_setkey(struct crypto_cipher *tfm, const u8 *key, unsigned int keylen) { return crypto_cipher_crt(tfm)->cit_setkey(crypto_cipher_tfm(tfm), key, keylen); } # 1749 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_cipher_encrypt_one(struct crypto_cipher *tfm, u8 *dst, const u8 *src) { crypto_cipher_crt(tfm)->cit_encrypt_one(crypto_cipher_tfm(tfm), dst, src); } # 1765 "../include/linux/crypto.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_cipher_decrypt_one(struct crypto_cipher *tfm, u8 *dst, const u8 *src) { crypto_cipher_crt(tfm)->cit_decrypt_one(crypto_cipher_tfm(tfm), dst, src); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_comp *__crypto_comp_cast(struct crypto_tfm *tfm) { return (struct crypto_comp *)tfm; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_comp *crypto_comp_cast(struct crypto_tfm *tfm) { do { if (__builtin_expect(!!((crypto_tfm_alg_type(tfm) ^ 0x00000002) & 0x0000000f), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/crypto.h"), "i" (1780), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (383)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); return __crypto_comp_cast(tfm); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_comp *crypto_alloc_comp(const char *alg_name, u32 type, u32 mask) { type &= ~0x0000000f; type |= 0x00000002; mask |= 0x0000000f; return __crypto_comp_cast(crypto_alloc_base(alg_name, type, mask)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_tfm *crypto_comp_tfm(struct crypto_comp *tfm) { return &tfm->base; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_free_comp(struct crypto_comp *tfm) { crypto_free_tfm(crypto_comp_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_has_comp(const char *alg_name, u32 type, u32 mask) { type &= ~0x0000000f; type |= 0x00000002; mask |= 0x0000000f; return crypto_has_alg(alg_name, type, mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *crypto_comp_name(struct crypto_comp *tfm) { return crypto_tfm_alg_name(crypto_comp_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct compress_tfm *crypto_comp_crt(struct crypto_comp *tfm) { return &crypto_comp_tfm(tfm)->crt_u.compress; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_comp_compress(struct crypto_comp *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen) { return crypto_comp_crt(tfm)->cot_compress(crypto_comp_tfm(tfm), src, slen, dst, dlen); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_comp_decompress(struct crypto_comp *tfm, const u8 *src, unsigned int slen, u8 *dst, unsigned int *dlen) { return crypto_comp_crt(tfm)->cot_decompress(crypto_comp_tfm(tfm), src, slen, dst, dlen); } # 12 "../include/crypto/hash.h" 2 struct crypto_ahash; # 42 "../include/crypto/hash.h" struct hash_alg_common { unsigned int digestsize; unsigned int statesize; struct crypto_alg base; }; struct ahash_request { struct crypto_async_request base; unsigned int nbytes; struct scatterlist *src; u8 *result; void *priv; void *__ctx[] __attribute__ ((__aligned__(__alignof__(unsigned long long)))); }; # 128 "../include/crypto/hash.h" struct ahash_alg { int (*init)(struct ahash_request *req); int (*update)(struct ahash_request *req); int (*final)(struct ahash_request *req); int (*finup)(struct ahash_request *req); int (*digest)(struct ahash_request *req); int (*export)(struct ahash_request *req, void *out); int (*import)(struct ahash_request *req, const void *in); int (*setkey)(struct crypto_ahash *tfm, const u8 *key, unsigned int keylen); struct hash_alg_common halg; }; struct shash_desc { struct crypto_shash *tfm; void *__ctx[] __attribute__ ((__aligned__(__alignof__(unsigned long long)))); }; # 179 "../include/crypto/hash.h" struct shash_alg { int (*init)(struct shash_desc *desc); int (*update)(struct shash_desc *desc, const u8 *data, unsigned int len); int (*final)(struct shash_desc *desc, u8 *out); int (*finup)(struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out); int (*digest)(struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out); int (*export)(struct shash_desc *desc, void *out); int (*import)(struct shash_desc *desc, const void *in); int (*setkey)(struct crypto_shash *tfm, const u8 *key, unsigned int keylen); unsigned int descsize; unsigned int digestsize __attribute__ ((aligned(__alignof__(struct hash_alg_common)))); unsigned int statesize; struct crypto_alg base; }; struct crypto_ahash { int (*init)(struct ahash_request *req); int (*update)(struct ahash_request *req); int (*final)(struct ahash_request *req); int (*finup)(struct ahash_request *req); int (*digest)(struct ahash_request *req); int (*export)(struct ahash_request *req, void *out); int (*import)(struct ahash_request *req, const void *in); int (*setkey)(struct crypto_ahash *tfm, const u8 *key, unsigned int keylen); unsigned int reqsize; struct crypto_tfm base; }; struct crypto_shash { unsigned int descsize; struct crypto_tfm base; }; # 233 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_ahash *__crypto_ahash_cast(struct crypto_tfm *tfm) { return ({ void *__mptr = (void *)(tfm); do { extern void __compiletime_assert_235(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(tfm)), typeof(((struct crypto_ahash *)0)->base)) && !__builtin_types_compatible_p(typeof(*(tfm)), typeof(void))))) __compiletime_assert_235(); } while (0); ((struct crypto_ahash *)(__mptr - __builtin_offsetof(struct crypto_ahash, base))); }); } # 252 "../include/crypto/hash.h" struct crypto_ahash *crypto_alloc_ahash(const char *alg_name, u32 type, u32 mask); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_tfm *crypto_ahash_tfm(struct crypto_ahash *tfm) { return &tfm->base; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_free_ahash(struct crypto_ahash *tfm) { crypto_destroy_tfm(tfm, crypto_ahash_tfm(tfm)); } # 279 "../include/crypto/hash.h" int crypto_has_ahash(const char *alg_name, u32 type, u32 mask); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *crypto_ahash_alg_name(struct crypto_ahash *tfm) { return crypto_tfm_alg_name(crypto_ahash_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *crypto_ahash_driver_name(struct crypto_ahash *tfm) { return crypto_tfm_alg_driver_name(crypto_ahash_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_ahash_alignmask( struct crypto_ahash *tfm) { return crypto_tfm_alg_alignmask(crypto_ahash_tfm(tfm)); } # 306 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_ahash_blocksize(struct crypto_ahash *tfm) { return crypto_tfm_alg_blocksize(crypto_ahash_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct hash_alg_common *__crypto_hash_alg_common( struct crypto_alg *alg) { return ({ void *__mptr = (void *)(alg); do { extern void __compiletime_assert_314(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(alg)), typeof(((struct hash_alg_common *)0)->base)) && !__builtin_types_compatible_p(typeof(*(alg)), typeof(void))))) __compiletime_assert_314(); } while (0); ((struct hash_alg_common *)(__mptr - __builtin_offsetof(struct hash_alg_common, base))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct hash_alg_common *crypto_hash_alg_common( struct crypto_ahash *tfm) { return __crypto_hash_alg_common(crypto_ahash_tfm(tfm)->__crt_alg); } # 333 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_ahash_digestsize(struct crypto_ahash *tfm) { return crypto_hash_alg_common(tfm)->digestsize; } # 348 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_ahash_statesize(struct crypto_ahash *tfm) { return crypto_hash_alg_common(tfm)->statesize; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 crypto_ahash_get_flags(struct crypto_ahash *tfm) { return crypto_tfm_get_flags(crypto_ahash_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_ahash_set_flags(struct crypto_ahash *tfm, u32 flags) { crypto_tfm_set_flags(crypto_ahash_tfm(tfm), flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_ahash_clear_flags(struct crypto_ahash *tfm, u32 flags) { crypto_tfm_clear_flags(crypto_ahash_tfm(tfm), flags); } # 378 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_ahash *crypto_ahash_reqtfm( struct ahash_request *req) { return __crypto_ahash_cast(req->base.tfm); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_ahash_reqsize(struct crypto_ahash *tfm) { return tfm->reqsize; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *ahash_request_ctx(struct ahash_request *req) { return req->__ctx; } # 411 "../include/crypto/hash.h" int crypto_ahash_setkey(struct crypto_ahash *tfm, const u8 *key, unsigned int keylen); # 425 "../include/crypto/hash.h" int crypto_ahash_finup(struct ahash_request *req); # 442 "../include/crypto/hash.h" int crypto_ahash_final(struct ahash_request *req); # 455 "../include/crypto/hash.h" int crypto_ahash_digest(struct ahash_request *req); # 468 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_ahash_export(struct ahash_request *req, void *out) { return crypto_ahash_reqtfm(req)->export(req, out); } # 484 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_ahash_import(struct ahash_request *req, const void *in) { struct crypto_ahash *tfm = crypto_ahash_reqtfm(req); if (crypto_ahash_get_flags(tfm) & 0x00000001) return -126; return tfm->import(req, in); } # 505 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_ahash_init(struct ahash_request *req) { struct crypto_ahash *tfm = crypto_ahash_reqtfm(req); if (crypto_ahash_get_flags(tfm) & 0x00000001) return -126; return tfm->init(req); } # 526 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_ahash_update(struct ahash_request *req) { struct crypto_ahash *tfm = crypto_ahash_reqtfm(req); struct crypto_alg *alg = tfm->base.__crt_alg; unsigned int nbytes = req->nbytes; int ret; crypto_stats_get(alg); ret = crypto_ahash_reqtfm(req)->update(req); crypto_stats_ahash_update(nbytes, ret, alg); return ret; } # 558 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ahash_request_set_tfm(struct ahash_request *req, struct crypto_ahash *tfm) { req->base.tfm = crypto_ahash_tfm(tfm); } # 576 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct ahash_request *ahash_request_alloc( struct crypto_ahash *tfm, gfp_t gfp) { struct ahash_request *req; req = kmalloc(sizeof(struct ahash_request) + crypto_ahash_reqsize(tfm), gfp); if (__builtin_expect(!!(req), 1)) ahash_request_set_tfm(req, tfm); return req; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ahash_request_free(struct ahash_request *req) { kzfree(req); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ahash_request_zero(struct ahash_request *req) { memzero_explicit(req, sizeof(*req) + crypto_ahash_reqsize(crypto_ahash_reqtfm(req))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct ahash_request *ahash_request_cast( struct crypto_async_request *req) { return ({ void *__mptr = (void *)(req); do { extern void __compiletime_assert_608(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(req)), typeof(((struct ahash_request *)0)->base)) && !__builtin_types_compatible_p(typeof(*(req)), typeof(void))))) __compiletime_assert_608(); } while (0); ((struct ahash_request *)(__mptr - __builtin_offsetof(struct ahash_request, base))); }); } # 636 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ahash_request_set_callback(struct ahash_request *req, u32 flags, crypto_completion_t compl, void *data) { req->base.complete = compl; req->base.data = data; req->base.flags = flags; } # 659 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ahash_request_set_crypt(struct ahash_request *req, struct scatterlist *src, u8 *result, unsigned int nbytes) { req->src = src; req->nbytes = nbytes; req->result = result; } # 695 "../include/crypto/hash.h" struct crypto_shash *crypto_alloc_shash(const char *alg_name, u32 type, u32 mask); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct crypto_tfm *crypto_shash_tfm(struct crypto_shash *tfm) { return &tfm->base; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_free_shash(struct crypto_shash *tfm) { crypto_destroy_tfm(tfm, crypto_shash_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *crypto_shash_alg_name(struct crypto_shash *tfm) { return crypto_tfm_alg_name(crypto_shash_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *crypto_shash_driver_name(struct crypto_shash *tfm) { return crypto_tfm_alg_driver_name(crypto_shash_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_shash_alignmask( struct crypto_shash *tfm) { return crypto_tfm_alg_alignmask(crypto_shash_tfm(tfm)); } # 737 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_shash_blocksize(struct crypto_shash *tfm) { return crypto_tfm_alg_blocksize(crypto_shash_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct shash_alg *__crypto_shash_alg(struct crypto_alg *alg) { return ({ void *__mptr = (void *)(alg); do { extern void __compiletime_assert_744(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(alg)), typeof(((struct shash_alg *)0)->base)) && !__builtin_types_compatible_p(typeof(*(alg)), typeof(void))))) __compiletime_assert_744(); } while (0); ((struct shash_alg *)(__mptr - __builtin_offsetof(struct shash_alg, base))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct shash_alg *crypto_shash_alg(struct crypto_shash *tfm) { return __crypto_shash_alg(crypto_shash_tfm(tfm)->__crt_alg); } # 761 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_shash_digestsize(struct crypto_shash *tfm) { return crypto_shash_alg(tfm)->digestsize; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_shash_statesize(struct crypto_shash *tfm) { return crypto_shash_alg(tfm)->statesize; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 crypto_shash_get_flags(struct crypto_shash *tfm) { return crypto_tfm_get_flags(crypto_shash_tfm(tfm)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_shash_set_flags(struct crypto_shash *tfm, u32 flags) { crypto_tfm_set_flags(crypto_shash_tfm(tfm), flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void crypto_shash_clear_flags(struct crypto_shash *tfm, u32 flags) { crypto_tfm_clear_flags(crypto_shash_tfm(tfm), flags); } # 801 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int crypto_shash_descsize(struct crypto_shash *tfm) { return tfm->descsize; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *shash_desc_ctx(struct shash_desc *desc) { return desc->__ctx; } # 824 "../include/crypto/hash.h" int crypto_shash_setkey(struct crypto_shash *tfm, const u8 *key, unsigned int keylen); # 842 "../include/crypto/hash.h" int crypto_shash_digest(struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out); # 857 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_shash_export(struct shash_desc *desc, void *out) { return crypto_shash_alg(desc->tfm)->export(desc, out); } # 874 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_shash_import(struct shash_desc *desc, const void *in) { struct crypto_shash *tfm = desc->tfm; if (crypto_shash_get_flags(tfm) & 0x00000001) return -126; return crypto_shash_alg(tfm)->import(desc, in); } # 896 "../include/crypto/hash.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int crypto_shash_init(struct shash_desc *desc) { struct crypto_shash *tfm = desc->tfm; if (crypto_shash_get_flags(tfm) & 0x00000001) return -126; return crypto_shash_alg(tfm)->init(desc); } # 918 "../include/crypto/hash.h" int crypto_shash_update(struct shash_desc *desc, const u8 *data, unsigned int len); # 935 "../include/crypto/hash.h" int crypto_shash_final(struct shash_desc *desc, u8 *out); # 952 "../include/crypto/hash.h" int crypto_shash_finup(struct shash_desc *desc, const u8 *data, unsigned int len, u8 *out); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void shash_desc_zero(struct shash_desc *desc) { memzero_explicit(desc, sizeof(*desc) + crypto_shash_descsize(desc->tfm)); } # 11 "../include/linux/uio.h" 2 # 1 "../include/uapi/linux/uio.h" 1 # 17 "../include/uapi/linux/uio.h" struct iovec { void *iov_base; __kernel_size_t iov_len; }; # 12 "../include/linux/uio.h" 2 struct page; struct pipe_inode_info; struct kvec { void *iov_base; size_t iov_len; }; enum iter_type { ITER_IOVEC = 4, ITER_KVEC = 8, ITER_BVEC = 16, ITER_PIPE = 32, ITER_DISCARD = 64, }; struct iov_iter { unsigned int type; size_t iov_offset; size_t count; union { const struct iovec *iov; const struct kvec *kvec; const struct bio_vec *bvec; struct pipe_inode_info *pipe; }; union { unsigned long nr_segs; struct { int idx; int start_idx; }; }; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) enum iter_type iov_iter_type(const struct iov_iter *i) { return i->type & ~(0 | 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iter_is_iovec(const struct iov_iter *i) { return iov_iter_type(i) == ITER_IOVEC; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iov_iter_is_kvec(const struct iov_iter *i) { return iov_iter_type(i) == ITER_KVEC; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iov_iter_is_bvec(const struct iov_iter *i) { return iov_iter_type(i) == ITER_BVEC; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iov_iter_is_pipe(const struct iov_iter *i) { return iov_iter_type(i) == ITER_PIPE; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iov_iter_is_discard(const struct iov_iter *i) { return iov_iter_type(i) == ITER_DISCARD; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char iov_iter_rw(const struct iov_iter *i) { return i->type & (0 | 1); } # 96 "../include/linux/uio.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) size_t iov_length(const struct iovec *iov, unsigned long nr_segs) { unsigned long seg; size_t ret = 0; for (seg = 0; seg < nr_segs; seg++) ret += iov[seg].iov_len; return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct iovec iov_iter_iovec(const struct iov_iter *iter) { return (struct iovec) { .iov_base = iter->iov->iov_base + iter->iov_offset, .iov_len = __builtin_choose_expr(((!!(sizeof((typeof(iter->count) *)1 == (typeof(iter->iov->iov_len - iter->iov_offset) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)(iter->count) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)(iter->iov->iov_len - iter->iov_offset) * 0l)) : (int *)8))))), ((iter->count) < (iter->iov->iov_len - iter->iov_offset) ? (iter->count) : (iter->iov->iov_len - iter->iov_offset)), ({ typeof(iter->count) __UNIQUE_ID___x384 = (iter->count); typeof(iter->iov->iov_len - iter->iov_offset) __UNIQUE_ID___y385 = (iter->iov->iov_len - iter->iov_offset); ((__UNIQUE_ID___x384) < (__UNIQUE_ID___y385) ? (__UNIQUE_ID___x384) : (__UNIQUE_ID___y385)); })), }; } size_t iov_iter_copy_from_user_atomic(struct page *page, struct iov_iter *i, unsigned long offset, size_t bytes); void iov_iter_advance(struct iov_iter *i, size_t bytes); void iov_iter_revert(struct iov_iter *i, size_t bytes); int iov_iter_fault_in_readable(struct iov_iter *i, size_t bytes); size_t iov_iter_single_seg_count(const struct iov_iter *i); size_t copy_page_to_iter(struct page *page, size_t offset, size_t bytes, struct iov_iter *i); size_t copy_page_from_iter(struct page *page, size_t offset, size_t bytes, struct iov_iter *i); size_t _copy_to_iter(const void *addr, size_t bytes, struct iov_iter *i); size_t _copy_from_iter(void *addr, size_t bytes, struct iov_iter *i); bool _copy_from_iter_full(void *addr, size_t bytes, struct iov_iter *i); size_t _copy_from_iter_nocache(void *addr, size_t bytes, struct iov_iter *i); bool _copy_from_iter_full_nocache(void *addr, size_t bytes, struct iov_iter *i); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __attribute__((__warn_unused_result__)) size_t copy_to_iter(const void *addr, size_t bytes, struct iov_iter *i) { if (__builtin_expect(!!(!check_copy_size(addr, bytes, true)), 0)) return 0; else return _copy_to_iter(addr, bytes, i); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __attribute__((__warn_unused_result__)) size_t copy_from_iter(void *addr, size_t bytes, struct iov_iter *i) { if (__builtin_expect(!!(!check_copy_size(addr, bytes, false)), 0)) return 0; else return _copy_from_iter(addr, bytes, i); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __attribute__((__warn_unused_result__)) bool copy_from_iter_full(void *addr, size_t bytes, struct iov_iter *i) { if (__builtin_expect(!!(!check_copy_size(addr, bytes, false)), 0)) return false; else return _copy_from_iter_full(addr, bytes, i); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __attribute__((__warn_unused_result__)) size_t copy_from_iter_nocache(void *addr, size_t bytes, struct iov_iter *i) { if (__builtin_expect(!!(!check_copy_size(addr, bytes, false)), 0)) return 0; else return _copy_from_iter_nocache(addr, bytes, i); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __attribute__((__warn_unused_result__)) bool copy_from_iter_full_nocache(void *addr, size_t bytes, struct iov_iter *i) { if (__builtin_expect(!!(!check_copy_size(addr, bytes, false)), 0)) return false; else return _copy_from_iter_full_nocache(addr, bytes, i); } # 184 "../include/linux/uio.h" size_t _copy_from_iter_flushcache(void *addr, size_t bytes, struct iov_iter *i); size_t _copy_to_iter_mcsafe(const void *addr, size_t bytes, struct iov_iter *i); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __attribute__((__warn_unused_result__)) size_t copy_from_iter_flushcache(void *addr, size_t bytes, struct iov_iter *i) { if (__builtin_expect(!!(!check_copy_size(addr, bytes, false)), 0)) return 0; else return _copy_from_iter_flushcache(addr, bytes, i); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __attribute__((__warn_unused_result__)) size_t copy_to_iter_mcsafe(void *addr, size_t bytes, struct iov_iter *i) { if (__builtin_expect(!!(!check_copy_size(addr, bytes, true)), 0)) return 0; else return _copy_to_iter_mcsafe(addr, bytes, i); } size_t iov_iter_zero(size_t bytes, struct iov_iter *); unsigned long iov_iter_alignment(const struct iov_iter *i); unsigned long iov_iter_gap_alignment(const struct iov_iter *i); void iov_iter_init(struct iov_iter *i, unsigned int direction, const struct iovec *iov, unsigned long nr_segs, size_t count); void iov_iter_kvec(struct iov_iter *i, unsigned int direction, const struct kvec *kvec, unsigned long nr_segs, size_t count); void iov_iter_bvec(struct iov_iter *i, unsigned int direction, const struct bio_vec *bvec, unsigned long nr_segs, size_t count); void iov_iter_pipe(struct iov_iter *i, unsigned int direction, struct pipe_inode_info *pipe, size_t count); void iov_iter_discard(struct iov_iter *i, unsigned int direction, size_t count); ssize_t iov_iter_get_pages(struct iov_iter *i, struct page **pages, size_t maxsize, unsigned maxpages, size_t *start); ssize_t iov_iter_get_pages_alloc(struct iov_iter *i, struct page ***pages, size_t maxsize, size_t *start); int iov_iter_npages(const struct iov_iter *i, int maxpages); const void *dup_iter(struct iov_iter *new, struct iov_iter *old, gfp_t flags); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) size_t iov_iter_count(const struct iov_iter *i) { return i->count; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iov_iter_truncate(struct iov_iter *i, u64 count) { if (i->count > count) i->count = count; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iov_iter_reexpand(struct iov_iter *i, size_t count) { i->count = count; } size_t csum_and_copy_to_iter(const void *addr, size_t bytes, void *csump, struct iov_iter *i); size_t csum_and_copy_from_iter(void *addr, size_t bytes, __wsum *csum, struct iov_iter *i); bool csum_and_copy_from_iter_full(void *addr, size_t bytes, __wsum *csum, struct iov_iter *i); size_t hash_and_copy_to_iter(const void *addr, size_t bytes, void *hashp, struct iov_iter *i); ssize_t import_iovec(int type, const struct iovec * uvector, unsigned nr_segs, unsigned fast_segs, struct iovec **iov, struct iov_iter *i); struct compat_iovec; ssize_t compat_import_iovec(int type, const struct compat_iovec * uvector, unsigned nr_segs, unsigned fast_segs, struct iovec **iov, struct iov_iter *i); int import_single_range(int type, void *buf, size_t len, struct iovec *iov, struct iov_iter *i); int iov_iter_for_each_range(struct iov_iter *i, size_t bytes, int (*f)(struct kvec *vec, void *context), void *context); # 9 "../include/linux/socket.h" 2 # 1 "../include/uapi/linux/socket.h" 1 # 12 "../include/uapi/linux/socket.h" typedef unsigned short __kernel_sa_family_t; struct __kernel_sockaddr_storage { __kernel_sa_family_t ss_family; char __data[128 - sizeof(unsigned short)]; } __attribute__ ((aligned((__alignof__ (struct sockaddr *))))); # 12 "../include/linux/socket.h" 2 struct pid; struct cred; struct socket; struct seq_file; extern void socket_seq_show(struct seq_file *seq); typedef __kernel_sa_family_t sa_family_t; struct sockaddr { sa_family_t sa_family; char sa_data[14]; }; struct linger { int l_onoff; int l_linger; }; # 49 "../include/linux/socket.h" struct msghdr { void *msg_name; int msg_namelen; struct iov_iter msg_iter; void *msg_control; __kernel_size_t msg_controllen; unsigned int msg_flags; struct kiocb *msg_iocb; }; struct user_msghdr { void *msg_name; int msg_namelen; struct iovec *msg_iov; __kernel_size_t msg_iovlen; void *msg_control; __kernel_size_t msg_controllen; unsigned int msg_flags; }; struct mmsghdr { struct user_msghdr msg_hdr; unsigned int msg_len; }; struct cmsghdr { __kernel_size_t cmsg_len; int cmsg_level; int cmsg_type; }; # 127 "../include/linux/socket.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size, struct cmsghdr *__cmsg) { struct cmsghdr * __ptr; __ptr = (struct cmsghdr*)(((unsigned char *) __cmsg) + ( ((__cmsg->cmsg_len)+sizeof(long)-1) & ~(sizeof(long)-1) )); if ((unsigned long)((char*)(__ptr+1) - (char *) __ctl) > __size) return (struct cmsghdr *)0; return __ptr; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cmsghdr * cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr *__cmsg) { return __cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) size_t msg_data_left(struct msghdr *msg) { return iov_iter_count(&msg->msg_iter); } struct ucred { __u32 pid; __u32 uid; __u32 gid; }; # 350 "../include/linux/socket.h" extern int move_addr_to_kernel(void *uaddr, int ulen, struct __kernel_sockaddr_storage *kaddr); extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data); struct timespec64; struct __kernel_timespec; struct old_timespec32; struct scm_timestamping_internal { struct timespec64 ts[3]; }; extern void put_cmsg_scm_timestamping64(struct msghdr *msg, struct scm_timestamping_internal *tss); extern void put_cmsg_scm_timestamping(struct msghdr *msg, struct scm_timestamping_internal *tss); extern long __sys_recvmsg(int fd, struct user_msghdr *msg, unsigned int flags, bool forbid_cmsg_compat); extern long __sys_sendmsg(int fd, struct user_msghdr *msg, unsigned int flags, bool forbid_cmsg_compat); extern int __sys_recvmmsg(int fd, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct __kernel_timespec *timeout, struct old_timespec32 *timeout32); extern int __sys_sendmmsg(int fd, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, bool forbid_cmsg_compat); extern long __sys_sendmsg_sock(struct socket *sock, struct user_msghdr *msg, unsigned int flags); extern long __sys_recvmsg_sock(struct socket *sock, struct user_msghdr *msg, unsigned int flags); extern int __sys_recvfrom(int fd, void *ubuf, size_t size, unsigned int flags, struct sockaddr *addr, int *addr_len); extern int __sys_sendto(int fd, void *buff, size_t len, unsigned int flags, struct sockaddr *addr, int addr_len); extern int __sys_accept4(int fd, struct sockaddr *upeer_sockaddr, int *upeer_addrlen, int flags); extern int __sys_socket(int family, int type, int protocol); extern int __sys_bind(int fd, struct sockaddr *umyaddr, int addrlen); extern int __sys_connect(int fd, struct sockaddr *uservaddr, int addrlen); extern int __sys_listen(int fd, int backlog); extern int __sys_getsockname(int fd, struct sockaddr *usockaddr, int *usockaddr_len); extern int __sys_getpeername(int fd, struct sockaddr *usockaddr, int *usockaddr_len); extern int __sys_socketpair(int family, int type, int protocol, int *usockvec); extern int __sys_shutdown(int fd, int how); extern struct ns_common *get_net_ns(struct ns_common *ns); # 16 "../include/linux/compat.h" 2 # 1 "../include/uapi/linux/if.h" 1 # 23 "../include/uapi/linux/if.h" # 1 "../include/uapi/linux/libc-compat.h" 1 # 24 "../include/uapi/linux/if.h" 2 # 36 "../include/uapi/linux/if.h" # 1 "../include/uapi/linux/hdlc/ioctl.h" 1 # 40 "../include/uapi/linux/hdlc/ioctl.h" typedef struct { unsigned int clock_rate; unsigned int clock_type; unsigned short loopback; } sync_serial_settings; typedef struct { unsigned int clock_rate; unsigned int clock_type; unsigned short loopback; unsigned int slot_map; } te1_settings; typedef struct { unsigned short encoding; unsigned short parity; } raw_hdlc_proto; typedef struct { unsigned int t391; unsigned int t392; unsigned int n391; unsigned int n392; unsigned int n393; unsigned short lmi; unsigned short dce; } fr_proto; typedef struct { unsigned int dlci; } fr_proto_pvc; typedef struct { unsigned int dlci; char master[16]; }fr_proto_pvc_info; typedef struct { unsigned int interval; unsigned int timeout; } cisco_proto; # 37 "../include/uapi/linux/if.h" 2 # 81 "../include/uapi/linux/if.h" enum net_device_flags { IFF_UP = 1<<0, IFF_BROADCAST = 1<<1, IFF_DEBUG = 1<<2, IFF_LOOPBACK = 1<<3, IFF_POINTOPOINT = 1<<4, IFF_NOTRAILERS = 1<<5, IFF_RUNNING = 1<<6, IFF_NOARP = 1<<7, IFF_PROMISC = 1<<8, IFF_ALLMULTI = 1<<9, IFF_MASTER = 1<<10, IFF_SLAVE = 1<<11, IFF_MULTICAST = 1<<12, IFF_PORTSEL = 1<<13, IFF_AUTOMEDIA = 1<<14, IFF_DYNAMIC = 1<<15, IFF_LOWER_UP = 1<<16, IFF_DORMANT = 1<<17, IFF_ECHO = 1<<18, }; # 166 "../include/uapi/linux/if.h" enum { IF_OPER_UNKNOWN, IF_OPER_NOTPRESENT, IF_OPER_DOWN, IF_OPER_LOWERLAYERDOWN, IF_OPER_TESTING, IF_OPER_DORMANT, IF_OPER_UP, }; enum { IF_LINK_MODE_DEFAULT, IF_LINK_MODE_DORMANT, }; # 194 "../include/uapi/linux/if.h" struct ifmap { unsigned long mem_start; unsigned long mem_end; unsigned short base_addr; unsigned char irq; unsigned char dma; unsigned char port; }; struct if_settings { unsigned int type; unsigned int size; union { raw_hdlc_proto *raw_hdlc; cisco_proto *cisco; fr_proto *fr; fr_proto_pvc *fr_pvc; fr_proto_pvc_info *fr_pvc_info; sync_serial_settings *sync; te1_settings *te1; } ifs_ifsu; }; # 231 "../include/uapi/linux/if.h" struct ifreq { union { char ifrn_name[16]; } ifr_ifrn; union { struct sockaddr ifru_addr; struct sockaddr ifru_dstaddr; struct sockaddr ifru_broadaddr; struct sockaddr ifru_netmask; struct sockaddr ifru_hwaddr; short ifru_flags; int ifru_ivalue; int ifru_mtu; struct ifmap ifru_map; char ifru_slave[16]; char ifru_newname[16]; void * ifru_data; struct if_settings ifru_settings; } ifr_ifru; }; # 283 "../include/uapi/linux/if.h" struct ifconf { int ifc_len; union { char *ifcu_buf; struct ifreq *ifcu_req; } ifc_ifcu; }; # 17 "../include/linux/compat.h" 2 # 1 "../include/uapi/linux/aio_abi.h" 1 # 34 "../include/uapi/linux/aio_abi.h" typedef __kernel_ulong_t aio_context_t; enum { IOCB_CMD_PREAD = 0, IOCB_CMD_PWRITE = 1, IOCB_CMD_FSYNC = 2, IOCB_CMD_FDSYNC = 3, IOCB_CMD_POLL = 5, IOCB_CMD_NOOP = 6, IOCB_CMD_PREADV = 7, IOCB_CMD_PWRITEV = 8, }; # 60 "../include/uapi/linux/aio_abi.h" struct io_event { __u64 data; __u64 obj; __s64 res; __s64 res2; }; struct iocb { __u64 aio_data; __u32 aio_key; __kernel_rwf_t aio_rw_flags; # 88 "../include/uapi/linux/aio_abi.h" __u16 aio_lio_opcode; __s16 aio_reqprio; __u32 aio_fildes; __u64 aio_buf; __u64 aio_nbytes; __s64 aio_offset; __u64 aio_reserved2; __u32 aio_flags; __u32 aio_resfd; }; # 19 "../include/linux/compat.h" 2 # 1 "../arch/x86/include/asm/compat.h" 1 # 10 "../arch/x86/include/asm/compat.h" # 1 "../include/linux/sched/task_stack.h" 1 # 10 "../include/linux/sched/task_stack.h" # 1 "../include/uapi/linux/magic.h" 1 # 11 "../include/linux/sched/task_stack.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *task_stack_page(const struct task_struct *task) { return task->stack; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long *end_of_stack(const struct task_struct *task) { return task->stack; } # 62 "../include/linux/sched/task_stack.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *try_get_task_stack(struct task_struct *tsk) { return refcount_inc_not_zero_checked(&tsk->stack_refcount) ? task_stack_page(tsk) : ((void *)0); } extern void put_task_stack(struct task_struct *tsk); # 81 "../include/linux/sched/task_stack.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int object_is_on_stack(const void *obj) { void *stack = task_stack_page(get_current()); return (obj >= stack) && (obj < (stack + (((1UL) << 12) << (2 + 1)))); } extern void thread_stack_cache_init(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long stack_not_used(struct task_struct *p) { unsigned long *n = end_of_stack(p); do { n++; } while (!*n); return (unsigned long)n - (unsigned long)end_of_stack(p); } extern void set_task_stack_end_magic(struct task_struct *tsk); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int kstack_end(void *addr) { return !(((unsigned long)addr+sizeof(void*)-1) & ((((1UL) << 12) << (2 + 1))-sizeof(void*))); } # 11 "../arch/x86/include/asm/compat.h" 2 # 1 "../arch/x86/include/asm/user32.h" 1 struct user_i387_ia32_struct { u32 cwd; u32 swd; u32 twd; u32 fip; u32 fcs; u32 foo; u32 fos; u32 st_space[20]; }; struct user32_fxsr_struct { unsigned short cwd; unsigned short swd; unsigned short twd; unsigned short fop; int fip; int fcs; int foo; int fos; int mxcsr; int reserved; int st_space[32]; int xmm_space[32]; int padding[56]; }; struct user_regs_struct32 { __u32 ebx, ecx, edx, esi, edi, ebp, eax; unsigned short ds, __ds, es, __es; unsigned short fs, __fs, gs, __gs; __u32 orig_eax, eip; unsigned short cs, __cs; __u32 eflags, esp; unsigned short ss, __ss; }; struct user32 { struct user_regs_struct32 regs; int u_fpvalid; struct user_i387_ia32_struct i387; __u32 u_tsize; __u32 u_dsize; __u32 u_ssize; __u32 start_code; __u32 start_stack; __u32 signal; int reserved; __u32 u_ar0; __u32 u_fpstate; __u32 magic; char u_comm[32]; int u_debugreg[8]; }; # 13 "../arch/x86/include/asm/compat.h" 2 # 1 "../include/asm-generic/compat.h" 1 typedef u32 compat_size_t; typedef s32 compat_ssize_t; typedef s32 compat_clock_t; typedef s32 compat_pid_t; typedef u32 compat_ino_t; typedef s32 compat_off_t; typedef s64 compat_loff_t; typedef s32 compat_daddr_t; typedef s32 compat_timer_t; typedef s32 compat_key_t; typedef s16 compat_short_t; typedef s32 compat_int_t; typedef s32 compat_long_t; typedef u16 compat_ushort_t; typedef u32 compat_uint_t; typedef u32 compat_ulong_t; typedef u32 compat_uptr_t; typedef u32 compat_aio_context_t; # 16 "../arch/x86/include/asm/compat.h" 2 typedef u16 __compat_uid_t; typedef u16 __compat_gid_t; typedef u32 __compat_uid32_t; typedef u32 __compat_gid32_t; typedef u16 compat_mode_t; typedef u16 compat_dev_t; typedef u16 compat_nlink_t; typedef u16 compat_ipc_pid_t; typedef u32 compat_caddr_t; typedef __kernel_fsid_t compat_fsid_t; typedef s64 __attribute__((aligned(4))) compat_s64; typedef u64 __attribute__((aligned(4))) compat_u64; struct compat_stat { compat_dev_t st_dev; u16 __pad1; compat_ino_t st_ino; compat_mode_t st_mode; compat_nlink_t st_nlink; __compat_uid_t st_uid; __compat_gid_t st_gid; compat_dev_t st_rdev; u16 __pad2; u32 st_size; u32 st_blksize; u32 st_blocks; u32 st_atime; u32 st_atime_nsec; u32 st_mtime; u32 st_mtime_nsec; u32 st_ctime; u32 st_ctime_nsec; u32 __unused4; u32 __unused5; }; struct compat_flock { short l_type; short l_whence; compat_off_t l_start; compat_off_t l_len; compat_pid_t l_pid; }; # 72 "../arch/x86/include/asm/compat.h" struct compat_flock64 { short l_type; short l_whence; compat_loff_t l_start; compat_loff_t l_len; compat_pid_t l_pid; } __attribute__((packed)); struct compat_statfs { int f_type; int f_bsize; int f_blocks; int f_bfree; int f_bavail; int f_files; int f_ffree; compat_fsid_t f_fsid; int f_namelen; int f_frsize; int f_flags; int f_spare[4]; }; typedef u32 compat_old_sigset_t; typedef u32 compat_sigset_word; struct compat_ipc64_perm { compat_key_t key; __compat_uid32_t uid; __compat_gid32_t gid; __compat_uid32_t cuid; __compat_gid32_t cgid; unsigned short mode; unsigned short __pad1; unsigned short seq; unsigned short __pad2; compat_ulong_t unused1; compat_ulong_t unused2; }; struct compat_semid64_ds { struct compat_ipc64_perm sem_perm; compat_ulong_t sem_otime; compat_ulong_t sem_otime_high; compat_ulong_t sem_ctime; compat_ulong_t sem_ctime_high; compat_ulong_t sem_nsems; compat_ulong_t __unused3; compat_ulong_t __unused4; }; struct compat_msqid64_ds { struct compat_ipc64_perm msg_perm; compat_ulong_t msg_stime; compat_ulong_t msg_stime_high; compat_ulong_t msg_rtime; compat_ulong_t msg_rtime_high; compat_ulong_t msg_ctime; compat_ulong_t msg_ctime_high; compat_ulong_t msg_cbytes; compat_ulong_t msg_qnum; compat_ulong_t msg_qbytes; compat_pid_t msg_lspid; compat_pid_t msg_lrpid; compat_ulong_t __unused4; compat_ulong_t __unused5; }; struct compat_shmid64_ds { struct compat_ipc64_perm shm_perm; compat_size_t shm_segsz; compat_ulong_t shm_atime; compat_ulong_t shm_atime_high; compat_ulong_t shm_dtime; compat_ulong_t shm_dtime_high; compat_ulong_t shm_ctime; compat_ulong_t shm_ctime_high; compat_pid_t shm_cpid; compat_pid_t shm_lpid; compat_ulong_t shm_nattch; compat_ulong_t __unused4; compat_ulong_t __unused5; }; typedef struct user_regs_struct compat_elf_gregset_t; # 187 "../arch/x86/include/asm/compat.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *compat_ptr(compat_uptr_t uptr) { return (void *)(unsigned long)uptr; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) compat_uptr_t ptr_to_compat(void *uptr) { return (u32)(unsigned long)uptr; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *arch_compat_alloc_user_space(long len) { compat_uptr_t sp; if (test_ti_thread_flag(((struct thread_info *)get_current()), 17)) { sp = ({ unsigned long __ptr = (unsigned long)task_stack_page(get_current()); __ptr += (((1UL) << 12) << (2 + 1)) - 0; ((struct pt_regs *)__ptr) - 1; })->sp; } else { sp = ({ unsigned long __ptr = (unsigned long)task_stack_page(get_current()); __ptr += (((1UL) << 12) << (2 + 1)) - 0; ((struct pt_regs *)__ptr) - 1; })->sp - 128; } return (void *)((sp - len) & ~((__typeof__(sp - len))((16)-1))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool in_x32_syscall(void) { if (({ unsigned long __ptr = (unsigned long)task_stack_page(get_current()); __ptr += (((1UL) << 12) << (2 + 1)) - 0; ((struct pt_regs *)__ptr) - 1; })->orig_ax & 0x40000000) return true; return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool in_32bit_syscall(void) { return (1 && ((struct thread_info *)get_current())->status & 0x0002) || in_x32_syscall(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool in_compat_syscall(void) { return in_32bit_syscall(); } struct compat_siginfo; int __copy_siginfo_to_user32(struct compat_siginfo *to, const kernel_siginfo_t *from, bool x32_ABI); # 23 "../include/linux/compat.h" 2 # 37 "../include/linux/compat.h" # 1 "../arch/x86/include/asm/syscall_wrapper.h" 1 # 204 "../arch/x86/include/asm/syscall_wrapper.h" struct pt_regs; long __x64_sys_getcpu(const struct pt_regs *regs); long __x64_sys_gettimeofday(const struct pt_regs *regs); long __x64_sys_time(const struct pt_regs *regs); # 38 "../include/linux/compat.h" 2 # 100 "../include/linux/compat.h" typedef struct compat_sigaltstack { compat_uptr_t ss_sp; int ss_flags; compat_size_t ss_size; } compat_stack_t; # 113 "../include/linux/compat.h" typedef __compat_uid32_t compat_uid_t; typedef __compat_gid32_t compat_gid_t; struct compat_sel_arg_struct; struct rusage; struct compat_itimerval { struct old_timeval32 it_interval; struct old_timeval32 it_value; }; struct itimerval; int get_compat_itimerval(struct itimerval *, const struct compat_itimerval *); int put_compat_itimerval(struct compat_itimerval *, const struct itimerval *); struct compat_tms { compat_clock_t tms_utime; compat_clock_t tms_stime; compat_clock_t tms_cutime; compat_clock_t tms_cstime; }; typedef struct { compat_sigset_word sig[(64 / 32)]; } compat_sigset_t; int set_compat_user_sigmask(const compat_sigset_t *umask, size_t sigsetsize); struct compat_sigaction { compat_uptr_t sa_handler; compat_ulong_t sa_flags; compat_uptr_t sa_restorer; compat_sigset_t sa_mask __attribute__((__packed__)); }; typedef union compat_sigval { compat_int_t sival_int; compat_uptr_t sival_ptr; } compat_sigval_t; typedef struct compat_siginfo { int si_signo; int si_errno; int si_code; union { int _pad[128/sizeof(int) - 3]; struct { compat_pid_t _pid; __compat_uid32_t _uid; } _kill; struct { compat_timer_t _tid; int _overrun; compat_sigval_t _sigval; } _timer; struct { compat_pid_t _pid; __compat_uid32_t _uid; compat_sigval_t _sigval; } _rt; struct { compat_pid_t _pid; __compat_uid32_t _uid; int _status; compat_clock_t _utime; compat_clock_t _stime; } _sigchld; struct { compat_pid_t _pid; __compat_uid32_t _uid; int _status; compat_s64 _utime; compat_s64 _stime; } _sigchld_x32; struct { compat_uptr_t _addr; union { short int _addr_lsb; struct { char _dummy_bnd[(__alignof__(compat_uptr_t) < sizeof(short) ? sizeof(short) : __alignof__(compat_uptr_t))]; compat_uptr_t _lower; compat_uptr_t _upper; } _addr_bnd; struct { char _dummy_pkey[(__alignof__(compat_uptr_t) < sizeof(short) ? sizeof(short) : __alignof__(compat_uptr_t))]; u32 _pkey; } _addr_pkey; }; } _sigfault; struct { compat_long_t _band; int _fd; } _sigpoll; struct { compat_uptr_t _call_addr; int _syscall; unsigned int _arch; } _sigsys; } _sifields; } compat_siginfo_t; extern int compat_get_timespec(struct timespec *, const void *); extern int compat_put_timespec(const struct timespec *, void *); extern int compat_get_timeval(struct timeval *, const void *); extern int compat_put_timeval(const struct timeval *, void *); struct compat_iovec { compat_uptr_t iov_base; compat_size_t iov_len; }; struct compat_rlimit { compat_ulong_t rlim_cur; compat_ulong_t rlim_max; }; struct compat_rusage { struct old_timeval32 ru_utime; struct old_timeval32 ru_stime; compat_long_t ru_maxrss; compat_long_t ru_ixrss; compat_long_t ru_idrss; compat_long_t ru_isrss; compat_long_t ru_minflt; compat_long_t ru_majflt; compat_long_t ru_nswap; compat_long_t ru_inblock; compat_long_t ru_oublock; compat_long_t ru_msgsnd; compat_long_t ru_msgrcv; compat_long_t ru_nsignals; compat_long_t ru_nvcsw; compat_long_t ru_nivcsw; }; extern int put_compat_rusage(const struct rusage *, struct compat_rusage *); struct compat_siginfo; struct __compat_aio_sigset; struct compat_dirent { u32 d_ino; compat_off_t d_off; u16 d_reclen; char d_name[256]; }; struct compat_ustat { compat_daddr_t f_tfree; compat_ino_t f_tinode; char f_fname[6]; char f_fpack[6]; }; typedef struct compat_sigevent { compat_sigval_t sigev_value; compat_int_t sigev_signo; compat_int_t sigev_notify; union { compat_int_t _pad[((64/sizeof(int)) - 3)]; compat_int_t _tid; struct { compat_uptr_t _function; compat_uptr_t _attribute; } _sigev_thread; } _sigev_un; } compat_sigevent_t; struct compat_ifmap { compat_ulong_t mem_start; compat_ulong_t mem_end; unsigned short base_addr; unsigned char irq; unsigned char dma; unsigned char port; }; struct compat_if_settings { unsigned int type; unsigned int size; compat_uptr_t ifs_ifsu; }; struct compat_ifreq { union { char ifrn_name[16]; } ifr_ifrn; union { struct sockaddr ifru_addr; struct sockaddr ifru_dstaddr; struct sockaddr ifru_broadaddr; struct sockaddr ifru_netmask; struct sockaddr ifru_hwaddr; short ifru_flags; compat_int_t ifru_ivalue; compat_int_t ifru_mtu; struct compat_ifmap ifru_map; char ifru_slave[16]; char ifru_newname[16]; compat_caddr_t ifru_data; struct compat_if_settings ifru_settings; } ifr_ifru; }; struct compat_ifconf { compat_int_t ifc_len; compat_caddr_t ifcbuf; }; struct compat_robust_list { compat_uptr_t next; }; struct compat_robust_list_head { struct compat_robust_list list; compat_long_t futex_offset; compat_uptr_t list_op_pending; }; struct compat_old_sigaction { compat_uptr_t sa_handler; compat_old_sigset_t sa_mask; compat_ulong_t sa_flags; compat_uptr_t sa_restorer; }; struct compat_keyctl_kdf_params { compat_uptr_t hashname; compat_uptr_t otherinfo; __u32 otherinfolen; __u32 __spare[8]; }; struct compat_statfs; struct compat_statfs64; struct compat_old_linux_dirent; struct compat_linux_dirent; struct linux_dirent64; struct compat_msghdr; struct compat_mmsghdr; struct compat_sysinfo; struct compat_sysctl_args; struct compat_kexec_segment; struct compat_mq_attr; struct compat_msgbuf; extern void compat_exit_robust_list(struct task_struct *curr); long compat_get_bitmap(unsigned long *mask, const compat_ulong_t *umask, unsigned long bitmap_size); long compat_put_bitmap(compat_ulong_t *umask, unsigned long *mask, unsigned long bitmap_size); int copy_siginfo_from_user32(kernel_siginfo_t *to, const struct compat_siginfo *from); int copy_siginfo_to_user32(struct compat_siginfo *to, const kernel_siginfo_t *from); int get_compat_sigevent(struct sigevent *event, const struct compat_sigevent *u_event); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int old_timeval32_compare(struct old_timeval32 *lhs, struct old_timeval32 *rhs) { if (lhs->tv_sec < rhs->tv_sec) return -1; if (lhs->tv_sec > rhs->tv_sec) return 1; return lhs->tv_usec - rhs->tv_usec; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int old_timespec32_compare(struct old_timespec32 *lhs, struct old_timespec32 *rhs) { if (lhs->tv_sec < rhs->tv_sec) return -1; if (lhs->tv_sec > rhs->tv_sec) return 1; return lhs->tv_nsec - rhs->tv_nsec; } extern int get_compat_sigset(sigset_t *set, const compat_sigset_t *compat); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int put_compat_sigset(compat_sigset_t *compat, const sigset_t *set, unsigned int size) { # 472 "../include/linux/compat.h" return copy_to_user(compat, set, size) ? -14 : 0; } extern int compat_ptrace_request(struct task_struct *child, compat_long_t request, compat_ulong_t addr, compat_ulong_t data); extern long compat_arch_ptrace(struct task_struct *child, compat_long_t request, compat_ulong_t addr, compat_ulong_t data); struct epoll_event; extern ssize_t compat_rw_copy_check_uvector(int type, const struct compat_iovec *uvector, unsigned long nr_segs, unsigned long fast_segs, struct iovec *fast_pointer, struct iovec **ret_pointer); extern void *compat_alloc_user_space(unsigned long len); int compat_restore_altstack(const compat_stack_t *uss); int __compat_save_altstack(compat_stack_t *, unsigned long); # 938 "../include/linux/compat.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct old_timeval32 ns_to_old_timeval32(s64 nsec) { struct timeval tv; struct old_timeval32 ctv; tv = ns_to_timeval(nsec); ctv.tv_sec = tv.tv_sec; ctv.tv_usec = tv.tv_usec; return ctv; } int kcompat_sys_statfs64(const char * pathname, compat_size_t sz, struct compat_statfs64 * buf); int kcompat_sys_fstatfs64(unsigned int fd, compat_size_t sz, struct compat_statfs64 * buf); # 18 "../include/linux/ethtool.h" 2 # 1 "../include/uapi/linux/ethtool.h" 1 # 19 "../include/uapi/linux/ethtool.h" # 1 "../include/linux/if_ether.h" 1 # 19 "../include/linux/if_ether.h" # 1 "../include/linux/skbuff.h" 1 # 25 "../include/linux/skbuff.h" # 1 "../include/linux/net.h" 1 # 18 "../include/linux/net.h" # 1 "../include/linux/random.h" 1 # 11 "../include/linux/random.h" # 1 "../include/linux/once.h" 1 bool __do_once_start(bool *done, unsigned long *flags); void __do_once_done(bool *done, struct static_key_true *once_key, unsigned long *flags); # 12 "../include/linux/random.h" 2 # 1 "../include/uapi/linux/random.h" 1 # 13 "../include/uapi/linux/random.h" # 1 "../include/linux/irqnr.h" 1 # 1 "../include/uapi/linux/irqnr.h" 1 # 6 "../include/linux/irqnr.h" 2 extern int nr_irqs; extern struct irq_desc *irq_to_desc(unsigned int irq); unsigned int irq_get_next_irq(unsigned int offset); # 14 "../include/uapi/linux/random.h" 2 # 41 "../include/uapi/linux/random.h" struct rand_pool_info { int entropy_count; int buf_size; __u32 buf[0]; }; # 14 "../include/linux/random.h" 2 struct random_ready_callback { struct list_head list; void (*func)(struct random_ready_callback *rdy); struct module *owner; }; extern void add_device_randomness(const void *, unsigned int); # 30 "../include/linux/random.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void add_latent_entropy(void) {} extern void add_input_randomness(unsigned int type, unsigned int code, unsigned int value) ; extern void add_interrupt_randomness(int irq, int irq_flags) ; extern void get_random_bytes(void *buf, int nbytes); extern int wait_for_random_bytes(void); extern int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) rand_initialize(void); extern bool rng_is_initialized(void); extern int add_random_ready_callback(struct random_ready_callback *rdy); extern void del_random_ready_callback(struct random_ready_callback *rdy); extern int __attribute__((__warn_unused_result__)) get_random_bytes_arch(void *buf, int nbytes); extern const struct file_operations random_fops, urandom_fops; u32 get_random_u32(void); u64 get_random_u64(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int get_random_int(void) { return get_random_u32(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long get_random_long(void) { return get_random_u64(); } # 78 "../include/linux/random.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long get_random_canary(void) { unsigned long val = get_random_long(); return val & 0xffffffffffffff00UL; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_random_bytes_wait(void *buf, int nbytes) { int ret = wait_for_random_bytes(); get_random_bytes(buf, nbytes); return ret; } # 102 "../include/linux/random.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_random_u32_wait(u32 *out) { int ret = wait_for_random_bytes(); if (__builtin_expect(!!(ret), 0)) return ret; *out = get_random_u32(); return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_random_u64_wait(u64 *out) { int ret = wait_for_random_bytes(); if (__builtin_expect(!!(ret), 0)) return ret; *out = get_random_u64(); return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_random_int_wait(int *out) { int ret = wait_for_random_bytes(); if (__builtin_expect(!!(ret), 0)) return ret; *out = get_random_int(); return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_random_long_wait(long *out) { int ret = wait_for_random_bytes(); if (__builtin_expect(!!(ret), 0)) return ret; *out = get_random_long(); return 0; } unsigned long randomize_page(unsigned long start, unsigned long range); u32 prandom_u32(void); void prandom_bytes(void *buf, size_t nbytes); void prandom_seed(u32 seed); void prandom_reseed_late(void); struct rnd_state { __u32 s1, s2, s3, s4; }; u32 prandom_u32_state(struct rnd_state *state); void prandom_bytes_state(struct rnd_state *state, void *buf, size_t nbytes); void prandom_seed_full_state(struct rnd_state *pcpu_state); # 138 "../include/linux/random.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 prandom_u32_max(u32 ep_ro) { return (u32)(((u64) prandom_u32() * ep_ro) >> 32); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 __seed(u32 x, u32 m) { return (x < m) ? x + m : x; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void prandom_seed_state(struct rnd_state *state, u64 seed) { u32 i = (seed >> 32) ^ (seed << 10) ^ seed; state->s1 = __seed(i, 2U); state->s2 = __seed(i, 8U); state->s3 = __seed(i, 16U); state->s4 = __seed(i, 128U); } # 1 "../arch/x86/include/asm/archrandom.h" 1 # 30 "../arch/x86/include/asm/archrandom.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool rdrand_long(unsigned long *v) { bool ok; unsigned int retry = 10; do { asm volatile(".byte 0x48,0x0f,0xc7,0xf0" "\n\t/* output condition code " "c" "*/\n" : "=@cc" "c" (ok), "=a" (*v)); if (ok) return true; } while (--retry); return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool rdrand_int(unsigned int *v) { bool ok; unsigned int retry = 10; do { asm volatile(".byte 0x0f,0xc7,0xf0" "\n\t/* output condition code " "c" "*/\n" : "=@cc" "c" (ok), "=a" (*v)); if (ok) return true; } while (--retry); return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool rdseed_long(unsigned long *v) { bool ok; asm volatile(".byte 0x48,0x0f,0xc7,0xf8" "\n\t/* output condition code " "c" "*/\n" : "=@cc" "c" (ok), "=a" (*v)); return ok; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool rdseed_int(unsigned int *v) { bool ok; asm volatile(".byte 0x0f,0xc7,0xf8" "\n\t/* output condition code " "c" "*/\n" : "=@cc" "c" (ok), "=a" (*v)); return ok; } # 87 "../arch/x86/include/asm/archrandom.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool arch_get_random_long(unsigned long *v) { return ( __builtin_constant_p((__builtin_constant_p(( 4*32+30)) && ( (((( 4*32+30))>>5)==(0) && (1UL<<((( 4*32+30))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 4*32+30))>>5)==(1) && (1UL<<((( 4*32+30))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 4*32+30))>>5)==(2) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(3) && (1UL<<((( 4*32+30))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 4*32+30))>>5)==(4) && (1UL<<((( 4*32+30))&31) & (0) )) || (((( 4*32+30))>>5)==(5) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(6) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(7) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(8) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(9) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(10) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(11) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(12) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(13) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(14) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(15) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(16) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(17) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(18) && (1UL<<((( 4*32+30))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 4*32+30), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p(( 4*32+30)) && ( (((( 4*32+30))>>5)==(0) && (1UL<<((( 4*32+30))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 4*32+30))>>5)==(1) && (1UL<<((( 4*32+30))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 4*32+30))>>5)==(2) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(3) && (1UL<<((( 4*32+30))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 4*32+30))>>5)==(4) && (1UL<<((( 4*32+30))&31) & (0) )) || (((( 4*32+30))>>5)==(5) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(6) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(7) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(8) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(9) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(10) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(11) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(12) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(13) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(14) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(15) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(16) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(17) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(18) && (1UL<<((( 4*32+30))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 4*32+30), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has(( 4*32+30)) ) ? rdrand_long(v) : false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool arch_get_random_int(unsigned int *v) { return ( __builtin_constant_p((__builtin_constant_p(( 4*32+30)) && ( (((( 4*32+30))>>5)==(0) && (1UL<<((( 4*32+30))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 4*32+30))>>5)==(1) && (1UL<<((( 4*32+30))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 4*32+30))>>5)==(2) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(3) && (1UL<<((( 4*32+30))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 4*32+30))>>5)==(4) && (1UL<<((( 4*32+30))&31) & (0) )) || (((( 4*32+30))>>5)==(5) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(6) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(7) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(8) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(9) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(10) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(11) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(12) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(13) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(14) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(15) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(16) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(17) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(18) && (1UL<<((( 4*32+30))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 4*32+30), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p(( 4*32+30)) && ( (((( 4*32+30))>>5)==(0) && (1UL<<((( 4*32+30))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 4*32+30))>>5)==(1) && (1UL<<((( 4*32+30))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 4*32+30))>>5)==(2) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(3) && (1UL<<((( 4*32+30))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 4*32+30))>>5)==(4) && (1UL<<((( 4*32+30))&31) & (0) )) || (((( 4*32+30))>>5)==(5) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(6) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(7) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(8) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(9) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(10) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(11) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(12) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(13) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(14) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(15) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(16) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(17) && (1UL<<((( 4*32+30))&31) & 0 )) || (((( 4*32+30))>>5)==(18) && (1UL<<((( 4*32+30))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 4*32+30), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has(( 4*32+30)) ) ? rdrand_int(v) : false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool arch_get_random_seed_long(unsigned long *v) { return ( __builtin_constant_p((__builtin_constant_p(( 9*32+18)) && ( (((( 9*32+18))>>5)==(0) && (1UL<<((( 9*32+18))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 9*32+18))>>5)==(1) && (1UL<<((( 9*32+18))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 9*32+18))>>5)==(2) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(3) && (1UL<<((( 9*32+18))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 9*32+18))>>5)==(4) && (1UL<<((( 9*32+18))&31) & (0) )) || (((( 9*32+18))>>5)==(5) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(6) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(7) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(8) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(9) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(10) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(11) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(12) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(13) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(14) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(15) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(16) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(17) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(18) && (1UL<<((( 9*32+18))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 9*32+18), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p(( 9*32+18)) && ( (((( 9*32+18))>>5)==(0) && (1UL<<((( 9*32+18))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 9*32+18))>>5)==(1) && (1UL<<((( 9*32+18))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 9*32+18))>>5)==(2) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(3) && (1UL<<((( 9*32+18))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 9*32+18))>>5)==(4) && (1UL<<((( 9*32+18))&31) & (0) )) || (((( 9*32+18))>>5)==(5) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(6) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(7) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(8) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(9) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(10) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(11) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(12) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(13) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(14) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(15) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(16) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(17) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(18) && (1UL<<((( 9*32+18))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 9*32+18), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has(( 9*32+18)) ) ? rdseed_long(v) : false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool arch_get_random_seed_int(unsigned int *v) { return ( __builtin_constant_p((__builtin_constant_p(( 9*32+18)) && ( (((( 9*32+18))>>5)==(0) && (1UL<<((( 9*32+18))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 9*32+18))>>5)==(1) && (1UL<<((( 9*32+18))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 9*32+18))>>5)==(2) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(3) && (1UL<<((( 9*32+18))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 9*32+18))>>5)==(4) && (1UL<<((( 9*32+18))&31) & (0) )) || (((( 9*32+18))>>5)==(5) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(6) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(7) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(8) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(9) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(10) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(11) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(12) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(13) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(14) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(15) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(16) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(17) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(18) && (1UL<<((( 9*32+18))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 9*32+18), (unsigned long *)((&boot_cpu_data)->x86_capability)))) ? (__builtin_constant_p(( 9*32+18)) && ( (((( 9*32+18))>>5)==(0) && (1UL<<((( 9*32+18))&31) & ((1<<(( 0*32+ 0) & 31))|0|(1<<(( 0*32+ 5) & 31))|(1<<(( 0*32+ 6) & 31))| (1<<(( 0*32+ 8) & 31))|0|(1<<(( 0*32+24) & 31))|(1<<(( 0*32+15) & 31))| (1<<(( 0*32+25) & 31))|(1<<(( 0*32+26) & 31))) )) || (((( 9*32+18))>>5)==(1) && (1UL<<((( 9*32+18))&31) & ((1<<(( 1*32+29) & 31))|0) )) || (((( 9*32+18))>>5)==(2) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(3) && (1UL<<((( 9*32+18))&31) & ((1<<(( 3*32+20) & 31))) )) || (((( 9*32+18))>>5)==(4) && (1UL<<((( 9*32+18))&31) & (0) )) || (((( 9*32+18))>>5)==(5) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(6) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(7) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(8) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(9) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(10) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(11) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(12) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(13) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(14) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(15) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(16) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(17) && (1UL<<((( 9*32+18))&31) & 0 )) || (((( 9*32+18))>>5)==(18) && (1UL<<((( 9*32+18))&31) & 0 )) || (sizeof(struct { int:(-!!(19 != 19)); })) || (sizeof(struct { int:(-!!(19 != 19)); }))) ? 1 : test_bit(( 9*32+18), (unsigned long *)((&boot_cpu_data)->x86_capability))) : _static_cpu_has(( 9*32+18)) ) ? rdseed_int(v) : false; } extern void x86_init_rdrand(struct cpuinfo_x86 *c); # 168 "../include/linux/random.h" 2 # 196 "../include/linux/random.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 next_pseudo_random32(u32 seed) { return seed * 1664525 + 1013904223; } # 19 "../include/linux/net.h" 2 # 1 "../include/uapi/linux/net.h" 1 # 23 "../include/uapi/linux/net.h" # 1 "./arch/x86/include/generated/uapi/asm/socket.h" 1 # 24 "../include/uapi/linux/net.h" 2 # 48 "../include/uapi/linux/net.h" typedef enum { SS_FREE = 0, SS_UNCONNECTED, SS_CONNECTING, SS_CONNECTED, SS_DISCONNECTING } socket_state; # 26 "../include/linux/net.h" 2 struct poll_table_struct; struct pipe_inode_info; struct inode; struct file; struct net; # 59 "../include/linux/net.h" enum sock_type { SOCK_STREAM = 1, SOCK_DGRAM = 2, SOCK_RAW = 3, SOCK_RDM = 4, SOCK_SEQPACKET = 5, SOCK_DCCP = 6, SOCK_PACKET = 10, }; # 88 "../include/linux/net.h" enum sock_shutdown_cmd { SHUT_RD, SHUT_WR, SHUT_RDWR, }; struct socket_wq { wait_queue_head_t wait; struct fasync_struct *fasync_list; unsigned long flags; struct callback_head rcu; } __attribute__((__aligned__((1 << (6))))); # 112 "../include/linux/net.h" struct socket { socket_state state; short type; unsigned long flags; struct socket_wq *wq; struct file *file; struct sock *sk; const struct proto_ops *ops; }; struct vm_area_struct; struct page; struct sockaddr; struct msghdr; struct module; struct sk_buff; typedef int (*sk_read_actor_t)(read_descriptor_t *, struct sk_buff *, unsigned int, size_t); struct proto_ops { int family; struct module *owner; int (*release) (struct socket *sock); int (*bind) (struct socket *sock, struct sockaddr *myaddr, int sockaddr_len); int (*connect) (struct socket *sock, struct sockaddr *vaddr, int sockaddr_len, int flags); int (*socketpair)(struct socket *sock1, struct socket *sock2); int (*accept) (struct socket *sock, struct socket *newsock, int flags, bool kern); int (*getname) (struct socket *sock, struct sockaddr *addr, int peer); __poll_t (*poll) (struct file *file, struct socket *sock, struct poll_table_struct *wait); int (*ioctl) (struct socket *sock, unsigned int cmd, unsigned long arg); int (*compat_ioctl) (struct socket *sock, unsigned int cmd, unsigned long arg); int (*gettstamp) (struct socket *sock, void *userstamp, bool timeval, bool time32); int (*listen) (struct socket *sock, int len); int (*shutdown) (struct socket *sock, int flags); int (*setsockopt)(struct socket *sock, int level, int optname, char *optval, unsigned int optlen); int (*getsockopt)(struct socket *sock, int level, int optname, char *optval, int *optlen); int (*compat_setsockopt)(struct socket *sock, int level, int optname, char *optval, unsigned int optlen); int (*compat_getsockopt)(struct socket *sock, int level, int optname, char *optval, int *optlen); int (*sendmsg) (struct socket *sock, struct msghdr *m, size_t total_len); # 184 "../include/linux/net.h" int (*recvmsg) (struct socket *sock, struct msghdr *m, size_t total_len, int flags); int (*mmap) (struct file *file, struct socket *sock, struct vm_area_struct * vma); ssize_t (*sendpage) (struct socket *sock, struct page *page, int offset, size_t size, int flags); ssize_t (*splice_read)(struct socket *sock, loff_t *ppos, struct pipe_inode_info *pipe, size_t len, unsigned int flags); int (*set_peek_off)(struct sock *sk, int val); int (*peek_len)(struct socket *sock); int (*read_sock)(struct sock *sk, read_descriptor_t *desc, sk_read_actor_t recv_actor); int (*sendpage_locked)(struct sock *sk, struct page *page, int offset, size_t size, int flags); int (*sendmsg_locked)(struct sock *sk, struct msghdr *msg, size_t size); int (*set_rcvlowat)(struct sock *sk, int val); }; struct net_proto_family { int family; int (*create)(struct net *net, struct socket *sock, int protocol, int kern); struct module *owner; }; struct iovec; struct kvec; enum { SOCK_WAKE_IO, SOCK_WAKE_WAITD, SOCK_WAKE_SPACE, SOCK_WAKE_URG, }; int sock_wake_async(struct socket_wq *sk_wq, int how, int band); int sock_register(const struct net_proto_family *fam); void sock_unregister(int family); bool sock_is_registered(int family); int __sock_create(struct net *net, int family, int type, int proto, struct socket **res, int kern); int sock_create(int family, int type, int proto, struct socket **res); int sock_create_kern(struct net *net, int family, int type, int proto, struct socket **res); int sock_create_lite(int family, int type, int proto, struct socket **res); struct socket *sock_alloc(void); void sock_release(struct socket *sock); int sock_sendmsg(struct socket *sock, struct msghdr *msg); int sock_recvmsg(struct socket *sock, struct msghdr *msg, int flags); struct file *sock_alloc_file(struct socket *sock, int flags, const char *dname); struct socket *sockfd_lookup(int fd, int *err); struct socket *sock_from_file(struct file *file, int *err); int net_ratelimit(void); # 291 "../include/linux/net.h" int kernel_sendmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec, size_t num, size_t len); int kernel_sendmsg_locked(struct sock *sk, struct msghdr *msg, struct kvec *vec, size_t num, size_t len); int kernel_recvmsg(struct socket *sock, struct msghdr *msg, struct kvec *vec, size_t num, size_t len, int flags); int kernel_bind(struct socket *sock, struct sockaddr *addr, int addrlen); int kernel_listen(struct socket *sock, int backlog); int kernel_accept(struct socket *sock, struct socket **newsock, int flags); int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen, int flags); int kernel_getsockname(struct socket *sock, struct sockaddr *addr); int kernel_getpeername(struct socket *sock, struct sockaddr *addr); int kernel_getsockopt(struct socket *sock, int level, int optname, char *optval, int *optlen); int kernel_setsockopt(struct socket *sock, int level, int optname, char *optval, unsigned int optlen); int kernel_sendpage(struct socket *sock, struct page *page, int offset, size_t size, int flags); int kernel_sendpage_locked(struct sock *sk, struct page *page, int offset, size_t size, int flags); int kernel_sock_shutdown(struct socket *sock, enum sock_shutdown_cmd how); u32 kernel_sock_ip_overhead(struct sock *sk); # 26 "../include/linux/skbuff.h" 2 # 1 "../include/linux/textsearch.h" 1 # 11 "../include/linux/textsearch.h" struct module; struct ts_config; # 23 "../include/linux/textsearch.h" struct ts_state { unsigned int offset; char cb[40]; }; # 39 "../include/linux/textsearch.h" struct ts_ops { const char *name; struct ts_config * (*init)(const void *, unsigned int, gfp_t, int); unsigned int (*find)(struct ts_config *, struct ts_state *); void (*destroy)(struct ts_config *); void * (*get_pattern)(struct ts_config *); unsigned int (*get_pattern_len)(struct ts_config *); struct module *owner; struct list_head list; }; # 59 "../include/linux/textsearch.h" struct ts_config { struct ts_ops *ops; int flags; # 76 "../include/linux/textsearch.h" unsigned int (*get_next_block)(unsigned int consumed, const u8 **dst, struct ts_config *conf, struct ts_state *state); # 89 "../include/linux/textsearch.h" void (*finish)(struct ts_config *conf, struct ts_state *state); }; # 105 "../include/linux/textsearch.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int textsearch_next(struct ts_config *conf, struct ts_state *state) { unsigned int ret = conf->ops->find(conf, state); if (conf->finish) conf->finish(conf, state); return ret; } # 124 "../include/linux/textsearch.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int textsearch_find(struct ts_config *conf, struct ts_state *state) { state->offset = 0; return textsearch_next(conf, state); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *textsearch_get_pattern(struct ts_config *conf) { return conf->ops->get_pattern(conf); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int textsearch_get_pattern_len(struct ts_config *conf) { return conf->ops->get_pattern_len(conf); } extern int textsearch_register(struct ts_ops *); extern int textsearch_unregister(struct ts_ops *); extern struct ts_config *textsearch_prepare(const char *, const void *, unsigned int, gfp_t, int); extern void textsearch_destroy(struct ts_config *conf); extern unsigned int textsearch_find_continuous(struct ts_config *, struct ts_state *, const void *, unsigned int); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct ts_config *alloc_ts_config(size_t payload, gfp_t gfp_mask) { struct ts_config *conf; conf = kzalloc((((sizeof(*conf)) + 8 -1) & ~(8 -1)) + payload, gfp_mask); if (conf == ((void *)0)) return ERR_PTR(-12); return conf; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *ts_config_priv(struct ts_config *conf) { return ((u8 *) conf + (((sizeof(struct ts_config)) + 8 -1) & ~(8 -1))); } # 27 "../include/linux/skbuff.h" 2 # 1 "../include/net/checksum.h" 1 # 22 "../include/net/checksum.h" # 1 "../arch/x86/include/asm/checksum.h" 1 # 1 "../arch/x86/include/asm/checksum_64.h" 1 # 23 "../arch/x86/include/asm/checksum_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __sum16 csum_fold(__wsum sum) { asm(" addl %1,%0\n" " adcl $0xffff,%0" : "=r" (sum) : "r" (( u32)sum << 16), "0" (( u32)sum & 0xffff0000)); return ( __sum16)(~( u32)sum >> 16); } # 46 "../arch/x86/include/asm/checksum_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __sum16 ip_fast_csum(const void *iph, unsigned int ihl) { unsigned int sum; asm(" movl (%1), %0\n" " subl $4, %2\n" " jbe 2f\n" " addl 4(%1), %0\n" " adcl 8(%1), %0\n" " adcl 12(%1), %0\n" "1: adcl 16(%1), %0\n" " lea 4(%1), %1\n" " decl %2\n" " jne 1b\n" " adcl $0, %0\n" " movl %0, %2\n" " shrl $16, %0\n" " addw %w2, %w0\n" " adcl $0, %0\n" " notl %0\n" "2:" : "=r" (sum), "=r" (iph), "=r" (ihl) : "1" (iph), "2" (ihl) : "memory"); return ( __sum16)sum; } # 87 "../arch/x86/include/asm/checksum_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, __u32 len, __u8 proto, __wsum sum) { asm(" addl %1, %0\n" " adcl %2, %0\n" " adcl %3, %0\n" " adcl $0, %0\n" : "=r" (sum) : "g" (daddr), "g" (saddr), "g" ((len + proto)<<8), "0" (sum)); return sum; } # 113 "../arch/x86/include/asm/checksum_64.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr, __u32 len, __u8 proto, __wsum sum) { return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum)); } # 130 "../arch/x86/include/asm/checksum_64.h" extern __wsum csum_partial(const void *buff, int len, __wsum sum); extern __wsum csum_partial_copy_generic(const void *src, const void *dst, int len, __wsum sum, int *src_err_ptr, int *dst_err_ptr); extern __wsum csum_partial_copy_from_user(const void *src, void *dst, int len, __wsum isum, int *errp); extern __wsum csum_partial_copy_to_user(const void *src, void *dst, int len, __wsum isum, int *errp); extern __wsum csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum); # 161 "../arch/x86/include/asm/checksum_64.h" extern __sum16 ip_compute_csum(const void *buff, int len); # 176 "../arch/x86/include/asm/checksum_64.h" struct in6_addr; extern __sum16 csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __u32 len, __u8 proto, __wsum sum); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned add32_with_carry(unsigned a, unsigned b) { asm("addl %2,%0\n\t" "adcl $0,%0" : "=r" (a) : "0" (a), "rm" (b)); return a; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __wsum csum_add(__wsum csum, __wsum addend) { return ( __wsum)add32_with_carry(( unsigned)csum, ( unsigned)addend); } # 6 "../arch/x86/include/asm/checksum.h" 2 # 23 "../include/net/checksum.h" 2 # 65 "../include/net/checksum.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __wsum csum_sub(__wsum csum, __wsum addend) { return csum_add(csum, ~addend); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __sum16 csum16_add(__sum16 csum, __be16 addend) { u16 res = ( u16)csum; res += ( u16)addend; return ( __sum16)(res + (res < ( u16)addend)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __sum16 csum16_sub(__sum16 csum, __be16 addend) { return csum16_add(csum, ~addend); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __wsum csum_block_add(__wsum csum, __wsum csum2, int offset) { u32 sum = ( u32)csum2; if (offset & 1) sum = ror32(sum, 8); return csum_add(csum, ( __wsum)sum); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __wsum csum_block_add_ext(__wsum csum, __wsum csum2, int offset, int len) { return csum_block_add(csum, csum2, offset); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __wsum csum_block_sub(__wsum csum, __wsum csum2, int offset) { return csum_block_add(csum, ~csum2, offset); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __wsum csum_unfold(__sum16 n) { return ( __wsum)n; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __wsum csum_partial_ext(const void *buff, int len, __wsum sum) { return csum_partial(buff, len, sum); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void csum_replace_by_diff(__sum16 *sum, __wsum diff) { *sum = csum_fold(csum_add(diff, ~csum_unfold(*sum))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void csum_replace4(__sum16 *sum, __be32 from, __be32 to) { __wsum tmp = csum_sub(~csum_unfold(*sum), ( __wsum)from); *sum = csum_fold(csum_add(tmp, ( __wsum)to)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void csum_replace2(__sum16 *sum, __be16 old, __be16 new) { *sum = ~csum16_add(csum16_sub(~(*sum), old), new); } struct sk_buff; void inet_proto_csum_replace4(__sum16 *sum, struct sk_buff *skb, __be32 from, __be32 to, bool pseudohdr); void inet_proto_csum_replace16(__sum16 *sum, struct sk_buff *skb, const __be32 *from, const __be32 *to, bool pseudohdr); void inet_proto_csum_replace_by_diff(__sum16 *sum, struct sk_buff *skb, __wsum diff, bool pseudohdr); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inet_proto_csum_replace2(__sum16 *sum, struct sk_buff *skb, __be16 from, __be16 to, bool pseudohdr) { inet_proto_csum_replace4(sum, skb, ( __be32)from, ( __be32)to, pseudohdr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __wsum remcsum_adjust(void *ptr, __wsum csum, int start, int offset) { __sum16 *psum = (__sum16 *)(ptr + offset); __wsum delta; csum = csum_sub(csum, csum_partial(ptr, start, 0)); delta = csum_sub(( __wsum)csum_fold(csum), ( __wsum)*psum); *psum = csum_fold(csum); return delta; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void remcsum_unadjust(__sum16 *psum, __wsum delta) { *psum = csum_fold(csum_sub(delta, ( __wsum)*psum)); } # 28 "../include/linux/skbuff.h" 2 # 1 "../include/linux/dma-mapping.h" 1 # 1 "../include/linux/dma-debug.h" 1 # 13 "../include/linux/dma-debug.h" struct device; struct scatterlist; struct bus_type; extern void dma_debug_add_bus(struct bus_type *bus); extern void debug_dma_map_single(struct device *dev, const void *addr, unsigned long len); extern void debug_dma_map_page(struct device *dev, struct page *page, size_t offset, size_t size, int direction, dma_addr_t dma_addr); extern void debug_dma_mapping_error(struct device *dev, dma_addr_t dma_addr); extern void debug_dma_unmap_page(struct device *dev, dma_addr_t addr, size_t size, int direction); extern void debug_dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, int mapped_ents, int direction); extern void debug_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, int nelems, int dir); extern void debug_dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t dma_addr, void *virt); extern void debug_dma_free_coherent(struct device *dev, size_t size, void *virt, dma_addr_t addr); extern void debug_dma_map_resource(struct device *dev, phys_addr_t addr, size_t size, int direction, dma_addr_t dma_addr); extern void debug_dma_unmap_resource(struct device *dev, dma_addr_t dma_addr, size_t size, int direction); extern void debug_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, size_t size, int direction); extern void debug_dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, size_t size, int direction); extern void debug_dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems, int direction); extern void debug_dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems, int direction); extern void debug_dma_dump_mappings(struct device *dev); extern void debug_dma_assert_idle(struct page *page); # 10 "../include/linux/dma-mapping.h" 2 # 1 "../include/linux/dma-direction.h" 1 enum dma_data_direction { DMA_BIDIRECTIONAL = 0, DMA_TO_DEVICE = 1, DMA_FROM_DEVICE = 2, DMA_NONE = 3, }; # 11 "../include/linux/dma-mapping.h" 2 # 79 "../include/linux/dma-mapping.h" struct dma_map_ops { void* (*alloc)(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp, unsigned long attrs); void (*free)(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle, unsigned long attrs); int (*mmap)(struct device *, struct vm_area_struct *, void *, dma_addr_t, size_t, unsigned long attrs); int (*get_sgtable)(struct device *dev, struct sg_table *sgt, void *, dma_addr_t, size_t, unsigned long attrs); dma_addr_t (*map_page)(struct device *dev, struct page *page, unsigned long offset, size_t size, enum dma_data_direction dir, unsigned long attrs); void (*unmap_page)(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction dir, unsigned long attrs); int (*map_sg)(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, unsigned long attrs); void (*unmap_sg)(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, unsigned long attrs); dma_addr_t (*map_resource)(struct device *dev, phys_addr_t phys_addr, size_t size, enum dma_data_direction dir, unsigned long attrs); void (*unmap_resource)(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction dir, unsigned long attrs); void (*sync_single_for_cpu)(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction dir); void (*sync_single_for_device)(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction dir); void (*sync_sg_for_cpu)(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir); void (*sync_sg_for_device)(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir); void (*cache_sync)(struct device *dev, void *vaddr, size_t size, enum dma_data_direction direction); int (*dma_supported)(struct device *dev, u64 mask); u64 (*get_required_mask)(struct device *dev); size_t (*max_mapping_size)(struct device *dev); }; extern const struct dma_map_ops dma_virt_ops; extern const struct dma_map_ops dma_dummy_ops; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int valid_dma_direction(int dma_direction) { return ((dma_direction == DMA_BIDIRECTIONAL) || (dma_direction == DMA_TO_DEVICE) || (dma_direction == DMA_FROM_DEVICE)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int is_device_dma_capable(struct device *dev) { return dev->dma_mask != ((void *)0) && *dev->dma_mask != 0x0ULL; } int dma_alloc_from_dev_coherent(struct device *dev, ssize_t size, dma_addr_t *dma_handle, void **ret); int dma_release_from_dev_coherent(struct device *dev, int order, void *vaddr); int dma_mmap_from_dev_coherent(struct device *dev, struct vm_area_struct *vma, void *cpu_addr, size_t size, int *ret); void *dma_alloc_from_global_coherent(ssize_t size, dma_addr_t *dma_handle); int dma_release_from_global_coherent(int order, void *vaddr); int dma_mmap_from_global_coherent(struct vm_area_struct *vma, void *cpu_addr, size_t size, int *ret); # 198 "../include/linux/dma-mapping.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool dma_is_direct(const struct dma_map_ops *ops) { return __builtin_expect(!!(!ops), 1); } dma_addr_t dma_direct_map_page(struct device *dev, struct page *page, unsigned long offset, size_t size, enum dma_data_direction dir, unsigned long attrs); int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, int nents, enum dma_data_direction dir, unsigned long attrs); dma_addr_t dma_direct_map_resource(struct device *dev, phys_addr_t paddr, size_t size, enum dma_data_direction dir, unsigned long attrs); void dma_direct_sync_single_for_device(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir); void dma_direct_sync_sg_for_device(struct device *dev, struct scatterlist *sgl, int nents, enum dma_data_direction dir); # 235 "../include/linux/dma-mapping.h" void dma_direct_unmap_page(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir, unsigned long attrs); void dma_direct_unmap_sg(struct device *dev, struct scatterlist *sgl, int nents, enum dma_data_direction dir, unsigned long attrs); void dma_direct_sync_single_for_cpu(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir); void dma_direct_sync_sg_for_cpu(struct device *dev, struct scatterlist *sgl, int nents, enum dma_data_direction dir); # 263 "../include/linux/dma-mapping.h" size_t dma_direct_max_mapping_size(struct device *dev); # 1 "../arch/x86/include/asm/dma-mapping.h" 1 # 13 "../arch/x86/include/asm/dma-mapping.h" # 1 "../arch/x86/include/asm/swiotlb.h" 1 # 1 "../include/linux/swiotlb.h" 1 struct device; struct page; struct scatterlist; enum swiotlb_force { SWIOTLB_NORMAL, SWIOTLB_FORCE, SWIOTLB_NO_FORCE, }; # 32 "../include/linux/swiotlb.h" extern void swiotlb_init(int verbose); int swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose); extern unsigned long swiotlb_nr_tbl(void); unsigned long swiotlb_size_or_default(void); extern int swiotlb_late_init_with_tbl(char *tlb, unsigned long nslabs); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) swiotlb_update_mem_attributes(void); enum dma_sync_target { SYNC_FOR_CPU = 0, SYNC_FOR_DEVICE = 1, }; extern phys_addr_t swiotlb_tbl_map_single(struct device *hwdev, dma_addr_t tbl_dma_addr, phys_addr_t phys, size_t size, enum dma_data_direction dir, unsigned long attrs); extern void swiotlb_tbl_unmap_single(struct device *hwdev, phys_addr_t tlb_addr, size_t size, enum dma_data_direction dir, unsigned long attrs); extern void swiotlb_tbl_sync_single(struct device *hwdev, phys_addr_t tlb_addr, size_t size, enum dma_data_direction dir, enum dma_sync_target target); extern enum swiotlb_force swiotlb_force; extern phys_addr_t io_tlb_start, io_tlb_end; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_swiotlb_buffer(phys_addr_t paddr) { return paddr >= io_tlb_start && paddr < io_tlb_end; } bool swiotlb_map(struct device *dev, phys_addr_t *phys, dma_addr_t *dma_addr, size_t size, enum dma_data_direction dir, unsigned long attrs); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) swiotlb_exit(void); unsigned int swiotlb_max_segment(void); size_t swiotlb_max_mapping_size(struct device *dev); bool is_swiotlb_active(void); # 108 "../include/linux/swiotlb.h" extern void swiotlb_print_info(void); extern void swiotlb_set_max_segment(unsigned int); # 6 "../arch/x86/include/asm/swiotlb.h" 2 extern int swiotlb; extern int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) pci_swiotlb_detect_override(void); extern int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) pci_swiotlb_detect_4gb(void); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) pci_swiotlb_init(void); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) pci_swiotlb_late_init(void); # 14 "../arch/x86/include/asm/dma-mapping.h" 2 # 1 "../include/linux/dma-contiguous.h" 1 # 55 "../include/linux/dma-contiguous.h" struct cma; struct page; extern struct cma *dma_contiguous_default_area; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cma *dev_get_cma_area(struct device *dev) { if (dev && dev->cma_area) return dev->cma_area; return dma_contiguous_default_area; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_set_cma_area(struct device *dev, struct cma *cma) { if (dev) dev->cma_area = cma; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dma_contiguous_set_default(struct cma *cma) { dma_contiguous_default_area = cma; } void dma_contiguous_reserve(phys_addr_t addr_limit); int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) dma_contiguous_reserve_area(phys_addr_t size, phys_addr_t base, phys_addr_t limit, struct cma **res_cma, bool fixed); # 99 "../include/linux/dma-contiguous.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dma_declare_contiguous(struct device *dev, phys_addr_t size, phys_addr_t base, phys_addr_t limit) { struct cma *cma; int ret; ret = dma_contiguous_reserve_area(size, base, limit, &cma, true); if (ret == 0) dev_set_cma_area(dev, cma); return ret; } struct page *dma_alloc_from_contiguous(struct device *dev, size_t count, unsigned int order, bool no_warn); bool dma_release_from_contiguous(struct device *dev, struct page *pages, int count); struct page *dma_alloc_contiguous(struct device *dev, size_t size, gfp_t gfp); void dma_free_contiguous(struct device *dev, struct page *page, size_t size); # 15 "../arch/x86/include/asm/dma-mapping.h" 2 extern int iommu_merge; extern int panic_on_overflow; extern const struct dma_map_ops *dma_ops; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus) { return dma_ops; } # 267 "../include/linux/dma-mapping.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct dma_map_ops *get_dma_ops(struct device *dev) { if (dev->dma_ops) return dev->dma_ops; return get_arch_dma_ops(dev->bus); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_dma_ops(struct device *dev, const struct dma_map_ops *dma_ops) { dev->dma_ops = dma_ops; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) dma_addr_t dma_map_page_attrs(struct device *dev, struct page *page, size_t offset, size_t size, enum dma_data_direction dir, unsigned long attrs) { const struct dma_map_ops *ops = get_dma_ops(dev); dma_addr_t addr; do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/dma-mapping.h"), "i" (288), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (386)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (dma_is_direct(ops)) addr = dma_direct_map_page(dev, page, offset, size, dir, attrs); else addr = ops->map_page(dev, page, offset, size, dir, attrs); debug_dma_map_page(dev, page, offset, size, dir, addr); return addr; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dma_unmap_page_attrs(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir, unsigned long attrs) { const struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/dma-mapping.h"), "i" (303), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (387)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (dma_is_direct(ops)) dma_direct_unmap_page(dev, addr, size, dir, attrs); else if (ops->unmap_page) ops->unmap_page(dev, addr, size, dir, attrs); debug_dma_unmap_page(dev, addr, size, dir); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dma_map_sg_attrs(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, unsigned long attrs) { const struct dma_map_ops *ops = get_dma_ops(dev); int ents; do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/dma-mapping.h"), "i" (322), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (388)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (dma_is_direct(ops)) ents = dma_direct_map_sg(dev, sg, nents, dir, attrs); else ents = ops->map_sg(dev, sg, nents, dir, attrs); do { if (__builtin_expect(!!(ents < 0), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/dma-mapping.h"), "i" (327), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (389)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); debug_dma_map_sg(dev, sg, nents, ents, dir); return ents; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, unsigned long attrs) { const struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/dma-mapping.h"), "i" (339), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (390)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); debug_dma_unmap_sg(dev, sg, nents, dir); if (dma_is_direct(ops)) dma_direct_unmap_sg(dev, sg, nents, dir, attrs); else if (ops->unmap_sg) ops->unmap_sg(dev, sg, nents, dir, attrs); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) dma_addr_t dma_map_resource(struct device *dev, phys_addr_t phys_addr, size_t size, enum dma_data_direction dir, unsigned long attrs) { const struct dma_map_ops *ops = get_dma_ops(dev); dma_addr_t addr = (~(dma_addr_t)0); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/dma-mapping.h"), "i" (356), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (391)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (({ int __ret_warn_on = !!(pfn_valid(((unsigned long)((phys_addr) >> 12)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/dma-mapping.h"), "i" (359), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (392)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return (~(dma_addr_t)0); if (dma_is_direct(ops)) addr = dma_direct_map_resource(dev, phys_addr, size, dir, attrs); else if (ops->map_resource) addr = ops->map_resource(dev, phys_addr, size, dir, attrs); debug_dma_map_resource(dev, phys_addr, size, dir, addr); return addr; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dma_unmap_resource(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir, unsigned long attrs) { const struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/dma-mapping.h"), "i" (377), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (393)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (!dma_is_direct(ops) && ops->unmap_resource) ops->unmap_resource(dev, addr, size, dir, attrs); debug_dma_unmap_resource(dev, addr, size, dir); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dma_sync_single_for_cpu(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir) { const struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/dma-mapping.h"), "i" (389), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (394)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (dma_is_direct(ops)) dma_direct_sync_single_for_cpu(dev, addr, size, dir); else if (ops->sync_single_for_cpu) ops->sync_single_for_cpu(dev, addr, size, dir); debug_dma_sync_single_for_cpu(dev, addr, size, dir); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dma_sync_single_for_device(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir) { const struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/dma-mapping.h"), "i" (403), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (395)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (dma_is_direct(ops)) dma_direct_sync_single_for_device(dev, addr, size, dir); else if (ops->sync_single_for_device) ops->sync_single_for_device(dev, addr, size, dir); debug_dma_sync_single_for_device(dev, addr, size, dir); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems, enum dma_data_direction dir) { const struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/dma-mapping.h"), "i" (417), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (396)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (dma_is_direct(ops)) dma_direct_sync_sg_for_cpu(dev, sg, nelems, dir); else if (ops->sync_sg_for_cpu) ops->sync_sg_for_cpu(dev, sg, nelems, dir); debug_dma_sync_sg_for_cpu(dev, sg, nelems, dir); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nelems, enum dma_data_direction dir) { const struct dma_map_ops *ops = get_dma_ops(dev); do { if (__builtin_expect(!!(!valid_dma_direction(dir)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/dma-mapping.h"), "i" (431), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (397)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (dma_is_direct(ops)) dma_direct_sync_sg_for_device(dev, sg, nelems, dir); else if (ops->sync_sg_for_device) ops->sync_sg_for_device(dev, sg, nelems, dir); debug_dma_sync_sg_for_device(dev, sg, nelems, dir); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) { debug_dma_mapping_error(dev, dma_addr); if (dma_addr == (~(dma_addr_t)0)) return -12; return 0; } void *dma_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag, unsigned long attrs); void dma_free_attrs(struct device *dev, size_t size, void *cpu_addr, dma_addr_t dma_handle, unsigned long attrs); void *dmam_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp, unsigned long attrs); void dmam_free_coherent(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle); void dma_cache_sync(struct device *dev, void *vaddr, size_t size, enum dma_data_direction dir); int dma_get_sgtable_attrs(struct device *dev, struct sg_table *sgt, void *cpu_addr, dma_addr_t dma_addr, size_t size, unsigned long attrs); int dma_mmap_attrs(struct device *dev, struct vm_area_struct *vma, void *cpu_addr, dma_addr_t dma_addr, size_t size, unsigned long attrs); int dma_supported(struct device *dev, u64 mask); int dma_set_mask(struct device *dev, u64 mask); int dma_set_coherent_mask(struct device *dev, u64 mask); u64 dma_get_required_mask(struct device *dev); size_t dma_max_mapping_size(struct device *dev); # 577 "../include/linux/dma-mapping.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) dma_addr_t dma_map_single_attrs(struct device *dev, void *ptr, size_t size, enum dma_data_direction dir, unsigned long attrs) { debug_dma_map_single(dev, ptr, size); return dma_map_page_attrs(dev, (((struct page *)vmemmap_base) + (__phys_addr((unsigned long)(ptr)) >> 12)), ((unsigned long)(ptr) & ~(~(((1UL) << 12)-1))), size, dir, attrs); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dma_unmap_single_attrs(struct device *dev, dma_addr_t addr, size_t size, enum dma_data_direction dir, unsigned long attrs) { return dma_unmap_page_attrs(dev, addr, size, dir, attrs); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t addr, unsigned long offset, size_t size, enum dma_data_direction dir) { return dma_sync_single_for_cpu(dev, addr + offset, size, dir); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dma_sync_single_range_for_device(struct device *dev, dma_addr_t addr, unsigned long offset, size_t size, enum dma_data_direction dir) { return dma_sync_single_for_device(dev, addr + offset, size, dir); } # 614 "../include/linux/dma-mapping.h" extern int dma_common_mmap(struct device *dev, struct vm_area_struct *vma, void *cpu_addr, dma_addr_t dma_addr, size_t size, unsigned long attrs); void *dma_common_contiguous_remap(struct page *page, size_t size, unsigned long vm_flags, pgprot_t prot, const void *caller); void *dma_common_pages_remap(struct page **pages, size_t size, unsigned long vm_flags, pgprot_t prot, const void *caller); void dma_common_free_remap(void *cpu_addr, size_t size, unsigned long vm_flags); int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) dma_atomic_pool_init(gfp_t gfp, pgprot_t prot); bool dma_in_atomic_pool(void *start, size_t size); void *dma_alloc_from_pool(size_t size, struct page **ret_page, gfp_t flags); bool dma_free_from_pool(void *start, size_t size); int dma_common_get_sgtable(struct device *dev, struct sg_table *sgt, void *cpu_addr, dma_addr_t dma_addr, size_t size, unsigned long attrs); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp) { return dma_alloc_attrs(dev, size, dma_handle, gfp, (gfp & (( gfp_t)0x2000u)) ? (1UL << 8) : 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr_t dma_handle) { return dma_free_attrs(dev, size, cpu_addr, dma_handle, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 dma_get_mask(struct device *dev) { if (dev->dma_mask && *dev->dma_mask) return *dev->dma_mask; return (((32) == 64) ? ~0ULL : ((1ULL<<(32))-1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dma_set_mask_and_coherent(struct device *dev, u64 mask) { int rc = dma_set_mask(dev, mask); if (rc == 0) dma_set_coherent_mask(dev, mask); return rc; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dma_coerce_mask_and_coherent(struct device *dev, u64 mask) { dev->dma_mask = &dev->coherent_dma_mask; return dma_set_mask_and_coherent(dev, mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, const struct iommu_ops *iommu, bool coherent) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_teardown_dma_ops(struct device *dev) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int dma_get_max_seg_size(struct device *dev) { if (dev->dma_parms && dev->dma_parms->max_segment_size) return dev->dma_parms->max_segment_size; return 0x00010000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dma_set_max_seg_size(struct device *dev, unsigned int size) { if (dev->dma_parms) { dev->dma_parms->max_segment_size = size; return 0; } return -5; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long dma_get_seg_boundary(struct device *dev) { if (dev->dma_parms && dev->dma_parms->segment_boundary_mask) return dev->dma_parms->segment_boundary_mask; return (((32) == 64) ? ~0ULL : ((1ULL<<(32))-1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dma_set_seg_boundary(struct device *dev, unsigned long mask) { if (dev->dma_parms) { dev->dma_parms->segment_boundary_mask = mask; return 0; } return -5; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long dma_max_pfn(struct device *dev) { return (*dev->dma_mask >> 12) + dev->dma_pfn_offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dma_get_cache_alignment(void) { return 1; } int dma_declare_coherent_memory(struct device *dev, phys_addr_t phys_addr, dma_addr_t device_addr, size_t size); void dma_release_declared_memory(struct device *dev); # 765 "../include/linux/dma-mapping.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *dmam_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp) { return dmam_alloc_attrs(dev, size, dma_handle, gfp, (gfp & (( gfp_t)0x2000u)) ? (1UL << 8) : 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *dma_alloc_wc(struct device *dev, size_t size, dma_addr_t *dma_addr, gfp_t gfp) { unsigned long attrs = (1UL << 2); if (gfp & (( gfp_t)0x2000u)) attrs |= (1UL << 8); return dma_alloc_attrs(dev, size, dma_addr, gfp, attrs); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dma_free_wc(struct device *dev, size_t size, void *cpu_addr, dma_addr_t dma_addr) { return dma_free_attrs(dev, size, cpu_addr, dma_addr, (1UL << 2)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dma_mmap_wc(struct device *dev, struct vm_area_struct *vma, void *cpu_addr, dma_addr_t dma_addr, size_t size) { return dma_mmap_attrs(dev, vma, cpu_addr, dma_addr, size, (1UL << 2)); } # 31 "../include/linux/skbuff.h" 2 # 1 "../include/linux/netdev_features.h" 1 # 12 "../include/linux/netdev_features.h" typedef u64 netdev_features_t; enum { NETIF_F_SG_BIT, NETIF_F_IP_CSUM_BIT, __UNUSED_NETIF_F_1, NETIF_F_HW_CSUM_BIT, NETIF_F_IPV6_CSUM_BIT, NETIF_F_HIGHDMA_BIT, NETIF_F_FRAGLIST_BIT, NETIF_F_HW_VLAN_CTAG_TX_BIT, NETIF_F_HW_VLAN_CTAG_RX_BIT, NETIF_F_HW_VLAN_CTAG_FILTER_BIT, NETIF_F_VLAN_CHALLENGED_BIT, NETIF_F_GSO_BIT, NETIF_F_LLTX_BIT, NETIF_F_NETNS_LOCAL_BIT, NETIF_F_GRO_BIT, NETIF_F_LRO_BIT, NETIF_F_GSO_SHIFT, NETIF_F_TSO_BIT = NETIF_F_GSO_SHIFT, NETIF_F_GSO_ROBUST_BIT, NETIF_F_TSO_ECN_BIT, NETIF_F_TSO_MANGLEID_BIT, NETIF_F_TSO6_BIT, NETIF_F_FSO_BIT, NETIF_F_GSO_GRE_BIT, NETIF_F_GSO_GRE_CSUM_BIT, NETIF_F_GSO_IPXIP4_BIT, NETIF_F_GSO_IPXIP6_BIT, NETIF_F_GSO_UDP_TUNNEL_BIT, NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT, NETIF_F_GSO_PARTIAL_BIT, NETIF_F_GSO_TUNNEL_REMCSUM_BIT, NETIF_F_GSO_SCTP_BIT, NETIF_F_GSO_ESP_BIT, NETIF_F_GSO_UDP_BIT, NETIF_F_GSO_UDP_L4_BIT, NETIF_F_GSO_LAST = NETIF_F_GSO_UDP_L4_BIT, NETIF_F_FCOE_CRC_BIT, NETIF_F_SCTP_CRC_BIT, NETIF_F_FCOE_MTU_BIT, NETIF_F_NTUPLE_BIT, NETIF_F_RXHASH_BIT, NETIF_F_RXCSUM_BIT, NETIF_F_NOCACHE_COPY_BIT, NETIF_F_LOOPBACK_BIT, NETIF_F_RXFCS_BIT, NETIF_F_RXALL_BIT, NETIF_F_HW_VLAN_STAG_TX_BIT, NETIF_F_HW_VLAN_STAG_RX_BIT, NETIF_F_HW_VLAN_STAG_FILTER_BIT, NETIF_F_HW_L2FW_DOFFLOAD_BIT, NETIF_F_HW_TC_BIT, NETIF_F_HW_ESP_BIT, NETIF_F_HW_ESP_TX_CSUM_BIT, NETIF_F_RX_UDP_TUNNEL_PORT_BIT, NETIF_F_HW_TLS_TX_BIT, NETIF_F_HW_TLS_RX_BIT, NETIF_F_GRO_HW_BIT, NETIF_F_HW_TLS_RECORD_BIT, # 91 "../include/linux/netdev_features.h" NETDEV_FEATURE_COUNT }; # 156 "../include/linux/netdev_features.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int find_next_netdev_feature(u64 feature, unsigned long start) { feature &= ~0ULL >> (-start & ((sizeof(feature) * 8) - 1)); return fls64(feature) - 1; } # 32 "../include/linux/skbuff.h" 2 # 1 "../include/linux/sched/clock.h" 1 # 15 "../include/linux/sched/clock.h" extern unsigned long long __attribute__((no_instrument_function)) sched_clock(void); extern u64 running_clock(void); extern u64 sched_clock_cpu(int cpu); extern void sched_clock_init(void); # 53 "../include/linux/sched/clock.h" extern int sched_clock_stable(void); extern void clear_sched_clock_stable(void); extern u64 __sched_clock_offset; extern void sched_clock_tick(void); extern void sched_clock_tick_stable(void); extern void sched_clock_idle_sleep_event(void); extern void sched_clock_idle_wakeup_event(void); # 77 "../include/linux/sched/clock.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 cpu_clock(int cpu) { return sched_clock_cpu(cpu); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 local_clock(void) { return sched_clock_cpu(({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })); } # 94 "../include/linux/sched/clock.h" extern void enable_sched_clock_irqtime(void); extern void disable_sched_clock_irqtime(void); # 34 "../include/linux/skbuff.h" 2 # 1 "../include/net/flow_dissector.h" 1 # 1 "../include/linux/in6.h" 1 # 19 "../include/linux/in6.h" # 1 "../include/uapi/linux/in6.h" 1 # 33 "../include/uapi/linux/in6.h" struct in6_addr { union { __u8 u6_addr8[16]; __be16 u6_addr16[8]; __be32 u6_addr32[4]; } in6_u; }; struct sockaddr_in6 { unsigned short int sin6_family; __be16 sin6_port; __be32 sin6_flowinfo; struct in6_addr sin6_addr; __u32 sin6_scope_id; }; struct ipv6_mreq { struct in6_addr ipv6mr_multiaddr; int ipv6mr_ifindex; }; struct in6_flowlabel_req { struct in6_addr flr_dst; __be32 flr_label; __u8 flr_action; __u8 flr_share; __u16 flr_flags; __u16 flr_expires; __u16 flr_linger; __u32 __flr_pad; }; # 20 "../include/linux/in6.h" 2 extern const struct in6_addr in6addr_any; extern const struct in6_addr in6addr_loopback; extern const struct in6_addr in6addr_linklocal_allnodes; extern const struct in6_addr in6addr_linklocal_allrouters; extern const struct in6_addr in6addr_interfacelocal_allnodes; extern const struct in6_addr in6addr_interfacelocal_allrouters; extern const struct in6_addr in6addr_sitelocal_allrouters; # 7 "../include/net/flow_dissector.h" 2 # 1 "../include/uapi/linux/if_ether.h" 1 # 163 "../include/uapi/linux/if_ether.h" struct ethhdr { unsigned char h_dest[6]; unsigned char h_source[6]; __be16 h_proto; } __attribute__((packed)); # 8 "../include/net/flow_dissector.h" 2 struct flow_dissector_key_control { u16 thoff; u16 addr_type; u32 flags; }; enum flow_dissect_ret { FLOW_DISSECT_RET_OUT_GOOD, FLOW_DISSECT_RET_OUT_BAD, FLOW_DISSECT_RET_PROTO_AGAIN, FLOW_DISSECT_RET_IPPROTO_AGAIN, FLOW_DISSECT_RET_CONTINUE, }; struct flow_dissector_key_basic { __be16 n_proto; u8 ip_proto; u8 padding; }; struct flow_dissector_key_tags { u32 flow_label; }; struct flow_dissector_key_vlan { u16 vlan_id:12, vlan_dei:1, vlan_priority:3; __be16 vlan_tpid; }; struct flow_dissector_key_mpls { u32 mpls_ttl:8, mpls_bos:1, mpls_tc:3, mpls_label:20; }; # 68 "../include/net/flow_dissector.h" struct flow_dissector_key_enc_opts { u8 data[255]; u8 len; __be16 dst_opt_type; }; struct flow_dissector_key_keyid { __be32 keyid; }; struct flow_dissector_key_ipv4_addrs { __be32 src; __be32 dst; }; struct flow_dissector_key_ipv6_addrs { struct in6_addr src; struct in6_addr dst; }; struct flow_dissector_key_tipc { __be32 key; }; struct flow_dissector_key_addrs { union { struct flow_dissector_key_ipv4_addrs v4addrs; struct flow_dissector_key_ipv6_addrs v6addrs; struct flow_dissector_key_tipc tipckey; }; }; # 133 "../include/net/flow_dissector.h" struct flow_dissector_key_arp { __u32 sip; __u32 tip; __u8 op; unsigned char sha[6]; unsigned char tha[6]; }; struct flow_dissector_key_ports { union { __be32 ports; struct { __be16 src; __be16 dst; }; }; }; # 164 "../include/net/flow_dissector.h" struct flow_dissector_key_icmp { union { __be16 icmp; struct { u8 type; u8 code; }; }; }; struct flow_dissector_key_eth_addrs { unsigned char dst[6]; unsigned char src[6]; }; struct flow_dissector_key_tcp { __be16 flags; }; struct flow_dissector_key_ip { __u8 tos; __u8 ttl; }; struct flow_dissector_key_meta { int ingress_ifindex; }; enum flow_dissector_key_id { FLOW_DISSECTOR_KEY_CONTROL, FLOW_DISSECTOR_KEY_BASIC, FLOW_DISSECTOR_KEY_IPV4_ADDRS, FLOW_DISSECTOR_KEY_IPV6_ADDRS, FLOW_DISSECTOR_KEY_PORTS, FLOW_DISSECTOR_KEY_ICMP, FLOW_DISSECTOR_KEY_ETH_ADDRS, FLOW_DISSECTOR_KEY_TIPC, FLOW_DISSECTOR_KEY_ARP, FLOW_DISSECTOR_KEY_VLAN, FLOW_DISSECTOR_KEY_FLOW_LABEL, FLOW_DISSECTOR_KEY_GRE_KEYID, FLOW_DISSECTOR_KEY_MPLS_ENTROPY, FLOW_DISSECTOR_KEY_ENC_KEYID, FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS, FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS, FLOW_DISSECTOR_KEY_ENC_CONTROL, FLOW_DISSECTOR_KEY_ENC_PORTS, FLOW_DISSECTOR_KEY_MPLS, FLOW_DISSECTOR_KEY_TCP, FLOW_DISSECTOR_KEY_IP, FLOW_DISSECTOR_KEY_CVLAN, FLOW_DISSECTOR_KEY_ENC_IP, FLOW_DISSECTOR_KEY_ENC_OPTS, FLOW_DISSECTOR_KEY_META, FLOW_DISSECTOR_KEY_MAX, }; struct flow_dissector_key { enum flow_dissector_key_id key_id; size_t offset; }; struct flow_dissector { unsigned int used_keys; unsigned short int offset[FLOW_DISSECTOR_KEY_MAX]; }; struct flow_keys_basic { struct flow_dissector_key_control control; struct flow_dissector_key_basic basic; }; struct flow_keys { struct flow_dissector_key_control control; struct flow_dissector_key_basic basic; struct flow_dissector_key_tags tags; struct flow_dissector_key_vlan vlan; struct flow_dissector_key_vlan cvlan; struct flow_dissector_key_keyid keyid; struct flow_dissector_key_ports ports; struct flow_dissector_key_addrs addrs; }; __be32 flow_get_u32_src(const struct flow_keys *flow); __be32 flow_get_u32_dst(const struct flow_keys *flow); extern struct flow_dissector flow_keys_dissector; extern struct flow_dissector flow_keys_basic_dissector; # 290 "../include/net/flow_dissector.h" struct flow_keys_digest { u8 data[16]; }; void make_flow_keys_digest(struct flow_keys_digest *digest, const struct flow_keys *flow); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool flow_keys_have_l4(const struct flow_keys *keys) { return (keys->ports.ports || keys->tags.flow_label); } u32 flow_hash_from_keys(struct flow_keys *keys); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool dissector_uses_key(const struct flow_dissector *flow_dissector, enum flow_dissector_key_id key_id) { return flow_dissector->used_keys & (1 << key_id); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_flow_dissector_target(struct flow_dissector *flow_dissector, enum flow_dissector_key_id key_id, void *target_container) { return ((char *)target_container) + flow_dissector->offset[key_id]; } struct bpf_flow_dissector { struct bpf_flow_keys *flow_keys; const struct sk_buff *skb; void *data; void *data_end; }; # 35 "../include/linux/skbuff.h" 2 # 1 "../include/linux/splice.h" 1 # 12 "../include/linux/splice.h" # 1 "../include/linux/pipe_fs_i.h" 1 # 21 "../include/linux/pipe_fs_i.h" struct pipe_buffer { struct page *page; unsigned int offset, len; const struct pipe_buf_operations *ops; unsigned int flags; unsigned long private; }; # 48 "../include/linux/pipe_fs_i.h" struct pipe_inode_info { struct mutex mutex; wait_queue_head_t wait; unsigned int nrbufs, curbuf, buffers; unsigned int readers; unsigned int writers; unsigned int files; unsigned int waiting_writers; unsigned int r_counter; unsigned int w_counter; struct page *tmp_page; struct fasync_struct *fasync_readers; struct fasync_struct *fasync_writers; struct pipe_buffer *bufs; struct user_struct *user; }; # 75 "../include/linux/pipe_fs_i.h" struct pipe_buf_operations { int (*confirm)(struct pipe_inode_info *, struct pipe_buffer *); void (*release)(struct pipe_inode_info *, struct pipe_buffer *); # 99 "../include/linux/pipe_fs_i.h" int (*steal)(struct pipe_inode_info *, struct pipe_buffer *); bool (*get)(struct pipe_inode_info *, struct pipe_buffer *); }; # 114 "../include/linux/pipe_fs_i.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__warn_unused_result__)) bool pipe_buf_get(struct pipe_inode_info *pipe, struct pipe_buffer *buf) { return buf->ops->get(pipe, buf); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pipe_buf_release(struct pipe_inode_info *pipe, struct pipe_buffer *buf) { const struct pipe_buf_operations *ops = buf->ops; buf->ops = ((void *)0); ops->release(pipe, buf); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pipe_buf_confirm(struct pipe_inode_info *pipe, struct pipe_buffer *buf) { return buf->ops->confirm(pipe, buf); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pipe_buf_steal(struct pipe_inode_info *pipe, struct pipe_buffer *buf) { return buf->ops->steal(pipe, buf); } void pipe_lock(struct pipe_inode_info *); void pipe_unlock(struct pipe_inode_info *); void pipe_double_lock(struct pipe_inode_info *, struct pipe_inode_info *); extern unsigned int pipe_max_size; extern unsigned long pipe_user_pages_hard; extern unsigned long pipe_user_pages_soft; void pipe_wait(struct pipe_inode_info *pipe); struct pipe_inode_info *alloc_pipe_info(void); void free_pipe_info(struct pipe_inode_info *); bool generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *); int generic_pipe_buf_confirm(struct pipe_inode_info *, struct pipe_buffer *); int generic_pipe_buf_steal(struct pipe_inode_info *, struct pipe_buffer *); int generic_pipe_buf_nosteal(struct pipe_inode_info *, struct pipe_buffer *); void generic_pipe_buf_release(struct pipe_inode_info *, struct pipe_buffer *); void pipe_buf_mark_unmergeable(struct pipe_buffer *buf); extern const struct pipe_buf_operations nosteal_pipe_buf_ops; long pipe_fcntl(struct file *, unsigned int, unsigned long arg); struct pipe_inode_info *get_pipe_info(struct file *file); int create_pipe_files(struct file **, int); unsigned int round_pipe_size(unsigned long size); # 13 "../include/linux/splice.h" 2 # 29 "../include/linux/splice.h" struct splice_desc { size_t total_len; unsigned int len; unsigned int flags; union { void *userptr; struct file *file; void *data; } u; loff_t pos; loff_t *opos; size_t num_spliced; bool need_wakeup; }; struct partial_page { unsigned int offset; unsigned int len; unsigned long private; }; struct splice_pipe_desc { struct page **pages; struct partial_page *partial; int nr_pages; unsigned int nr_pages_max; const struct pipe_buf_operations *ops; void (*spd_release)(struct splice_pipe_desc *, unsigned int); }; typedef int (splice_actor)(struct pipe_inode_info *, struct pipe_buffer *, struct splice_desc *); typedef int (splice_direct_actor)(struct pipe_inode_info *, struct splice_desc *); extern ssize_t splice_from_pipe(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int, splice_actor *); extern ssize_t __splice_from_pipe(struct pipe_inode_info *, struct splice_desc *, splice_actor *); extern ssize_t splice_to_pipe(struct pipe_inode_info *, struct splice_pipe_desc *); extern ssize_t add_to_pipe(struct pipe_inode_info *, struct pipe_buffer *); extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *, splice_direct_actor *); extern int splice_grow_spd(const struct pipe_inode_info *, struct splice_pipe_desc *); extern void splice_shrink_spd(struct splice_pipe_desc *); extern const struct pipe_buf_operations page_cache_pipe_buf_ops; extern const struct pipe_buf_operations default_pipe_buf_ops; # 36 "../include/linux/skbuff.h" 2 # 1 "../include/uapi/linux/if_packet.h" 1 struct sockaddr_pkt { unsigned short spkt_family; unsigned char spkt_device[14]; __be16 spkt_protocol; }; struct sockaddr_ll { unsigned short sll_family; __be16 sll_protocol; int sll_ifindex; unsigned short sll_hatype; unsigned char sll_pkttype; unsigned char sll_halen; unsigned char sll_addr[8]; }; # 74 "../include/uapi/linux/if_packet.h" struct tpacket_stats { unsigned int tp_packets; unsigned int tp_drops; }; struct tpacket_stats_v3 { unsigned int tp_packets; unsigned int tp_drops; unsigned int tp_freeze_q_cnt; }; struct tpacket_rollover_stats { __u64 __attribute__((aligned(8))) tp_all; __u64 __attribute__((aligned(8))) tp_huge; __u64 __attribute__((aligned(8))) tp_failed; }; union tpacket_stats_u { struct tpacket_stats stats1; struct tpacket_stats_v3 stats3; }; struct tpacket_auxdata { __u32 tp_status; __u32 tp_len; __u32 tp_snaplen; __u16 tp_mac; __u16 tp_net; __u16 tp_vlan_tci; __u16 tp_vlan_tpid; }; # 131 "../include/uapi/linux/if_packet.h" struct tpacket_hdr { unsigned long tp_status; unsigned int tp_len; unsigned int tp_snaplen; unsigned short tp_mac; unsigned short tp_net; unsigned int tp_sec; unsigned int tp_usec; }; struct tpacket2_hdr { __u32 tp_status; __u32 tp_len; __u32 tp_snaplen; __u16 tp_mac; __u16 tp_net; __u32 tp_sec; __u32 tp_nsec; __u16 tp_vlan_tci; __u16 tp_vlan_tpid; __u8 tp_padding[4]; }; struct tpacket_hdr_variant1 { __u32 tp_rxhash; __u32 tp_vlan_tci; __u16 tp_vlan_tpid; __u16 tp_padding; }; struct tpacket3_hdr { __u32 tp_next_offset; __u32 tp_sec; __u32 tp_nsec; __u32 tp_snaplen; __u32 tp_len; __u32 tp_status; __u16 tp_mac; __u16 tp_net; union { struct tpacket_hdr_variant1 hv1; }; __u8 tp_padding[8]; }; struct tpacket_bd_ts { unsigned int ts_sec; union { unsigned int ts_usec; unsigned int ts_nsec; }; }; struct tpacket_hdr_v1 { __u32 block_status; __u32 num_pkts; __u32 offset_to_first_pkt; __u32 blk_len; # 208 "../include/uapi/linux/if_packet.h" __u64 __attribute__((aligned(8))) seq_num; # 235 "../include/uapi/linux/if_packet.h" struct tpacket_bd_ts ts_first_pkt, ts_last_pkt; }; union tpacket_bd_header_u { struct tpacket_hdr_v1 bh1; }; struct tpacket_block_desc { __u32 version; __u32 offset_to_priv; union tpacket_bd_header_u hdr; }; enum tpacket_versions { TPACKET_V1, TPACKET_V2, TPACKET_V3 }; # 270 "../include/uapi/linux/if_packet.h" struct tpacket_req { unsigned int tp_block_size; unsigned int tp_block_nr; unsigned int tp_frame_size; unsigned int tp_frame_nr; }; struct tpacket_req3 { unsigned int tp_block_size; unsigned int tp_block_nr; unsigned int tp_frame_size; unsigned int tp_frame_nr; unsigned int tp_retire_blk_tov; unsigned int tp_sizeof_priv; unsigned int tp_feature_req_word; }; union tpacket_req_u { struct tpacket_req req; struct tpacket_req3 req3; }; struct packet_mreq { int mr_ifindex; unsigned short mr_type; unsigned short mr_alen; unsigned char mr_address[8]; }; # 38 "../include/linux/skbuff.h" 2 # 1 "../include/net/flow.h" 1 # 25 "../include/net/flow.h" struct flowi_tunnel { __be64 tun_id; }; struct flowi_common { int flowic_oif; int flowic_iif; __u32 flowic_mark; __u8 flowic_tos; __u8 flowic_scope; __u8 flowic_proto; __u8 flowic_flags; __u32 flowic_secid; kuid_t flowic_uid; struct flowi_tunnel flowic_tun_key; __u32 flowic_multipath_hash; }; union flowi_uli { struct { __be16 dport; __be16 sport; } ports; struct { __u8 type; __u8 code; } icmpt; struct { __le16 dport; __le16 sport; } dnports; __be32 spi; __be32 gre_key; struct { __u8 type; } mht; }; struct flowi4 { struct flowi_common __fl_common; # 85 "../include/net/flow.h" __be32 saddr; __be32 daddr; union flowi_uli uli; } __attribute__((__aligned__(64/8))); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void flowi4_init_output(struct flowi4 *fl4, int oif, __u32 mark, __u8 tos, __u8 scope, __u8 proto, __u8 flags, __be32 daddr, __be32 saddr, __be16 dport, __be16 sport, kuid_t uid) { fl4->__fl_common.flowic_oif = oif; fl4->__fl_common.flowic_iif = 1; fl4->__fl_common.flowic_mark = mark; fl4->__fl_common.flowic_tos = tos; fl4->__fl_common.flowic_scope = scope; fl4->__fl_common.flowic_proto = proto; fl4->__fl_common.flowic_flags = flags; fl4->__fl_common.flowic_secid = 0; fl4->__fl_common.flowic_tun_key.tun_id = 0; fl4->__fl_common.flowic_uid = uid; fl4->daddr = daddr; fl4->saddr = saddr; fl4->uli.ports.dport = dport; fl4->uli.ports.sport = sport; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void flowi4_update_output(struct flowi4 *fl4, int oif, __u8 tos, __be32 daddr, __be32 saddr) { fl4->__fl_common.flowic_oif = oif; fl4->__fl_common.flowic_tos = tos; fl4->daddr = daddr; fl4->saddr = saddr; } struct flowi6 { struct flowi_common __fl_common; # 143 "../include/net/flow.h" struct in6_addr daddr; struct in6_addr saddr; __be32 flowlabel; union flowi_uli uli; __u32 mp_hash; } __attribute__((__aligned__(64/8))); struct flowidn { struct flowi_common __fl_common; __le16 daddr; __le16 saddr; union flowi_uli uli; } __attribute__((__aligned__(64/8))); struct flowi { union { struct flowi_common __fl_common; struct flowi4 ip4; struct flowi6 ip6; struct flowidn dn; } u; # 190 "../include/net/flow.h" } __attribute__((__aligned__(64/8))); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct flowi *flowi4_to_flowi(struct flowi4 *fl4) { return ({ void *__mptr = (void *)(fl4); do { extern void __compiletime_assert_194(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(fl4)), typeof(((struct flowi *)0)->u.ip4)) && !__builtin_types_compatible_p(typeof(*(fl4)), typeof(void))))) __compiletime_assert_194(); } while (0); ((struct flowi *)(__mptr - __builtin_offsetof(struct flowi, u.ip4))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct flowi *flowi6_to_flowi(struct flowi6 *fl6) { return ({ void *__mptr = (void *)(fl6); do { extern void __compiletime_assert_199(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(fl6)), typeof(((struct flowi *)0)->u.ip6)) && !__builtin_types_compatible_p(typeof(*(fl6)), typeof(void))))) __compiletime_assert_199(); } while (0); ((struct flowi *)(__mptr - __builtin_offsetof(struct flowi, u.ip6))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct flowi *flowidn_to_flowi(struct flowidn *fldn) { return ({ void *__mptr = (void *)(fldn); do { extern void __compiletime_assert_204(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(fldn)), typeof(((struct flowi *)0)->u.dn)) && !__builtin_types_compatible_p(typeof(*(fldn)), typeof(void))))) __compiletime_assert_204(); } while (0); ((struct flowi *)(__mptr - __builtin_offsetof(struct flowi, u.dn))); }); } typedef unsigned long flow_compare_t; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int flow_key_size(u16 family) { switch (family) { case 2: do { extern void __compiletime_assert_213(void) ; if (!(!(sizeof(struct flowi4) % sizeof(flow_compare_t)))) __compiletime_assert_213(); } while (0); return sizeof(struct flowi4) / sizeof(flow_compare_t); case 10: do { extern void __compiletime_assert_216(void) ; if (!(!(sizeof(struct flowi6) % sizeof(flow_compare_t)))) __compiletime_assert_216(); } while (0); return sizeof(struct flowi6) / sizeof(flow_compare_t); case 12: do { extern void __compiletime_assert_219(void) ; if (!(!(sizeof(struct flowidn) % sizeof(flow_compare_t)))) __compiletime_assert_219(); } while (0); return sizeof(struct flowidn) / sizeof(flow_compare_t); } return 0; } __u32 __get_hash_from_flowi6(const struct flowi6 *fl6, struct flow_keys *keys); # 39 "../include/linux/skbuff.h" 2 # 237 "../include/linux/skbuff.h" struct net_device; struct scatterlist; struct pipe_inode_info; struct iov_iter; struct napi_struct; struct bpf_prog; union bpf_attr; struct skb_ext; struct nf_conntrack { atomic_t use; }; struct nf_bridge_info { enum { BRNF_PROTO_UNCHANGED, BRNF_PROTO_8021Q, BRNF_PROTO_PPPOE } orig_proto:8; u8 pkt_otherhost:1; u8 in_prerouting:1; u8 bridged_dnat:1; __u16 frag_max_size; struct net_device *physindev; struct net_device *physoutdev; union { __be32 ipv4_daddr; struct in6_addr ipv6_daddr; char neigh_header[8]; }; }; struct sk_buff_head { struct sk_buff *next; struct sk_buff *prev; __u32 qlen; spinlock_t lock; }; struct sk_buff; # 304 "../include/linux/skbuff.h" extern int sysctl_max_skb_frags; typedef struct skb_frag_struct skb_frag_t; struct skb_frag_struct { struct { struct page *p; } page; __u32 page_offset; __u32 size; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int skb_frag_size(const skb_frag_t *frag) { return frag->size; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_frag_size_set(skb_frag_t *frag, unsigned int size) { frag->size = size; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_frag_size_add(skb_frag_t *frag, int delta) { frag->size += delta; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_frag_size_sub(skb_frag_t *frag, int delta) { frag->size -= delta; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_frag_must_loop(struct page *p) { return false; } # 421 "../include/linux/skbuff.h" struct skb_shared_hwtstamps { ktime_t hwtstamp; }; enum { SKBTX_HW_TSTAMP = 1 << 0, SKBTX_SW_TSTAMP = 1 << 1, SKBTX_IN_PROGRESS = 1 << 2, SKBTX_DEV_ZEROCOPY = 1 << 3, SKBTX_WIFI_STATUS = 1 << 4, SKBTX_SHARED_FRAG = 1 << 5, SKBTX_SCHED_TSTAMP = 1 << 6, }; # 466 "../include/linux/skbuff.h" struct ubuf_info { void (*callback)(struct ubuf_info *, bool zerocopy_success); union { struct { unsigned long desc; void *ctx; }; struct { u32 id; u16 len; u16 zerocopy:1; u32 bytelen; }; }; refcount_t refcnt; struct mmpin { struct user_struct *user; unsigned int num_pg; } mmp; }; int mm_account_pinned_pages(struct mmpin *mmp, size_t size); void mm_unaccount_pinned_pages(struct mmpin *mmp); struct ubuf_info *sock_zerocopy_alloc(struct sock *sk, size_t size); struct ubuf_info *sock_zerocopy_realloc(struct sock *sk, size_t size, struct ubuf_info *uarg); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sock_zerocopy_get(struct ubuf_info *uarg) { refcount_inc_checked(&uarg->refcnt); } void sock_zerocopy_put(struct ubuf_info *uarg); void sock_zerocopy_put_abort(struct ubuf_info *uarg, bool have_uref); void sock_zerocopy_callback(struct ubuf_info *uarg, bool success); int skb_zerocopy_iter_dgram(struct sk_buff *skb, struct msghdr *msg, int len); int skb_zerocopy_iter_stream(struct sock *sk, struct sk_buff *skb, struct msghdr *msg, int len, struct ubuf_info *uarg); struct skb_shared_info { __u8 __unused; __u8 meta_len; __u8 nr_frags; __u8 tx_flags; unsigned short gso_size; unsigned short gso_segs; struct sk_buff *frag_list; struct skb_shared_hwtstamps hwtstamps; unsigned int gso_type; u32 tskey; atomic_t dataref; void * destructor_arg; skb_frag_t frags[(65536/((1UL) << 12) + 1)]; }; # 556 "../include/linux/skbuff.h" enum { SKB_FCLONE_UNAVAILABLE, SKB_FCLONE_ORIG, SKB_FCLONE_CLONE, }; enum { SKB_GSO_TCPV4 = 1 << 0, SKB_GSO_DODGY = 1 << 1, SKB_GSO_TCP_ECN = 1 << 2, SKB_GSO_TCP_FIXEDID = 1 << 3, SKB_GSO_TCPV6 = 1 << 4, SKB_GSO_FCOE = 1 << 5, SKB_GSO_GRE = 1 << 6, SKB_GSO_GRE_CSUM = 1 << 7, SKB_GSO_IPXIP4 = 1 << 8, SKB_GSO_IPXIP6 = 1 << 9, SKB_GSO_UDP_TUNNEL = 1 << 10, SKB_GSO_UDP_TUNNEL_CSUM = 1 << 11, SKB_GSO_PARTIAL = 1 << 12, SKB_GSO_TUNNEL_REMCSUM = 1 << 13, SKB_GSO_SCTP = 1 << 14, SKB_GSO_ESP = 1 << 15, SKB_GSO_UDP = 1 << 16, SKB_GSO_UDP_L4 = 1 << 17, }; typedef unsigned int sk_buff_data_t; # 690 "../include/linux/skbuff.h" struct sk_buff { union { struct { struct sk_buff *next; struct sk_buff *prev; union { struct net_device *dev; unsigned long dev_scratch; }; }; struct rb_node rbnode; struct list_head list; }; union { struct sock *sk; int ip_defrag_offset; }; union { ktime_t tstamp; u64 skb_mstamp_ns; }; char cb[48] __attribute__((__aligned__(8))); union { struct { unsigned long _skb_refdst; void (*destructor)(struct sk_buff *skb); }; struct list_head tcp_tsorted_anchor; }; unsigned long _nfct; unsigned int len, data_len; __u16 mac_len, hdr_len; __u16 queue_mapping; # 756 "../include/linux/skbuff.h" __u8 __cloned_offset[0]; __u8 cloned:1, nohdr:1, fclone:2, peeked:1, head_frag:1, pfmemalloc:1; __u8 active_extensions; __u32 headers_start[0]; # 781 "../include/linux/skbuff.h" __u8 __pkt_type_offset[0]; __u8 pkt_type:3; __u8 ignore_df:1; __u8 nf_trace:1; __u8 ip_summed:2; __u8 ooo_okay:1; __u8 l4_hash:1; __u8 sw_hash:1; __u8 wifi_acked_valid:1; __u8 wifi_acked:1; __u8 no_fcs:1; __u8 encapsulation:1; __u8 encap_hdr_csum:1; __u8 csum_valid:1; __u8 __pkt_vlan_present_offset[0]; __u8 vlan_present:1; __u8 csum_complete_sw:1; __u8 csum_level:2; __u8 csum_not_inet:1; __u8 dst_pending_confirm:1; __u8 ndisc_nodetype:2; __u8 ipvs_property:1; __u8 inner_protocol_type:1; __u8 remcsum_offload:1; __u8 offload_fwd_mark:1; __u8 offload_l3_fwd_mark:1; __u8 tc_skip_classify:1; __u8 tc_at_ingress:1; __u8 tc_redirected:1; __u8 tc_from_ingress:1; __u8 decrypted:1; __u16 tc_index; union { __wsum csum; struct { __u16 csum_start; __u16 csum_offset; }; }; __u32 priority; int skb_iif; __u32 hash; __be16 vlan_proto; __u16 vlan_tci; union { unsigned int napi_id; unsigned int sender_cpu; }; __u32 secmark; union { __u32 mark; __u32 reserved_tailroom; }; union { __be16 inner_protocol; __u8 inner_ipproto; }; __u16 inner_transport_header; __u16 inner_network_header; __u16 inner_mac_header; __be16 protocol; __u16 transport_header; __u16 network_header; __u16 mac_header; __u32 headers_end[0]; sk_buff_data_t tail; sk_buff_data_t end; unsigned char *head, *data; unsigned int truesize; refcount_t users; struct skb_ext *extensions; }; # 907 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_pfmemalloc(const struct sk_buff *skb) { return __builtin_expect(!!(skb->pfmemalloc), 0); } # 926 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct dst_entry *skb_dst(const struct sk_buff *skb) { ({ int __ret_warn_on = !!((skb->_skb_refdst & 1UL) && !rcu_read_lock_held() && !rcu_read_lock_bh_held()); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/skbuff.h"), "i" (933), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (398)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); return (struct dst_entry *)(skb->_skb_refdst & ~(1UL)); } # 945 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst) { skb->_skb_refdst = (unsigned long)dst; } # 960 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_dst_set_noref(struct sk_buff *skb, struct dst_entry *dst) { ({ int __ret_warn_on = !!(!rcu_read_lock_held() && !rcu_read_lock_bh_held()); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/skbuff.h"), "i" (962), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (399)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); skb->_skb_refdst = (unsigned long)dst | 1UL; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_dst_is_noref(const struct sk_buff *skb) { return (skb->_skb_refdst & 1UL) && skb_dst(skb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct rtable *skb_rtable(const struct sk_buff *skb) { return (struct rtable *)skb_dst(skb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_pkt_type_ok(u32 ptype) { return ptype <= 3; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int skb_napi_id(const struct sk_buff *skb) { return skb->napi_id; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_unref(struct sk_buff *skb) { if (__builtin_expect(!!(!skb), 0)) return false; if (__builtin_expect(!!(refcount_read(&skb->users) == 1), 1)) __asm__ __volatile__("" : : : "memory"); else if (__builtin_expect(!!(!refcount_dec_and_test_checked(&skb->users)), 1)) return false; return true; } void skb_release_head_state(struct sk_buff *skb); void kfree_skb(struct sk_buff *skb); void kfree_skb_list(struct sk_buff *segs); void skb_tx_error(struct sk_buff *skb); void consume_skb(struct sk_buff *skb); void __consume_stateless_skb(struct sk_buff *skb); void __kfree_skb(struct sk_buff *skb); extern struct kmem_cache *skbuff_head_cache; void kfree_skb_partial(struct sk_buff *skb, bool head_stolen); bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from, bool *fragstolen, int *delta_truesize); struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags, int node); struct sk_buff *__build_skb(void *data, unsigned int frag_size); struct sk_buff *build_skb(void *data, unsigned int frag_size); struct sk_buff *build_skb_around(struct sk_buff *skb, void *data, unsigned int frag_size); # 1051 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *alloc_skb(unsigned int size, gfp_t priority) { return __alloc_skb(size, priority, 0, (-1)); } struct sk_buff *alloc_skb_with_frags(unsigned long header_len, unsigned long data_len, int max_page_order, int *errcode, gfp_t gfp_mask); struct sk_buff *alloc_skb_for_msg(struct sk_buff *first); struct sk_buff_fclones { struct sk_buff skb1; struct sk_buff skb2; refcount_t fclone_ref; }; # 1082 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_fclone_busy(const struct sock *sk, const struct sk_buff *skb) { const struct sk_buff_fclones *fclones; fclones = ({ void *__mptr = (void *)(skb); do { extern void __compiletime_assert_1087(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(skb)), typeof(((struct sk_buff_fclones *)0)->skb1)) && !__builtin_types_compatible_p(typeof(*(skb)), typeof(void))))) __compiletime_assert_1087(); } while (0); ((struct sk_buff_fclones *)(__mptr - __builtin_offsetof(struct sk_buff_fclones, skb1))); }); return skb->fclone == SKB_FCLONE_ORIG && refcount_read(&fclones->fclone_ref) > 1 && fclones->skb2.sk == sk; } # 1101 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *alloc_skb_fclone(unsigned int size, gfp_t priority) { return __alloc_skb(size, priority, 0x01, (-1)); } struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src); void skb_headers_offset_update(struct sk_buff *skb, int off); int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask); struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t priority); void skb_copy_header(struct sk_buff *new, const struct sk_buff *old); struct sk_buff *skb_copy(const struct sk_buff *skb, gfp_t priority); struct sk_buff *__pskb_copy_fclone(struct sk_buff *skb, int headroom, gfp_t gfp_mask, bool fclone); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *__pskb_copy(struct sk_buff *skb, int headroom, gfp_t gfp_mask) { return __pskb_copy_fclone(skb, headroom, gfp_mask, false); } int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, gfp_t gfp_mask); struct sk_buff *skb_realloc_headroom(struct sk_buff *skb, unsigned int headroom); struct sk_buff *skb_copy_expand(const struct sk_buff *skb, int newheadroom, int newtailroom, gfp_t priority); int __attribute__((__warn_unused_result__)) skb_to_sgvec_nomark(struct sk_buff *skb, struct scatterlist *sg, int offset, int len); int __attribute__((__warn_unused_result__)) skb_to_sgvec(struct sk_buff *skb, struct scatterlist *sg, int offset, int len); int skb_cow_data(struct sk_buff *skb, int tailbits, struct sk_buff **trailer); int __skb_pad(struct sk_buff *skb, int pad, bool free_on_error); # 1144 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_pad(struct sk_buff *skb, int pad) { return __skb_pad(skb, pad, true); } int skb_append_pagefrags(struct sk_buff *skb, struct page *page, int offset, size_t size); struct skb_seq_state { __u32 lower_offset; __u32 upper_offset; __u32 frag_idx; __u32 stepped_offset; struct sk_buff *root_skb; struct sk_buff *cur_skb; __u8 *frag_data; }; void skb_prepare_seq_read(struct sk_buff *skb, unsigned int from, unsigned int to, struct skb_seq_state *st); unsigned int skb_seq_read(unsigned int consumed, const u8 **data, struct skb_seq_state *st); void skb_abort_seq_read(struct skb_seq_state *st); unsigned int skb_find_text(struct sk_buff *skb, unsigned int from, unsigned int to, struct ts_config *config); # 1198 "../include/linux/skbuff.h" enum pkt_hash_types { PKT_HASH_TYPE_NONE, PKT_HASH_TYPE_L2, PKT_HASH_TYPE_L3, PKT_HASH_TYPE_L4, }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_clear_hash(struct sk_buff *skb) { skb->hash = 0; skb->sw_hash = 0; skb->l4_hash = 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_clear_hash_if_not_l4(struct sk_buff *skb) { if (!skb->l4_hash) skb_clear_hash(skb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_set_hash(struct sk_buff *skb, __u32 hash, bool is_sw, bool is_l4) { skb->l4_hash = is_l4; skb->sw_hash = is_sw; skb->hash = hash; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_set_hash(struct sk_buff *skb, __u32 hash, enum pkt_hash_types type) { __skb_set_hash(skb, hash, false, type == PKT_HASH_TYPE_L4); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_set_sw_hash(struct sk_buff *skb, __u32 hash, bool is_l4) { __skb_set_hash(skb, hash, true, is_l4); } void __skb_get_hash(struct sk_buff *skb); u32 __skb_get_hash_symmetric(const struct sk_buff *skb); u32 skb_get_poff(const struct sk_buff *skb); u32 __skb_get_poff(const struct sk_buff *skb, void *data, const struct flow_keys_basic *keys, int hlen); __be32 __skb_flow_get_ports(const struct sk_buff *skb, int thoff, u8 ip_proto, void *data, int hlen_proto); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __be32 skb_flow_get_ports(const struct sk_buff *skb, int thoff, u8 ip_proto) { return __skb_flow_get_ports(skb, thoff, ip_proto, ((void *)0), 0); } void skb_flow_dissector_init(struct flow_dissector *flow_dissector, const struct flow_dissector_key *key, unsigned int key_count); int skb_flow_dissector_prog_query(const union bpf_attr *attr, union bpf_attr *uattr); int skb_flow_dissector_bpf_prog_attach(const union bpf_attr *attr, struct bpf_prog *prog); int skb_flow_dissector_bpf_prog_detach(const union bpf_attr *attr); # 1283 "../include/linux/skbuff.h" struct bpf_flow_dissector; bool bpf_flow_dissect(struct bpf_prog *prog, struct bpf_flow_dissector *ctx, __be16 proto, int nhoff, int hlen); bool __skb_flow_dissect(const struct net *net, const struct sk_buff *skb, struct flow_dissector *flow_dissector, void *target_container, void *data, __be16 proto, int nhoff, int hlen, unsigned int flags); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_flow_dissect(const struct sk_buff *skb, struct flow_dissector *flow_dissector, void *target_container, unsigned int flags) { return __skb_flow_dissect(((void *)0), skb, flow_dissector, target_container, ((void *)0), 0, 0, 0, flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_flow_dissect_flow_keys(const struct sk_buff *skb, struct flow_keys *flow, unsigned int flags) { __memset(flow, 0, sizeof(*flow)); return __skb_flow_dissect(((void *)0), skb, &flow_keys_dissector, flow, ((void *)0), 0, 0, 0, flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_flow_dissect_flow_keys_basic(const struct net *net, const struct sk_buff *skb, struct flow_keys_basic *flow, void *data, __be16 proto, int nhoff, int hlen, unsigned int flags) { __memset(flow, 0, sizeof(*flow)); return __skb_flow_dissect(net, skb, &flow_keys_basic_dissector, flow, data, proto, nhoff, hlen, flags); } void skb_flow_dissect_meta(const struct sk_buff *skb, struct flow_dissector *flow_dissector, void *target_container); void skb_flow_dissect_tunnel_info(const struct sk_buff *skb, struct flow_dissector *flow_dissector, void *target_container); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u32 skb_get_hash(struct sk_buff *skb) { if (!skb->l4_hash && !skb->sw_hash) __skb_get_hash(skb); return skb->hash; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u32 skb_get_hash_flowi6(struct sk_buff *skb, const struct flowi6 *fl6) { if (!skb->l4_hash && !skb->sw_hash) { struct flow_keys keys; __u32 hash = __get_hash_from_flowi6(fl6, &keys); __skb_set_sw_hash(skb, hash, flow_keys_have_l4(&keys)); } return skb->hash; } __u32 skb_get_hash_perturb(const struct sk_buff *skb, u32 perturb); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u32 skb_get_hash_raw(const struct sk_buff *skb) { return skb->hash; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_copy_hash(struct sk_buff *to, const struct sk_buff *from) { to->hash = from->hash; to->sw_hash = from->sw_hash; to->l4_hash = from->l4_hash; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char *skb_end_pointer(const struct sk_buff *skb) { return skb->head + skb->end; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int skb_end_offset(const struct sk_buff *skb) { return skb->end; } # 1391 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct skb_shared_hwtstamps *skb_hwtstamps(struct sk_buff *skb) { return &((struct skb_shared_info *)(skb_end_pointer(skb)))->hwtstamps; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct ubuf_info *skb_zcopy(struct sk_buff *skb) { bool is_zcopy = skb && ((struct skb_shared_info *)(skb_end_pointer(skb)))->tx_flags & SKBTX_DEV_ZEROCOPY; return is_zcopy ? ((struct ubuf_info *)(((struct skb_shared_info *)(skb_end_pointer(skb)))->destructor_arg)) : ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_zcopy_set(struct sk_buff *skb, struct ubuf_info *uarg, bool *have_ref) { if (skb && uarg && !skb_zcopy(skb)) { if (__builtin_expect(!!(have_ref && *have_ref), 0)) *have_ref = false; else sock_zerocopy_get(uarg); ((struct skb_shared_info *)(skb_end_pointer(skb)))->destructor_arg = uarg; ((struct skb_shared_info *)(skb_end_pointer(skb)))->tx_flags |= (SKBTX_DEV_ZEROCOPY | SKBTX_SHARED_FRAG); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_zcopy_set_nouarg(struct sk_buff *skb, void *val) { ((struct skb_shared_info *)(skb_end_pointer(skb)))->destructor_arg = (void *)((uintptr_t) val | 0x1UL); ((struct skb_shared_info *)(skb_end_pointer(skb)))->tx_flags |= (SKBTX_DEV_ZEROCOPY | SKBTX_SHARED_FRAG); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_zcopy_is_nouarg(struct sk_buff *skb) { return (uintptr_t) ((struct skb_shared_info *)(skb_end_pointer(skb)))->destructor_arg & 0x1UL; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_zcopy_get_nouarg(struct sk_buff *skb) { return (void *)((uintptr_t) ((struct skb_shared_info *)(skb_end_pointer(skb)))->destructor_arg & ~0x1UL); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_zcopy_clear(struct sk_buff *skb, bool zerocopy) { struct ubuf_info *uarg = skb_zcopy(skb); if (uarg) { if (skb_zcopy_is_nouarg(skb)) { } else if (uarg->callback == sock_zerocopy_callback) { uarg->zerocopy = uarg->zerocopy && zerocopy; sock_zerocopy_put(uarg); } else { uarg->callback(uarg, zerocopy); } ((struct skb_shared_info *)(skb_end_pointer(skb)))->tx_flags &= ~(SKBTX_DEV_ZEROCOPY | SKBTX_SHARED_FRAG); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_zcopy_abort(struct sk_buff *skb) { struct ubuf_info *uarg = skb_zcopy(skb); if (uarg) { sock_zerocopy_put_abort(uarg, false); ((struct skb_shared_info *)(skb_end_pointer(skb)))->tx_flags &= ~(SKBTX_DEV_ZEROCOPY | SKBTX_SHARED_FRAG); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_mark_not_on_list(struct sk_buff *skb) { skb->next = ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_list_del_init(struct sk_buff *skb) { __list_del_entry(&skb->list); skb_mark_not_on_list(skb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_queue_empty(const struct sk_buff_head *list) { return list->next == (const struct sk_buff *) list; } # 1491 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_queue_is_last(const struct sk_buff_head *list, const struct sk_buff *skb) { return skb->next == (const struct sk_buff *) list; } # 1504 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_queue_is_first(const struct sk_buff_head *list, const struct sk_buff *skb) { return skb->prev == (const struct sk_buff *) list; } # 1518 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *skb_queue_next(const struct sk_buff_head *list, const struct sk_buff *skb) { do { if (__builtin_expect(!!(skb_queue_is_last(list, skb)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/skbuff.h"), "i" (1524), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (400)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); return skb->next; } # 1536 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *skb_queue_prev(const struct sk_buff_head *list, const struct sk_buff *skb) { do { if (__builtin_expect(!!(skb_queue_is_first(list, skb)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/skbuff.h"), "i" (1542), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (401)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); return skb->prev; } # 1553 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *skb_get(struct sk_buff *skb) { refcount_inc_checked(&skb->users); return skb; } # 1571 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_cloned(const struct sk_buff *skb) { return skb->cloned && (atomic_read(&((struct skb_shared_info *)(skb_end_pointer(skb)))->dataref) & ((1 << 16) - 1)) != 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_unclone(struct sk_buff *skb, gfp_t pri) { do { if (gfpflags_allow_blocking(pri)) do { __might_sleep("../include/linux/skbuff.h", 1579, 0); do { } while (0); } while (0); } while (0); if (skb_cloned(skb)) return pskb_expand_head(skb, 0, 0, pri); return 0; } # 1594 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_header_cloned(const struct sk_buff *skb) { int dataref; if (!skb->cloned) return 0; dataref = atomic_read(&((struct skb_shared_info *)(skb_end_pointer(skb)))->dataref); dataref = (dataref & ((1 << 16) - 1)) - (dataref >> 16); return dataref != 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_header_unclone(struct sk_buff *skb, gfp_t pri) { do { if (gfpflags_allow_blocking(pri)) do { __might_sleep("../include/linux/skbuff.h", 1608, 0); do { } while (0); } while (0); } while (0); if (skb_header_cloned(skb)) return pskb_expand_head(skb, 0, 0, pri); return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_header_release(struct sk_buff *skb) { skb->nohdr = 1; atomic_set(&((struct skb_shared_info *)(skb_end_pointer(skb)))->dataref, 1 + (1 << 16)); } # 1634 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_shared(const struct sk_buff *skb) { return refcount_read(&skb->users) != 1; } # 1652 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *skb_share_check(struct sk_buff *skb, gfp_t pri) { do { if (gfpflags_allow_blocking(pri)) do { __might_sleep("../include/linux/skbuff.h", 1654, 0); do { } while (0); } while (0); } while (0); if (skb_shared(skb)) { struct sk_buff *nskb = skb_clone(skb, pri); if (__builtin_expect(!!(nskb), 1)) consume_skb(skb); else kfree_skb(skb); skb = nskb; } return skb; } # 1687 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *skb_unshare(struct sk_buff *skb, gfp_t pri) { do { if (gfpflags_allow_blocking(pri)) do { __might_sleep("../include/linux/skbuff.h", 1690, 0); do { } while (0); } while (0); } while (0); if (skb_cloned(skb)) { struct sk_buff *nskb = skb_copy(skb, pri); if (__builtin_expect(!!(nskb), 1)) consume_skb(skb); else kfree_skb(skb); skb = nskb; } return skb; } # 1717 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *skb_peek(const struct sk_buff_head *list_) { struct sk_buff *skb = list_->next; if (skb == (struct sk_buff *)list_) skb = ((void *)0); return skb; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *__skb_peek(const struct sk_buff_head *list_) { return list_->next; } # 1746 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *skb_peek_next(struct sk_buff *skb, const struct sk_buff_head *list_) { struct sk_buff *next = skb->next; if (next == (struct sk_buff *)list_) next = ((void *)0); return next; } # 1769 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *skb_peek_tail(const struct sk_buff_head *list_) { struct sk_buff *skb = list_->prev; if (skb == (struct sk_buff *)list_) skb = ((void *)0); return skb; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u32 skb_queue_len(const struct sk_buff_head *list_) { return list_->qlen; } # 1800 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_queue_head_init(struct sk_buff_head *list) { list->prev = list->next = (struct sk_buff *)list; list->qlen = 0; } # 1814 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_queue_head_init(struct sk_buff_head *list) { do { spinlock_check(&list->lock); do { static struct lock_class_key __key; __raw_spin_lock_init((&(&list->lock)->rlock), "&(&list->lock)->rlock", &__key); } while (0); } while (0); __skb_queue_head_init(list); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_queue_head_init_class(struct sk_buff_head *list, struct lock_class_key *class) { skb_queue_head_init(list); lockdep_init_map(&(&list->lock)->dep_map, "class", class, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_insert(struct sk_buff *newsk, struct sk_buff *prev, struct sk_buff *next, struct sk_buff_head *list) { newsk->next = next; newsk->prev = prev; next->prev = prev->next = newsk; list->qlen++; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_queue_splice(const struct sk_buff_head *list, struct sk_buff *prev, struct sk_buff *next) { struct sk_buff *first = list->next; struct sk_buff *last = list->prev; first->prev = prev; prev->next = first; last->next = next; next->prev = last; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_queue_splice(const struct sk_buff_head *list, struct sk_buff_head *head) { if (!skb_queue_empty(list)) { __skb_queue_splice(list, (struct sk_buff *) head, head->next); head->qlen += list->qlen; } } # 1878 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_queue_splice_init(struct sk_buff_head *list, struct sk_buff_head *head) { if (!skb_queue_empty(list)) { __skb_queue_splice(list, (struct sk_buff *) head, head->next); head->qlen += list->qlen; __skb_queue_head_init(list); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_queue_splice_tail(const struct sk_buff_head *list, struct sk_buff_head *head) { if (!skb_queue_empty(list)) { __skb_queue_splice(list, head->prev, (struct sk_buff *) head); head->qlen += list->qlen; } } # 1910 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_queue_splice_tail_init(struct sk_buff_head *list, struct sk_buff_head *head) { if (!skb_queue_empty(list)) { __skb_queue_splice(list, head->prev, (struct sk_buff *) head); head->qlen += list->qlen; __skb_queue_head_init(list); } } # 1931 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_queue_after(struct sk_buff_head *list, struct sk_buff *prev, struct sk_buff *newsk) { __skb_insert(newsk, prev, prev->next, list); } void skb_append(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_queue_before(struct sk_buff_head *list, struct sk_buff *next, struct sk_buff *newsk) { __skb_insert(newsk, next->prev, next, list); } # 1958 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk) { __skb_queue_after(list, (struct sk_buff *)list, newsk); } void skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk); # 1975 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk) { __skb_queue_before(list, (struct sk_buff *)list, newsk); } void skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk); void skb_unlink(struct sk_buff *skb, struct sk_buff_head *list); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list) { struct sk_buff *next, *prev; list->qlen--; next = skb->next; prev = skb->prev; skb->next = skb->prev = ((void *)0); next->prev = prev; prev->next = next; } # 2007 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *__skb_dequeue(struct sk_buff_head *list) { struct sk_buff *skb = skb_peek(list); if (skb) __skb_unlink(skb, list); return skb; } struct sk_buff *skb_dequeue(struct sk_buff_head *list); # 2024 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *__skb_dequeue_tail(struct sk_buff_head *list) { struct sk_buff *skb = skb_peek_tail(list); if (skb) __skb_unlink(skb, list); return skb; } struct sk_buff *skb_dequeue_tail(struct sk_buff_head *list); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_is_nonlinear(const struct sk_buff *skb) { return skb->data_len; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int skb_headlen(const struct sk_buff *skb) { return skb->len - skb->data_len; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int __skb_pagelen(const struct sk_buff *skb) { unsigned int i, len = 0; for (i = ((struct skb_shared_info *)(skb_end_pointer(skb)))->nr_frags - 1; (int)i >= 0; i--) len += skb_frag_size(&((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[i]); return len; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int skb_pagelen(const struct sk_buff *skb) { return skb_headlen(skb) + __skb_pagelen(skb); } # 2071 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_fill_page_desc(struct sk_buff *skb, int i, struct page *page, int off, int size) { skb_frag_t *frag = &((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[i]; frag->page.p = page; frag->page_offset = off; skb_frag_size_set(frag, size); page = compound_head(page); if (page_is_pfmemalloc(page)) skb->pfmemalloc = true; } # 2104 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_fill_page_desc(struct sk_buff *skb, int i, struct page *page, int off, int size) { __skb_fill_page_desc(skb, i, page, off, size); ((struct skb_shared_info *)(skb_end_pointer(skb)))->nr_frags = i + 1; } void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off, int size, unsigned int truesize); void skb_coalesce_rx_frag(struct sk_buff *skb, int i, int size, unsigned int truesize); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char *skb_tail_pointer(const struct sk_buff *skb) { return skb->head + skb->tail; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_reset_tail_pointer(struct sk_buff *skb) { skb->tail = skb->data - skb->head; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_set_tail_pointer(struct sk_buff *skb, const int offset) { skb_reset_tail_pointer(skb); skb->tail += offset; } # 2157 "../include/linux/skbuff.h" void *pskb_put(struct sk_buff *skb, struct sk_buff *tail, int len); void *skb_put(struct sk_buff *skb, unsigned int len); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *__skb_put(struct sk_buff *skb, unsigned int len) { void *tmp = skb_tail_pointer(skb); do { if (__builtin_expect(!!(skb_is_nonlinear(skb)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/skbuff.h"), "i" (2162), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (402)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); skb->tail += len; skb->len += len; return tmp; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *__skb_put_zero(struct sk_buff *skb, unsigned int len) { void *tmp = __skb_put(skb, len); __memset(tmp, 0, len); return tmp; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *__skb_put_data(struct sk_buff *skb, const void *data, unsigned int len) { void *tmp = __skb_put(skb, len); __memcpy(tmp, data, len); return tmp; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_put_u8(struct sk_buff *skb, u8 val) { *(u8 *)__skb_put(skb, 1) = val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_put_zero(struct sk_buff *skb, unsigned int len) { void *tmp = skb_put(skb, len); __memset(tmp, 0, len); return tmp; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_put_data(struct sk_buff *skb, const void *data, unsigned int len) { void *tmp = skb_put(skb, len); __memcpy(tmp, data, len); return tmp; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_put_u8(struct sk_buff *skb, u8 val) { *(u8 *)skb_put(skb, 1) = val; } void *skb_push(struct sk_buff *skb, unsigned int len); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *__skb_push(struct sk_buff *skb, unsigned int len) { skb->data -= len; skb->len += len; return skb->data; } void *skb_pull(struct sk_buff *skb, unsigned int len); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *__skb_pull(struct sk_buff *skb, unsigned int len) { skb->len -= len; do { if (__builtin_expect(!!(skb->len < skb->data_len), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/skbuff.h"), "i" (2226), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (403)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); return skb->data += len; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_pull_inline(struct sk_buff *skb, unsigned int len) { return __builtin_expect(!!(len > skb->len), 0) ? ((void *)0) : __skb_pull(skb, len); } void *__pskb_pull_tail(struct sk_buff *skb, int delta); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *__pskb_pull(struct sk_buff *skb, unsigned int len) { if (len > skb_headlen(skb) && !__pskb_pull_tail(skb, len - skb_headlen(skb))) return ((void *)0); skb->len -= len; return skb->data += len; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *pskb_pull(struct sk_buff *skb, unsigned int len) { return __builtin_expect(!!(len > skb->len), 0) ? ((void *)0) : __pskb_pull(skb, len); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pskb_may_pull(struct sk_buff *skb, unsigned int len) { if (__builtin_expect(!!(len <= skb_headlen(skb)), 1)) return 1; if (__builtin_expect(!!(len > skb->len), 0)) return 0; return __pskb_pull_tail(skb, len - skb_headlen(skb)) != ((void *)0); } void skb_condense(struct sk_buff *skb); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int skb_headroom(const struct sk_buff *skb) { return skb->data - skb->head; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_tailroom(const struct sk_buff *skb) { return skb_is_nonlinear(skb) ? 0 : skb->end - skb->tail; } # 2291 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_availroom(const struct sk_buff *skb) { if (skb_is_nonlinear(skb)) return 0; return skb->end - skb->tail - skb->reserved_tailroom; } # 2307 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_reserve(struct sk_buff *skb, int len) { skb->data += len; skb->tail += len; } # 2325 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_tailroom_reserve(struct sk_buff *skb, unsigned int mtu, unsigned int needed_tailroom) { do { if (__builtin_expect(!!(skb_is_nonlinear(skb)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/skbuff.h"), "i" (2328), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (404)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (mtu < skb_tailroom(skb) - needed_tailroom) skb->reserved_tailroom = skb_tailroom(skb) - mtu; else skb->reserved_tailroom = needed_tailroom; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_set_inner_protocol(struct sk_buff *skb, __be16 protocol) { skb->inner_protocol = protocol; skb->inner_protocol_type = 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_set_inner_ipproto(struct sk_buff *skb, __u8 ipproto) { skb->inner_ipproto = ipproto; skb->inner_protocol_type = 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_reset_inner_headers(struct sk_buff *skb) { skb->inner_mac_header = skb->mac_header; skb->inner_network_header = skb->network_header; skb->inner_transport_header = skb->transport_header; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_reset_mac_len(struct sk_buff *skb) { skb->mac_len = skb->network_header - skb->mac_header; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char *skb_inner_transport_header(const struct sk_buff *skb) { return skb->head + skb->inner_transport_header; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_inner_transport_offset(const struct sk_buff *skb) { return skb_inner_transport_header(skb) - skb->data; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_reset_inner_transport_header(struct sk_buff *skb) { skb->inner_transport_header = skb->data - skb->head; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_set_inner_transport_header(struct sk_buff *skb, const int offset) { skb_reset_inner_transport_header(skb); skb->inner_transport_header += offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char *skb_inner_network_header(const struct sk_buff *skb) { return skb->head + skb->inner_network_header; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_reset_inner_network_header(struct sk_buff *skb) { skb->inner_network_header = skb->data - skb->head; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_set_inner_network_header(struct sk_buff *skb, const int offset) { skb_reset_inner_network_header(skb); skb->inner_network_header += offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char *skb_inner_mac_header(const struct sk_buff *skb) { return skb->head + skb->inner_mac_header; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_reset_inner_mac_header(struct sk_buff *skb) { skb->inner_mac_header = skb->data - skb->head; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_set_inner_mac_header(struct sk_buff *skb, const int offset) { skb_reset_inner_mac_header(skb); skb->inner_mac_header += offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_transport_header_was_set(const struct sk_buff *skb) { return skb->transport_header != (typeof(skb->transport_header))~0U; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char *skb_transport_header(const struct sk_buff *skb) { return skb->head + skb->transport_header; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_reset_transport_header(struct sk_buff *skb) { skb->transport_header = skb->data - skb->head; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_set_transport_header(struct sk_buff *skb, const int offset) { skb_reset_transport_header(skb); skb->transport_header += offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char *skb_network_header(const struct sk_buff *skb) { return skb->head + skb->network_header; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_reset_network_header(struct sk_buff *skb) { skb->network_header = skb->data - skb->head; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_set_network_header(struct sk_buff *skb, const int offset) { skb_reset_network_header(skb); skb->network_header += offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char *skb_mac_header(const struct sk_buff *skb) { return skb->head + skb->mac_header; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_mac_offset(const struct sk_buff *skb) { return skb_mac_header(skb) - skb->data; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 skb_mac_header_len(const struct sk_buff *skb) { return skb->network_header - skb->mac_header; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_mac_header_was_set(const struct sk_buff *skb) { return skb->mac_header != (typeof(skb->mac_header))~0U; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_reset_mac_header(struct sk_buff *skb) { skb->mac_header = skb->data - skb->head; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_set_mac_header(struct sk_buff *skb, const int offset) { skb_reset_mac_header(skb); skb->mac_header += offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_pop_mac_header(struct sk_buff *skb) { skb->mac_header = skb->network_header; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_probe_transport_header(struct sk_buff *skb) { struct flow_keys_basic keys; if (skb_transport_header_was_set(skb)) return; if (skb_flow_dissect_flow_keys_basic(((void *)0), skb, &keys, ((void *)0), 0, 0, 0, 0)) skb_set_transport_header(skb, keys.control.thoff); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_mac_header_rebuild(struct sk_buff *skb) { if (skb_mac_header_was_set(skb)) { const unsigned char *old_mac = skb_mac_header(skb); skb_set_mac_header(skb, -skb->mac_len); __memmove(skb_mac_header(skb), old_mac, skb->mac_len); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_checksum_start_offset(const struct sk_buff *skb) { return skb->csum_start - skb_headroom(skb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned char *skb_checksum_start(const struct sk_buff *skb) { return skb->head + skb->csum_start; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_transport_offset(const struct sk_buff *skb) { return skb_transport_header(skb) - skb->data; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 skb_network_header_len(const struct sk_buff *skb) { return skb->transport_header - skb->network_header; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 skb_inner_network_header_len(const struct sk_buff *skb) { return skb->inner_transport_header - skb->inner_network_header; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_network_offset(const struct sk_buff *skb) { return skb_network_header(skb) - skb->data; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_inner_network_offset(const struct sk_buff *skb) { return skb_inner_network_header(skb) - skb->data; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pskb_network_may_pull(struct sk_buff *skb, unsigned int len) { return pskb_may_pull(skb, skb_network_offset(skb) + len); } # 2606 "../include/linux/skbuff.h" int ___pskb_trim(struct sk_buff *skb, unsigned int len); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_set_length(struct sk_buff *skb, unsigned int len) { if (({ int __ret_warn_on = !!(skb_is_nonlinear(skb)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/skbuff.h"), "i" (2610), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (405)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return; skb->len = len; skb_set_tail_pointer(skb, len); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_trim(struct sk_buff *skb, unsigned int len) { __skb_set_length(skb, len); } void skb_trim(struct sk_buff *skb, unsigned int len); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __pskb_trim(struct sk_buff *skb, unsigned int len) { if (skb->data_len) return ___pskb_trim(skb, len); __skb_trim(skb, len); return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pskb_trim(struct sk_buff *skb, unsigned int len) { return (len < skb->len) ? __pskb_trim(skb, len) : 0; } # 2645 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pskb_trim_unique(struct sk_buff *skb, unsigned int len) { int err = pskb_trim(skb, len); do { if (__builtin_expect(!!(err), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/skbuff.h"), "i" (2648), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (406)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __skb_grow(struct sk_buff *skb, unsigned int len) { unsigned int diff = len - skb->len; if (skb_tailroom(skb) < diff) { int ret = pskb_expand_head(skb, 0, diff - skb_tailroom(skb), ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u))); if (ret) return ret; } __skb_set_length(skb, len); return 0; } # 2673 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_orphan(struct sk_buff *skb) { if (skb->destructor) { skb->destructor(skb); skb->destructor = ((void *)0); skb->sk = ((void *)0); } else { do { if (__builtin_expect(!!(skb->sk), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/skbuff.h"), "i" (2680), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (407)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); } } # 2693 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_orphan_frags(struct sk_buff *skb, gfp_t gfp_mask) { if (__builtin_expect(!!(!skb_zcopy(skb)), 1)) return 0; if (!skb_zcopy_is_nouarg(skb) && ((struct ubuf_info *)(((struct skb_shared_info *)(skb_end_pointer(skb)))->destructor_arg))->callback == sock_zerocopy_callback) return 0; return skb_copy_ubufs(skb, gfp_mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_orphan_frags_rx(struct sk_buff *skb, gfp_t gfp_mask) { if (__builtin_expect(!!(!skb_zcopy(skb)), 1)) return 0; return skb_copy_ubufs(skb, gfp_mask); } # 2719 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_queue_purge(struct sk_buff_head *list) { struct sk_buff *skb; while ((skb = __skb_dequeue(list)) != ((void *)0)) kfree_skb(skb); } void skb_queue_purge(struct sk_buff_head *list); unsigned int skb_rbtree_purge(struct rb_root *root); void *netdev_alloc_frag(unsigned int fragsz); struct sk_buff *__netdev_alloc_skb(struct net_device *dev, unsigned int length, gfp_t gfp_mask); # 2747 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *netdev_alloc_skb(struct net_device *dev, unsigned int length) { return __netdev_alloc_skb(dev, length, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *__dev_alloc_skb(unsigned int length, gfp_t gfp_mask) { return __netdev_alloc_skb(((void *)0), length, gfp_mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *dev_alloc_skb(unsigned int length) { return netdev_alloc_skb(((void *)0), length); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *__netdev_alloc_skb_ip_align(struct net_device *dev, unsigned int length, gfp_t gfp) { struct sk_buff *skb = __netdev_alloc_skb(dev, length + 0, gfp); if (0 && skb) skb_reserve(skb, 0); return skb; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *netdev_alloc_skb_ip_align(struct net_device *dev, unsigned int length) { return __netdev_alloc_skb_ip_align(dev, length, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_free_frag(void *addr) { page_frag_free(addr); } void *napi_alloc_frag(unsigned int fragsz); struct sk_buff *__napi_alloc_skb(struct napi_struct *napi, unsigned int length, gfp_t gfp_mask); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *napi_alloc_skb(struct napi_struct *napi, unsigned int length) { return __napi_alloc_skb(napi, length, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u))); } void napi_consume_skb(struct sk_buff *skb, int budget); void __kfree_skb_flush(void); void __kfree_skb_defer(struct sk_buff *skb); # 2810 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page *__dev_alloc_pages(gfp_t gfp_mask, unsigned int order) { # 2821 "../include/linux/skbuff.h" gfp_mask |= (( gfp_t)0x40000u) | (( gfp_t)0x20000u); return alloc_pages_node((-1), gfp_mask, order); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page *dev_alloc_pages(unsigned int order) { return __dev_alloc_pages(((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u)) | (( gfp_t)0x2000u), order); } # 2839 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page *__dev_alloc_page(gfp_t gfp_mask) { return __dev_alloc_pages(gfp_mask, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page *dev_alloc_page(void) { return dev_alloc_pages(0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_propagate_pfmemalloc(struct page *page, struct sk_buff *skb) { if (page_is_pfmemalloc(page)) skb->pfmemalloc = true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page *skb_frag_page(const skb_frag_t *frag) { return frag->page.p; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_frag_ref(skb_frag_t *frag) { get_page(skb_frag_page(frag)); } # 2890 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_frag_ref(struct sk_buff *skb, int f) { __skb_frag_ref(&((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[f]); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_frag_unref(skb_frag_t *frag) { put_page(skb_frag_page(frag)); } # 2913 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_frag_unref(struct sk_buff *skb, int f) { __skb_frag_unref(&((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[f]); } # 2925 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_frag_address(const skb_frag_t *frag) { return lowmem_page_address(skb_frag_page(frag)) + frag->page_offset; } # 2937 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_frag_address_safe(const skb_frag_t *frag) { void *ptr = lowmem_page_address(skb_frag_page(frag)); if (__builtin_expect(!!(!ptr), 0)) return ((void *)0); return ptr + frag->page_offset; } # 2953 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_frag_set_page(skb_frag_t *frag, struct page *page) { frag->page.p = page; } # 2966 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_frag_set_page(struct sk_buff *skb, int f, struct page *page) { __skb_frag_set_page(&((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[f], page); } bool skb_page_frag_refill(unsigned int sz, struct page_frag *pfrag, gfp_t prio); # 2985 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) dma_addr_t skb_frag_dma_map(struct device *dev, const skb_frag_t *frag, size_t offset, size_t size, enum dma_data_direction dir) { return dma_map_page_attrs(dev, skb_frag_page(frag), frag->page_offset + offset, size, dir, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *pskb_copy(struct sk_buff *skb, gfp_t gfp_mask) { return __pskb_copy(skb, skb_headroom(skb), gfp_mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *pskb_copy_for_clone(struct sk_buff *skb, gfp_t gfp_mask) { return __pskb_copy_fclone(skb, skb_headroom(skb), gfp_mask, true); } # 3016 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_clone_writable(const struct sk_buff *skb, unsigned int len) { return !skb_header_cloned(skb) && skb_headroom(skb) + len <= skb->hdr_len; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_try_make_writable(struct sk_buff *skb, unsigned int write_len) { return skb_cloned(skb) && !skb_clone_writable(skb, write_len) && pskb_expand_head(skb, 0, 0, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __skb_cow(struct sk_buff *skb, unsigned int headroom, int cloned) { int delta = 0; if (headroom > skb_headroom(skb)) delta = headroom - skb_headroom(skb); if (delta || cloned) return pskb_expand_head(skb, ((((delta)) + ((typeof((delta)))((__builtin_choose_expr(((!!(sizeof((typeof(32) *)1 == (typeof((1 << (6))) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)(32) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)((1 << (6))) * 0l)) : (int *)8))))), ((32) > ((1 << (6))) ? (32) : ((1 << (6)))), ({ typeof(32) __UNIQUE_ID___x408 = (32); typeof((1 << (6))) __UNIQUE_ID___y409 = ((1 << (6))); ((__UNIQUE_ID___x408) > (__UNIQUE_ID___y409) ? (__UNIQUE_ID___x408) : (__UNIQUE_ID___y409)); })))) - 1)) & ~((typeof((delta)))((__builtin_choose_expr(((!!(sizeof((typeof(32) *)1 == (typeof((1 << (6))) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)(32) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)((1 << (6))) * 0l)) : (int *)8))))), ((32) > ((1 << (6))) ? (32) : ((1 << (6)))), ({ typeof(32) __UNIQUE_ID___x408 = (32); typeof((1 << (6))) __UNIQUE_ID___y409 = ((1 << (6))); ((__UNIQUE_ID___x408) > (__UNIQUE_ID___y409) ? (__UNIQUE_ID___x408) : (__UNIQUE_ID___y409)); })))) - 1)), 0, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u))); return 0; } # 3055 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_cow(struct sk_buff *skb, unsigned int headroom) { return __skb_cow(skb, headroom, skb_cloned(skb)); } # 3070 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_cow_head(struct sk_buff *skb, unsigned int headroom) { return __skb_cow(skb, headroom, skb_header_cloned(skb)); } # 3085 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_padto(struct sk_buff *skb, unsigned int len) { unsigned int size = skb->len; if (__builtin_expect(!!(size >= len), 1)) return 0; return skb_pad(skb, len - size); } # 3104 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __skb_put_padto(struct sk_buff *skb, unsigned int len, bool free_on_error) { unsigned int size = skb->len; if (__builtin_expect(!!(size < len), 0)) { len -= size; if (__skb_pad(skb, len, free_on_error)) return -12; __skb_put(skb, len); } return 0; } # 3128 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_put_padto(struct sk_buff *skb, unsigned int len) { return __skb_put_padto(skb, len, true); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_add_data(struct sk_buff *skb, struct iov_iter *from, int copy) { const int off = skb->len; if (skb->ip_summed == 0) { __wsum csum = 0; if (csum_and_copy_from_iter_full(skb_put(skb, copy), copy, &csum, from)) { skb->csum = csum_block_add(skb->csum, csum, off); return 0; } } else if (copy_from_iter_full(skb_put(skb, copy), copy, from)) return 0; __skb_trim(skb, off); return -14; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_can_coalesce(struct sk_buff *skb, int i, const struct page *page, int off) { if (skb_zcopy(skb)) return false; if (i) { const struct skb_frag_struct *frag = &((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[i - 1]; return page == skb_frag_page(frag) && off == frag->page_offset + skb_frag_size(frag); } return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __skb_linearize(struct sk_buff *skb) { return __pskb_pull_tail(skb, skb->data_len) ? 0 : -12; } # 3178 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_linearize(struct sk_buff *skb) { return skb_is_nonlinear(skb) ? __skb_linearize(skb) : 0; } # 3190 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_has_shared_frag(const struct sk_buff *skb) { return skb_is_nonlinear(skb) && ((struct skb_shared_info *)(skb_end_pointer(skb)))->tx_flags & SKBTX_SHARED_FRAG; } # 3203 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_linearize_cow(struct sk_buff *skb) { return skb_is_nonlinear(skb) || skb_cloned(skb) ? __skb_linearize(skb) : 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __skb_postpull_rcsum(struct sk_buff *skb, const void *start, unsigned int len, unsigned int off) { if (skb->ip_summed == 2) skb->csum = csum_block_sub(skb->csum, csum_partial(start, len, 0), off); else if (skb->ip_summed == 3 && skb_checksum_start_offset(skb) < 0) skb->ip_summed = 0; } # 3231 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_postpull_rcsum(struct sk_buff *skb, const void *start, unsigned int len) { __skb_postpull_rcsum(skb, start, len, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void __skb_postpush_rcsum(struct sk_buff *skb, const void *start, unsigned int len, unsigned int off) { if (skb->ip_summed == 2) skb->csum = csum_block_add(skb->csum, csum_partial(start, len, 0), off); } # 3255 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_postpush_rcsum(struct sk_buff *skb, const void *start, unsigned int len) { __skb_postpush_rcsum(skb, start, len, 0); } void *skb_pull_rcsum(struct sk_buff *skb, unsigned int len); # 3274 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_push_rcsum(struct sk_buff *skb, unsigned int len) { skb_push(skb, len); skb_postpush_rcsum(skb, skb->data, len); return skb->data; } int pskb_trim_rcsum_slow(struct sk_buff *skb, unsigned int len); # 3292 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len) { if (__builtin_expect(!!(len >= skb->len), 1)) return 0; return pskb_trim_rcsum_slow(skb, len); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __skb_trim_rcsum(struct sk_buff *skb, unsigned int len) { if (skb->ip_summed == 2) skb->ip_summed = 0; __skb_trim(skb, len); return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __skb_grow_rcsum(struct sk_buff *skb, unsigned int len) { if (skb->ip_summed == 2) skb->ip_summed = 0; return __skb_grow(skb, len); } # 3366 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_has_frag_list(const struct sk_buff *skb) { return ((struct skb_shared_info *)(skb_end_pointer(skb)))->frag_list != ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_frag_list_init(struct sk_buff *skb) { ((struct skb_shared_info *)(skb_end_pointer(skb)))->frag_list = ((void *)0); } int __skb_wait_for_more_packets(struct sock *sk, int *err, long *timeo_p, const struct sk_buff *skb); struct sk_buff *__skb_try_recv_from_queue(struct sock *sk, struct sk_buff_head *queue, unsigned int flags, void (*destructor)(struct sock *sk, struct sk_buff *skb), int *off, int *err, struct sk_buff **last); struct sk_buff *__skb_try_recv_datagram(struct sock *sk, unsigned flags, void (*destructor)(struct sock *sk, struct sk_buff *skb), int *off, int *err, struct sk_buff **last); struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned flags, void (*destructor)(struct sock *sk, struct sk_buff *skb), int *off, int *err); struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int noblock, int *err); __poll_t datagram_poll(struct file *file, struct socket *sock, struct poll_table_struct *wait); int skb_copy_datagram_iter(const struct sk_buff *from, int offset, struct iov_iter *to, int size); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_copy_datagram_msg(const struct sk_buff *from, int offset, struct msghdr *msg, int size) { return skb_copy_datagram_iter(from, offset, &msg->msg_iter, size); } int skb_copy_and_csum_datagram_msg(struct sk_buff *skb, int hlen, struct msghdr *msg); int skb_copy_and_hash_datagram_iter(const struct sk_buff *skb, int offset, struct iov_iter *to, int len, struct ahash_request *hash); int skb_copy_datagram_from_iter(struct sk_buff *skb, int offset, struct iov_iter *from, int len); int zerocopy_sg_from_iter(struct sk_buff *skb, struct iov_iter *frm); void skb_free_datagram(struct sock *sk, struct sk_buff *skb); void __skb_free_datagram_locked(struct sock *sk, struct sk_buff *skb, int len); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_free_datagram_locked(struct sock *sk, struct sk_buff *skb) { __skb_free_datagram_locked(sk, skb, 0); } int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int flags); int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len); int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int len); __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset, u8 *to, int len, __wsum csum); int skb_splice_bits(struct sk_buff *skb, struct sock *sk, unsigned int offset, struct pipe_inode_info *pipe, unsigned int len, unsigned int flags); int skb_send_sock_locked(struct sock *sk, struct sk_buff *skb, int offset, int len); void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to); unsigned int skb_zerocopy_headlen(const struct sk_buff *from); int skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen); void skb_split(struct sk_buff *skb, struct sk_buff *skb1, const u32 len); int skb_shift(struct sk_buff *tgt, struct sk_buff *skb, int shiftlen); void skb_scrub_packet(struct sk_buff *skb, bool xnet); bool skb_gso_validate_network_len(const struct sk_buff *skb, unsigned int mtu); bool skb_gso_validate_mac_len(const struct sk_buff *skb, unsigned int len); struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features); struct sk_buff *skb_vlan_untag(struct sk_buff *skb); int skb_ensure_writable(struct sk_buff *skb, int write_len); int __skb_vlan_pop(struct sk_buff *skb, u16 *vlan_tci); int skb_vlan_pop(struct sk_buff *skb); int skb_vlan_push(struct sk_buff *skb, __be16 vlan_proto, u16 vlan_tci); struct sk_buff *pskb_extract(struct sk_buff *skb, int off, int to_copy, gfp_t gfp); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int memcpy_from_msg(void *data, struct msghdr *msg, int len) { return copy_from_iter_full(data, len, &msg->msg_iter) ? 0 : -14; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int memcpy_to_msg(struct msghdr *msg, void *data, int len) { return copy_to_iter(data, len, &msg->msg_iter) == len ? 0 : -14; } struct skb_checksum_ops { __wsum (*update)(const void *mem, int len, __wsum wsum); __wsum (*combine)(__wsum csum, __wsum csum2, int offset, int len); }; extern const struct skb_checksum_ops *crc32c_csum_stub __attribute__((__section__(".data..read_mostly"))); __wsum __skb_checksum(const struct sk_buff *skb, int offset, int len, __wsum csum, const struct skb_checksum_ops *ops); __wsum skb_checksum(const struct sk_buff *skb, int offset, int len, __wsum csum); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void * __attribute__((__warn_unused_result__)) __skb_header_pointer(const struct sk_buff *skb, int offset, int len, void *data, int hlen, void *buffer) { if (hlen - offset >= len) return data + offset; if (!skb || skb_copy_bits(skb, offset, buffer, len) < 0) return ((void *)0); return buffer; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void * __attribute__((__warn_unused_result__)) skb_header_pointer(const struct sk_buff *skb, int offset, int len, void *buffer) { return __skb_header_pointer(skb, offset, len, skb->data, skb_headlen(skb), buffer); } # 3505 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_needs_linearize(struct sk_buff *skb, netdev_features_t features) { return skb_is_nonlinear(skb) && ((skb_has_frag_list(skb) && !(features & ((netdev_features_t)1 << (NETIF_F_FRAGLIST_BIT)))) || (((struct skb_shared_info *)(skb_end_pointer(skb)))->nr_frags && !(features & ((netdev_features_t)1 << (NETIF_F_SG_BIT))))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_copy_from_linear_data(const struct sk_buff *skb, void *to, const unsigned int len) { __memcpy(to, skb->data, len); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_copy_from_linear_data_offset(const struct sk_buff *skb, const int offset, void *to, const unsigned int len) { __memcpy(to, skb->data + offset, len); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_copy_to_linear_data(struct sk_buff *skb, const void *from, const unsigned int len) { __memcpy(skb->data, from, len); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_copy_to_linear_data_offset(struct sk_buff *skb, const int offset, const void *from, const unsigned int len) { __memcpy(skb->data + offset, from, len); } void skb_init(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t skb_get_ktime(const struct sk_buff *skb) { return skb->tstamp; } # 3558 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_get_timestamp(const struct sk_buff *skb, struct __kernel_old_timeval *stamp) { *stamp = ns_to_kernel_old_timeval(skb->tstamp); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_get_new_timestamp(const struct sk_buff *skb, struct __kernel_sock_timeval *stamp) { struct timespec64 ts = ns_to_timespec64((skb->tstamp)); stamp->tv_sec = ts.tv_sec; stamp->tv_usec = ts.tv_nsec / 1000; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_get_timestampns(const struct sk_buff *skb, struct timespec *stamp) { *stamp = ns_to_timespec((skb->tstamp)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_get_new_timestampns(const struct sk_buff *skb, struct __kernel_timespec *stamp) { struct timespec64 ts = ns_to_timespec64((skb->tstamp)); stamp->tv_sec = ts.tv_sec; stamp->tv_nsec = ts.tv_nsec; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __net_timestamp(struct sk_buff *skb) { skb->tstamp = ktime_get_real(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t net_timedelta(ktime_t t) { return ((ktime_get_real()) - (t)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ktime_t net_invalid_timestamp(void) { return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 skb_metadata_len(const struct sk_buff *skb) { return ((struct skb_shared_info *)(skb_end_pointer(skb)))->meta_len; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_metadata_end(const struct sk_buff *skb) { return skb_mac_header(skb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __skb_metadata_differs(const struct sk_buff *skb_a, const struct sk_buff *skb_b, u8 meta_len) { const void *a = skb_metadata_end(skb_a); const void *b = skb_metadata_end(skb_b); u64 diffs = 0; switch (meta_len) { case 32: diffs |= (*(u64 *)(a -= sizeof(u64))) ^ (*(u64 *)(b -= sizeof(u64))); case 24: diffs |= (*(u64 *)(a -= sizeof(u64))) ^ (*(u64 *)(b -= sizeof(u64))); case 16: diffs |= (*(u64 *)(a -= sizeof(u64))) ^ (*(u64 *)(b -= sizeof(u64))); case 8: diffs |= (*(u64 *)(a -= sizeof(u64))) ^ (*(u64 *)(b -= sizeof(u64))); break; case 28: diffs |= (*(u64 *)(a -= sizeof(u64))) ^ (*(u64 *)(b -= sizeof(u64))); case 20: diffs |= (*(u64 *)(a -= sizeof(u64))) ^ (*(u64 *)(b -= sizeof(u64))); case 12: diffs |= (*(u64 *)(a -= sizeof(u64))) ^ (*(u64 *)(b -= sizeof(u64))); case 4: diffs |= (*(u32 *)(a -= sizeof(u32))) ^ (*(u32 *)(b -= sizeof(u32))); break; } return diffs; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_metadata_differs(const struct sk_buff *skb_a, const struct sk_buff *skb_b) { u8 len_a = skb_metadata_len(skb_a); u8 len_b = skb_metadata_len(skb_b); if (!(len_a | len_b)) return false; return len_a != len_b ? true : __skb_metadata_differs(skb_a, skb_b, len_a); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_metadata_set(struct sk_buff *skb, u8 meta_len) { ((struct skb_shared_info *)(skb_end_pointer(skb)))->meta_len = meta_len; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_metadata_clear(struct sk_buff *skb) { skb_metadata_set(skb, 0); } struct sk_buff *skb_clone_sk(struct sk_buff *skb); void skb_clone_tx_timestamp(struct sk_buff *skb); bool skb_defer_rx_timestamp(struct sk_buff *skb); # 3704 "../include/linux/skbuff.h" void skb_complete_tx_timestamp(struct sk_buff *skb, struct skb_shared_hwtstamps *hwtstamps); void __skb_tstamp_tx(struct sk_buff *orig_skb, struct skb_shared_hwtstamps *hwtstamps, struct sock *sk, int tstype); # 3722 "../include/linux/skbuff.h" void skb_tstamp_tx(struct sk_buff *orig_skb, struct skb_shared_hwtstamps *hwtstamps); # 3737 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_tx_timestamp(struct sk_buff *skb) { skb_clone_tx_timestamp(skb); if (((struct skb_shared_info *)(skb_end_pointer(skb)))->tx_flags & SKBTX_SW_TSTAMP) skb_tstamp_tx(skb, ((void *)0)); } # 3751 "../include/linux/skbuff.h" void skb_complete_wifi_ack(struct sk_buff *skb, bool acked); __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len); __sum16 __skb_checksum_complete(struct sk_buff *skb); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_csum_unnecessary(const struct sk_buff *skb) { return ((skb->ip_summed == 1) || skb->csum_valid || (skb->ip_summed == 3 && skb_checksum_start_offset(skb) >= 0)); } # 3780 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __sum16 skb_checksum_complete(struct sk_buff *skb) { return skb_csum_unnecessary(skb) ? 0 : __skb_checksum_complete(skb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_decr_checksum_unnecessary(struct sk_buff *skb) { if (skb->ip_summed == 1) { if (skb->csum_level == 0) skb->ip_summed = 0; else skb->csum_level--; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_incr_checksum_unnecessary(struct sk_buff *skb) { if (skb->ip_summed == 1) { if (skb->csum_level < 3) skb->csum_level++; } else if (skb->ip_summed == 0) { skb->ip_summed = 1; skb->csum_level = 0; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __skb_checksum_validate_needed(struct sk_buff *skb, bool zero_okay, __sum16 check) { if (skb_csum_unnecessary(skb) || (zero_okay && !check)) { skb->csum_valid = 1; __skb_decr_checksum_unnecessary(skb); return false; } return true; } # 3836 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_checksum_complete_unset(struct sk_buff *skb) { if (skb->ip_summed == 2) skb->ip_summed = 0; } # 3851 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __sum16 __skb_checksum_validate_complete(struct sk_buff *skb, bool complete, __wsum psum) { if (skb->ip_summed == 2) { if (!csum_fold(csum_add(psum, skb->csum))) { skb->csum_valid = 1; return 0; } } skb->csum = psum; if (complete || skb->len <= 76) { __sum16 csum; csum = __skb_checksum_complete(skb); skb->csum_valid = !csum; return csum; } return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __wsum null_compute_pseudo(struct sk_buff *skb, int proto) { return 0; } # 3917 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __skb_checksum_convert_check(struct sk_buff *skb) { return (skb->ip_summed == 0 && skb->csum_valid); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_checksum_convert(struct sk_buff *skb, __sum16 check, __wsum pseudo) { skb->csum = ~pseudo; skb->ip_summed = 2; } # 3936 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_remcsum_adjust_partial(struct sk_buff *skb, void *ptr, u16 start, u16 offset) { skb->ip_summed = 3; skb->csum_start = ((unsigned char *)ptr + start) - skb->head; skb->csum_offset = offset - start; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_remcsum_process(struct sk_buff *skb, void *ptr, int start, int offset, bool nopartial) { __wsum delta; if (!nopartial) { skb_remcsum_adjust_partial(skb, ptr, start, offset); return; } if (__builtin_expect(!!(skb->ip_summed != 2), 0)) { __skb_checksum_complete(skb); skb_postpull_rcsum(skb, skb->data, ptr - (void *)skb->data); } delta = remcsum_adjust(ptr, skb->csum, start, offset); skb->csum = csum_add(skb->csum, delta); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct nf_conntrack *skb_nfct(const struct sk_buff *skb) { return (void *)(skb->_nfct & ~(7UL)); } void nf_conntrack_destroy(struct nf_conntrack *nfct); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void nf_conntrack_put(struct nf_conntrack *nfct) { if (nfct && atomic_dec_and_test(&nfct->use)) nf_conntrack_destroy(nfct); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void nf_conntrack_get(struct nf_conntrack *nfct) { if (nfct) atomic_inc(&nfct->use); } enum skb_ext_id { SKB_EXT_BRIDGE_NF, SKB_EXT_SEC_PATH, SKB_EXT_NUM, }; # 4014 "../include/linux/skbuff.h" struct skb_ext { refcount_t refcnt; u8 offset[SKB_EXT_NUM]; u8 chunks; char data[0] __attribute__((__aligned__(8))); }; void *skb_ext_add(struct sk_buff *skb, enum skb_ext_id id); void __skb_ext_del(struct sk_buff *skb, enum skb_ext_id id); void __skb_ext_put(struct skb_ext *ext); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_ext_put(struct sk_buff *skb) { if (skb->active_extensions) __skb_ext_put(skb->extensions); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_ext_copy(struct sk_buff *dst, const struct sk_buff *src) { dst->active_extensions = src->active_extensions; if (src->active_extensions) { struct skb_ext *ext = src->extensions; refcount_inc_checked(&ext->refcnt); dst->extensions = ext; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_ext_copy(struct sk_buff *dst, const struct sk_buff *src) { skb_ext_put(dst); __skb_ext_copy(dst, src); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __skb_ext_exist(const struct skb_ext *ext, enum skb_ext_id i) { return !!ext->offset[i]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_ext_exist(const struct sk_buff *skb, enum skb_ext_id id) { return skb->active_extensions & (1 << id); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_ext_del(struct sk_buff *skb, enum skb_ext_id id) { if (skb_ext_exist(skb, id)) __skb_ext_del(skb, id); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_ext_find(const struct sk_buff *skb, enum skb_ext_id id) { if (skb_ext_exist(skb, id)) { struct skb_ext *ext = skb->extensions; return (void *)ext + (ext->offset[id] << 3); } return ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void nf_reset(struct sk_buff *skb) { nf_conntrack_put(skb_nfct(skb)); skb->_nfct = 0; skb_ext_del(skb, SKB_EXT_BRIDGE_NF); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void nf_reset_trace(struct sk_buff *skb) { skb->nf_trace = 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ipvs_reset(struct sk_buff *skb) { skb->ipvs_property = 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __nf_copy(struct sk_buff *dst, const struct sk_buff *src, bool copy) { dst->_nfct = src->_nfct; nf_conntrack_get(skb_nfct(src)); if (copy) dst->nf_trace = src->nf_trace; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void nf_copy(struct sk_buff *dst, const struct sk_buff *src) { nf_conntrack_put(skb_nfct(dst)); __nf_copy(dst, src, true); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_copy_secmark(struct sk_buff *to, const struct sk_buff *from) { to->secmark = from->secmark; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_init_secmark(struct sk_buff *skb) { skb->secmark = 0; } # 4148 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int secpath_exists(const struct sk_buff *skb) { return skb_ext_exist(skb, SKB_EXT_SEC_PATH); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_irq_freeable(const struct sk_buff *skb) { return !skb->destructor && !secpath_exists(skb) && !skb_nfct(skb) && !skb->_skb_refdst && !skb_has_frag_list(skb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_set_queue_mapping(struct sk_buff *skb, u16 queue_mapping) { skb->queue_mapping = queue_mapping; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 skb_get_queue_mapping(const struct sk_buff *skb) { return skb->queue_mapping; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_copy_queue_mapping(struct sk_buff *to, const struct sk_buff *from) { to->queue_mapping = from->queue_mapping; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_record_rx_queue(struct sk_buff *skb, u16 rx_queue) { skb->queue_mapping = rx_queue + 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 skb_get_rx_queue(const struct sk_buff *skb) { return skb->queue_mapping - 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_rx_queue_recorded(const struct sk_buff *skb) { return skb->queue_mapping != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_set_dst_pending_confirm(struct sk_buff *skb, u32 val) { skb->dst_pending_confirm = val; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_get_dst_pending_confirm(const struct sk_buff *skb) { return skb->dst_pending_confirm != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sec_path *skb_sec_path(const struct sk_buff *skb) { return skb_ext_find(skb, SKB_EXT_SEC_PATH); } struct skb_gso_cb { union { int mac_offset; int data_offset; }; int encap_level; __wsum csum; __u16 csum_start; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_tnl_header_len(const struct sk_buff *inner_skb) { return (skb_mac_header(inner_skb) - inner_skb->head) - ((struct skb_gso_cb *)((inner_skb)->cb + 32))->mac_offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int gso_pskb_expand_head(struct sk_buff *skb, int extra) { int new_headroom, headroom; int ret; headroom = skb_headroom(skb); ret = pskb_expand_head(skb, extra, 0, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u))); if (ret) return ret; new_headroom = skb_headroom(skb); ((struct skb_gso_cb *)((skb)->cb + 32))->mac_offset += (new_headroom - headroom); return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void gso_reset_checksum(struct sk_buff *skb, __wsum res) { if (skb->remcsum_offload) return; ((struct skb_gso_cb *)((skb)->cb + 32))->csum = res; ((struct skb_gso_cb *)((skb)->cb + 32))->csum_start = skb_checksum_start(skb) - skb->head; } # 4272 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __sum16 gso_make_checksum(struct sk_buff *skb, __wsum res) { unsigned char *csum_start = skb_transport_header(skb); int plen = (skb->head + ((struct skb_gso_cb *)((skb)->cb + 32))->csum_start) - csum_start; __wsum partial = ((struct skb_gso_cb *)((skb)->cb + 32))->csum; ((struct skb_gso_cb *)((skb)->cb + 32))->csum = res; ((struct skb_gso_cb *)((skb)->cb + 32))->csum_start = csum_start - skb->head; return csum_fold(csum_partial(csum_start, plen, partial)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_is_gso(const struct sk_buff *skb) { return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_size; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_is_gso_v6(const struct sk_buff *skb) { return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type & SKB_GSO_TCPV6; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_is_gso_sctp(const struct sk_buff *skb) { return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type & SKB_GSO_SCTP; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_is_gso_tcp(const struct sk_buff *skb) { return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_gso_reset(struct sk_buff *skb) { ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_size = 0; ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_segs = 0; ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type = 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_increase_gso_size(struct skb_shared_info *shinfo, u16 increment) { if (({ int __ret_warn_on = !!(shinfo->gso_size == 0xFFFF); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/skbuff.h"), "i" (4317), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (410)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return; shinfo->gso_size += increment; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_decrease_gso_size(struct skb_shared_info *shinfo, u16 decrement) { if (({ int __ret_warn_on = !!(shinfo->gso_size == 0xFFFF); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/skbuff.h"), "i" (4325), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (411)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return; shinfo->gso_size -= decrement; } void __skb_warn_lro_forwarding(const struct sk_buff *skb); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_warn_if_lro(const struct sk_buff *skb) { const struct skb_shared_info *shinfo = ((struct skb_shared_info *)(skb_end_pointer(skb))); if (skb_is_nonlinear(skb) && shinfo->gso_size != 0 && __builtin_expect(!!(shinfo->gso_type == 0), 0)) { __skb_warn_lro_forwarding(skb); return true; } return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_forward_csum(struct sk_buff *skb) { if (skb->ip_summed == 2) skb->ip_summed = 0; } # 4361 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_checksum_none_assert(const struct sk_buff *skb) { } bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off); int skb_checksum_setup(struct sk_buff *skb, bool recalculate); struct sk_buff *skb_checksum_trimmed(struct sk_buff *skb, unsigned int transport_len, __sum16(*skb_chkf)(struct sk_buff *skb)); # 4384 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_head_is_locked(const struct sk_buff *skb) { return !skb->head_frag || skb_cloned(skb); } # 4398 "../include/linux/skbuff.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __wsum lco_csum(struct sk_buff *skb) { unsigned char *csum_start = skb_checksum_start(skb); unsigned char *l4_hdr = skb_transport_header(skb); __wsum partial; partial = ~csum_unfold(*( __sum16 *)(csum_start + skb->csum_offset)); return csum_partial(l4_hdr, csum_start - l4_hdr, partial); } # 20 "../include/linux/if_ether.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct ethhdr *eth_hdr(const struct sk_buff *skb) { return (struct ethhdr *)skb_mac_header(skb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct ethhdr *inner_eth_hdr(const struct sk_buff *skb) { return (struct ethhdr *)skb_inner_mac_header(skb); } int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr); extern ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int len); # 20 "../include/uapi/linux/ethtool.h" 2 # 96 "../include/uapi/linux/ethtool.h" struct ethtool_cmd { __u32 cmd; __u32 supported; __u32 advertising; __u16 speed; __u8 duplex; __u8 port; __u8 phy_address; __u8 transceiver; __u8 autoneg; __u8 mdio_support; __u32 maxtxpkt; __u32 maxrxpkt; __u16 speed_hi; __u8 eth_tp_mdix; __u8 eth_tp_mdix_ctrl; __u32 lp_advertising; __u32 reserved[2]; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ethtool_cmd_speed_set(struct ethtool_cmd *ep, __u32 speed) { ep->speed = (__u16)(speed & 0xFFFF); ep->speed_hi = (__u16)(speed >> 16); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u32 ethtool_cmd_speed(const struct ethtool_cmd *ep) { return (ep->speed_hi << 16) | ep->speed; } # 177 "../include/uapi/linux/ethtool.h" struct ethtool_drvinfo { __u32 cmd; char driver[32]; char version[32]; char fw_version[32]; char bus_info[32]; char erom_version[32]; char reserved2[12]; __u32 n_priv_flags; __u32 n_stats; __u32 testinfo_len; __u32 eedump_len; __u32 regdump_len; }; # 203 "../include/uapi/linux/ethtool.h" struct ethtool_wolinfo { __u32 cmd; __u32 supported; __u32 wolopts; __u8 sopass[6]; }; struct ethtool_value { __u32 cmd; __u32 data; }; enum tunable_id { ETHTOOL_ID_UNSPEC, ETHTOOL_RX_COPYBREAK, ETHTOOL_TX_COPYBREAK, ETHTOOL_PFC_PREVENTION_TOUT, __ETHTOOL_TUNABLE_COUNT, }; enum tunable_type_id { ETHTOOL_TUNABLE_UNSPEC, ETHTOOL_TUNABLE_U8, ETHTOOL_TUNABLE_U16, ETHTOOL_TUNABLE_U32, ETHTOOL_TUNABLE_U64, ETHTOOL_TUNABLE_STRING, ETHTOOL_TUNABLE_S8, ETHTOOL_TUNABLE_S16, ETHTOOL_TUNABLE_S32, ETHTOOL_TUNABLE_S64, }; struct ethtool_tunable { __u32 cmd; __u32 id; __u32 type_id; __u32 len; void *data[0]; }; # 262 "../include/uapi/linux/ethtool.h" enum phy_tunable_id { ETHTOOL_PHY_ID_UNSPEC, ETHTOOL_PHY_DOWNSHIFT, ETHTOOL_PHY_FAST_LINK_DOWN, __ETHTOOL_PHY_TUNABLE_COUNT, }; # 288 "../include/uapi/linux/ethtool.h" struct ethtool_regs { __u32 cmd; __u32 version; __u32 len; __u8 data[0]; }; # 313 "../include/uapi/linux/ethtool.h" struct ethtool_eeprom { __u32 cmd; __u32 magic; __u32 offset; __u32 len; __u8 data[0]; }; # 338 "../include/uapi/linux/ethtool.h" struct ethtool_eee { __u32 cmd; __u32 supported; __u32 advertised; __u32 lp_advertised; __u32 eee_active; __u32 eee_enabled; __u32 tx_lpi_enabled; __u32 tx_lpi_timer; __u32 reserved[2]; }; # 360 "../include/uapi/linux/ethtool.h" struct ethtool_modinfo { __u32 cmd; __u32 type; __u32 eeprom_len; __u32 reserved[8]; }; # 440 "../include/uapi/linux/ethtool.h" struct ethtool_coalesce { __u32 cmd; __u32 rx_coalesce_usecs; __u32 rx_max_coalesced_frames; __u32 rx_coalesce_usecs_irq; __u32 rx_max_coalesced_frames_irq; __u32 tx_coalesce_usecs; __u32 tx_max_coalesced_frames; __u32 tx_coalesce_usecs_irq; __u32 tx_max_coalesced_frames_irq; __u32 stats_block_coalesce_usecs; __u32 use_adaptive_rx_coalesce; __u32 use_adaptive_tx_coalesce; __u32 pkt_rate_low; __u32 rx_coalesce_usecs_low; __u32 rx_max_coalesced_frames_low; __u32 tx_coalesce_usecs_low; __u32 tx_max_coalesced_frames_low; __u32 pkt_rate_high; __u32 rx_coalesce_usecs_high; __u32 rx_max_coalesced_frames_high; __u32 tx_coalesce_usecs_high; __u32 tx_max_coalesced_frames_high; __u32 rate_sample_interval; }; # 491 "../include/uapi/linux/ethtool.h" struct ethtool_ringparam { __u32 cmd; __u32 rx_max_pending; __u32 rx_mini_max_pending; __u32 rx_jumbo_max_pending; __u32 tx_max_pending; __u32 rx_pending; __u32 rx_mini_pending; __u32 rx_jumbo_pending; __u32 tx_pending; }; # 519 "../include/uapi/linux/ethtool.h" struct ethtool_channels { __u32 cmd; __u32 max_rx; __u32 max_tx; __u32 max_other; __u32 max_combined; __u32 rx_count; __u32 tx_count; __u32 other_count; __u32 combined_count; }; # 553 "../include/uapi/linux/ethtool.h" struct ethtool_pauseparam { __u32 cmd; __u32 autoneg; __u32 rx_pause; __u32 tx_pause; }; # 575 "../include/uapi/linux/ethtool.h" enum ethtool_stringset { ETH_SS_TEST = 0, ETH_SS_STATS, ETH_SS_PRIV_FLAGS, ETH_SS_NTUPLE_FILTERS, ETH_SS_FEATURES, ETH_SS_RSS_HASH_FUNCS, ETH_SS_TUNABLES, ETH_SS_PHY_STATS, ETH_SS_PHY_TUNABLES, }; # 599 "../include/uapi/linux/ethtool.h" struct ethtool_gstrings { __u32 cmd; __u32 string_set; __u32 len; __u8 data[0]; }; # 623 "../include/uapi/linux/ethtool.h" struct ethtool_sset_info { __u32 cmd; __u32 reserved; __u64 sset_mask; __u32 data[0]; }; # 640 "../include/uapi/linux/ethtool.h" enum ethtool_test_flags { ETH_TEST_FL_OFFLINE = (1 << 0), ETH_TEST_FL_FAILED = (1 << 1), ETH_TEST_FL_EXTERNAL_LB = (1 << 2), ETH_TEST_FL_EXTERNAL_LB_DONE = (1 << 3), }; # 661 "../include/uapi/linux/ethtool.h" struct ethtool_test { __u32 cmd; __u32 flags; __u32 reserved; __u32 len; __u64 data[0]; }; # 680 "../include/uapi/linux/ethtool.h" struct ethtool_stats { __u32 cmd; __u32 n_stats; __u64 data[0]; }; # 697 "../include/uapi/linux/ethtool.h" struct ethtool_perm_addr { __u32 cmd; __u32 size; __u8 data[0]; }; # 712 "../include/uapi/linux/ethtool.h" enum ethtool_flags { ETH_FLAG_TXVLAN = (1 << 7), ETH_FLAG_RXVLAN = (1 << 8), ETH_FLAG_LRO = (1 << 15), ETH_FLAG_NTUPLE = (1 << 27), ETH_FLAG_RXHASH = (1 << 28), }; # 736 "../include/uapi/linux/ethtool.h" struct ethtool_tcpip4_spec { __be32 ip4src; __be32 ip4dst; __be16 psrc; __be16 pdst; __u8 tos; }; # 753 "../include/uapi/linux/ethtool.h" struct ethtool_ah_espip4_spec { __be32 ip4src; __be32 ip4dst; __be32 spi; __u8 tos; }; # 771 "../include/uapi/linux/ethtool.h" struct ethtool_usrip4_spec { __be32 ip4src; __be32 ip4dst; __be32 l4_4_bytes; __u8 tos; __u8 ip_ver; __u8 proto; }; # 790 "../include/uapi/linux/ethtool.h" struct ethtool_tcpip6_spec { __be32 ip6src[4]; __be32 ip6dst[4]; __be16 psrc; __be16 pdst; __u8 tclass; }; # 807 "../include/uapi/linux/ethtool.h" struct ethtool_ah_espip6_spec { __be32 ip6src[4]; __be32 ip6dst[4]; __be32 spi; __u8 tclass; }; # 822 "../include/uapi/linux/ethtool.h" struct ethtool_usrip6_spec { __be32 ip6src[4]; __be32 ip6dst[4]; __be32 l4_4_bytes; __u8 tclass; __u8 l4_proto; }; union ethtool_flow_union { struct ethtool_tcpip4_spec tcp_ip4_spec; struct ethtool_tcpip4_spec udp_ip4_spec; struct ethtool_tcpip4_spec sctp_ip4_spec; struct ethtool_ah_espip4_spec ah_ip4_spec; struct ethtool_ah_espip4_spec esp_ip4_spec; struct ethtool_usrip4_spec usr_ip4_spec; struct ethtool_tcpip6_spec tcp_ip6_spec; struct ethtool_tcpip6_spec udp_ip6_spec; struct ethtool_tcpip6_spec sctp_ip6_spec; struct ethtool_ah_espip6_spec ah_ip6_spec; struct ethtool_ah_espip6_spec esp_ip6_spec; struct ethtool_usrip6_spec usr_ip6_spec; struct ethhdr ether_spec; __u8 hdata[52]; }; # 858 "../include/uapi/linux/ethtool.h" struct ethtool_flow_ext { __u8 padding[2]; unsigned char h_dest[6]; __be16 vlan_etype; __be16 vlan_tci; __be32 data[2]; }; # 883 "../include/uapi/linux/ethtool.h" struct ethtool_rx_flow_spec { __u32 flow_type; union ethtool_flow_union h_u; struct ethtool_flow_ext h_ext; union ethtool_flow_union m_u; struct ethtool_flow_ext m_ext; __u64 ring_cookie; __u32 location; }; # 907 "../include/uapi/linux/ethtool.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u64 ethtool_get_flow_spec_ring(__u64 ring_cookie) { return 0x00000000FFFFFFFFLL & ring_cookie; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __u64 ethtool_get_flow_spec_ring_vf(__u64 ring_cookie) { return (0x000000FF00000000LL & ring_cookie) >> 32; } # 979 "../include/uapi/linux/ethtool.h" struct ethtool_rxnfc { __u32 cmd; __u32 flow_type; __u64 data; struct ethtool_rx_flow_spec fs; union { __u32 rule_cnt; __u32 rss_context; }; __u32 rule_locs[0]; }; # 1005 "../include/uapi/linux/ethtool.h" struct ethtool_rxfh_indir { __u32 cmd; __u32 size; __u32 ring_index[0]; }; # 1040 "../include/uapi/linux/ethtool.h" struct ethtool_rxfh { __u32 cmd; __u32 rss_context; __u32 indir_size; __u32 key_size; __u8 hfunc; __u8 rsvd8[3]; __u32 rsvd32; __u32 rss_config[0]; }; # 1069 "../include/uapi/linux/ethtool.h" struct ethtool_rx_ntuple_flow_spec { __u32 flow_type; union { struct ethtool_tcpip4_spec tcp_ip4_spec; struct ethtool_tcpip4_spec udp_ip4_spec; struct ethtool_tcpip4_spec sctp_ip4_spec; struct ethtool_ah_espip4_spec ah_ip4_spec; struct ethtool_ah_espip4_spec esp_ip4_spec; struct ethtool_usrip4_spec usr_ip4_spec; struct ethhdr ether_spec; __u8 hdata[72]; } h_u, m_u; __u16 vlan_tag; __u16 vlan_tag_mask; __u64 data; __u64 data_mask; __s32 action; }; struct ethtool_rx_ntuple { __u32 cmd; struct ethtool_rx_ntuple_flow_spec fs; }; enum ethtool_flash_op_type { ETHTOOL_FLASH_ALL_REGIONS = 0, }; struct ethtool_flash { __u32 cmd; __u32 region; char data[128]; }; # 1128 "../include/uapi/linux/ethtool.h" struct ethtool_dump { __u32 cmd; __u32 version; __u32 flag; __u32 len; __u8 data[0]; }; # 1147 "../include/uapi/linux/ethtool.h" struct ethtool_get_features_block { __u32 available; __u32 requested; __u32 active; __u32 never_changed; }; # 1162 "../include/uapi/linux/ethtool.h" struct ethtool_gfeatures { __u32 cmd; __u32 size; struct ethtool_get_features_block features[0]; }; struct ethtool_set_features_block { __u32 valid; __u32 requested; }; struct ethtool_sfeatures { __u32 cmd; __u32 size; struct ethtool_set_features_block features[0]; }; # 1208 "../include/uapi/linux/ethtool.h" struct ethtool_ts_info { __u32 cmd; __u32 so_timestamping; __s32 phc_index; __u32 tx_types; __u32 tx_reserved[3]; __u32 rx_filters; __u32 rx_reserved[3]; }; # 1243 "../include/uapi/linux/ethtool.h" enum ethtool_sfeatures_retval_bits { ETHTOOL_F_UNSUPPORTED__BIT, ETHTOOL_F_WISH__BIT, ETHTOOL_F_COMPAT__BIT, }; # 1262 "../include/uapi/linux/ethtool.h" struct ethtool_per_queue_op { __u32 cmd; __u32 sub_command; __u32 queue_mask[(((4096) + (32) - 1) / (32))]; char data[]; }; # 1280 "../include/uapi/linux/ethtool.h" struct ethtool_fecparam { __u32 cmd; __u32 active_fec; __u32 fec; __u32 reserved; }; # 1296 "../include/uapi/linux/ethtool.h" enum ethtool_fec_config_bits { ETHTOOL_FEC_NONE_BIT, ETHTOOL_FEC_AUTO_BIT, ETHTOOL_FEC_OFF_BIT, ETHTOOL_FEC_RS_BIT, ETHTOOL_FEC_BASER_BIT, }; # 1410 "../include/uapi/linux/ethtool.h" enum ethtool_link_mode_bit_indices { ETHTOOL_LINK_MODE_10baseT_Half_BIT = 0, ETHTOOL_LINK_MODE_10baseT_Full_BIT = 1, ETHTOOL_LINK_MODE_100baseT_Half_BIT = 2, ETHTOOL_LINK_MODE_100baseT_Full_BIT = 3, ETHTOOL_LINK_MODE_1000baseT_Half_BIT = 4, ETHTOOL_LINK_MODE_1000baseT_Full_BIT = 5, ETHTOOL_LINK_MODE_Autoneg_BIT = 6, ETHTOOL_LINK_MODE_TP_BIT = 7, ETHTOOL_LINK_MODE_AUI_BIT = 8, ETHTOOL_LINK_MODE_MII_BIT = 9, ETHTOOL_LINK_MODE_FIBRE_BIT = 10, ETHTOOL_LINK_MODE_BNC_BIT = 11, ETHTOOL_LINK_MODE_10000baseT_Full_BIT = 12, ETHTOOL_LINK_MODE_Pause_BIT = 13, ETHTOOL_LINK_MODE_Asym_Pause_BIT = 14, ETHTOOL_LINK_MODE_2500baseX_Full_BIT = 15, ETHTOOL_LINK_MODE_Backplane_BIT = 16, ETHTOOL_LINK_MODE_1000baseKX_Full_BIT = 17, ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT = 18, ETHTOOL_LINK_MODE_10000baseKR_Full_BIT = 19, ETHTOOL_LINK_MODE_10000baseR_FEC_BIT = 20, ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT = 21, ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT = 22, ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT = 23, ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT = 24, ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT = 25, ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT = 26, ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT = 27, ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT = 28, ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT = 29, ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT = 30, ETHTOOL_LINK_MODE_25000baseCR_Full_BIT = 31, ETHTOOL_LINK_MODE_25000baseKR_Full_BIT = 32, ETHTOOL_LINK_MODE_25000baseSR_Full_BIT = 33, ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT = 34, ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT = 35, ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT = 36, ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT = 37, ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT = 38, ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = 39, ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT = 40, ETHTOOL_LINK_MODE_1000baseX_Full_BIT = 41, ETHTOOL_LINK_MODE_10000baseCR_Full_BIT = 42, ETHTOOL_LINK_MODE_10000baseSR_Full_BIT = 43, ETHTOOL_LINK_MODE_10000baseLR_Full_BIT = 44, ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = 45, ETHTOOL_LINK_MODE_10000baseER_Full_BIT = 46, ETHTOOL_LINK_MODE_2500baseT_Full_BIT = 47, ETHTOOL_LINK_MODE_5000baseT_Full_BIT = 48, ETHTOOL_LINK_MODE_FEC_NONE_BIT = 49, ETHTOOL_LINK_MODE_FEC_RS_BIT = 50, ETHTOOL_LINK_MODE_FEC_BASER_BIT = 51, ETHTOOL_LINK_MODE_50000baseKR_Full_BIT = 52, ETHTOOL_LINK_MODE_50000baseSR_Full_BIT = 53, ETHTOOL_LINK_MODE_50000baseCR_Full_BIT = 54, ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT = 55, ETHTOOL_LINK_MODE_50000baseDR_Full_BIT = 56, ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT = 57, ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT = 58, ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT = 59, ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT = 60, ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT = 61, ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT = 62, ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT = 63, ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT = 64, ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT = 65, ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = 66, ETHTOOL_LINK_MODE_100baseT1_Full_BIT = 67, ETHTOOL_LINK_MODE_1000baseT1_Full_BIT = 68, __ETHTOOL_LINK_MODE_MASK_NBITS }; # 1602 "../include/uapi/linux/ethtool.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int ethtool_validate_speed(__u32 speed) { return speed <= ((int)(~0U >> 1)) || speed == (__u32)-1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int ethtool_validate_duplex(__u8 duplex) { switch (duplex) { case 0x00: case 0x01: case 0xff: return 1; } return 0; } # 1727 "../include/uapi/linux/ethtool.h" enum ethtool_reset_flags { ETH_RESET_MGMT = 1 << 0, ETH_RESET_IRQ = 1 << 1, ETH_RESET_DMA = 1 << 2, ETH_RESET_FILTER = 1 << 3, ETH_RESET_OFFLOAD = 1 << 4, ETH_RESET_MAC = 1 << 5, ETH_RESET_PHY = 1 << 6, ETH_RESET_RAM = 1 << 7, ETH_RESET_AP = 1 << 8, ETH_RESET_DEDICATED = 0x0000ffff, ETH_RESET_ALL = 0xffffffff, }; # 1848 "../include/uapi/linux/ethtool.h" struct ethtool_link_settings { __u32 cmd; __u32 speed; __u8 duplex; __u8 port; __u8 phy_address; __u8 autoneg; __u8 mdio_support; __u8 eth_tp_mdix; __u8 eth_tp_mdix_ctrl; __s8 link_mode_masks_nwords; __u8 transceiver; __u8 reserved1[3]; __u32 reserved[7]; __u32 link_mode_masks[0]; }; # 19 "../include/linux/ethtool.h" 2 struct compat_ethtool_rx_flow_spec { u32 flow_type; union ethtool_flow_union h_u; struct ethtool_flow_ext h_ext; union ethtool_flow_union m_u; struct ethtool_flow_ext m_ext; compat_u64 ring_cookie; u32 location; }; struct compat_ethtool_rxnfc { u32 cmd; u32 flow_type; compat_u64 data; struct compat_ethtool_rx_flow_spec fs; u32 rule_cnt; u32 rule_locs[0]; }; # 54 "../include/linux/ethtool.h" enum ethtool_phys_id_state { ETHTOOL_ID_INACTIVE, ETHTOOL_ID_ACTIVE, ETHTOOL_ID_ON, ETHTOOL_ID_OFF }; enum { ETH_RSS_HASH_TOP_BIT, ETH_RSS_HASH_XOR_BIT, ETH_RSS_HASH_CRC32_BIT, ETH_RSS_HASH_FUNCS_COUNT }; # 83 "../include/linux/ethtool.h" struct net_device; u32 ethtool_op_get_link(struct net_device *dev); int ethtool_op_get_ts_info(struct net_device *dev, struct ethtool_ts_info *eti); # 96 "../include/linux/ethtool.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 ethtool_rxfh_indir_default(u32 index, u32 n_rx_rings) { return index % n_rx_rings; } # 108 "../include/linux/ethtool.h" struct ethtool_link_ksettings { struct ethtool_link_settings base; struct { unsigned long supported[(((__ETHTOOL_LINK_MODE_MASK_NBITS) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8)))]; unsigned long advertising[(((__ETHTOOL_LINK_MODE_MASK_NBITS) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8)))]; unsigned long lp_advertising[(((__ETHTOOL_LINK_MODE_MASK_NBITS) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8)))]; } link_modes; }; # 159 "../include/linux/ethtool.h" extern int __ethtool_get_link_ksettings(struct net_device *dev, struct ethtool_link_ksettings *link_ksettings); # 170 "../include/linux/ethtool.h" void ethtool_intersect_link_masks(struct ethtool_link_ksettings *dst, struct ethtool_link_ksettings *src); void ethtool_convert_legacy_u32_to_link_mode(unsigned long *dst, u32 legacy_u32); bool ethtool_convert_link_mode_to_legacy_u32(u32 *legacy_u32, const unsigned long *src); # 325 "../include/linux/ethtool.h" struct ethtool_ops { void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *); int (*get_regs_len)(struct net_device *); void (*get_regs)(struct net_device *, struct ethtool_regs *, void *); void (*get_wol)(struct net_device *, struct ethtool_wolinfo *); int (*set_wol)(struct net_device *, struct ethtool_wolinfo *); u32 (*get_msglevel)(struct net_device *); void (*set_msglevel)(struct net_device *, u32); int (*nway_reset)(struct net_device *); u32 (*get_link)(struct net_device *); int (*get_eeprom_len)(struct net_device *); int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *); int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *); void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *); int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *); void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam*); int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam*); void (*self_test)(struct net_device *, struct ethtool_test *, u64 *); void (*get_strings)(struct net_device *, u32 stringset, u8 *); int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state); void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *); int (*begin)(struct net_device *); void (*complete)(struct net_device *); u32 (*get_priv_flags)(struct net_device *); int (*set_priv_flags)(struct net_device *, u32); int (*get_sset_count)(struct net_device *, int); int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *rule_locs); int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *); int (*flash_device)(struct net_device *, struct ethtool_flash *); int (*reset)(struct net_device *, u32 *); u32 (*get_rxfh_key_size)(struct net_device *); u32 (*get_rxfh_indir_size)(struct net_device *); int (*get_rxfh)(struct net_device *, u32 *indir, u8 *key, u8 *hfunc); int (*set_rxfh)(struct net_device *, const u32 *indir, const u8 *key, const u8 hfunc); int (*get_rxfh_context)(struct net_device *, u32 *indir, u8 *key, u8 *hfunc, u32 rss_context); int (*set_rxfh_context)(struct net_device *, const u32 *indir, const u8 *key, const u8 hfunc, u32 *rss_context, bool delete); void (*get_channels)(struct net_device *, struct ethtool_channels *); int (*set_channels)(struct net_device *, struct ethtool_channels *); int (*get_dump_flag)(struct net_device *, struct ethtool_dump *); int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *); int (*set_dump)(struct net_device *, struct ethtool_dump *); int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *); int (*get_module_info)(struct net_device *, struct ethtool_modinfo *); int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); int (*get_eee)(struct net_device *, struct ethtool_eee *); int (*set_eee)(struct net_device *, struct ethtool_eee *); int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *); int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *); int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *); int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *); int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *); int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *); int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *); int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *); void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *); }; struct ethtool_rx_flow_rule { struct flow_rule *rule; unsigned long priv[0]; }; struct ethtool_rx_flow_spec_input { const struct ethtool_rx_flow_spec *fs; u32 rss_ctx; }; struct ethtool_rx_flow_rule * ethtool_rx_flow_rule_create(const struct ethtool_rx_flow_spec_input *input); void ethtool_rx_flow_rule_destroy(struct ethtool_rx_flow_rule *rule); # 38 "../include/linux/netdevice.h" 2 # 1 "../include/net/net_namespace.h" 1 # 16 "../include/net/net_namespace.h" # 1 "../include/net/netns/core.h" 1 struct ctl_table_header; struct prot_inuse; struct netns_core { struct ctl_table_header *sysctl_hdr; int sysctl_somaxconn; int *sock_inuse; struct prot_inuse *prot_inuse; }; # 17 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/mib.h" 1 # 1 "../include/net/snmp.h" 1 # 18 "../include/net/snmp.h" # 1 "../include/uapi/linux/snmp.h" 1 # 19 "../include/uapi/linux/snmp.h" enum { IPSTATS_MIB_NUM = 0, IPSTATS_MIB_INPKTS, IPSTATS_MIB_INOCTETS, IPSTATS_MIB_INDELIVERS, IPSTATS_MIB_OUTFORWDATAGRAMS, IPSTATS_MIB_OUTPKTS, IPSTATS_MIB_OUTOCTETS, IPSTATS_MIB_INHDRERRORS, IPSTATS_MIB_INTOOBIGERRORS, IPSTATS_MIB_INNOROUTES, IPSTATS_MIB_INADDRERRORS, IPSTATS_MIB_INUNKNOWNPROTOS, IPSTATS_MIB_INTRUNCATEDPKTS, IPSTATS_MIB_INDISCARDS, IPSTATS_MIB_OUTDISCARDS, IPSTATS_MIB_OUTNOROUTES, IPSTATS_MIB_REASMTIMEOUT, IPSTATS_MIB_REASMREQDS, IPSTATS_MIB_REASMOKS, IPSTATS_MIB_REASMFAILS, IPSTATS_MIB_FRAGOKS, IPSTATS_MIB_FRAGFAILS, IPSTATS_MIB_FRAGCREATES, IPSTATS_MIB_INMCASTPKTS, IPSTATS_MIB_OUTMCASTPKTS, IPSTATS_MIB_INBCASTPKTS, IPSTATS_MIB_OUTBCASTPKTS, IPSTATS_MIB_INMCASTOCTETS, IPSTATS_MIB_OUTMCASTOCTETS, IPSTATS_MIB_INBCASTOCTETS, IPSTATS_MIB_OUTBCASTOCTETS, IPSTATS_MIB_CSUMERRORS, IPSTATS_MIB_NOECTPKTS, IPSTATS_MIB_ECT1PKTS, IPSTATS_MIB_ECT0PKTS, IPSTATS_MIB_CEPKTS, IPSTATS_MIB_REASM_OVERLAPS, __IPSTATS_MIB_MAX }; enum { ICMP_MIB_NUM = 0, ICMP_MIB_INMSGS, ICMP_MIB_INERRORS, ICMP_MIB_INDESTUNREACHS, ICMP_MIB_INTIMEEXCDS, ICMP_MIB_INPARMPROBS, ICMP_MIB_INSRCQUENCHS, ICMP_MIB_INREDIRECTS, ICMP_MIB_INECHOS, ICMP_MIB_INECHOREPS, ICMP_MIB_INTIMESTAMPS, ICMP_MIB_INTIMESTAMPREPS, ICMP_MIB_INADDRMASKS, ICMP_MIB_INADDRMASKREPS, ICMP_MIB_OUTMSGS, ICMP_MIB_OUTERRORS, ICMP_MIB_OUTDESTUNREACHS, ICMP_MIB_OUTTIMEEXCDS, ICMP_MIB_OUTPARMPROBS, ICMP_MIB_OUTSRCQUENCHS, ICMP_MIB_OUTREDIRECTS, ICMP_MIB_OUTECHOS, ICMP_MIB_OUTECHOREPS, ICMP_MIB_OUTTIMESTAMPS, ICMP_MIB_OUTTIMESTAMPREPS, ICMP_MIB_OUTADDRMASKS, ICMP_MIB_OUTADDRMASKREPS, ICMP_MIB_CSUMERRORS, __ICMP_MIB_MAX }; enum { ICMP6_MIB_NUM = 0, ICMP6_MIB_INMSGS, ICMP6_MIB_INERRORS, ICMP6_MIB_OUTMSGS, ICMP6_MIB_OUTERRORS, ICMP6_MIB_CSUMERRORS, __ICMP6_MIB_MAX }; # 125 "../include/uapi/linux/snmp.h" enum { TCP_MIB_NUM = 0, TCP_MIB_RTOALGORITHM, TCP_MIB_RTOMIN, TCP_MIB_RTOMAX, TCP_MIB_MAXCONN, TCP_MIB_ACTIVEOPENS, TCP_MIB_PASSIVEOPENS, TCP_MIB_ATTEMPTFAILS, TCP_MIB_ESTABRESETS, TCP_MIB_CURRESTAB, TCP_MIB_INSEGS, TCP_MIB_OUTSEGS, TCP_MIB_RETRANSSEGS, TCP_MIB_INERRS, TCP_MIB_OUTRSTS, TCP_MIB_CSUMERRORS, __TCP_MIB_MAX }; enum { UDP_MIB_NUM = 0, UDP_MIB_INDATAGRAMS, UDP_MIB_NOPORTS, UDP_MIB_INERRORS, UDP_MIB_OUTDATAGRAMS, UDP_MIB_RCVBUFERRORS, UDP_MIB_SNDBUFERRORS, UDP_MIB_CSUMERRORS, UDP_MIB_IGNOREDMULTI, __UDP_MIB_MAX }; enum { LINUX_MIB_NUM = 0, LINUX_MIB_SYNCOOKIESSENT, LINUX_MIB_SYNCOOKIESRECV, LINUX_MIB_SYNCOOKIESFAILED, LINUX_MIB_EMBRYONICRSTS, LINUX_MIB_PRUNECALLED, LINUX_MIB_RCVPRUNED, LINUX_MIB_OFOPRUNED, LINUX_MIB_OUTOFWINDOWICMPS, LINUX_MIB_LOCKDROPPEDICMPS, LINUX_MIB_ARPFILTER, LINUX_MIB_TIMEWAITED, LINUX_MIB_TIMEWAITRECYCLED, LINUX_MIB_TIMEWAITKILLED, LINUX_MIB_PAWSACTIVEREJECTED, LINUX_MIB_PAWSESTABREJECTED, LINUX_MIB_DELAYEDACKS, LINUX_MIB_DELAYEDACKLOCKED, LINUX_MIB_DELAYEDACKLOST, LINUX_MIB_LISTENOVERFLOWS, LINUX_MIB_LISTENDROPS, LINUX_MIB_TCPHPHITS, LINUX_MIB_TCPPUREACKS, LINUX_MIB_TCPHPACKS, LINUX_MIB_TCPRENORECOVERY, LINUX_MIB_TCPSACKRECOVERY, LINUX_MIB_TCPSACKRENEGING, LINUX_MIB_TCPSACKREORDER, LINUX_MIB_TCPRENOREORDER, LINUX_MIB_TCPTSREORDER, LINUX_MIB_TCPFULLUNDO, LINUX_MIB_TCPPARTIALUNDO, LINUX_MIB_TCPDSACKUNDO, LINUX_MIB_TCPLOSSUNDO, LINUX_MIB_TCPLOSTRETRANSMIT, LINUX_MIB_TCPRENOFAILURES, LINUX_MIB_TCPSACKFAILURES, LINUX_MIB_TCPLOSSFAILURES, LINUX_MIB_TCPFASTRETRANS, LINUX_MIB_TCPSLOWSTARTRETRANS, LINUX_MIB_TCPTIMEOUTS, LINUX_MIB_TCPLOSSPROBES, LINUX_MIB_TCPLOSSPROBERECOVERY, LINUX_MIB_TCPRENORECOVERYFAIL, LINUX_MIB_TCPSACKRECOVERYFAIL, LINUX_MIB_TCPRCVCOLLAPSED, LINUX_MIB_TCPDSACKOLDSENT, LINUX_MIB_TCPDSACKOFOSENT, LINUX_MIB_TCPDSACKRECV, LINUX_MIB_TCPDSACKOFORECV, LINUX_MIB_TCPABORTONDATA, LINUX_MIB_TCPABORTONCLOSE, LINUX_MIB_TCPABORTONMEMORY, LINUX_MIB_TCPABORTONTIMEOUT, LINUX_MIB_TCPABORTONLINGER, LINUX_MIB_TCPABORTFAILED, LINUX_MIB_TCPMEMORYPRESSURES, LINUX_MIB_TCPMEMORYPRESSURESCHRONO, LINUX_MIB_TCPSACKDISCARD, LINUX_MIB_TCPDSACKIGNOREDOLD, LINUX_MIB_TCPDSACKIGNOREDNOUNDO, LINUX_MIB_TCPSPURIOUSRTOS, LINUX_MIB_TCPMD5NOTFOUND, LINUX_MIB_TCPMD5UNEXPECTED, LINUX_MIB_TCPMD5FAILURE, LINUX_MIB_SACKSHIFTED, LINUX_MIB_SACKMERGED, LINUX_MIB_SACKSHIFTFALLBACK, LINUX_MIB_TCPBACKLOGDROP, LINUX_MIB_PFMEMALLOCDROP, LINUX_MIB_TCPMINTTLDROP, LINUX_MIB_TCPDEFERACCEPTDROP, LINUX_MIB_IPRPFILTER, LINUX_MIB_TCPTIMEWAITOVERFLOW, LINUX_MIB_TCPREQQFULLDOCOOKIES, LINUX_MIB_TCPREQQFULLDROP, LINUX_MIB_TCPRETRANSFAIL, LINUX_MIB_TCPRCVCOALESCE, LINUX_MIB_TCPBACKLOGCOALESCE, LINUX_MIB_TCPOFOQUEUE, LINUX_MIB_TCPOFODROP, LINUX_MIB_TCPOFOMERGE, LINUX_MIB_TCPCHALLENGEACK, LINUX_MIB_TCPSYNCHALLENGE, LINUX_MIB_TCPFASTOPENACTIVE, LINUX_MIB_TCPFASTOPENACTIVEFAIL, LINUX_MIB_TCPFASTOPENPASSIVE, LINUX_MIB_TCPFASTOPENPASSIVEFAIL, LINUX_MIB_TCPFASTOPENLISTENOVERFLOW, LINUX_MIB_TCPFASTOPENCOOKIEREQD, LINUX_MIB_TCPFASTOPENBLACKHOLE, LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES, LINUX_MIB_BUSYPOLLRXPACKETS, LINUX_MIB_TCPAUTOCORKING, LINUX_MIB_TCPFROMZEROWINDOWADV, LINUX_MIB_TCPTOZEROWINDOWADV, LINUX_MIB_TCPWANTZEROWINDOWADV, LINUX_MIB_TCPSYNRETRANS, LINUX_MIB_TCPORIGDATASENT, LINUX_MIB_TCPHYSTARTTRAINDETECT, LINUX_MIB_TCPHYSTARTTRAINCWND, LINUX_MIB_TCPHYSTARTDELAYDETECT, LINUX_MIB_TCPHYSTARTDELAYCWND, LINUX_MIB_TCPACKSKIPPEDSYNRECV, LINUX_MIB_TCPACKSKIPPEDPAWS, LINUX_MIB_TCPACKSKIPPEDSEQ, LINUX_MIB_TCPACKSKIPPEDFINWAIT2, LINUX_MIB_TCPACKSKIPPEDTIMEWAIT, LINUX_MIB_TCPACKSKIPPEDCHALLENGE, LINUX_MIB_TCPWINPROBE, LINUX_MIB_TCPKEEPALIVE, LINUX_MIB_TCPMTUPFAIL, LINUX_MIB_TCPMTUPSUCCESS, LINUX_MIB_TCPDELIVERED, LINUX_MIB_TCPDELIVEREDCE, LINUX_MIB_TCPACKCOMPRESSED, LINUX_MIB_TCPZEROWINDOWDROP, LINUX_MIB_TCPRCVQDROP, LINUX_MIB_TCPWQUEUETOOBIG, LINUX_MIB_TCPFASTOPENPASSIVEALTKEY, __LINUX_MIB_MAX }; enum { LINUX_MIB_XFRMNUM = 0, LINUX_MIB_XFRMINERROR, LINUX_MIB_XFRMINBUFFERERROR, LINUX_MIB_XFRMINHDRERROR, LINUX_MIB_XFRMINNOSTATES, LINUX_MIB_XFRMINSTATEPROTOERROR, LINUX_MIB_XFRMINSTATEMODEERROR, LINUX_MIB_XFRMINSTATESEQERROR, LINUX_MIB_XFRMINSTATEEXPIRED, LINUX_MIB_XFRMINSTATEMISMATCH, LINUX_MIB_XFRMINSTATEINVALID, LINUX_MIB_XFRMINTMPLMISMATCH, LINUX_MIB_XFRMINNOPOLS, LINUX_MIB_XFRMINPOLBLOCK, LINUX_MIB_XFRMINPOLERROR, LINUX_MIB_XFRMOUTERROR, LINUX_MIB_XFRMOUTBUNDLEGENERROR, LINUX_MIB_XFRMOUTBUNDLECHECKERROR, LINUX_MIB_XFRMOUTNOSTATES, LINUX_MIB_XFRMOUTSTATEPROTOERROR, LINUX_MIB_XFRMOUTSTATEMODEERROR, LINUX_MIB_XFRMOUTSTATESEQERROR, LINUX_MIB_XFRMOUTSTATEEXPIRED, LINUX_MIB_XFRMOUTPOLBLOCK, LINUX_MIB_XFRMOUTPOLDEAD, LINUX_MIB_XFRMOUTPOLERROR, LINUX_MIB_XFRMFWDHDRERROR, LINUX_MIB_XFRMOUTSTATEINVALID, LINUX_MIB_XFRMACQUIREERROR, __LINUX_MIB_XFRMMAX }; # 19 "../include/net/snmp.h" 2 # 29 "../include/net/snmp.h" struct snmp_mib { const char *name; int entry; }; # 47 "../include/net/snmp.h" # 1 "../include/linux/u64_stats_sync.h" 1 # 65 "../include/linux/u64_stats_sync.h" struct u64_stats_sync { }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void u64_stats_init(struct u64_stats_sync *syncp) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void u64_stats_update_begin(struct u64_stats_sync *syncp) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void u64_stats_update_end(struct u64_stats_sync *syncp) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long u64_stats_update_begin_irqsave(struct u64_stats_sync *syncp) { unsigned long flags = 0; return flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void u64_stats_update_end_irqrestore(struct u64_stats_sync *syncp, unsigned long flags) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int __u64_stats_fetch_begin(const struct u64_stats_sync *syncp) { return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int u64_stats_fetch_begin(const struct u64_stats_sync *syncp) { return __u64_stats_fetch_begin(syncp); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __u64_stats_fetch_retry(const struct u64_stats_sync *syncp, unsigned int start) { return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool u64_stats_fetch_retry(const struct u64_stats_sync *syncp, unsigned int start) { return __u64_stats_fetch_retry(syncp, start); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int u64_stats_fetch_begin_irq(const struct u64_stats_sync *syncp) { return __u64_stats_fetch_begin(syncp); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool u64_stats_fetch_retry_irq(const struct u64_stats_sync *syncp, unsigned int start) { return __u64_stats_fetch_retry(syncp, start); } # 48 "../include/net/snmp.h" 2 struct ipstats_mib { u64 mibs[__IPSTATS_MIB_MAX]; struct u64_stats_sync syncp; }; struct icmp_mib { unsigned long mibs[__ICMP_MIB_MAX]; }; struct icmpmsg_mib { atomic_long_t mibs[512]; }; struct icmpv6_mib { unsigned long mibs[__ICMP6_MIB_MAX]; }; struct icmpv6_mib_device { atomic_long_t mibs[__ICMP6_MIB_MAX]; }; struct icmpv6msg_mib { atomic_long_t mibs[512]; }; struct icmpv6msg_mib_device { atomic_long_t mibs[512]; }; struct tcp_mib { unsigned long mibs[__TCP_MIB_MAX]; }; struct udp_mib { unsigned long mibs[__UDP_MIB_MAX]; }; struct linux_mib { unsigned long mibs[__LINUX_MIB_MAX]; }; struct linux_xfrm_mib { unsigned long mibs[__LINUX_MIB_XFRMMAX]; }; # 6 "../include/net/netns/mib.h" 2 struct netns_mib { __typeof__(struct tcp_mib) *tcp_statistics; __typeof__(struct ipstats_mib) *ip_statistics; __typeof__(struct linux_mib) *net_statistics; __typeof__(struct udp_mib) *udp_statistics; __typeof__(struct udp_mib) *udplite_statistics; __typeof__(struct icmp_mib) *icmp_statistics; __typeof__(struct icmpmsg_mib) *icmpmsg_statistics; struct proc_dir_entry *proc_net_devsnmp6; __typeof__(struct udp_mib) *udp_stats_in6; __typeof__(struct udp_mib) *udplite_stats_in6; __typeof__(struct ipstats_mib) *ipv6_statistics; __typeof__(struct icmpv6_mib) *icmpv6_statistics; __typeof__(struct icmpv6msg_mib) *icmpv6msg_statistics; __typeof__(struct linux_xfrm_mib) *xfrm_statistics; }; # 18 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/unix.h" 1 struct ctl_table_header; struct netns_unix { int sysctl_max_dgram_qlen; struct ctl_table_header *ctl; }; # 19 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/packet.h" 1 # 11 "../include/net/netns/packet.h" struct netns_packet { struct mutex sklist_lock; struct hlist_head sklist; }; # 20 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/ipv4.h" 1 # 10 "../include/net/netns/ipv4.h" # 1 "../include/net/inet_frag.h" 1 struct fqdir { long high_thresh; long low_thresh; int timeout; int max_dist; struct inet_frags *f; struct net *net; bool dead; struct rhashtable rhashtable __attribute__((__aligned__((1 << (6))))); atomic_long_t mem __attribute__((__aligned__((1 << (6))))); struct work_struct destroy_work; }; # 34 "../include/net/inet_frag.h" enum { INET_FRAG_FIRST_IN = ((((1UL))) << (0)), INET_FRAG_LAST_IN = ((((1UL))) << (1)), INET_FRAG_COMPLETE = ((((1UL))) << (2)), INET_FRAG_HASH_DEAD = ((((1UL))) << (3)), }; struct frag_v4_compare_key { __be32 saddr; __be32 daddr; u32 user; u32 vif; __be16 id; u16 protocol; }; struct frag_v6_compare_key { struct in6_addr saddr; struct in6_addr daddr; u32 user; __be32 id; u32 iif; }; # 77 "../include/net/inet_frag.h" struct inet_frag_queue { struct rhash_head node; union { struct frag_v4_compare_key v4; struct frag_v6_compare_key v6; } key; struct timer_list timer; spinlock_t lock; refcount_t refcnt; struct rb_root rb_fragments; struct sk_buff *fragments_tail; struct sk_buff *last_run_head; ktime_t stamp; int len; int meat; __u8 flags; u16 max_size; struct fqdir *fqdir; struct callback_head rcu; }; struct inet_frags { unsigned int qsize; void (*constructor)(struct inet_frag_queue *q, const void *arg); void (*destructor)(struct inet_frag_queue *); void (*frag_expire)(struct timer_list *t); struct kmem_cache *frags_cachep; const char *frags_cache_name; struct rhashtable_params rhash_params; refcount_t refcnt; struct completion completion; }; int inet_frags_init(struct inet_frags *); void inet_frags_fini(struct inet_frags *); int fqdir_init(struct fqdir **fqdirp, struct inet_frags *f, struct net *net); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void fqdir_pre_exit(struct fqdir *fqdir) { fqdir->high_thresh = 0; fqdir->dead = true; } void fqdir_exit(struct fqdir *fqdir); void inet_frag_kill(struct inet_frag_queue *q); void inet_frag_destroy(struct inet_frag_queue *q); struct inet_frag_queue *inet_frag_find(struct fqdir *fqdir, void *key); unsigned int inet_frag_rbtree_purge(struct rb_root *root); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void inet_frag_put(struct inet_frag_queue *q) { if (refcount_dec_and_test_checked(&q->refcnt)) inet_frag_destroy(q); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) long frag_mem_limit(const struct fqdir *fqdir) { return atomic_long_read(&fqdir->mem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sub_frag_mem_limit(struct fqdir *fqdir, long val) { atomic_long_sub(val, &fqdir->mem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void add_frag_mem_limit(struct fqdir *fqdir, long val) { atomic_long_add(val, &fqdir->mem); } # 163 "../include/net/inet_frag.h" extern const u8 ip_frag_ecn_table[16]; int inet_frag_queue_insert(struct inet_frag_queue *q, struct sk_buff *skb, int offset, int end); void *inet_frag_reasm_prepare(struct inet_frag_queue *q, struct sk_buff *skb, struct sk_buff *parent); void inet_frag_reasm_finish(struct inet_frag_queue *q, struct sk_buff *head, void *reasm_data); struct sk_buff *inet_frag_pull_head(struct inet_frag_queue *q); # 11 "../include/net/netns/ipv4.h" 2 # 1 "../include/linux/siphash.h" 1 # 20 "../include/linux/siphash.h" typedef struct { u64 key[2]; } siphash_key_t; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool siphash_key_is_zero(const siphash_key_t *key) { return !(key->key[0] | key->key[1]); } u64 __siphash_aligned(const void *data, size_t len, const siphash_key_t *key); u64 siphash_1u64(const u64 a, const siphash_key_t *key); u64 siphash_2u64(const u64 a, const u64 b, const siphash_key_t *key); u64 siphash_3u64(const u64 a, const u64 b, const u64 c, const siphash_key_t *key); u64 siphash_4u64(const u64 a, const u64 b, const u64 c, const u64 d, const siphash_key_t *key); u64 siphash_1u32(const u32 a, const siphash_key_t *key); u64 siphash_3u32(const u32 a, const u32 b, const u32 c, const siphash_key_t *key); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 siphash_2u32(const u32 a, const u32 b, const siphash_key_t *key) { return siphash_1u64((u64)b << 32 | a, key); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 siphash_4u32(const u32 a, const u32 b, const u32 c, const u32 d, const siphash_key_t *key) { return siphash_2u64((u64)b << 32 | a, (u64)d << 32 | c, key); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 ___siphash_aligned(const __le64 *data, size_t len, const siphash_key_t *key) { if (__builtin_constant_p(len) && len == 4) return siphash_1u32(__le32_to_cpup((const __le32 *)data), key); if (__builtin_constant_p(len) && len == 8) return siphash_1u64((( __u64)(__le64)(data[0])), key); if (__builtin_constant_p(len) && len == 16) return siphash_2u64((( __u64)(__le64)(data[0])), (( __u64)(__le64)(data[1])), key); if (__builtin_constant_p(len) && len == 24) return siphash_3u64((( __u64)(__le64)(data[0])), (( __u64)(__le64)(data[1])), (( __u64)(__le64)(data[2])), key); if (__builtin_constant_p(len) && len == 32) return siphash_4u64((( __u64)(__le64)(data[0])), (( __u64)(__le64)(data[1])), (( __u64)(__le64)(data[2])), (( __u64)(__le64)(data[3])), key); return __siphash_aligned(data, len, key); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 siphash(const void *data, size_t len, const siphash_key_t *key) { return ___siphash_aligned(data, len, key); } typedef struct { unsigned long key[2]; } hsiphash_key_t; u32 __hsiphash_aligned(const void *data, size_t len, const hsiphash_key_t *key); u32 hsiphash_1u32(const u32 a, const hsiphash_key_t *key); u32 hsiphash_2u32(const u32 a, const u32 b, const hsiphash_key_t *key); u32 hsiphash_3u32(const u32 a, const u32 b, const u32 c, const hsiphash_key_t *key); u32 hsiphash_4u32(const u32 a, const u32 b, const u32 c, const u32 d, const hsiphash_key_t *key); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 ___hsiphash_aligned(const __le32 *data, size_t len, const hsiphash_key_t *key) { if (__builtin_constant_p(len) && len == 4) return hsiphash_1u32((( __u32)(__le32)(data[0])), key); if (__builtin_constant_p(len) && len == 8) return hsiphash_2u32((( __u32)(__le32)(data[0])), (( __u32)(__le32)(data[1])), key); if (__builtin_constant_p(len) && len == 12) return hsiphash_3u32((( __u32)(__le32)(data[0])), (( __u32)(__le32)(data[1])), (( __u32)(__le32)(data[2])), key); if (__builtin_constant_p(len) && len == 16) return hsiphash_4u32((( __u32)(__le32)(data[0])), (( __u32)(__le32)(data[1])), (( __u32)(__le32)(data[2])), (( __u32)(__le32)(data[3])), key); return __hsiphash_aligned(data, len, key); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 hsiphash(const void *data, size_t len, const hsiphash_key_t *key) { return ___hsiphash_aligned(data, len, key); } # 13 "../include/net/netns/ipv4.h" 2 struct tcpm_hash_bucket; struct ctl_table_header; struct ipv4_devconf; struct fib_rules_ops; struct hlist_head; struct fib_table; struct sock; struct local_ports { seqlock_t lock; int range[2]; bool warned; }; struct ping_group_range { seqlock_t lock; kgid_t range[2]; }; struct inet_hashinfo; struct inet_timewait_death_row { atomic_t tw_count; struct inet_hashinfo *hashinfo __attribute__((__aligned__((1 << (6))))); int sysctl_max_tw_buckets; }; struct tcp_fastopen_context; struct netns_ipv4 { struct ctl_table_header *forw_hdr; struct ctl_table_header *frags_hdr; struct ctl_table_header *ipv4_hdr; struct ctl_table_header *route_hdr; struct ctl_table_header *xfrm4_hdr; struct ipv4_devconf *devconf_all; struct ipv4_devconf *devconf_dflt; struct ip_ra_chain *ra_chain; struct mutex ra_mutex; struct fib_rules_ops *rules_ops; bool fib_has_custom_rules; unsigned int fib_rules_require_fldissect; struct fib_table *fib_main; struct fib_table *fib_default; bool fib_has_custom_local_routes; int fib_num_tclassid_users; struct hlist_head *fib_table_hash; bool fib_offload_disabled; struct sock *fibnl; struct sock * *icmp_sk; struct sock *mc_autojoin_sk; struct inet_peer_base *peers; struct sock * *tcp_sk; struct fqdir *fqdir; struct xt_table *iptable_filter; struct xt_table *iptable_mangle; struct xt_table *iptable_raw; struct xt_table *arptable_filter; struct xt_table *iptable_security; struct xt_table *nat_table; int sysctl_icmp_echo_ignore_all; int sysctl_icmp_echo_ignore_broadcasts; int sysctl_icmp_ignore_bogus_error_responses; int sysctl_icmp_ratelimit; int sysctl_icmp_ratemask; int sysctl_icmp_errors_use_inbound_ifaddr; struct local_ports ip_local_ports; int sysctl_tcp_ecn; int sysctl_tcp_ecn_fallback; int sysctl_ip_default_ttl; int sysctl_ip_no_pmtu_disc; int sysctl_ip_fwd_use_pmtu; int sysctl_ip_fwd_update_priority; int sysctl_ip_nonlocal_bind; int sysctl_ip_dynaddr; int sysctl_ip_early_demux; int sysctl_raw_l3mdev_accept; int sysctl_tcp_early_demux; int sysctl_udp_early_demux; int sysctl_fwmark_reflect; int sysctl_tcp_fwmark_accept; int sysctl_tcp_l3mdev_accept; int sysctl_tcp_mtu_probing; int sysctl_tcp_base_mss; int sysctl_tcp_min_snd_mss; int sysctl_tcp_probe_threshold; u32 sysctl_tcp_probe_interval; int sysctl_tcp_keepalive_time; int sysctl_tcp_keepalive_probes; int sysctl_tcp_keepalive_intvl; int sysctl_tcp_syn_retries; int sysctl_tcp_synack_retries; int sysctl_tcp_syncookies; int sysctl_tcp_reordering; int sysctl_tcp_retries1; int sysctl_tcp_retries2; int sysctl_tcp_orphan_retries; int sysctl_tcp_fin_timeout; unsigned int sysctl_tcp_notsent_lowat; int sysctl_tcp_tw_reuse; int sysctl_tcp_sack; int sysctl_tcp_window_scaling; int sysctl_tcp_timestamps; int sysctl_tcp_early_retrans; int sysctl_tcp_recovery; int sysctl_tcp_thin_linear_timeouts; int sysctl_tcp_slow_start_after_idle; int sysctl_tcp_retrans_collapse; int sysctl_tcp_stdurg; int sysctl_tcp_rfc1337; int sysctl_tcp_abort_on_overflow; int sysctl_tcp_fack; int sysctl_tcp_max_reordering; int sysctl_tcp_dsack; int sysctl_tcp_app_win; int sysctl_tcp_adv_win_scale; int sysctl_tcp_frto; int sysctl_tcp_nometrics_save; int sysctl_tcp_moderate_rcvbuf; int sysctl_tcp_tso_win_divisor; int sysctl_tcp_workaround_signed_windows; int sysctl_tcp_limit_output_bytes; int sysctl_tcp_challenge_ack_limit; int sysctl_tcp_min_tso_segs; int sysctl_tcp_min_rtt_wlen; int sysctl_tcp_autocorking; int sysctl_tcp_invalid_ratelimit; int sysctl_tcp_pacing_ss_ratio; int sysctl_tcp_pacing_ca_ratio; int sysctl_tcp_wmem[3]; int sysctl_tcp_rmem[3]; int sysctl_tcp_comp_sack_nr; unsigned long sysctl_tcp_comp_sack_delay_ns; struct inet_timewait_death_row tcp_death_row; int sysctl_max_syn_backlog; int sysctl_tcp_fastopen; const struct tcp_congestion_ops *tcp_congestion_control; struct tcp_fastopen_context *tcp_fastopen_ctx; spinlock_t tcp_fastopen_ctx_lock; unsigned int sysctl_tcp_fastopen_blackhole_timeout; atomic_t tfo_active_disable_times; unsigned long tfo_active_disable_stamp; int sysctl_udp_wmem_min; int sysctl_udp_rmem_min; int sysctl_udp_l3mdev_accept; int sysctl_igmp_max_memberships; int sysctl_igmp_max_msf; int sysctl_igmp_llm_reports; int sysctl_igmp_qrv; struct ping_group_range ping_group_range; atomic_t dev_addr_genid; unsigned long *sysctl_local_reserved_ports; int sysctl_ip_prot_sock; struct list_head mr_tables; struct fib_rules_ops *mr_rules_ops; int sysctl_fib_multipath_use_neigh; int sysctl_fib_multipath_hash_policy; struct fib_notifier_ops *notifier_ops; unsigned int fib_seq; struct fib_notifier_ops *ipmr_notifier_ops; unsigned int ipmr_seq; atomic_t rt_genid; siphash_key_t ip_id_key; }; # 21 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/ipv6.h" 1 # 10 "../include/net/netns/ipv6.h" # 1 "../include/net/dst_ops.h" 1 struct dst_entry; struct kmem_cachep; struct net_device; struct sk_buff; struct sock; struct net; struct dst_ops { unsigned short family; unsigned int gc_thresh; int (*gc)(struct dst_ops *ops); struct dst_entry * (*check)(struct dst_entry *, __u32 cookie); unsigned int (*default_advmss)(const struct dst_entry *); unsigned int (*mtu)(const struct dst_entry *); u32 * (*cow_metrics)(struct dst_entry *, unsigned long); void (*destroy)(struct dst_entry *); void (*ifdown)(struct dst_entry *, struct net_device *dev, int how); struct dst_entry * (*negative_advice)(struct dst_entry *); void (*link_failure)(struct sk_buff *); void (*update_pmtu)(struct dst_entry *dst, struct sock *sk, struct sk_buff *skb, u32 mtu); void (*redirect)(struct dst_entry *dst, struct sock *sk, struct sk_buff *skb); int (*local_out)(struct net *net, struct sock *sk, struct sk_buff *skb); struct neighbour * (*neigh_lookup)(const struct dst_entry *dst, struct sk_buff *skb, const void *daddr); void (*confirm_neigh)(const struct dst_entry *dst, const void *daddr); struct kmem_cache *kmem_cachep; struct percpu_counter pcpuc_entries __attribute__((__aligned__((1 << (6))))); }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dst_entries_get_fast(struct dst_ops *dst) { return percpu_counter_read_positive(&dst->pcpuc_entries); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dst_entries_get_slow(struct dst_ops *dst) { return percpu_counter_sum_positive(&dst->pcpuc_entries); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dst_entries_add(struct dst_ops *dst, int val) { percpu_counter_add(&dst->pcpuc_entries, val); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dst_entries_init(struct dst_ops *dst) { return ({ static struct lock_class_key __key; __percpu_counter_init(&dst->pcpuc_entries, 0, ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u)), &__key); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dst_entries_destroy(struct dst_ops *dst) { percpu_counter_destroy(&dst->pcpuc_entries); } # 11 "../include/net/netns/ipv6.h" 2 # 1 "../include/uapi/linux/icmpv6.h" 1 struct icmp6hdr { __u8 icmp6_type; __u8 icmp6_code; __sum16 icmp6_cksum; union { __be32 un_data32[1]; __be16 un_data16[2]; __u8 un_data8[4]; struct icmpv6_echo { __be16 identifier; __be16 sequence; } u_echo; struct icmpv6_nd_advt { __u32 reserved:5, override:1, solicited:1, router:1, reserved2:24; # 40 "../include/uapi/linux/icmpv6.h" } u_nd_advt; struct icmpv6_nd_ra { __u8 hop_limit; __u8 reserved:3, router_pref:2, home_agent:1, other:1, managed:1; # 60 "../include/uapi/linux/icmpv6.h" __be16 rt_lifetime; } u_nd_ra; } icmp6_dataun; # 80 "../include/uapi/linux/icmpv6.h" }; # 156 "../include/uapi/linux/icmpv6.h" struct icmp6_filter { __u32 data[8]; }; # 12 "../include/net/netns/ipv6.h" 2 struct ctl_table_header; struct netns_sysctl_ipv6 { struct ctl_table_header *hdr; struct ctl_table_header *route_hdr; struct ctl_table_header *icmp_hdr; struct ctl_table_header *frags_hdr; struct ctl_table_header *xfrm6_hdr; int bindv6only; int flush_delay; int ip6_rt_max_size; int ip6_rt_gc_min_interval; int ip6_rt_gc_timeout; int ip6_rt_gc_interval; int ip6_rt_gc_elasticity; int ip6_rt_mtu_expires; int ip6_rt_min_advmss; int multipath_hash_policy; int flowlabel_consistency; int auto_flowlabels; int icmpv6_time; int icmpv6_echo_ignore_all; int icmpv6_echo_ignore_multicast; int icmpv6_echo_ignore_anycast; unsigned long icmpv6_ratemask[(((255 + 1) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8)))]; unsigned long *icmpv6_ratemask_ptr; int anycast_src_echo_reply; int ip_nonlocal_bind; int fwmark_reflect; int idgen_retries; int idgen_delay; int flowlabel_state_ranges; int flowlabel_reflect; int max_dst_opts_cnt; int max_hbh_opts_cnt; int max_dst_opts_len; int max_hbh_opts_len; int seg6_flowlabel; bool skip_notify_on_dev_down; }; struct netns_ipv6 { struct netns_sysctl_ipv6 sysctl; struct ipv6_devconf *devconf_all; struct ipv6_devconf *devconf_dflt; struct inet_peer_base *peers; struct fqdir *fqdir; struct xt_table *ip6table_filter; struct xt_table *ip6table_mangle; struct xt_table *ip6table_raw; struct xt_table *ip6table_security; struct xt_table *ip6table_nat; struct fib6_info *fib6_null_entry; struct rt6_info *ip6_null_entry; struct rt6_statistics *rt6_stats; struct timer_list ip6_fib_timer; struct hlist_head *fib_table_hash; struct fib6_table *fib6_main_tbl; struct list_head fib6_walkers; struct dst_ops ip6_dst_ops; rwlock_t fib6_walker_lock; spinlock_t fib6_gc_lock; unsigned int ip6_rt_gc_expire; unsigned long ip6_rt_last_gc; unsigned int fib6_rules_require_fldissect; bool fib6_has_custom_rules; struct rt6_info *ip6_prohibit_entry; struct rt6_info *ip6_blk_hole_entry; struct fib6_table *fib6_local_tbl; struct fib_rules_ops *fib6_rules_ops; struct sock * *icmp_sk; struct sock *ndisc_sk; struct sock *tcp_sk; struct sock *igmp_sk; struct sock *mc_autojoin_sk; struct list_head mr6_tables; struct fib_rules_ops *mr6_rules_ops; atomic_t dev_addr_genid; atomic_t fib6_sernum; struct seg6_pernet_data *seg6_data; struct fib_notifier_ops *notifier_ops; struct fib_notifier_ops *ip6mr_notifier_ops; unsigned int ipmr_seq; struct { struct hlist_head head; spinlock_t lock; u32 seq; } ip6addrlbl_table; }; struct netns_nf_frag { struct fqdir *fqdir; }; # 22 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/nexthop.h" 1 # 11 "../include/net/netns/nexthop.h" struct netns_nexthop { struct rb_root rb_root; struct hlist_head *devhash; unsigned int seq; u32 last_id_allocated; }; # 23 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/ieee802154_6lowpan.h" 1 # 11 "../include/net/netns/ieee802154_6lowpan.h" struct netns_sysctl_lowpan { struct ctl_table_header *frags_hdr; }; struct netns_ieee802154_lowpan { struct netns_sysctl_lowpan sysctl; struct fqdir *fqdir; }; # 24 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/sctp.h" 1 struct sock; struct proc_dir_entry; struct sctp_mib; struct ctl_table_header; struct netns_sctp { __typeof__(struct sctp_mib) *sctp_statistics; struct proc_dir_entry *proc_net_sctp; struct ctl_table_header *sysctl_header; struct sock *ctl_sock; struct list_head local_addr_list; struct list_head addr_waitq; struct timer_list addr_wq_timer; struct list_head auto_asconf_splist; spinlock_t addr_wq_lock; spinlock_t local_addr_lock; # 51 "../include/net/netns/sctp.h" unsigned int rto_initial; unsigned int rto_min; unsigned int rto_max; int rto_alpha; int rto_beta; int max_burst; int cookie_preserve_enable; char *sctp_hmac_alg; unsigned int valid_cookie_life; unsigned int sack_timeout; unsigned int hb_interval; int max_retrans_association; int max_retrans_path; int max_retrans_init; int pf_retrans; int pf_enable; int sndbuf_policy; int rcvbuf_policy; int default_auto_asconf; int addip_enable; int addip_noauth; int prsctp_enable; int reconf_enable; int auth_enable; int intl_enable; # 138 "../include/net/netns/sctp.h" int scope_policy; int rwnd_upd_shift; unsigned long max_autoclose; }; # 25 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/dccp.h" 1 struct sock; struct netns_dccp { struct sock *v4_ctl_sk; struct sock *v6_ctl_sk; }; # 26 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/netfilter.h" 1 # 1 "../include/linux/netfilter_defs.h" 1 # 1 "../include/uapi/linux/netfilter.h" 1 # 1 "../include/linux/in.h" 1 # 19 "../include/linux/in.h" # 1 "../include/uapi/linux/in.h" 1 # 28 "../include/uapi/linux/in.h" enum { IPPROTO_IP = 0, IPPROTO_ICMP = 1, IPPROTO_IGMP = 2, IPPROTO_IPIP = 4, IPPROTO_TCP = 6, IPPROTO_EGP = 8, IPPROTO_PUP = 12, IPPROTO_UDP = 17, IPPROTO_IDP = 22, IPPROTO_TP = 29, IPPROTO_DCCP = 33, IPPROTO_IPV6 = 41, IPPROTO_RSVP = 46, IPPROTO_GRE = 47, IPPROTO_ESP = 50, IPPROTO_AH = 51, IPPROTO_MTP = 92, IPPROTO_BEETPH = 94, IPPROTO_ENCAP = 98, IPPROTO_PIM = 103, IPPROTO_COMP = 108, IPPROTO_SCTP = 132, IPPROTO_UDPLITE = 136, IPPROTO_MPLS = 137, IPPROTO_RAW = 255, IPPROTO_MAX }; struct in_addr { __be32 s_addr; }; # 168 "../include/uapi/linux/in.h" struct ip_mreq { struct in_addr imr_multiaddr; struct in_addr imr_interface; }; struct ip_mreqn { struct in_addr imr_multiaddr; struct in_addr imr_address; int imr_ifindex; }; struct ip_mreq_source { __be32 imr_multiaddr; __be32 imr_interface; __be32 imr_sourceaddr; }; struct ip_msfilter { __be32 imsf_multiaddr; __be32 imsf_interface; __u32 imsf_fmode; __u32 imsf_numsrc; __be32 imsf_slist[1]; }; struct group_req { __u32 gr_interface; struct __kernel_sockaddr_storage gr_group; }; struct group_source_req { __u32 gsr_interface; struct __kernel_sockaddr_storage gsr_group; struct __kernel_sockaddr_storage gsr_source; }; struct group_filter { __u32 gf_interface; struct __kernel_sockaddr_storage gf_group; __u32 gf_fmode; __u32 gf_numsrc; struct __kernel_sockaddr_storage gf_slist[1]; }; struct in_pktinfo { int ipi_ifindex; struct in_addr ipi_spec_dst; struct in_addr ipi_addr; }; struct sockaddr_in { __kernel_sa_family_t sin_family; __be16 sin_port; struct in_addr sin_addr; unsigned char __pad[16 - sizeof(short int) - sizeof(unsigned short int) - sizeof(struct in_addr)]; }; # 20 "../include/linux/in.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int proto_ports_offset(int proto) { switch (proto) { case IPPROTO_TCP: case IPPROTO_UDP: case IPPROTO_DCCP: case IPPROTO_ESP: case IPPROTO_SCTP: case IPPROTO_UDPLITE: return 0; case IPPROTO_AH: return 4; default: return -22; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ipv4_is_loopback(__be32 addr) { return (addr & (( __be32)(__builtin_constant_p((__u32)((0xff000000))) ? ((__u32)( (((__u32)((0xff000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xff000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xff000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xff000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xff000000))))) == (( __be32)(__builtin_constant_p((__u32)((0x7f000000))) ? ((__u32)( (((__u32)((0x7f000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x7f000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x7f000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x7f000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0x7f000000)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ipv4_is_multicast(__be32 addr) { return (addr & (( __be32)(__builtin_constant_p((__u32)((0xf0000000))) ? ((__u32)( (((__u32)((0xf0000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xf0000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xf0000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xf0000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xf0000000))))) == (( __be32)(__builtin_constant_p((__u32)((0xe0000000))) ? ((__u32)( (((__u32)((0xe0000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xe0000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xe0000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xe0000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xe0000000)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ipv4_is_local_multicast(__be32 addr) { return (addr & (( __be32)(__builtin_constant_p((__u32)((0xffffff00))) ? ((__u32)( (((__u32)((0xffffff00)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xffffff00)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffffff00)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xffffff00)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xffffff00))))) == (( __be32)(__builtin_constant_p((__u32)((0xe0000000))) ? ((__u32)( (((__u32)((0xe0000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xe0000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xe0000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xe0000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xe0000000)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ipv4_is_lbcast(__be32 addr) { return addr == (( __be32)(__builtin_constant_p((__u32)((((unsigned long int) 0xffffffff)))) ? ((__u32)( (((__u32)((((unsigned long int) 0xffffffff))) & (__u32)0x000000ffUL) << 24) | (((__u32)((((unsigned long int) 0xffffffff))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((((unsigned long int) 0xffffffff))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((((unsigned long int) 0xffffffff))) & (__u32)0xff000000UL) >> 24))) : __fswab32((((unsigned long int) 0xffffffff))))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ipv4_is_all_snoopers(__be32 addr) { return addr == (( __be32)(__builtin_constant_p((__u32)((0xe000006aU))) ? ((__u32)( (((__u32)((0xe000006aU)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xe000006aU)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xe000006aU)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xe000006aU)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xe000006aU)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ipv4_is_zeronet(__be32 addr) { return (addr == 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ipv4_is_private_10(__be32 addr) { return (addr & (( __be32)(__builtin_constant_p((__u32)((0xff000000))) ? ((__u32)( (((__u32)((0xff000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xff000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xff000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xff000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xff000000))))) == (( __be32)(__builtin_constant_p((__u32)((0x0a000000))) ? ((__u32)( (((__u32)((0x0a000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x0a000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x0a000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x0a000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0x0a000000)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ipv4_is_private_172(__be32 addr) { return (addr & (( __be32)(__builtin_constant_p((__u32)((0xfff00000))) ? ((__u32)( (((__u32)((0xfff00000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xfff00000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xfff00000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xfff00000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xfff00000))))) == (( __be32)(__builtin_constant_p((__u32)((0xac100000))) ? ((__u32)( (((__u32)((0xac100000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xac100000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xac100000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xac100000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xac100000)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ipv4_is_private_192(__be32 addr) { return (addr & (( __be32)(__builtin_constant_p((__u32)((0xffff0000))) ? ((__u32)( (((__u32)((0xffff0000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xffff0000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffff0000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xffff0000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xffff0000))))) == (( __be32)(__builtin_constant_p((__u32)((0xc0a80000))) ? ((__u32)( (((__u32)((0xc0a80000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xc0a80000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xc0a80000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xc0a80000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xc0a80000)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ipv4_is_linklocal_169(__be32 addr) { return (addr & (( __be32)(__builtin_constant_p((__u32)((0xffff0000))) ? ((__u32)( (((__u32)((0xffff0000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xffff0000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffff0000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xffff0000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xffff0000))))) == (( __be32)(__builtin_constant_p((__u32)((0xa9fe0000))) ? ((__u32)( (((__u32)((0xa9fe0000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xa9fe0000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xa9fe0000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xa9fe0000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xa9fe0000)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ipv4_is_anycast_6to4(__be32 addr) { return (addr & (( __be32)(__builtin_constant_p((__u32)((0xffffff00))) ? ((__u32)( (((__u32)((0xffffff00)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xffffff00)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffffff00)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xffffff00)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xffffff00))))) == (( __be32)(__builtin_constant_p((__u32)((0xc0586300))) ? ((__u32)( (((__u32)((0xc0586300)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xc0586300)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xc0586300)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xc0586300)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xc0586300)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ipv4_is_test_192(__be32 addr) { return (addr & (( __be32)(__builtin_constant_p((__u32)((0xffffff00))) ? ((__u32)( (((__u32)((0xffffff00)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xffffff00)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffffff00)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xffffff00)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xffffff00))))) == (( __be32)(__builtin_constant_p((__u32)((0xc0000200))) ? ((__u32)( (((__u32)((0xc0000200)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xc0000200)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xc0000200)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xc0000200)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xc0000200)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ipv4_is_test_198(__be32 addr) { return (addr & (( __be32)(__builtin_constant_p((__u32)((0xfffe0000))) ? ((__u32)( (((__u32)((0xfffe0000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xfffe0000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xfffe0000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xfffe0000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xfffe0000))))) == (( __be32)(__builtin_constant_p((__u32)((0xc6120000))) ? ((__u32)( (((__u32)((0xc6120000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xc6120000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xc6120000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xc6120000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xc6120000)))); } # 8 "../include/uapi/linux/netfilter.h" 2 # 42 "../include/uapi/linux/netfilter.h" enum nf_inet_hooks { NF_INET_PRE_ROUTING, NF_INET_LOCAL_IN, NF_INET_FORWARD, NF_INET_LOCAL_OUT, NF_INET_POST_ROUTING, NF_INET_NUMHOOKS }; enum nf_dev_hooks { NF_NETDEV_INGRESS, NF_NETDEV_NUMHOOKS }; enum { NFPROTO_UNSPEC = 0, NFPROTO_INET = 1, NFPROTO_IPV4 = 2, NFPROTO_ARP = 3, NFPROTO_NETDEV = 5, NFPROTO_BRIDGE = 7, NFPROTO_IPV6 = 10, NFPROTO_DECNET = 12, NFPROTO_NUMPROTO, }; union nf_inet_addr { __u32 all[4]; __be32 ip; __be32 ip6[4]; struct in_addr in; struct in6_addr in6; }; # 6 "../include/linux/netfilter_defs.h" 2 # 6 "../include/net/netns/netfilter.h" 2 struct proc_dir_entry; struct nf_logger; struct nf_queue_handler; struct netns_nf { struct proc_dir_entry *proc_netfilter; const struct nf_queue_handler *queue_handler; const struct nf_logger *nf_loggers[NFPROTO_NUMPROTO]; struct ctl_table_header *nf_log_dir_header; struct nf_hook_entries *hooks_ipv4[NF_INET_NUMHOOKS]; struct nf_hook_entries *hooks_ipv6[NF_INET_NUMHOOKS]; struct nf_hook_entries *hooks_arp[3]; struct nf_hook_entries *hooks_bridge[NF_INET_NUMHOOKS]; struct nf_hook_entries *hooks_decnet[7]; bool defrag_ipv4; bool defrag_ipv6; }; # 27 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/x_tables.h" 1 struct ebt_table; struct netns_xt { struct list_head tables[NFPROTO_NUMPROTO]; bool notrack_deprecated_warning; bool clusterip_deprecated_warning; struct ebt_table *broute_table; struct ebt_table *frame_filter; struct ebt_table *frame_nat; }; # 28 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/conntrack.h" 1 # 1 "../include/linux/list_nulls.h" 1 # 21 "../include/linux/list_nulls.h" struct hlist_nulls_head { struct hlist_nulls_node *first; }; struct hlist_nulls_node { struct hlist_nulls_node *next, **pprev; }; # 43 "../include/linux/list_nulls.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int is_a_nulls(const struct hlist_nulls_node *ptr) { return ((unsigned long)ptr & 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long get_nulls_value(const struct hlist_nulls_node *ptr) { return ((unsigned long)ptr) >> 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int hlist_nulls_unhashed(const struct hlist_nulls_node *h) { return !h->pprev; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int hlist_nulls_empty(const struct hlist_nulls_head *h) { return is_a_nulls(({ union { typeof(h->first) __val; char __c[1]; } __u; if (1) __read_once_size(&(h->first), __u.__c, sizeof(h->first)); else __read_once_size_nocheck(&(h->first), __u.__c, sizeof(h->first)); do { } while (0); __u.__val; })); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_nulls_add_head(struct hlist_nulls_node *n, struct hlist_nulls_head *h) { struct hlist_nulls_node *first = h->first; n->next = first; n->pprev = &h->first; h->first = n; if (!is_a_nulls(first)) first->pprev = &n->next; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __hlist_nulls_del(struct hlist_nulls_node *n) { struct hlist_nulls_node *next = n->next; struct hlist_nulls_node **pprev = n->pprev; ({ union { typeof(*pprev) __val; char __c[1]; } __u = { .__val = ( typeof(*pprev)) (next) }; __write_once_size(&(*pprev), __u.__c, sizeof(*pprev)); __u.__val; }); if (!is_a_nulls(next)) next->pprev = pprev; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hlist_nulls_del(struct hlist_nulls_node *n) { __hlist_nulls_del(n); n->pprev = ((void *) 0x122 + (0xdead000000000000UL)); } # 7 "../include/net/netns/conntrack.h" 2 # 1 "../include/linux/netfilter/nf_conntrack_tcp.h" 1 # 1 "../include/uapi/linux/netfilter/nf_conntrack_tcp.h" 1 enum tcp_conntrack { TCP_CONNTRACK_NONE, TCP_CONNTRACK_SYN_SENT, TCP_CONNTRACK_SYN_RECV, TCP_CONNTRACK_ESTABLISHED, TCP_CONNTRACK_FIN_WAIT, TCP_CONNTRACK_CLOSE_WAIT, TCP_CONNTRACK_LAST_ACK, TCP_CONNTRACK_TIME_WAIT, TCP_CONNTRACK_CLOSE, TCP_CONNTRACK_LISTEN, TCP_CONNTRACK_MAX, TCP_CONNTRACK_IGNORE, TCP_CONNTRACK_RETRANS, TCP_CONNTRACK_UNACK, TCP_CONNTRACK_TIMEOUT_MAX }; # 52 "../include/uapi/linux/netfilter/nf_conntrack_tcp.h" struct nf_ct_tcp_flags { __u8 flags; __u8 mask; }; # 6 "../include/linux/netfilter/nf_conntrack_tcp.h" 2 struct ip_ct_tcp_state { u_int32_t td_end; u_int32_t td_maxend; u_int32_t td_maxwin; u_int32_t td_maxack; u_int8_t td_scale; u_int8_t flags; }; struct ip_ct_tcp { struct ip_ct_tcp_state seen[2]; u_int8_t state; u_int8_t last_dir; u_int8_t retrans; u_int8_t last_index; u_int32_t last_seq; u_int32_t last_ack; u_int32_t last_end; u_int16_t last_win; u_int8_t last_wscale; u_int8_t last_flags; }; # 10 "../include/net/netns/conntrack.h" 2 # 1 "../include/linux/netfilter/nf_conntrack_dccp.h" 1 enum ct_dccp_states { CT_DCCP_NONE, CT_DCCP_REQUEST, CT_DCCP_RESPOND, CT_DCCP_PARTOPEN, CT_DCCP_OPEN, CT_DCCP_CLOSEREQ, CT_DCCP_CLOSING, CT_DCCP_TIMEWAIT, CT_DCCP_IGNORE, CT_DCCP_INVALID, __CT_DCCP_MAX }; enum ct_dccp_roles { CT_DCCP_ROLE_CLIENT, CT_DCCP_ROLE_SERVER, __CT_DCCP_ROLE_MAX }; # 1 "../include/uapi/linux/netfilter/nf_conntrack_tuple_common.h" 1 # 1 "../include/linux/netfilter/nf_conntrack_common.h" 1 # 1 "../include/uapi/linux/netfilter/nf_conntrack_common.h" 1 enum ip_conntrack_info { IP_CT_ESTABLISHED, IP_CT_RELATED, IP_CT_NEW, IP_CT_IS_REPLY, IP_CT_ESTABLISHED_REPLY = IP_CT_ESTABLISHED + IP_CT_IS_REPLY, IP_CT_RELATED_REPLY = IP_CT_RELATED + IP_CT_IS_REPLY, IP_CT_NUMBER, IP_CT_UNTRACKED = 7, }; enum ip_conntrack_status { IPS_EXPECTED_BIT = 0, IPS_EXPECTED = (1 << IPS_EXPECTED_BIT), IPS_SEEN_REPLY_BIT = 1, IPS_SEEN_REPLY = (1 << IPS_SEEN_REPLY_BIT), IPS_ASSURED_BIT = 2, IPS_ASSURED = (1 << IPS_ASSURED_BIT), IPS_CONFIRMED_BIT = 3, IPS_CONFIRMED = (1 << IPS_CONFIRMED_BIT), IPS_SRC_NAT_BIT = 4, IPS_SRC_NAT = (1 << IPS_SRC_NAT_BIT), IPS_DST_NAT_BIT = 5, IPS_DST_NAT = (1 << IPS_DST_NAT_BIT), IPS_NAT_MASK = (IPS_DST_NAT | IPS_SRC_NAT), IPS_SEQ_ADJUST_BIT = 6, IPS_SEQ_ADJUST = (1 << IPS_SEQ_ADJUST_BIT), IPS_SRC_NAT_DONE_BIT = 7, IPS_SRC_NAT_DONE = (1 << IPS_SRC_NAT_DONE_BIT), IPS_DST_NAT_DONE_BIT = 8, IPS_DST_NAT_DONE = (1 << IPS_DST_NAT_DONE_BIT), IPS_NAT_DONE_MASK = (IPS_DST_NAT_DONE | IPS_SRC_NAT_DONE), IPS_DYING_BIT = 9, IPS_DYING = (1 << IPS_DYING_BIT), IPS_FIXED_TIMEOUT_BIT = 10, IPS_FIXED_TIMEOUT = (1 << IPS_FIXED_TIMEOUT_BIT), IPS_TEMPLATE_BIT = 11, IPS_TEMPLATE = (1 << IPS_TEMPLATE_BIT), IPS_UNTRACKED_BIT = 12, IPS_UNTRACKED = (1 << IPS_UNTRACKED_BIT), IPS_HELPER_BIT = 13, IPS_HELPER = (1 << IPS_HELPER_BIT), IPS_OFFLOAD_BIT = 14, IPS_OFFLOAD = (1 << IPS_OFFLOAD_BIT), IPS_UNCHANGEABLE_MASK = (IPS_NAT_DONE_MASK | IPS_NAT_MASK | IPS_EXPECTED | IPS_CONFIRMED | IPS_DYING | IPS_SEQ_ADJUST | IPS_TEMPLATE | IPS_OFFLOAD), __IPS_MAX_BIT = 15, }; enum ip_conntrack_events { IPCT_NEW, IPCT_RELATED, IPCT_DESTROY, IPCT_REPLY, IPCT_ASSURED, IPCT_PROTOINFO, IPCT_HELPER, IPCT_MARK, IPCT_SEQADJ, IPCT_NATSEQADJ = IPCT_SEQADJ, IPCT_SECMARK, IPCT_LABEL, IPCT_SYNPROXY, __IPCT_MAX }; enum ip_conntrack_expect_events { IPEXP_NEW, IPEXP_DESTROY, }; # 6 "../include/linux/netfilter/nf_conntrack_common.h" 2 struct ip_conntrack_stat { unsigned int found; unsigned int invalid; unsigned int ignore; unsigned int insert; unsigned int insert_failed; unsigned int drop; unsigned int early_drop; unsigned int error; unsigned int expect_new; unsigned int expect_create; unsigned int expect_delete; unsigned int search_restart; }; # 10 "../include/uapi/linux/netfilter/nf_conntrack_tuple_common.h" 2 enum ip_conntrack_dir { IP_CT_DIR_ORIGINAL, IP_CT_DIR_REPLY, IP_CT_DIR_MAX }; union nf_conntrack_man_proto { __be16 all; struct { __be16 port; } tcp; struct { __be16 port; } udp; struct { __be16 id; } icmp; struct { __be16 port; } dccp; struct { __be16 port; } sctp; struct { __be16 key; } gre; }; # 30 "../include/linux/netfilter/nf_conntrack_dccp.h" 2 struct nf_ct_dccp { u_int8_t role[IP_CT_DIR_MAX]; u_int8_t state; u_int8_t last_pkt; u_int8_t last_dir; u_int64_t handshake_seq; }; # 12 "../include/net/netns/conntrack.h" 2 # 1 "../include/linux/netfilter/nf_conntrack_sctp.h" 1 # 1 "../include/uapi/linux/netfilter/nf_conntrack_sctp.h" 1 enum sctp_conntrack { SCTP_CONNTRACK_NONE, SCTP_CONNTRACK_CLOSED, SCTP_CONNTRACK_COOKIE_WAIT, SCTP_CONNTRACK_COOKIE_ECHOED, SCTP_CONNTRACK_ESTABLISHED, SCTP_CONNTRACK_SHUTDOWN_SENT, SCTP_CONNTRACK_SHUTDOWN_RECD, SCTP_CONNTRACK_SHUTDOWN_ACK_SENT, SCTP_CONNTRACK_HEARTBEAT_SENT, SCTP_CONNTRACK_HEARTBEAT_ACKED, SCTP_CONNTRACK_MAX }; # 7 "../include/linux/netfilter/nf_conntrack_sctp.h" 2 struct ip_ct_sctp { enum sctp_conntrack state; __be32 vtag[IP_CT_DIR_MAX]; }; # 15 "../include/net/netns/conntrack.h" 2 struct ctl_table_header; struct nf_conntrack_ecache; struct nf_generic_net { unsigned int timeout; }; struct nf_tcp_net { unsigned int timeouts[TCP_CONNTRACK_TIMEOUT_MAX]; int tcp_loose; int tcp_be_liberal; int tcp_max_retrans; }; enum udp_conntrack { UDP_CT_UNREPLIED, UDP_CT_REPLIED, UDP_CT_MAX }; struct nf_udp_net { unsigned int timeouts[UDP_CT_MAX]; }; struct nf_icmp_net { unsigned int timeout; }; struct nf_dccp_net { int dccp_loose; unsigned int dccp_timeout[(__CT_DCCP_MAX - 1) + 1]; }; struct nf_sctp_net { unsigned int timeouts[SCTP_CONNTRACK_MAX]; }; enum gre_conntrack { GRE_CT_UNREPLIED, GRE_CT_REPLIED, GRE_CT_MAX }; struct nf_gre_net { struct list_head keymap_list; unsigned int timeouts[GRE_CT_MAX]; }; struct nf_ip_net { struct nf_generic_net generic; struct nf_tcp_net tcp; struct nf_udp_net udp; struct nf_icmp_net icmp; struct nf_icmp_net icmpv6; struct nf_dccp_net dccp; struct nf_sctp_net sctp; struct nf_gre_net gre; }; struct ct_pcpu { spinlock_t lock; struct hlist_nulls_head unconfirmed; struct hlist_nulls_head dying; }; struct netns_ct { atomic_t count; unsigned int expect_count; struct delayed_work ecache_dwork; bool ecache_dwork_pending; bool auto_assign_helper_warned; struct ctl_table_header *sysctl_header; unsigned int sysctl_log_invalid; int sysctl_events; int sysctl_acct; int sysctl_auto_assign_helper; int sysctl_tstamp; int sysctl_checksum; struct ct_pcpu *pcpu_lists; struct ip_conntrack_stat *stat; struct nf_ct_event_notifier *nf_conntrack_event_cb; struct nf_exp_event_notifier *nf_expect_event_cb; struct nf_ip_net nf_ct_proto; unsigned int labels_used; }; # 30 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/nftables.h" 1 struct netns_nftables { struct list_head tables; struct list_head commit_list; struct mutex commit_mutex; unsigned int base_seq; u8 gencursor; u8 validate_state; }; # 32 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/xfrm.h" 1 # 1 "../include/uapi/linux/xfrm.h" 1 # 15 "../include/uapi/linux/xfrm.h" typedef union { __be32 a4; __be32 a6[4]; struct in6_addr in6; } xfrm_address_t; struct xfrm_id { xfrm_address_t daddr; __be32 spi; __u8 proto; }; struct xfrm_sec_ctx { __u8 ctx_doi; __u8 ctx_alg; __u16 ctx_len; __u32 ctx_sid; char ctx_str[0]; }; # 49 "../include/uapi/linux/xfrm.h" struct xfrm_selector { xfrm_address_t daddr; xfrm_address_t saddr; __be16 dport; __be16 dport_mask; __be16 sport; __be16 sport_mask; __u16 family; __u8 prefixlen_d; __u8 prefixlen_s; __u8 proto; int ifindex; __kernel_uid32_t user; }; struct xfrm_lifetime_cfg { __u64 soft_byte_limit; __u64 hard_byte_limit; __u64 soft_packet_limit; __u64 hard_packet_limit; __u64 soft_add_expires_seconds; __u64 hard_add_expires_seconds; __u64 soft_use_expires_seconds; __u64 hard_use_expires_seconds; }; struct xfrm_lifetime_cur { __u64 bytes; __u64 packets; __u64 add_time; __u64 use_time; }; struct xfrm_replay_state { __u32 oseq; __u32 seq; __u32 bitmap; }; struct xfrm_replay_state_esn { unsigned int bmp_len; __u32 oseq; __u32 seq; __u32 oseq_hi; __u32 seq_hi; __u32 replay_window; __u32 bmp[0]; }; struct xfrm_algo { char alg_name[64]; unsigned int alg_key_len; char alg_key[0]; }; struct xfrm_algo_auth { char alg_name[64]; unsigned int alg_key_len; unsigned int alg_trunc_len; char alg_key[0]; }; struct xfrm_algo_aead { char alg_name[64]; unsigned int alg_key_len; unsigned int alg_icv_len; char alg_key[0]; }; struct xfrm_stats { __u32 replay_window; __u32 replay; __u32 integrity_failed; }; enum { XFRM_POLICY_TYPE_MAIN = 0, XFRM_POLICY_TYPE_SUB = 1, XFRM_POLICY_TYPE_MAX = 2, XFRM_POLICY_TYPE_ANY = 255 }; enum { XFRM_POLICY_IN = 0, XFRM_POLICY_OUT = 1, XFRM_POLICY_FWD = 2, XFRM_POLICY_MASK = 3, XFRM_POLICY_MAX = 3 }; enum { XFRM_SHARE_ANY, XFRM_SHARE_SESSION, XFRM_SHARE_USER, XFRM_SHARE_UNIQUE }; # 158 "../include/uapi/linux/xfrm.h" enum { XFRM_MSG_BASE = 0x10, XFRM_MSG_NEWSA = 0x10, XFRM_MSG_DELSA, XFRM_MSG_GETSA, XFRM_MSG_NEWPOLICY, XFRM_MSG_DELPOLICY, XFRM_MSG_GETPOLICY, XFRM_MSG_ALLOCSPI, XFRM_MSG_ACQUIRE, XFRM_MSG_EXPIRE, XFRM_MSG_UPDPOLICY, XFRM_MSG_UPDSA, XFRM_MSG_POLEXPIRE, XFRM_MSG_FLUSHSA, XFRM_MSG_FLUSHPOLICY, XFRM_MSG_NEWAE, XFRM_MSG_GETAE, XFRM_MSG_REPORT, XFRM_MSG_MIGRATE, XFRM_MSG_NEWSADINFO, XFRM_MSG_GETSADINFO, XFRM_MSG_NEWSPDINFO, XFRM_MSG_GETSPDINFO, XFRM_MSG_MAPPING, __XFRM_MSG_MAX }; # 228 "../include/uapi/linux/xfrm.h" struct xfrm_user_sec_ctx { __u16 len; __u16 exttype; __u8 ctx_alg; __u8 ctx_doi; __u16 ctx_len; }; struct xfrm_user_tmpl { struct xfrm_id id; __u16 family; xfrm_address_t saddr; __u32 reqid; __u8 mode; __u8 share; __u8 optional; __u32 aalgos; __u32 ealgos; __u32 calgos; }; struct xfrm_encap_tmpl { __u16 encap_type; __be16 encap_sport; __be16 encap_dport; xfrm_address_t encap_oa; }; enum xfrm_ae_ftype_t { XFRM_AE_UNSPEC, XFRM_AE_RTHR=1, XFRM_AE_RVAL=2, XFRM_AE_LVAL=4, XFRM_AE_ETHR=8, XFRM_AE_CR=16, XFRM_AE_CE=32, XFRM_AE_CU=64, __XFRM_AE_MAX }; struct xfrm_userpolicy_type { __u8 type; __u16 reserved1; __u8 reserved2; }; enum xfrm_attr_type_t { XFRMA_UNSPEC, XFRMA_ALG_AUTH, XFRMA_ALG_CRYPT, XFRMA_ALG_COMP, XFRMA_ENCAP, XFRMA_TMPL, XFRMA_SA, XFRMA_POLICY, XFRMA_SEC_CTX, XFRMA_LTIME_VAL, XFRMA_REPLAY_VAL, XFRMA_REPLAY_THRESH, XFRMA_ETIMER_THRESH, XFRMA_SRCADDR, XFRMA_COADDR, XFRMA_LASTUSED, XFRMA_POLICY_TYPE, XFRMA_MIGRATE, XFRMA_ALG_AEAD, XFRMA_KMADDRESS, XFRMA_ALG_AUTH_TRUNC, XFRMA_MARK, XFRMA_TFCPAD, XFRMA_REPLAY_ESN_VAL, XFRMA_SA_EXTRA_FLAGS, XFRMA_PROTO, XFRMA_ADDRESS_FILTER, XFRMA_PAD, XFRMA_OFFLOAD_DEV, XFRMA_SET_MARK, XFRMA_SET_MARK_MASK, XFRMA_IF_ID, __XFRMA_MAX }; struct xfrm_mark { __u32 v; __u32 m; }; enum xfrm_sadattr_type_t { XFRMA_SAD_UNSPEC, XFRMA_SAD_CNT, XFRMA_SAD_HINFO, __XFRMA_SAD_MAX }; struct xfrmu_sadhinfo { __u32 sadhcnt; __u32 sadhmcnt; }; enum xfrm_spdattr_type_t { XFRMA_SPD_UNSPEC, XFRMA_SPD_INFO, XFRMA_SPD_HINFO, XFRMA_SPD_IPV4_HTHRESH, XFRMA_SPD_IPV6_HTHRESH, __XFRMA_SPD_MAX }; struct xfrmu_spdinfo { __u32 incnt; __u32 outcnt; __u32 fwdcnt; __u32 inscnt; __u32 outscnt; __u32 fwdscnt; }; struct xfrmu_spdhinfo { __u32 spdhcnt; __u32 spdhmcnt; }; struct xfrmu_spdhthresh { __u8 lbits; __u8 rbits; }; struct xfrm_usersa_info { struct xfrm_selector sel; struct xfrm_id id; xfrm_address_t saddr; struct xfrm_lifetime_cfg lft; struct xfrm_lifetime_cur curlft; struct xfrm_stats stats; __u32 seq; __u32 reqid; __u16 family; __u8 mode; __u8 replay_window; __u8 flags; # 387 "../include/uapi/linux/xfrm.h" }; struct xfrm_usersa_id { xfrm_address_t daddr; __be32 spi; __u16 family; __u8 proto; }; struct xfrm_aevent_id { struct xfrm_usersa_id sa_id; xfrm_address_t saddr; __u32 flags; __u32 reqid; }; struct xfrm_userspi_info { struct xfrm_usersa_info info; __u32 min; __u32 max; }; struct xfrm_userpolicy_info { struct xfrm_selector sel; struct xfrm_lifetime_cfg lft; struct xfrm_lifetime_cur curlft; __u32 priority; __u32 index; __u8 dir; __u8 action; __u8 flags; __u8 share; }; struct xfrm_userpolicy_id { struct xfrm_selector sel; __u32 index; __u8 dir; }; struct xfrm_user_acquire { struct xfrm_id id; xfrm_address_t saddr; struct xfrm_selector sel; struct xfrm_userpolicy_info policy; __u32 aalgos; __u32 ealgos; __u32 calgos; __u32 seq; }; struct xfrm_user_expire { struct xfrm_usersa_info state; __u8 hard; }; struct xfrm_user_polexpire { struct xfrm_userpolicy_info pol; __u8 hard; }; struct xfrm_usersa_flush { __u8 proto; }; struct xfrm_user_report { __u8 proto; struct xfrm_selector sel; }; struct xfrm_user_kmaddress { xfrm_address_t local; xfrm_address_t remote; __u32 reserved; __u16 family; }; struct xfrm_user_migrate { xfrm_address_t old_daddr; xfrm_address_t old_saddr; xfrm_address_t new_daddr; xfrm_address_t new_saddr; __u8 proto; __u8 mode; __u16 reserved; __u32 reqid; __u16 old_family; __u16 new_family; }; struct xfrm_user_mapping { struct xfrm_usersa_id id; __u32 reqid; xfrm_address_t old_saddr; xfrm_address_t new_saddr; __be16 old_sport; __be16 new_sport; }; struct xfrm_address_filter { xfrm_address_t saddr; xfrm_address_t daddr; __u16 family; __u8 splen; __u8 dplen; }; struct xfrm_user_offload { int ifindex; __u8 flags; }; # 519 "../include/uapi/linux/xfrm.h" enum xfrm_nlgroups { XFRMNLGRP_NONE, XFRMNLGRP_ACQUIRE, XFRMNLGRP_EXPIRE, XFRMNLGRP_SA, XFRMNLGRP_POLICY, XFRMNLGRP_AEVENTS, XFRMNLGRP_REPORT, XFRMNLGRP_MIGRATE, XFRMNLGRP_MAPPING, __XFRMNLGRP_MAX }; # 10 "../include/net/netns/xfrm.h" 2 struct ctl_table_header; struct xfrm_policy_hash { struct hlist_head *table; unsigned int hmask; u8 dbits4; u8 sbits4; u8 dbits6; u8 sbits6; }; struct xfrm_policy_hthresh { struct work_struct work; seqlock_t lock; u8 lbits4; u8 rbits4; u8 lbits6; u8 rbits6; }; struct netns_xfrm { struct list_head state_all; # 42 "../include/net/netns/xfrm.h" struct hlist_head *state_bydst; struct hlist_head *state_bysrc; struct hlist_head *state_byspi; unsigned int state_hmask; unsigned int state_num; struct work_struct state_hash_work; struct list_head policy_all; struct hlist_head *policy_byidx; unsigned int policy_idx_hmask; struct hlist_head policy_inexact[XFRM_POLICY_MAX]; struct xfrm_policy_hash policy_bydst[XFRM_POLICY_MAX]; unsigned int policy_count[XFRM_POLICY_MAX * 2]; struct work_struct policy_hash_work; struct xfrm_policy_hthresh policy_hthresh; struct list_head inexact_bins; struct sock *nlsk; struct sock *nlsk_stash; u32 sysctl_aevent_etime; u32 sysctl_aevent_rseqth; int sysctl_larval_drop; u32 sysctl_acq_expires; struct ctl_table_header *sysctl_hdr; struct dst_ops xfrm4_dst_ops; struct dst_ops xfrm6_dst_ops; spinlock_t xfrm_state_lock; spinlock_t xfrm_policy_lock; struct mutex xfrm_cfg_mutex; }; # 33 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/mpls.h" 1 struct mpls_route; struct ctl_table_header; struct netns_mpls { int ip_ttl_propagate; int default_ttl; size_t platform_labels; struct mpls_route * *platform_label; struct ctl_table_header *ctl; }; # 34 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/can.h" 1 # 11 "../include/net/netns/can.h" struct can_dev_rcv_lists; struct s_stats; struct s_pstats; struct netns_can { struct proc_dir_entry *proc_dir; struct proc_dir_entry *pde_version; struct proc_dir_entry *pde_stats; struct proc_dir_entry *pde_reset_stats; struct proc_dir_entry *pde_rcvlist_all; struct proc_dir_entry *pde_rcvlist_fil; struct proc_dir_entry *pde_rcvlist_inv; struct proc_dir_entry *pde_rcvlist_sff; struct proc_dir_entry *pde_rcvlist_eff; struct proc_dir_entry *pde_rcvlist_err; struct proc_dir_entry *bcmproc_dir; struct can_dev_rcv_lists *can_rx_alldev_list; spinlock_t can_rcvlists_lock; struct timer_list can_stattimer; struct s_stats *can_stats; struct s_pstats *can_pstats; struct hlist_head cgw_list; }; # 35 "../include/net/net_namespace.h" 2 # 1 "../include/net/netns/xdp.h" 1 struct netns_xdp { struct mutex lock; struct hlist_head list; }; # 36 "../include/net/net_namespace.h" 2 # 1 "../include/linux/ns_common.h" 1 struct proc_ns_operations; struct ns_common { atomic_long_t stashed; const struct proc_ns_operations *ops; unsigned int inum; }; # 37 "../include/net/net_namespace.h" 2 struct user_namespace; struct proc_dir_entry; struct net_device; struct sock; struct ctl_table_header; struct net_generic; struct uevent_sock; struct netns_ipvs; struct bpf_prog; struct net { refcount_t passive; refcount_t count; spinlock_t rules_mod_lock; u32 hash_mix; atomic64_t cookie_gen; struct list_head list; struct list_head exit_list; struct llist_node cleanup_list; struct key_tag *key_domain; struct user_namespace *user_ns; struct ucounts *ucounts; spinlock_t nsid_lock; struct idr netns_ids; struct ns_common ns; struct proc_dir_entry *proc_net; struct proc_dir_entry *proc_net_stat; struct ctl_table_set sysctls; struct sock *rtnl; struct sock *genl_sock; struct uevent_sock *uevent_sock; struct list_head dev_base_head; struct hlist_head *dev_name_head; struct hlist_head *dev_index_head; unsigned int dev_base_seq; int ifindex; unsigned int dev_unreg_count; struct list_head rules_ops; struct list_head fib_notifier_ops; struct net_device *loopback_dev; struct netns_core core; struct netns_mib mib; struct netns_packet packet; struct netns_unix unx; struct netns_nexthop nexthop; struct netns_ipv4 ipv4; struct netns_ipv6 ipv6; struct netns_ieee802154_lowpan ieee802154_lowpan; struct netns_sctp sctp; struct netns_dccp dccp; struct netns_nf nf; struct netns_xt xt; struct netns_ct ct; struct netns_nftables nft; struct netns_nf_frag nf_frag; struct ctl_table_header *nf_frag_frags_hdr; struct sock *nfnl; struct sock *nfnl_stash; struct list_head nfnl_acct_list; struct list_head nfct_timeout_list; struct sk_buff_head wext_nlevents; struct net_generic *gen; struct bpf_prog *flow_dissector_prog; struct netns_xfrm xfrm; struct netns_ipvs *ipvs; struct netns_mpls mpls; struct netns_can can; struct netns_xdp xdp; struct sock *diag_nlsk; atomic_t fnhe_genid; } ; # 1 "../include/linux/seq_file_net.h" 1 # 1 "../include/linux/seq_file.h" 1 # 12 "../include/linux/seq_file.h" # 1 "../include/linux/cred.h" 1 # 13 "../include/linux/cred.h" # 1 "../include/linux/key.h" 1 # 20 "../include/linux/key.h" # 1 "../include/linux/assoc_array.h" 1 # 22 "../include/linux/assoc_array.h" struct assoc_array { struct assoc_array_ptr *root; unsigned long nr_leaves_on_tree; }; struct assoc_array_ops { unsigned long (*get_key_chunk)(const void *index_key, int level); unsigned long (*get_object_key_chunk)(const void *object, int level); bool (*compare_object)(const void *object, const void *index_key); int (*diff_objects)(const void *object, const void *index_key); void (*free_object)(void *object); }; struct assoc_array_edit; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void assoc_array_init(struct assoc_array *array) { array->root = ((void *)0); array->nr_leaves_on_tree = 0; } extern int assoc_array_iterate(const struct assoc_array *array, int (*iterator)(const void *object, void *iterator_data), void *iterator_data); extern void *assoc_array_find(const struct assoc_array *array, const struct assoc_array_ops *ops, const void *index_key); extern void assoc_array_destroy(struct assoc_array *array, const struct assoc_array_ops *ops); extern struct assoc_array_edit *assoc_array_insert(struct assoc_array *array, const struct assoc_array_ops *ops, const void *index_key, void *object); extern void assoc_array_insert_set_object(struct assoc_array_edit *edit, void *object); extern struct assoc_array_edit *assoc_array_delete(struct assoc_array *array, const struct assoc_array_ops *ops, const void *index_key); extern struct assoc_array_edit *assoc_array_clear(struct assoc_array *array, const struct assoc_array_ops *ops); extern void assoc_array_apply_edit(struct assoc_array_edit *edit); extern void assoc_array_cancel_edit(struct assoc_array_edit *edit); extern int assoc_array_gc(struct assoc_array *array, const struct assoc_array_ops *ops, bool (*iterator)(void *object, void *iterator_data), void *iterator_data); # 21 "../include/linux/key.h" 2 typedef int32_t key_serial_t; struct key; struct net; # 1 "../include/linux/keyctl.h" 1 # 11 "../include/linux/keyctl.h" # 1 "../include/uapi/linux/keyctl.h" 1 # 21 "../include/uapi/linux/keyctl.h" enum key_ace_subject_type { KEY_ACE_SUBJ_STANDARD = 0, nr__key_ace_subject_type }; enum key_ace_standard_subject { KEY_ACE_EVERYONE = 0, KEY_ACE_GROUP = 1, KEY_ACE_OWNER = 2, KEY_ACE_POSSESSOR = 3, nr__key_ace_standard_subject }; # 138 "../include/uapi/linux/keyctl.h" struct keyctl_dh_params { union { __s32 private; __s32 priv; }; __s32 prime; __s32 base; }; struct keyctl_kdf_params { char *hashname; char *otherinfo; __u32 otherinfolen; __u32 __spare[8]; }; struct keyctl_pkey_query { __u32 supported_ops; __u32 key_size; __u16 max_data_size; __u16 max_sig_size; __u16 max_enc_size; __u16 max_dec_size; __u32 __spare[10]; }; struct keyctl_pkey_params { __s32 key_id; __u32 in_len; union { __u32 out_len; __u32 in2_len; }; __u32 __spare[7]; }; # 12 "../include/linux/keyctl.h" 2 struct kernel_pkey_query { __u32 supported_ops; __u32 key_size; __u16 max_data_size; __u16 max_sig_size; __u16 max_enc_size; __u16 max_dec_size; }; enum kernel_pkey_operation { kernel_pkey_encrypt, kernel_pkey_decrypt, kernel_pkey_sign, kernel_pkey_verify, }; struct kernel_pkey_params { struct key *key; const char *encoding; const char *hash_algo; char *info; __u32 in_len; union { __u32 out_len; __u32 in2_len; }; enum kernel_pkey_operation op : 8; }; # 36 "../include/linux/key.h" 2 struct seq_file; struct user_struct; struct signal_struct; struct cred; struct key_type; struct key_owner; struct key_tag; struct keyring_list; struct keyring_name; struct key_tag { struct callback_head rcu; refcount_t usage; bool removed; }; struct keyring_index_key { unsigned long hash; union { struct { u8 desc_len; char desc[sizeof(long) - 1]; }; unsigned long x; }; struct key_type *type; struct key_tag *domain_tag; const char *description; }; union key_payload { void *rcu_data0; void *data[4]; }; struct key_ace { unsigned int type; unsigned int perm; union { kuid_t uid; kgid_t gid; unsigned int subject_id; }; }; struct key_acl { refcount_t usage; unsigned short nr_ace; bool possessor_viewable; struct callback_head rcu; struct key_ace aces[]; }; # 125 "../include/linux/key.h" typedef struct __key_reference_with_attributes *key_ref_t; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) key_ref_t make_key_ref(const struct key *key, bool possession) { return (key_ref_t) ((unsigned long) key | possession); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct key *key_ref_to_ptr(const key_ref_t key_ref) { return (struct key *) ((unsigned long) key_ref & ~1UL); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_key_possessed(const key_ref_t key_ref) { return (unsigned long) key_ref & 1UL; } typedef int (*key_restrict_link_func_t)(struct key *dest_keyring, const struct key_type *type, const union key_payload *payload, struct key *restriction_key); struct key_restriction { key_restrict_link_func_t check; struct key *key; struct key_type *keytype; }; enum key_state { KEY_IS_UNINSTANTIATED, KEY_IS_POSITIVE, }; # 167 "../include/linux/key.h" struct key { refcount_t usage; key_serial_t serial; union { struct list_head graveyard_link; struct rb_node serial_node; }; struct rw_semaphore sem; struct key_user *user; void *security; struct key_acl *acl; union { time64_t expiry; time64_t revoked_at; }; time64_t last_used_at; kuid_t uid; kgid_t gid; unsigned short quotalen; unsigned short datalen; short state; unsigned long flags; # 215 "../include/linux/key.h" union { struct keyring_index_key index_key; struct { unsigned long hash; unsigned long len_desc; struct key_type *type; struct key_tag *domain_tag; char *description; }; }; union { union key_payload payload; struct { struct list_head name_link; struct assoc_array keys; }; }; # 250 "../include/linux/key.h" struct key_restriction *restrict_link; }; extern struct key *key_alloc(struct key_type *type, const char *desc, kuid_t uid, kgid_t gid, const struct cred *cred, struct key_acl *acl, unsigned long flags, struct key_restriction *restrict_link); # 269 "../include/linux/key.h" extern void key_revoke(struct key *key); extern void key_invalidate(struct key *key); extern void key_put(struct key *key); extern bool key_put_tag(struct key_tag *tag); extern void key_remove_domain(struct key_tag *domain_tag); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct key *__key_get(struct key *key) { refcount_inc_checked(&key->usage); return key; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct key *key_get(struct key *key) { return key ? __key_get(key) : key; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void key_ref_put(key_ref_t key_ref) { key_put(key_ref_to_ptr(key_ref)); } extern struct key *request_key_tag(struct key_type *type, const char *description, struct key_tag *domain_tag, const char *callout_info, struct key_acl *acl); extern struct key *request_key_rcu(struct key_type *type, const char *description, struct key_tag *domain_tag); extern struct key *request_key_with_auxdata(struct key_type *type, const char *description, struct key_tag *domain_tag, const void *callout_info, size_t callout_len, void *aux, struct key_acl *acl); # 318 "../include/linux/key.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct key *request_key(struct key_type *type, const char *description, const char *callout_info, struct key_acl *acl) { return request_key_tag(type, description, ((void *)0), callout_info, acl); } # 347 "../include/linux/key.h" extern int wait_for_key_construction(struct key *key, bool intr); extern int key_validate(const struct key *key); extern key_ref_t key_create_or_update(key_ref_t keyring, const char *type, const char *description, const void *payload, size_t plen, struct key_acl *acl, unsigned long flags); extern int key_update(key_ref_t key, const void *payload, size_t plen); extern int key_link(struct key *keyring, struct key *key); extern int key_move(struct key *key, struct key *from_keyring, struct key *to_keyring, unsigned int flags); extern int key_unlink(struct key *keyring, struct key *key); extern struct key *keyring_alloc(const char *description, kuid_t uid, kgid_t gid, const struct cred *cred, struct key_acl *acl, unsigned long flags, struct key_restriction *restrict_link, struct key *dest); extern int restrict_link_reject(struct key *keyring, const struct key_type *type, const union key_payload *payload, struct key *restriction_key); extern int keyring_clear(struct key *keyring); extern key_ref_t keyring_search(key_ref_t keyring, struct key_type *type, const char *description, bool recurse); extern int keyring_add_key(struct key *keyring, struct key *key); extern int keyring_restrict(key_ref_t keyring, const char *type, const char *restriction); extern struct key *key_lookup(key_serial_t id); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) key_serial_t key_serial(const struct key *key) { return key ? key->serial : 0; } extern void key_set_timeout(struct key *, unsigned); extern key_ref_t lookup_user_key(key_serial_t id, unsigned long flags, u32 desired_perm); extern void key_free_user_ns(struct user_namespace *); # 429 "../include/linux/key.h" extern struct key_acl internal_key_acl; extern struct key_acl internal_keyring_acl; extern struct key_acl internal_writable_keyring_acl; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) short key_read_state(const struct key *key) { return ({ typeof(*&key->state) ___p1 = ({ union { typeof(*&key->state) __val; char __c[1]; } __u; if (1) __read_once_size(&(*&key->state), __u.__c, sizeof(*&key->state)); else __read_once_size_nocheck(&(*&key->state), __u.__c, sizeof(*&key->state)); do { } while (0); __u.__val; }); do { extern void __compiletime_assert_436(void) ; if (!((sizeof(*&key->state) == sizeof(char) || sizeof(*&key->state) == sizeof(short) || sizeof(*&key->state) == sizeof(int) || sizeof(*&key->state) == sizeof(long)))) __compiletime_assert_436(); } while (0); __asm__ __volatile__("" : : : "memory"); ___p1; }); } # 446 "../include/linux/key.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool key_is_positive(const struct key *key) { return key_read_state(key) == KEY_IS_POSITIVE; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool key_is_negative(const struct key *key) { return key_read_state(key) < 0; } # 469 "../include/linux/key.h" extern struct ctl_table key_sysctls[]; extern int install_thread_keyring_to_cred(struct cred *cred); extern void key_fsuid_changed(struct cred *new_cred); extern void key_fsgid_changed(struct cred *new_cred); extern void key_init(void); # 14 "../include/linux/cred.h" 2 # 1 "../include/linux/sched/user.h" 1 # 13 "../include/linux/sched/user.h" struct user_struct { refcount_t __count; atomic_t processes; atomic_t sigpending; atomic_t fanotify_listeners; atomic_long_t epoll_watches; unsigned long mq_bytes; unsigned long locked_shm; unsigned long unix_inflight; atomic_long_t pipe_bufs; struct hlist_node uidhash_node; kuid_t uid; atomic_long_t locked_vm; struct ratelimit_state ratelimit; }; extern int uids_sysfs_init(void); extern struct user_struct *find_user(kuid_t); extern struct user_struct root_user; extern struct user_struct * alloc_uid(kuid_t); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct user_struct *get_uid(struct user_struct *u) { refcount_inc_checked(&u->__count); return u; } extern void free_uid(struct user_struct *); # 18 "../include/linux/cred.h" 2 struct cred; struct inode; struct group_info { atomic_t usage; int ngroups; kgid_t gid[0]; } ; # 40 "../include/linux/cred.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct group_info *get_group_info(struct group_info *gi) { atomic_inc(&gi->usage); return gi; } # 56 "../include/linux/cred.h" extern struct group_info init_groups; extern struct group_info *groups_alloc(int); extern void groups_free(struct group_info *); extern int in_group_p(kgid_t); extern int in_egroup_p(kgid_t); extern int groups_search(const struct group_info *, kgid_t); extern int set_current_groups(struct group_info *); extern void set_groups(struct cred *, struct group_info *); extern bool may_setgroups(void); extern void groups_sort(struct group_info *); # 111 "../include/linux/cred.h" struct cred { atomic_t usage; atomic_t subscribers; void *put_addr; unsigned magic; kuid_t uid; kgid_t gid; kuid_t suid; kgid_t sgid; kuid_t euid; kgid_t egid; kuid_t fsuid; kgid_t fsgid; unsigned securebits; kernel_cap_t cap_inheritable; kernel_cap_t cap_permitted; kernel_cap_t cap_effective; kernel_cap_t cap_bset; kernel_cap_t cap_ambient; unsigned char jit_keyring; struct key *session_keyring; struct key *process_keyring; struct key *thread_keyring; struct key *request_key_auth; void *security; struct user_struct *user; struct user_namespace *user_ns; struct group_info *group_info; struct callback_head rcu; } ; extern void __put_cred(struct cred *); extern void exit_creds(struct task_struct *); extern int copy_creds(struct task_struct *, unsigned long); extern const struct cred *get_task_cred(struct task_struct *); extern struct cred *cred_alloc_blank(void); extern struct cred *prepare_creds(void); extern struct cred *prepare_exec_creds(void); extern int commit_creds(struct cred *); extern void abort_creds(struct cred *); extern const struct cred *override_creds(const struct cred *); extern void revert_creds(const struct cred *); extern struct cred *prepare_kernel_cred(struct task_struct *); extern int change_create_files_as(struct cred *, struct inode *); extern int set_security_override(struct cred *, u32); extern int set_security_override_from_ctx(struct cred *, const char *); extern int set_create_files_as(struct cred *, struct inode *); extern int cred_fscmp(const struct cred *, const struct cred *); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) cred_init(void); extern void __invalid_creds(const struct cred *, const char *, unsigned); extern void __validate_process_creds(struct task_struct *, const char *, unsigned); extern bool creds_are_invalid(const struct cred *cred); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __validate_creds(const struct cred *cred, const char *file, unsigned line) { if (__builtin_expect(!!(creds_are_invalid(cred)), 0)) __invalid_creds(cred, file, line); } # 197 "../include/linux/cred.h" extern void validate_creds_for_do_exit(struct task_struct *); # 210 "../include/linux/cred.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cap_ambient_invariant_ok(const struct cred *cred) { return cap_issubset(cred->cap_ambient, cap_intersect(cred->cap_permitted, cred->cap_inheritable)); } # 224 "../include/linux/cred.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cred *get_new_cred(struct cred *cred) { atomic_inc(&cred->usage); return cred; } # 243 "../include/linux/cred.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct cred *get_cred(const struct cred *cred) { struct cred *nonconst_cred = (struct cred *) cred; if (!cred) return cred; do { __validate_creds((cred), "../include/linux/cred.h", 248); } while(0); return get_new_cred(nonconst_cred); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct cred *get_cred_rcu(const struct cred *cred) { struct cred *nonconst_cred = (struct cred *) cred; if (!cred) return ((void *)0); if (!atomic_inc_not_zero(&nonconst_cred->usage)) return ((void *)0); do { __validate_creds((cred), "../include/linux/cred.h", 259); } while(0); return cred; } # 274 "../include/linux/cred.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void put_cred(const struct cred *_cred) { struct cred *cred = (struct cred *) _cred; if (cred) { do { __validate_creds((cred), "../include/linux/cred.h", 279); } while(0); if (atomic_dec_and_test(&(cred)->usage)) __put_cred(cred); } } # 385 "../include/linux/cred.h" extern struct user_namespace init_user_ns; # 13 "../include/linux/seq_file.h" 2 struct seq_operations; struct seq_file { char *buf; size_t size; size_t from; size_t count; size_t pad_until; loff_t index; loff_t read_pos; u64 version; struct mutex lock; const struct seq_operations *op; int poll_event; const struct file *file; void *private; }; struct seq_operations { void * (*start) (struct seq_file *m, loff_t *pos); void (*stop) (struct seq_file *m, void *v); void * (*next) (struct seq_file *m, void *v, loff_t *pos); int (*show) (struct seq_file *m, void *v); }; # 51 "../include/linux/seq_file.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool seq_has_overflowed(struct seq_file *m) { return m->count == m->size; } # 64 "../include/linux/seq_file.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) size_t seq_get_buf(struct seq_file *m, char **bufp) { do { if (__builtin_expect(!!(m->count > m->size), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/seq_file.h"), "i" (66), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (412)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (m->count < m->size) *bufp = m->buf + m->count; else *bufp = ((void *)0); return m->size - m->count; } # 84 "../include/linux/seq_file.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void seq_commit(struct seq_file *m, int num) { if (num < 0) { m->count = m->size; } else { do { if (__builtin_expect(!!(m->count + num > m->size), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/seq_file.h"), "i" (89), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (413)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); m->count += num; } } # 102 "../include/linux/seq_file.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void seq_setwidth(struct seq_file *m, size_t size) { m->pad_until = m->count + size; } void seq_pad(struct seq_file *m, char c); char *mangle_path(char *s, const char *p, const char *esc); int seq_open(struct file *, const struct seq_operations *); ssize_t seq_read(struct file *, char *, size_t, loff_t *); loff_t seq_lseek(struct file *, loff_t, int); int seq_release(struct inode *, struct file *); int seq_write(struct seq_file *seq, const void *data, size_t len); __attribute__((__format__(printf, 2, 0))) void seq_vprintf(struct seq_file *m, const char *fmt, va_list args); __attribute__((__format__(printf, 2, 3))) void seq_printf(struct seq_file *m, const char *fmt, ...); void seq_putc(struct seq_file *m, char c); void seq_puts(struct seq_file *m, const char *s); void seq_put_decimal_ull_width(struct seq_file *m, const char *delimiter, unsigned long long num, unsigned int width); void seq_put_decimal_ull(struct seq_file *m, const char *delimiter, unsigned long long num); void seq_put_decimal_ll(struct seq_file *m, const char *delimiter, long long num); void seq_put_hex_ll(struct seq_file *m, const char *delimiter, unsigned long long v, unsigned int width); void seq_escape(struct seq_file *m, const char *s, const char *esc); void seq_hex_dump(struct seq_file *m, const char *prefix_str, int prefix_type, int rowsize, int groupsize, const void *buf, size_t len, bool ascii); int seq_path(struct seq_file *, const struct path *, const char *); int seq_file_path(struct seq_file *, struct file *, const char *); int seq_dentry(struct seq_file *, struct dentry *, const char *); int seq_path_root(struct seq_file *m, const struct path *path, const struct path *root, const char *esc); int single_open(struct file *, int (*)(struct seq_file *, void *), void *); int single_open_size(struct file *, int (*)(struct seq_file *, void *), void *, size_t); int single_release(struct inode *, struct file *); void *__seq_open_private(struct file *, const struct seq_operations *, int); int seq_open_private(struct file *, const struct seq_operations *, int); int seq_release_private(struct inode *, struct file *); # 162 "../include/linux/seq_file.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct user_namespace *seq_user_ns(struct seq_file *seq) { return seq->file->f_cred->user_ns; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void seq_show_option(struct seq_file *m, const char *name, const char *value) { seq_putc(m, ','); seq_escape(m, name, ",= \t\n\\"); if (value) { seq_putc(m, '='); seq_escape(m, value, ", \t\n\\"); } } # 212 "../include/linux/seq_file.h" extern struct list_head *seq_list_start(struct list_head *head, loff_t pos); extern struct list_head *seq_list_start_head(struct list_head *head, loff_t pos); extern struct list_head *seq_list_next(void *v, struct list_head *head, loff_t *ppos); extern struct hlist_node *seq_hlist_start(struct hlist_head *head, loff_t pos); extern struct hlist_node *seq_hlist_start_head(struct hlist_head *head, loff_t pos); extern struct hlist_node *seq_hlist_next(void *v, struct hlist_head *head, loff_t *ppos); extern struct hlist_node *seq_hlist_start_rcu(struct hlist_head *head, loff_t pos); extern struct hlist_node *seq_hlist_start_head_rcu(struct hlist_head *head, loff_t pos); extern struct hlist_node *seq_hlist_next_rcu(void *v, struct hlist_head *head, loff_t *ppos); extern struct hlist_node *seq_hlist_start_percpu(struct hlist_head *head, int *cpu, loff_t pos); extern struct hlist_node *seq_hlist_next_percpu(void *v, struct hlist_head *head, int *cpu, loff_t *pos); void seq_file_init(void); # 6 "../include/linux/seq_file_net.h" 2 struct net; extern struct net init_net; struct seq_net_private { struct net *net; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct net *seq_file_net(struct seq_file *seq) { return ((struct seq_net_private *)seq->private)->net; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct net *seq_file_single_net(struct seq_file *seq) { return (struct net *)seq->private; } # 179 "../include/net/net_namespace.h" 2 extern struct net init_net; struct net *copy_net_ns(unsigned long flags, struct user_namespace *user_ns, struct net *old_net); void net_ns_get_ownership(const struct net *net, kuid_t *uid, kgid_t *gid); void net_ns_barrier(void); # 212 "../include/net/net_namespace.h" extern struct list_head net_namespace_list; struct net *get_net_ns_by_pid(pid_t pid); struct net *get_net_ns_by_fd(int fd); void ipx_register_sysctl(void); void ipx_unregister_sysctl(void); void __put_net(struct net *net); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct net *get_net(struct net *net) { refcount_inc_checked(&net->count); return net; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct net *maybe_get_net(struct net *net) { if (!refcount_inc_not_zero_checked(&net->count)) net = ((void *)0); return net; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void put_net(struct net *net) { if (refcount_dec_and_test_checked(&net->count)) __put_net(net); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int net_eq(const struct net *net1, const struct net *net2) { return net1 == net2; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int check_net(const struct net *net) { return refcount_read(&net->count) != 0; } void net_drop_ns(void *); # 296 "../include/net/net_namespace.h" typedef struct { struct net *net; } possible_net_t; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void write_pnet(possible_net_t *pnet, struct net *net) { pnet->net = net; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct net *read_pnet(const possible_net_t *pnet) { return pnet->net; } # 337 "../include/net/net_namespace.h" int peernet2id_alloc(struct net *net, struct net *peer); int peernet2id(struct net *net, struct net *peer); bool peernet_has_id(struct net *net, struct net *peer); struct net *get_net_ns_by_id(struct net *net, int id); struct pernet_operations { struct list_head list; # 366 "../include/net/net_namespace.h" int (*init)(struct net *net); void (*pre_exit)(struct net *net); void (*exit)(struct net *net); void (*exit_batch)(struct list_head *net_exit_list); unsigned int *id; size_t size; }; # 393 "../include/net/net_namespace.h" int register_pernet_subsys(struct pernet_operations *); void unregister_pernet_subsys(struct pernet_operations *); int register_pernet_device(struct pernet_operations *); void unregister_pernet_device(struct pernet_operations *); struct ctl_table; struct ctl_table_header; int net_sysctl_init(void); struct ctl_table_header *register_net_sysctl(struct net *net, const char *path, struct ctl_table *table); void unregister_net_sysctl_table(struct ctl_table_header *header); # 418 "../include/net/net_namespace.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int rt_genid_ipv4(struct net *net) { return atomic_read(&net->ipv4.rt_genid); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rt_genid_bump_ipv4(struct net *net) { atomic_inc(&net->ipv4.rt_genid); } extern void (*__fib6_flush_trees)(struct net *net); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rt_genid_bump_ipv6(struct net *net) { if (__fib6_flush_trees) __fib6_flush_trees(net); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct netns_ieee802154_lowpan * net_ieee802154_lowpan(struct net *net) { return &net->ieee802154_lowpan; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rt_genid_bump_all(struct net *net) { rt_genid_bump_ipv4(net); rt_genid_bump_ipv6(net); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int fnhe_genid(struct net *net) { return atomic_read(&net->fnhe_genid); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void fnhe_genid_bump(struct net *net) { atomic_inc(&net->fnhe_genid); } # 39 "../include/linux/netdevice.h" 2 # 1 "../include/net/dcbnl.h" 1 # 11 "../include/net/dcbnl.h" # 1 "../include/uapi/linux/dcbnl.h" 1 # 58 "../include/uapi/linux/dcbnl.h" struct ieee_ets { __u8 willing; __u8 ets_cap; __u8 cbs; __u8 tc_tx_bw[8]; __u8 tc_rx_bw[8]; __u8 tc_tsa[8]; __u8 prio_tc[8]; __u8 tc_reco_bw[8]; __u8 tc_reco_tsa[8]; __u8 reco_prio_tc[8]; }; # 78 "../include/uapi/linux/dcbnl.h" struct ieee_maxrate { __u64 tc_maxrate[8]; }; enum dcbnl_cndd_states { DCB_CNDD_RESET = 0, DCB_CNDD_EDGE, DCB_CNDD_INTERIOR, DCB_CNDD_INTERIOR_READY, }; # 119 "../include/uapi/linux/dcbnl.h" struct ieee_qcn { __u8 rpg_enable[8]; __u32 rppp_max_rps[8]; __u32 rpg_time_reset[8]; __u32 rpg_byte_reset[8]; __u32 rpg_threshold[8]; __u32 rpg_max_rate[8]; __u32 rpg_ai_rate[8]; __u32 rpg_hai_rate[8]; __u32 rpg_gd[8]; __u32 rpg_min_dec_fac[8]; __u32 rpg_min_rate[8]; __u32 cndd_state_machine[8]; }; # 141 "../include/uapi/linux/dcbnl.h" struct ieee_qcn_stats { __u64 rppp_rp_centiseconds[8]; __u32 rppp_created_rps[8]; }; # 157 "../include/uapi/linux/dcbnl.h" struct ieee_pfc { __u8 pfc_cap; __u8 pfc_en; __u8 mbc; __u16 delay; __u64 requests[8]; __u64 indications[8]; }; struct dcbnl_buffer { __u8 prio2buffer[8]; __u32 buffer_size[8]; __u32 total_size; }; # 190 "../include/uapi/linux/dcbnl.h" struct cee_pg { __u8 willing; __u8 error; __u8 pg_en; __u8 tcs_supported; __u8 pg_bw[8]; __u8 prio_pg[8]; }; # 207 "../include/uapi/linux/dcbnl.h" struct cee_pfc { __u8 willing; __u8 error; __u8 pfc_en; __u8 tcs_supported; }; # 244 "../include/uapi/linux/dcbnl.h" struct dcb_app { __u8 selector; __u8 priority; __u16 protocol; }; # 259 "../include/uapi/linux/dcbnl.h" struct dcb_peer_app_info { __u8 willing; __u8 error; }; struct dcbmsg { __u8 dcb_family; __u8 cmd; __u16 dcb_pad; }; # 301 "../include/uapi/linux/dcbnl.h" enum dcbnl_commands { DCB_CMD_UNDEFINED, DCB_CMD_GSTATE, DCB_CMD_SSTATE, DCB_CMD_PGTX_GCFG, DCB_CMD_PGTX_SCFG, DCB_CMD_PGRX_GCFG, DCB_CMD_PGRX_SCFG, DCB_CMD_PFC_GCFG, DCB_CMD_PFC_SCFG, DCB_CMD_SET_ALL, DCB_CMD_GPERM_HWADDR, DCB_CMD_GCAP, DCB_CMD_GNUMTCS, DCB_CMD_SNUMTCS, DCB_CMD_PFC_GSTATE, DCB_CMD_PFC_SSTATE, DCB_CMD_BCN_GCFG, DCB_CMD_BCN_SCFG, DCB_CMD_GAPP, DCB_CMD_SAPP, DCB_CMD_IEEE_SET, DCB_CMD_IEEE_GET, DCB_CMD_GDCBX, DCB_CMD_SDCBX, DCB_CMD_GFEATCFG, DCB_CMD_SFEATCFG, DCB_CMD_CEE_GET, DCB_CMD_IEEE_DEL, __DCB_CMD_ENUM_MAX, DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1, }; # 369 "../include/uapi/linux/dcbnl.h" enum dcbnl_attrs { DCB_ATTR_UNDEFINED, DCB_ATTR_IFNAME, DCB_ATTR_STATE, DCB_ATTR_PFC_STATE, DCB_ATTR_PFC_CFG, DCB_ATTR_NUM_TC, DCB_ATTR_PG_CFG, DCB_ATTR_SET_ALL, DCB_ATTR_PERM_HWADDR, DCB_ATTR_CAP, DCB_ATTR_NUMTCS, DCB_ATTR_BCN, DCB_ATTR_APP, DCB_ATTR_IEEE, DCB_ATTR_DCBX, DCB_ATTR_FEATCFG, DCB_ATTR_CEE, __DCB_ATTR_ENUM_MAX, DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1, }; # 409 "../include/uapi/linux/dcbnl.h" enum ieee_attrs { DCB_ATTR_IEEE_UNSPEC, DCB_ATTR_IEEE_ETS, DCB_ATTR_IEEE_PFC, DCB_ATTR_IEEE_APP_TABLE, DCB_ATTR_IEEE_PEER_ETS, DCB_ATTR_IEEE_PEER_PFC, DCB_ATTR_IEEE_PEER_APP, DCB_ATTR_IEEE_MAXRATE, DCB_ATTR_IEEE_QCN, DCB_ATTR_IEEE_QCN_STATS, DCB_ATTR_DCB_BUFFER, __DCB_ATTR_IEEE_MAX }; enum ieee_attrs_app { DCB_ATTR_IEEE_APP_UNSPEC, DCB_ATTR_IEEE_APP, __DCB_ATTR_IEEE_APP_MAX }; # 447 "../include/uapi/linux/dcbnl.h" enum cee_attrs { DCB_ATTR_CEE_UNSPEC, DCB_ATTR_CEE_PEER_PG, DCB_ATTR_CEE_PEER_PFC, DCB_ATTR_CEE_PEER_APP_TABLE, DCB_ATTR_CEE_TX_PG, DCB_ATTR_CEE_RX_PG, DCB_ATTR_CEE_PFC, DCB_ATTR_CEE_APP_TABLE, DCB_ATTR_CEE_FEAT, __DCB_ATTR_CEE_MAX }; enum peer_app_attr { DCB_ATTR_CEE_PEER_APP_UNSPEC, DCB_ATTR_CEE_PEER_APP_INFO, DCB_ATTR_CEE_PEER_APP, __DCB_ATTR_CEE_PEER_APP_MAX }; enum cee_attrs_app { DCB_ATTR_CEE_APP_UNSPEC, DCB_ATTR_CEE_APP, __DCB_ATTR_CEE_APP_MAX }; # 492 "../include/uapi/linux/dcbnl.h" enum dcbnl_pfc_up_attrs { DCB_PFC_UP_ATTR_UNDEFINED, DCB_PFC_UP_ATTR_0, DCB_PFC_UP_ATTR_1, DCB_PFC_UP_ATTR_2, DCB_PFC_UP_ATTR_3, DCB_PFC_UP_ATTR_4, DCB_PFC_UP_ATTR_5, DCB_PFC_UP_ATTR_6, DCB_PFC_UP_ATTR_7, DCB_PFC_UP_ATTR_ALL, __DCB_PFC_UP_ATTR_ENUM_MAX, DCB_PFC_UP_ATTR_MAX = __DCB_PFC_UP_ATTR_ENUM_MAX - 1, }; # 535 "../include/uapi/linux/dcbnl.h" enum dcbnl_pg_attrs { DCB_PG_ATTR_UNDEFINED, DCB_PG_ATTR_TC_0, DCB_PG_ATTR_TC_1, DCB_PG_ATTR_TC_2, DCB_PG_ATTR_TC_3, DCB_PG_ATTR_TC_4, DCB_PG_ATTR_TC_5, DCB_PG_ATTR_TC_6, DCB_PG_ATTR_TC_7, DCB_PG_ATTR_TC_MAX, DCB_PG_ATTR_TC_ALL, DCB_PG_ATTR_BW_ID_0, DCB_PG_ATTR_BW_ID_1, DCB_PG_ATTR_BW_ID_2, DCB_PG_ATTR_BW_ID_3, DCB_PG_ATTR_BW_ID_4, DCB_PG_ATTR_BW_ID_5, DCB_PG_ATTR_BW_ID_6, DCB_PG_ATTR_BW_ID_7, DCB_PG_ATTR_BW_ID_MAX, DCB_PG_ATTR_BW_ID_ALL, __DCB_PG_ATTR_ENUM_MAX, DCB_PG_ATTR_MAX = __DCB_PG_ATTR_ENUM_MAX - 1, }; # 584 "../include/uapi/linux/dcbnl.h" enum dcbnl_tc_attrs { DCB_TC_ATTR_PARAM_UNDEFINED, DCB_TC_ATTR_PARAM_PGID, DCB_TC_ATTR_PARAM_UP_MAPPING, DCB_TC_ATTR_PARAM_STRICT_PRIO, DCB_TC_ATTR_PARAM_BW_PCT, DCB_TC_ATTR_PARAM_ALL, __DCB_TC_ATTR_PARAM_ENUM_MAX, DCB_TC_ATTR_PARAM_MAX = __DCB_TC_ATTR_PARAM_ENUM_MAX - 1, }; # 618 "../include/uapi/linux/dcbnl.h" enum dcbnl_cap_attrs { DCB_CAP_ATTR_UNDEFINED, DCB_CAP_ATTR_ALL, DCB_CAP_ATTR_PG, DCB_CAP_ATTR_PFC, DCB_CAP_ATTR_UP2TC, DCB_CAP_ATTR_PG_TCS, DCB_CAP_ATTR_PFC_TCS, DCB_CAP_ATTR_GSP, DCB_CAP_ATTR_BCN, DCB_CAP_ATTR_DCBX, __DCB_CAP_ATTR_ENUM_MAX, DCB_CAP_ATTR_MAX = __DCB_CAP_ATTR_ENUM_MAX - 1, }; # 676 "../include/uapi/linux/dcbnl.h" enum dcbnl_numtcs_attrs { DCB_NUMTCS_ATTR_UNDEFINED, DCB_NUMTCS_ATTR_ALL, DCB_NUMTCS_ATTR_PG, DCB_NUMTCS_ATTR_PFC, __DCB_NUMTCS_ATTR_ENUM_MAX, DCB_NUMTCS_ATTR_MAX = __DCB_NUMTCS_ATTR_ENUM_MAX - 1, }; enum dcbnl_bcn_attrs{ DCB_BCN_ATTR_UNDEFINED = 0, DCB_BCN_ATTR_RP_0, DCB_BCN_ATTR_RP_1, DCB_BCN_ATTR_RP_2, DCB_BCN_ATTR_RP_3, DCB_BCN_ATTR_RP_4, DCB_BCN_ATTR_RP_5, DCB_BCN_ATTR_RP_6, DCB_BCN_ATTR_RP_7, DCB_BCN_ATTR_RP_ALL, DCB_BCN_ATTR_BCNA_0, DCB_BCN_ATTR_BCNA_1, DCB_BCN_ATTR_ALPHA, DCB_BCN_ATTR_BETA, DCB_BCN_ATTR_GD, DCB_BCN_ATTR_GI, DCB_BCN_ATTR_TMAX, DCB_BCN_ATTR_TD, DCB_BCN_ATTR_RMIN, DCB_BCN_ATTR_W, DCB_BCN_ATTR_RD, DCB_BCN_ATTR_RU, DCB_BCN_ATTR_WRTT, DCB_BCN_ATTR_RI, DCB_BCN_ATTR_C, DCB_BCN_ATTR_ALL, __DCB_BCN_ATTR_ENUM_MAX, DCB_BCN_ATTR_MAX = __DCB_BCN_ATTR_ENUM_MAX - 1, }; enum dcb_general_attr_values { DCB_ATTR_VALUE_UNDEFINED = 0xff }; enum dcbnl_app_attrs { DCB_APP_ATTR_UNDEFINED, DCB_APP_ATTR_IDTYPE, DCB_APP_ATTR_ID, DCB_APP_ATTR_PRIORITY, __DCB_APP_ATTR_ENUM_MAX, DCB_APP_ATTR_MAX = __DCB_APP_ATTR_ENUM_MAX - 1, }; # 758 "../include/uapi/linux/dcbnl.h" enum dcbnl_featcfg_attrs { DCB_FEATCFG_ATTR_UNDEFINED, DCB_FEATCFG_ATTR_ALL, DCB_FEATCFG_ATTR_PG, DCB_FEATCFG_ATTR_PFC, DCB_FEATCFG_ATTR_APP, __DCB_FEATCFG_ATTR_ENUM_MAX, DCB_FEATCFG_ATTR_MAX = __DCB_FEATCFG_ATTR_ENUM_MAX - 1, }; # 12 "../include/net/dcbnl.h" 2 struct dcb_app_type { int ifindex; struct dcb_app app; struct list_head list; u8 dcbx; }; int dcb_setapp(struct net_device *, struct dcb_app *); u8 dcb_getapp(struct net_device *, struct dcb_app *); int dcb_ieee_setapp(struct net_device *, struct dcb_app *); int dcb_ieee_delapp(struct net_device *, struct dcb_app *); u8 dcb_ieee_getapp_mask(struct net_device *, struct dcb_app *); struct dcb_ieee_app_prio_map { u64 map[8]; }; void dcb_ieee_getapp_prio_dscp_mask_map(const struct net_device *dev, struct dcb_ieee_app_prio_map *p_map); struct dcb_ieee_app_dscp_map { u8 map[64]; }; void dcb_ieee_getapp_dscp_prio_mask_map(const struct net_device *dev, struct dcb_ieee_app_dscp_map *p_map); u8 dcb_ieee_getapp_default_prio_mask(const struct net_device *dev); int dcbnl_ieee_notify(struct net_device *dev, int event, int cmd, u32 seq, u32 pid); int dcbnl_cee_notify(struct net_device *dev, int event, int cmd, u32 seq, u32 pid); struct dcbnl_rtnl_ops { int (*ieee_getets) (struct net_device *, struct ieee_ets *); int (*ieee_setets) (struct net_device *, struct ieee_ets *); int (*ieee_getmaxrate) (struct net_device *, struct ieee_maxrate *); int (*ieee_setmaxrate) (struct net_device *, struct ieee_maxrate *); int (*ieee_getqcn) (struct net_device *, struct ieee_qcn *); int (*ieee_setqcn) (struct net_device *, struct ieee_qcn *); int (*ieee_getqcnstats) (struct net_device *, struct ieee_qcn_stats *); int (*ieee_getpfc) (struct net_device *, struct ieee_pfc *); int (*ieee_setpfc) (struct net_device *, struct ieee_pfc *); int (*ieee_getapp) (struct net_device *, struct dcb_app *); int (*ieee_setapp) (struct net_device *, struct dcb_app *); int (*ieee_delapp) (struct net_device *, struct dcb_app *); int (*ieee_peer_getets) (struct net_device *, struct ieee_ets *); int (*ieee_peer_getpfc) (struct net_device *, struct ieee_pfc *); u8 (*getstate)(struct net_device *); u8 (*setstate)(struct net_device *, u8); void (*getpermhwaddr)(struct net_device *, u8 *); void (*setpgtccfgtx)(struct net_device *, int, u8, u8, u8, u8); void (*setpgbwgcfgtx)(struct net_device *, int, u8); void (*setpgtccfgrx)(struct net_device *, int, u8, u8, u8, u8); void (*setpgbwgcfgrx)(struct net_device *, int, u8); void (*getpgtccfgtx)(struct net_device *, int, u8 *, u8 *, u8 *, u8 *); void (*getpgbwgcfgtx)(struct net_device *, int, u8 *); void (*getpgtccfgrx)(struct net_device *, int, u8 *, u8 *, u8 *, u8 *); void (*getpgbwgcfgrx)(struct net_device *, int, u8 *); void (*setpfccfg)(struct net_device *, int, u8); void (*getpfccfg)(struct net_device *, int, u8 *); u8 (*setall)(struct net_device *); u8 (*getcap)(struct net_device *, int, u8 *); int (*getnumtcs)(struct net_device *, int, u8 *); int (*setnumtcs)(struct net_device *, int, u8); u8 (*getpfcstate)(struct net_device *); void (*setpfcstate)(struct net_device *, u8); void (*getbcncfg)(struct net_device *, int, u32 *); void (*setbcncfg)(struct net_device *, int, u32); void (*getbcnrp)(struct net_device *, int, u8 *); void (*setbcnrp)(struct net_device *, int, u8); int (*setapp)(struct net_device *, u8, u16, u8); int (*getapp)(struct net_device *, u8, u16); u8 (*getfeatcfg)(struct net_device *, int, u8 *); u8 (*setfeatcfg)(struct net_device *, int, u8); u8 (*getdcbx)(struct net_device *); u8 (*setdcbx)(struct net_device *, u8); int (*peer_getappinfo)(struct net_device *, struct dcb_peer_app_info *, u16 *); int (*peer_getapptable)(struct net_device *, struct dcb_app *); int (*cee_peer_getpg) (struct net_device *, struct cee_pg *); int (*cee_peer_getpfc) (struct net_device *, struct cee_pfc *); int (*dcbnl_getbuffer)(struct net_device *, struct dcbnl_buffer *); int (*dcbnl_setbuffer)(struct net_device *, struct dcbnl_buffer *); }; # 41 "../include/linux/netdevice.h" 2 # 1 "../include/net/netprio_cgroup.h" 1 # 11 "../include/net/netprio_cgroup.h" # 1 "../include/linux/cgroup.h" 1 # 16 "../include/linux/cgroup.h" # 1 "../include/uapi/linux/cgroupstats.h" 1 # 20 "../include/uapi/linux/cgroupstats.h" # 1 "../include/uapi/linux/taskstats.h" 1 # 41 "../include/uapi/linux/taskstats.h" struct taskstats { __u16 version; __u32 ac_exitcode; __u8 ac_flag; __u8 ac_nice; # 72 "../include/uapi/linux/taskstats.h" __u64 cpu_count __attribute__((aligned(8))); __u64 cpu_delay_total; __u64 blkio_count; __u64 blkio_delay_total; __u64 swapin_count; __u64 swapin_delay_total; __u64 cpu_run_real_total; __u64 cpu_run_virtual_total; char ac_comm[32]; __u8 ac_sched __attribute__((aligned(8))); __u8 ac_pad[3]; __u32 ac_uid __attribute__((aligned(8))); __u32 ac_gid; __u32 ac_pid; __u32 ac_ppid; __u32 ac_btime; __u64 ac_etime __attribute__((aligned(8))); __u64 ac_utime; __u64 ac_stime; __u64 ac_minflt; __u64 ac_majflt; # 131 "../include/uapi/linux/taskstats.h" __u64 coremem; __u64 virtmem; __u64 hiwater_rss; __u64 hiwater_vm; __u64 read_char; __u64 write_char; __u64 read_syscalls; __u64 write_syscalls; __u64 read_bytes; __u64 write_bytes; __u64 cancelled_write_bytes; __u64 nvcsw; __u64 nivcsw; __u64 ac_utimescaled; __u64 ac_stimescaled; __u64 cpu_scaled_run_real_total; __u64 freepages_count; __u64 freepages_delay_total; __u64 thrashing_count; __u64 thrashing_delay_total; }; # 180 "../include/uapi/linux/taskstats.h" enum { TASKSTATS_CMD_UNSPEC = 0, TASKSTATS_CMD_GET, TASKSTATS_CMD_NEW, __TASKSTATS_CMD_MAX, }; enum { TASKSTATS_TYPE_UNSPEC = 0, TASKSTATS_TYPE_PID, TASKSTATS_TYPE_TGID, TASKSTATS_TYPE_STATS, TASKSTATS_TYPE_AGGR_PID, TASKSTATS_TYPE_AGGR_TGID, TASKSTATS_TYPE_NULL, __TASKSTATS_TYPE_MAX, }; enum { TASKSTATS_CMD_ATTR_UNSPEC = 0, TASKSTATS_CMD_ATTR_PID, TASKSTATS_CMD_ATTR_TGID, TASKSTATS_CMD_ATTR_REGISTER_CPUMASK, TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK, __TASKSTATS_CMD_ATTR_MAX, }; # 21 "../include/uapi/linux/cgroupstats.h" 2 # 32 "../include/uapi/linux/cgroupstats.h" struct cgroupstats { __u64 nr_sleeping; __u64 nr_running; __u64 nr_stopped; __u64 nr_uninterruptible; __u64 nr_io_wait; }; enum { CGROUPSTATS_CMD_UNSPEC = __TASKSTATS_CMD_MAX, CGROUPSTATS_CMD_GET, CGROUPSTATS_CMD_NEW, __CGROUPSTATS_CMD_MAX, }; enum { CGROUPSTATS_TYPE_UNSPEC = 0, CGROUPSTATS_TYPE_CGROUP_STATS, __CGROUPSTATS_TYPE_MAX, }; enum { CGROUPSTATS_CMD_ATTR_UNSPEC = 0, CGROUPSTATS_CMD_ATTR_FD, __CGROUPSTATS_CMD_ATTR_MAX, }; # 17 "../include/linux/cgroup.h" 2 # 1 "../include/linux/nsproxy.h" 1 struct mnt_namespace; struct uts_namespace; struct ipc_namespace; struct pid_namespace; struct cgroup_namespace; struct fs_struct; # 31 "../include/linux/nsproxy.h" struct nsproxy { atomic_t count; struct uts_namespace *uts_ns; struct ipc_namespace *ipc_ns; struct mnt_namespace *mnt_ns; struct pid_namespace *pid_ns_for_children; struct net *net_ns; struct cgroup_namespace *cgroup_ns; }; extern struct nsproxy init_nsproxy; # 68 "../include/linux/nsproxy.h" int copy_namespaces(unsigned long flags, struct task_struct *tsk); void exit_task_namespaces(struct task_struct *tsk); void switch_task_namespaces(struct task_struct *tsk, struct nsproxy *new); void free_nsproxy(struct nsproxy *ns); int unshare_nsproxy_namespaces(unsigned long, struct nsproxy **, struct cred *, struct fs_struct *); int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) nsproxy_cache_init(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void put_nsproxy(struct nsproxy *ns) { if (atomic_dec_and_test(&ns->count)) { free_nsproxy(ns); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void get_nsproxy(struct nsproxy *ns) { atomic_inc(&ns->count); } # 24 "../include/linux/cgroup.h" 2 # 1 "../include/linux/user_namespace.h" 1 # 17 "../include/linux/user_namespace.h" struct uid_gid_extent { u32 first; u32 lower_first; u32 count; }; struct uid_gid_map { u32 nr_extents; union { struct uid_gid_extent extent[5]; struct { struct uid_gid_extent *forward; struct uid_gid_extent *reverse; }; }; }; struct ucounts; enum ucount_type { UCOUNT_USER_NAMESPACES, UCOUNT_PID_NAMESPACES, UCOUNT_UTS_NAMESPACES, UCOUNT_IPC_NAMESPACES, UCOUNT_NET_NAMESPACES, UCOUNT_MNT_NAMESPACES, UCOUNT_CGROUP_NAMESPACES, UCOUNT_INOTIFY_INSTANCES, UCOUNT_INOTIFY_WATCHES, UCOUNT_COUNTS, }; struct user_namespace { struct uid_gid_map uid_map; struct uid_gid_map gid_map; struct uid_gid_map projid_map; atomic_t count; struct user_namespace *parent; int level; kuid_t owner; kgid_t group; struct ns_common ns; unsigned long flags; struct list_head keyring_name_list; struct key *user_keyring_register; struct rw_semaphore keyring_sem; struct key *persistent_keyring_register; struct work_struct work; struct ctl_table_set set; struct ctl_table_header *sysctls; struct ucounts *ucounts; int ucount_max[UCOUNT_COUNTS]; } ; struct ucounts { struct hlist_node node; struct user_namespace *ns; kuid_t uid; int count; atomic_t ucount[UCOUNT_COUNTS]; }; extern struct user_namespace init_user_ns; bool setup_userns_sysctls(struct user_namespace *ns); void retire_userns_sysctls(struct user_namespace *ns); struct ucounts *inc_ucount(struct user_namespace *ns, kuid_t uid, enum ucount_type type); void dec_ucount(struct ucounts *ucounts, enum ucount_type type); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct user_namespace *get_user_ns(struct user_namespace *ns) { if (ns) atomic_inc(&ns->count); return ns; } extern int create_user_ns(struct cred *new); extern int unshare_userns(unsigned long unshare_flags, struct cred **new_cred); extern void __put_user_ns(struct user_namespace *ns); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void put_user_ns(struct user_namespace *ns) { if (ns && atomic_dec_and_test(&ns->count)) __put_user_ns(ns); } struct seq_operations; extern const struct seq_operations proc_uid_seq_operations; extern const struct seq_operations proc_gid_seq_operations; extern const struct seq_operations proc_projid_seq_operations; extern ssize_t proc_uid_map_write(struct file *, const char *, size_t, loff_t *); extern ssize_t proc_gid_map_write(struct file *, const char *, size_t, loff_t *); extern ssize_t proc_projid_map_write(struct file *, const char *, size_t, loff_t *); extern ssize_t proc_setgroups_write(struct file *, const char *, size_t, loff_t *); extern int proc_setgroups_show(struct seq_file *m, void *v); extern bool userns_may_setgroups(const struct user_namespace *ns); extern bool in_userns(const struct user_namespace *ancestor, const struct user_namespace *child); extern bool current_in_userns(const struct user_namespace *target_ns); struct ns_common *ns_get_owner(struct ns_common *ns); # 25 "../include/linux/cgroup.h" 2 # 1 "../include/linux/kernel_stat.h" 1 # 1 "../include/linux/interrupt.h" 1 # 1 "../include/linux/irqreturn.h" 1 # 11 "../include/linux/irqreturn.h" enum irqreturn { IRQ_NONE = (0 << 0), IRQ_HANDLED = (1 << 0), IRQ_WAKE_THREAD = (1 << 1), }; typedef enum irqreturn irqreturn_t; # 10 "../include/linux/interrupt.h" 2 # 1 "../include/linux/hardirq.h" 1 # 1 "../include/linux/ftrace_irq.h" 1 # 10 "../include/linux/ftrace_irq.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_ftrace_nmi_enter(void) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void arch_ftrace_nmi_exit(void) { } extern bool trace_hwlat_callback_enabled; extern void trace_hwlat_callback(bool enter); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ftrace_nmi_enter(void) { if (trace_hwlat_callback_enabled) trace_hwlat_callback(true); arch_ftrace_nmi_enter(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ftrace_nmi_exit(void) { arch_ftrace_nmi_exit(); if (trace_hwlat_callback_enabled) trace_hwlat_callback(false); } # 8 "../include/linux/hardirq.h" 2 # 1 "../include/linux/vtime.h" 1 # 1 "../include/linux/context_tracking_state.h" 1 # 1 "../include/linux/static_key.h" 1 # 7 "../include/linux/context_tracking_state.h" 2 struct context_tracking { bool active; int recursion; enum ctx_state { CONTEXT_DISABLED = -1, CONTEXT_KERNEL = 0, CONTEXT_USER, CONTEXT_GUEST, } state; }; # 44 "../include/linux/context_tracking_state.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool context_tracking_in_user(void) { return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool context_tracking_active(void) { return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool context_tracking_is_enabled(void) { return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool context_tracking_cpu_is_enabled(void) { return false; } # 6 "../include/linux/vtime.h" 2 struct task_struct; # 40 "../include/linux/vtime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool vtime_accounting_cpu_enabled(void) { return false; } # 65 "../include/linux/vtime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vtime_task_switch(struct task_struct *prev) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vtime_account_system(struct task_struct *tsk) { } # 77 "../include/linux/vtime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vtime_user_enter(struct task_struct *tsk) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vtime_user_exit(struct task_struct *tsk) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vtime_guest_enter(struct task_struct *tsk) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vtime_guest_exit(struct task_struct *tsk) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vtime_init_idle(struct task_struct *tsk, int cpu) { } # 93 "../include/linux/vtime.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vtime_account_irq_enter(struct task_struct *tsk) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vtime_account_irq_exit(struct task_struct *tsk) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void vtime_flush(struct task_struct *tsk) { } extern void irqtime_account_irq(struct task_struct *tsk); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void account_irq_enter_time(struct task_struct *tsk) { vtime_account_irq_enter(tsk); irqtime_account_irq(tsk); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void account_irq_exit_time(struct task_struct *tsk) { vtime_account_irq_exit(tsk); irqtime_account_irq(tsk); } # 9 "../include/linux/hardirq.h" 2 extern void synchronize_irq(unsigned int irq); extern bool synchronize_hardirq(unsigned int irq); # 26 "../include/linux/hardirq.h" extern void rcu_nmi_enter(void); extern void rcu_nmi_exit(void); # 46 "../include/linux/hardirq.h" extern void irq_enter(void); # 61 "../include/linux/hardirq.h" extern void irq_exit(void); # 12 "../include/linux/interrupt.h" 2 # 1 "../arch/x86/include/asm/irq.h" 1 # 14 "../arch/x86/include/asm/irq.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int irq_canonicalize(int irq) { return ((irq == 2) ? 9 : irq); } extern int irq_init_percpu_irqstack(unsigned int cpu); struct irq_desc; extern void fixup_irqs(void); extern void kvm_set_posted_intr_wakeup_handler(void (*handler)(void)); extern void smp_kvm_posted_intr_ipi(struct pt_regs *regs); extern void smp_kvm_posted_intr_wakeup_ipi(struct pt_regs *regs); extern void smp_kvm_posted_intr_nested_ipi(struct pt_regs *regs); extern void (*x86_platform_ipi_callback)(void); extern void native_init_IRQ(void); extern bool handle_irq(struct irq_desc *desc, struct pt_regs *regs); extern unsigned int do_IRQ(struct pt_regs *regs); extern void init_ISA_irqs(void); extern void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) init_IRQ(void); void arch_trigger_cpumask_backtrace(const struct cpumask *mask, bool exclude_self); extern void smp_x86_platform_ipi(struct pt_regs *regs); # 20 "../include/linux/interrupt.h" 2 # 1 "../arch/x86/include/asm/sections.h" 1 # 1 "../include/asm-generic/sections.h" 1 # 35 "../include/asm-generic/sections.h" extern char _text[], _stext[], _etext[]; extern char _data[], _sdata[], _edata[]; extern char __bss_start[], __bss_stop[]; extern char __init_begin[], __init_end[]; extern char _sinittext[], _einittext[]; extern char __start_ro_after_init[], __end_ro_after_init[]; extern char _end[]; extern char __per_cpu_load[], __per_cpu_start[], __per_cpu_end[]; extern char __kprobes_text_start[], __kprobes_text_end[]; extern char __entry_text_start[], __entry_text_end[]; extern char __start_rodata[], __end_rodata[]; extern char __irqentry_text_start[], __irqentry_text_end[]; extern char __softirqentry_text_start[], __softirqentry_text_end[]; extern char __start_once[], __end_once[]; extern char __ctors_start[], __ctors_end[]; extern char __start_opd[], __end_opd[]; extern const void __nosave_begin, __nosave_end; # 67 "../include/asm-generic/sections.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int arch_is_kernel_text(unsigned long addr) { return 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int arch_is_kernel_data(unsigned long addr) { return 0; } # 88 "../include/asm-generic/sections.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int arch_is_kernel_initmem_freed(unsigned long addr) { return 0; } # 105 "../include/asm-generic/sections.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool memory_contains(void *begin, void *end, void *virt, size_t size) { return virt >= begin && virt + size <= end; } # 122 "../include/asm-generic/sections.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool memory_intersects(void *begin, void *end, void *virt, size_t size) { void *vend = virt + size; return (virt >= begin && virt < end) || (vend >= begin && vend < end); } # 139 "../include/asm-generic/sections.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool init_section_contains(void *virt, size_t size) { return memory_contains(__init_begin, __init_end, virt, size); } # 153 "../include/asm-generic/sections.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool init_section_intersects(void *virt, size_t size) { return memory_intersects(__init_begin, __init_end, virt, size); } # 166 "../include/asm-generic/sections.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_kernel_rodata(unsigned long addr) { return addr >= (unsigned long)__start_rodata && addr < (unsigned long)__end_rodata; } # 6 "../arch/x86/include/asm/sections.h" 2 extern char __brk_base[], __brk_limit[]; extern struct exception_table_entry __stop___ex_table[]; extern char __end_rodata_aligned[]; extern char __end_rodata_hpage_align[]; extern char __end_of_kernel_reserve[]; # 21 "../include/linux/interrupt.h" 2 # 87 "../include/linux/interrupt.h" enum { IRQC_IS_HARDIRQ = 0, IRQC_IS_NESTED, }; typedef irqreturn_t (*irq_handler_t)(int, void *); # 110 "../include/linux/interrupt.h" struct irqaction { irq_handler_t handler; void *dev_id; void *percpu_dev_id; struct irqaction *next; irq_handler_t thread_fn; struct task_struct *thread; struct irqaction *secondary; unsigned int irq; unsigned int flags; unsigned long thread_flags; unsigned long thread_mask; const char *name; struct proc_dir_entry *dir; } __attribute__((__aligned__(1 << (12)))); extern irqreturn_t no_action(int cpl, void *dev_id); # 138 "../include/linux/interrupt.h" extern int __attribute__((__warn_unused_result__)) request_threaded_irq(unsigned int irq, irq_handler_t handler, irq_handler_t thread_fn, unsigned long flags, const char *name, void *dev); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev) { return request_threaded_irq(irq, handler, ((void *)0), flags, name, dev); } extern int __attribute__((__warn_unused_result__)) request_any_context_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev_id); extern int __attribute__((__warn_unused_result__)) __request_percpu_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *devname, void *percpu_dev_id); extern int __attribute__((__warn_unused_result__)) request_nmi(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) request_percpu_irq(unsigned int irq, irq_handler_t handler, const char *devname, void *percpu_dev_id) { return __request_percpu_irq(irq, handler, 0, devname, percpu_dev_id); } extern int __attribute__((__warn_unused_result__)) request_percpu_nmi(unsigned int irq, irq_handler_t handler, const char *devname, void *dev); extern const void *free_irq(unsigned int, void *); extern void free_percpu_irq(unsigned int, void *); extern const void *free_nmi(unsigned int irq, void *dev_id); extern void free_percpu_nmi(unsigned int irq, void *percpu_dev_id); struct device; extern int __attribute__((__warn_unused_result__)) devm_request_threaded_irq(struct device *dev, unsigned int irq, irq_handler_t handler, irq_handler_t thread_fn, unsigned long irqflags, const char *devname, void *dev_id); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __attribute__((__warn_unused_result__)) devm_request_irq(struct device *dev, unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id) { return devm_request_threaded_irq(dev, irq, handler, ((void *)0), irqflags, devname, dev_id); } extern int __attribute__((__warn_unused_result__)) devm_request_any_context_irq(struct device *dev, unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id); extern void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id); # 222 "../include/linux/interrupt.h" extern void disable_irq_nosync(unsigned int irq); extern bool disable_hardirq(unsigned int irq); extern void disable_irq(unsigned int irq); extern void disable_percpu_irq(unsigned int irq); extern void enable_irq(unsigned int irq); extern void enable_percpu_irq(unsigned int irq, unsigned int type); extern bool irq_percpu_is_enabled(unsigned int irq); extern void irq_wake_thread(unsigned int irq, void *dev_id); extern void disable_nmi_nosync(unsigned int irq); extern void disable_percpu_nmi(unsigned int irq); extern void enable_nmi(unsigned int irq); extern void enable_percpu_nmi(unsigned int irq, unsigned int type); extern int prepare_percpu_nmi(unsigned int irq); extern void teardown_percpu_nmi(unsigned int irq); extern void suspend_device_irqs(void); extern void resume_device_irqs(void); # 254 "../include/linux/interrupt.h" struct irq_affinity_notify { unsigned int irq; struct kref kref; struct work_struct work; void (*notify)(struct irq_affinity_notify *, const cpumask_t *mask); void (*release)(struct kref *ref); }; # 278 "../include/linux/interrupt.h" struct irq_affinity { unsigned int pre_vectors; unsigned int post_vectors; unsigned int nr_sets; unsigned int set_size[4]; void (*calc_sets)(struct irq_affinity *, unsigned int nvecs); void *priv; }; struct irq_affinity_desc { struct cpumask mask; unsigned int is_managed : 1; }; extern cpumask_var_t irq_default_affinity; extern int __irq_set_affinity(unsigned int irq, const struct cpumask *cpumask, bool force); # 312 "../include/linux/interrupt.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int irq_set_affinity(unsigned int irq, const struct cpumask *cpumask) { return __irq_set_affinity(irq, cpumask, false); } # 329 "../include/linux/interrupt.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int irq_force_affinity(unsigned int irq, const struct cpumask *cpumask) { return __irq_set_affinity(irq, cpumask, true); } extern int irq_can_set_affinity(unsigned int irq); extern int irq_select_affinity(unsigned int irq); extern int irq_set_affinity_hint(unsigned int irq, const struct cpumask *m); extern int irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify); struct irq_affinity_desc * irq_create_affinity_masks(unsigned int nvec, struct irq_affinity *affd); unsigned int irq_calc_affinity_vectors(unsigned int minvec, unsigned int maxvec, const struct irq_affinity *affd); # 406 "../include/linux/interrupt.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void disable_irq_nosync_lockdep(unsigned int irq) { disable_irq_nosync(irq); do { arch_local_irq_disable(); trace_hardirqs_off(); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void disable_irq_nosync_lockdep_irqsave(unsigned int irq, unsigned long *flags) { disable_irq_nosync(irq); do { do { ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); *flags = arch_local_irq_save(); } while (0); trace_hardirqs_off(); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void disable_irq_lockdep(unsigned int irq) { disable_irq(irq); do { arch_local_irq_disable(); trace_hardirqs_off(); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void enable_irq_lockdep(unsigned int irq) { do { trace_hardirqs_on(); arch_local_irq_enable(); } while (0); enable_irq(irq); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void enable_irq_lockdep_irqrestore(unsigned int irq, unsigned long *flags) { do { if (({ ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_irqs_disabled_flags(*flags); })) { do { ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(*flags); } while (0); trace_hardirqs_off(); } else { trace_hardirqs_on(); do { ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); arch_local_irq_restore(*flags); } while (0); } } while (0); enable_irq(irq); } extern int irq_set_irq_wake(unsigned int irq, unsigned int on); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int enable_irq_wake(unsigned int irq) { return irq_set_irq_wake(irq, 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int disable_irq_wake(unsigned int irq) { return irq_set_irq_wake(irq, 0); } enum irqchip_irq_state { IRQCHIP_STATE_PENDING, IRQCHIP_STATE_ACTIVE, IRQCHIP_STATE_MASKED, IRQCHIP_STATE_LINE_LEVEL, }; extern int irq_get_irqchip_state(unsigned int irq, enum irqchip_irq_state which, bool *state); extern int irq_set_irqchip_state(unsigned int irq, enum irqchip_irq_state which, bool state); extern bool force_irqthreads; # 508 "../include/linux/interrupt.h" enum { HI_SOFTIRQ=0, TIMER_SOFTIRQ, NET_TX_SOFTIRQ, NET_RX_SOFTIRQ, BLOCK_SOFTIRQ, IRQ_POLL_SOFTIRQ, TASKLET_SOFTIRQ, SCHED_SOFTIRQ, HRTIMER_SOFTIRQ, RCU_SOFTIRQ, NR_SOFTIRQS }; extern const char * const softirq_to_name[NR_SOFTIRQS]; struct softirq_action { void (*action)(struct softirq_action *); }; void do_softirq(void); void __do_softirq(void); void do_softirq_own_stack(void); extern void open_softirq(int nr, void (*action)(struct softirq_action *)); extern void softirq_init(void); extern void __raise_softirq_irqoff(unsigned int nr); extern void raise_softirq_irqoff(unsigned int nr); extern void raise_softirq(unsigned int nr); extern __attribute__((section(".discard"), unused)) char __pcpu_scope_ksoftirqd; extern __attribute__((section(".data..percpu" ""))) __typeof__(struct task_struct *) ksoftirqd; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct task_struct *this_cpu_ksoftirqd(void) { return ({ typeof(ksoftirqd) pscr_ret__; do { const void *__vpp_verify = (typeof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(ksoftirqd)) { case 1: pscr_ret__ = ({ typeof(ksoftirqd) pfo_ret__; switch (sizeof(ksoftirqd)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (ksoftirqd)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (ksoftirqd)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (ksoftirqd)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (ksoftirqd)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(ksoftirqd) pfo_ret__; switch (sizeof(ksoftirqd)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (ksoftirqd)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (ksoftirqd)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (ksoftirqd)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (ksoftirqd)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(ksoftirqd) pfo_ret__; switch (sizeof(ksoftirqd)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (ksoftirqd)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (ksoftirqd)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (ksoftirqd)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (ksoftirqd)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(ksoftirqd) pfo_ret__; switch (sizeof(ksoftirqd)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (ksoftirqd)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (ksoftirqd)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (ksoftirqd)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (ksoftirqd)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; }); } # 587 "../include/linux/interrupt.h" struct tasklet_struct { struct tasklet_struct *next; unsigned long state; atomic_t count; void (*func)(unsigned long); unsigned long data; }; # 603 "../include/linux/interrupt.h" enum { TASKLET_STATE_SCHED, TASKLET_STATE_RUN }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int tasklet_trylock(struct tasklet_struct *t) { return !test_and_set_bit(TASKLET_STATE_RUN, &(t)->state); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void tasklet_unlock(struct tasklet_struct *t) { do { } while (0); clear_bit(TASKLET_STATE_RUN, &(t)->state); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void tasklet_unlock_wait(struct tasklet_struct *t) { while (test_bit(TASKLET_STATE_RUN, &(t)->state)) { __asm__ __volatile__("" : : : "memory"); } } extern void __tasklet_schedule(struct tasklet_struct *t); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void tasklet_schedule(struct tasklet_struct *t) { if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) __tasklet_schedule(t); } extern void __tasklet_hi_schedule(struct tasklet_struct *t); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void tasklet_hi_schedule(struct tasklet_struct *t) { if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) __tasklet_hi_schedule(t); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void tasklet_disable_nosync(struct tasklet_struct *t) { atomic_inc(&t->count); do { } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void tasklet_disable(struct tasklet_struct *t) { tasklet_disable_nosync(t); tasklet_unlock_wait(t); asm volatile("lock; addl $0,-4(%%rsp)" ::: "memory", "cc"); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void tasklet_enable(struct tasklet_struct *t) { do { } while (0); atomic_dec(&t->count); } extern void tasklet_kill(struct tasklet_struct *t); extern void tasklet_kill_immediate(struct tasklet_struct *t, unsigned int cpu); extern void tasklet_init(struct tasklet_struct *t, void (*func)(unsigned long), unsigned long data); # 713 "../include/linux/interrupt.h" extern unsigned long probe_irq_on(void); extern int probe_irq_off(unsigned long); extern unsigned int probe_irq_mask(unsigned long); extern void init_irq_proc(void); # 733 "../include/linux/interrupt.h" struct seq_file; int show_interrupts(struct seq_file *p, void *v); int arch_show_interrupts(struct seq_file *p, int prec); extern int early_irq_init(void); extern int arch_probe_nr_irqs(void); extern int arch_early_irq_init(void); # 10 "../include/linux/kernel_stat.h" 2 # 20 "../include/linux/kernel_stat.h" enum cpu_usage_stat { CPUTIME_USER, CPUTIME_NICE, CPUTIME_SYSTEM, CPUTIME_SOFTIRQ, CPUTIME_IRQ, CPUTIME_IDLE, CPUTIME_IOWAIT, CPUTIME_STEAL, CPUTIME_GUEST, CPUTIME_GUEST_NICE, NR_STATS, }; struct kernel_cpustat { u64 cpustat[NR_STATS]; }; struct kernel_stat { unsigned long irqs_sum; unsigned int softirqs[NR_SOFTIRQS]; }; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_kstat; extern __attribute__((section(".data..percpu" ""))) __typeof__(struct kernel_stat) kstat; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_kernel_cpustat; extern __attribute__((section(".data..percpu" ""))) __typeof__(struct kernel_cpustat) kernel_cpustat; extern unsigned long long nr_context_switches(void); extern unsigned int kstat_irqs_cpu(unsigned int irq, int cpu); extern void kstat_incr_irq_this_cpu(unsigned int irq); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void kstat_incr_softirqs_this_cpu(unsigned int irq) { ({ __this_cpu_preempt_check("add"); do { do { const void *__vpp_verify = (typeof((&(kstat.softirqs[irq])) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(kstat.softirqs[irq])) { case 1: do { typedef typeof((kstat.softirqs[irq])) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((kstat.softirqs[irq]))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((kstat.softirqs[irq])) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((kstat.softirqs[irq]))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((kstat.softirqs[irq])) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((kstat.softirqs[irq]))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((kstat.softirqs[irq])) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((kstat.softirqs[irq]))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq]))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((kstat.softirqs[irq])) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int kstat_softirqs_cpu(unsigned int irq, int cpu) { return (*({ do { const void *__vpp_verify = (typeof((&(kstat)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = (unsigned long) ((typeof(*((&(kstat)))) *)((&(kstat)))); (typeof((typeof(*((&(kstat)))) *)((&(kstat))))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); })).softirqs[irq]; } extern unsigned int kstat_irqs(unsigned int irq); extern unsigned int kstat_irqs_usr(unsigned int irq); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int kstat_cpu_irqs_sum(unsigned int cpu) { return (*({ do { const void *__vpp_verify = (typeof((&(kstat)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = (unsigned long) ((typeof(*((&(kstat)))) *)((&(kstat)))); (typeof((typeof(*((&(kstat)))) *)((&(kstat))))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); })).irqs_sum; } extern void account_user_time(struct task_struct *, u64); extern void account_guest_time(struct task_struct *, u64); extern void account_system_time(struct task_struct *, int, u64); extern void account_system_index_time(struct task_struct *, u64, enum cpu_usage_stat); extern void account_steal_time(u64); extern void account_idle_time(u64); extern void account_process_tick(struct task_struct *, int user); extern void account_idle_ticks(unsigned long ticks); # 27 "../include/linux/cgroup.h" 2 # 1 "../include/linux/cgroup-defs.h" 1 # 22 "../include/linux/cgroup-defs.h" # 1 "../include/linux/bpf-cgroup.h" 1 # 1 "../include/linux/bpf.h" 1 # 1 "../include/uapi/linux/bpf.h" 1 # 12 "../include/uapi/linux/bpf.h" # 1 "../include/uapi/linux/bpf_common.h" 1 # 13 "../include/uapi/linux/bpf.h" 2 # 47 "../include/uapi/linux/bpf.h" enum { BPF_REG_0 = 0, BPF_REG_1, BPF_REG_2, BPF_REG_3, BPF_REG_4, BPF_REG_5, BPF_REG_6, BPF_REG_7, BPF_REG_8, BPF_REG_9, BPF_REG_10, __MAX_BPF_REG, }; struct bpf_insn { __u8 code; __u8 dst_reg:4; __u8 src_reg:4; __s16 off; __s32 imm; }; struct bpf_lpm_trie_key { __u32 prefixlen; __u8 data[0]; }; struct bpf_cgroup_storage_key { __u64 cgroup_inode_id; __u32 attach_type; }; enum bpf_cmd { BPF_MAP_CREATE, BPF_MAP_LOOKUP_ELEM, BPF_MAP_UPDATE_ELEM, BPF_MAP_DELETE_ELEM, BPF_MAP_GET_NEXT_KEY, BPF_PROG_LOAD, BPF_OBJ_PIN, BPF_OBJ_GET, BPF_PROG_ATTACH, BPF_PROG_DETACH, BPF_PROG_TEST_RUN, BPF_PROG_GET_NEXT_ID, BPF_MAP_GET_NEXT_ID, BPF_PROG_GET_FD_BY_ID, BPF_MAP_GET_FD_BY_ID, BPF_OBJ_GET_INFO_BY_FD, BPF_PROG_QUERY, BPF_RAW_TRACEPOINT_OPEN, BPF_BTF_LOAD, BPF_BTF_GET_FD_BY_ID, BPF_TASK_FD_QUERY, BPF_MAP_LOOKUP_AND_DELETE_ELEM, BPF_MAP_FREEZE, }; enum bpf_map_type { BPF_MAP_TYPE_UNSPEC, BPF_MAP_TYPE_HASH, BPF_MAP_TYPE_ARRAY, BPF_MAP_TYPE_PROG_ARRAY, BPF_MAP_TYPE_PERF_EVENT_ARRAY, BPF_MAP_TYPE_PERCPU_HASH, BPF_MAP_TYPE_PERCPU_ARRAY, BPF_MAP_TYPE_STACK_TRACE, BPF_MAP_TYPE_CGROUP_ARRAY, BPF_MAP_TYPE_LRU_HASH, BPF_MAP_TYPE_LRU_PERCPU_HASH, BPF_MAP_TYPE_LPM_TRIE, BPF_MAP_TYPE_ARRAY_OF_MAPS, BPF_MAP_TYPE_HASH_OF_MAPS, BPF_MAP_TYPE_DEVMAP, BPF_MAP_TYPE_SOCKMAP, BPF_MAP_TYPE_CPUMAP, BPF_MAP_TYPE_XSKMAP, BPF_MAP_TYPE_SOCKHASH, BPF_MAP_TYPE_CGROUP_STORAGE, BPF_MAP_TYPE_REUSEPORT_SOCKARRAY, BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE, BPF_MAP_TYPE_QUEUE, BPF_MAP_TYPE_STACK, BPF_MAP_TYPE_SK_STORAGE, }; # 147 "../include/uapi/linux/bpf.h" enum bpf_prog_type { BPF_PROG_TYPE_UNSPEC, BPF_PROG_TYPE_SOCKET_FILTER, BPF_PROG_TYPE_KPROBE, BPF_PROG_TYPE_SCHED_CLS, BPF_PROG_TYPE_SCHED_ACT, BPF_PROG_TYPE_TRACEPOINT, BPF_PROG_TYPE_XDP, BPF_PROG_TYPE_PERF_EVENT, BPF_PROG_TYPE_CGROUP_SKB, BPF_PROG_TYPE_CGROUP_SOCK, BPF_PROG_TYPE_LWT_IN, BPF_PROG_TYPE_LWT_OUT, BPF_PROG_TYPE_LWT_XMIT, BPF_PROG_TYPE_SOCK_OPS, BPF_PROG_TYPE_SK_SKB, BPF_PROG_TYPE_CGROUP_DEVICE, BPF_PROG_TYPE_SK_MSG, BPF_PROG_TYPE_RAW_TRACEPOINT, BPF_PROG_TYPE_CGROUP_SOCK_ADDR, BPF_PROG_TYPE_LWT_SEG6LOCAL, BPF_PROG_TYPE_LIRC_MODE2, BPF_PROG_TYPE_SK_REUSEPORT, BPF_PROG_TYPE_FLOW_DISSECTOR, BPF_PROG_TYPE_CGROUP_SYSCTL, BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE, BPF_PROG_TYPE_CGROUP_SOCKOPT, }; enum bpf_attach_type { BPF_CGROUP_INET_INGRESS, BPF_CGROUP_INET_EGRESS, BPF_CGROUP_INET_SOCK_CREATE, BPF_CGROUP_SOCK_OPS, BPF_SK_SKB_STREAM_PARSER, BPF_SK_SKB_STREAM_VERDICT, BPF_CGROUP_DEVICE, BPF_SK_MSG_VERDICT, BPF_CGROUP_INET4_BIND, BPF_CGROUP_INET6_BIND, BPF_CGROUP_INET4_CONNECT, BPF_CGROUP_INET6_CONNECT, BPF_CGROUP_INET4_POST_BIND, BPF_CGROUP_INET6_POST_BIND, BPF_CGROUP_UDP4_SENDMSG, BPF_CGROUP_UDP6_SENDMSG, BPF_LIRC_MODE2, BPF_FLOW_DISSECTOR, BPF_CGROUP_SYSCTL, BPF_CGROUP_UDP4_RECVMSG, BPF_CGROUP_UDP6_RECVMSG, BPF_CGROUP_GETSOCKOPT, BPF_CGROUP_SETSOCKOPT, __MAX_BPF_ATTACH_TYPE }; # 342 "../include/uapi/linux/bpf.h" enum bpf_stack_build_id_status { BPF_STACK_BUILD_ID_EMPTY = 0, BPF_STACK_BUILD_ID_VALID = 1, BPF_STACK_BUILD_ID_IP = 2, }; struct bpf_stack_build_id { __s32 status; unsigned char build_id[20]; union { __u64 offset; __u64 ip; }; }; union bpf_attr { struct { __u32 map_type; __u32 key_size; __u32 value_size; __u32 max_entries; __u32 map_flags; __u32 inner_map_fd; __u32 numa_node; char map_name[16U]; __u32 map_ifindex; __u32 btf_fd; __u32 btf_key_type_id; __u32 btf_value_type_id; }; struct { __u32 map_fd; __u64 __attribute__((aligned(8))) key; union { __u64 __attribute__((aligned(8))) value; __u64 __attribute__((aligned(8))) next_key; }; __u64 flags; }; struct { __u32 prog_type; __u32 insn_cnt; __u64 __attribute__((aligned(8))) insns; __u64 __attribute__((aligned(8))) license; __u32 log_level; __u32 log_size; __u64 __attribute__((aligned(8))) log_buf; __u32 kern_version; __u32 prog_flags; char prog_name[16U]; __u32 prog_ifindex; __u32 expected_attach_type; __u32 prog_btf_fd; __u32 func_info_rec_size; __u64 __attribute__((aligned(8))) func_info; __u32 func_info_cnt; __u32 line_info_rec_size; __u64 __attribute__((aligned(8))) line_info; __u32 line_info_cnt; }; struct { __u64 __attribute__((aligned(8))) pathname; __u32 bpf_fd; __u32 file_flags; }; struct { __u32 target_fd; __u32 attach_bpf_fd; __u32 attach_type; __u32 attach_flags; }; struct { __u32 prog_fd; __u32 retval; __u32 data_size_in; __u32 data_size_out; __u64 __attribute__((aligned(8))) data_in; __u64 __attribute__((aligned(8))) data_out; __u32 repeat; __u32 duration; __u32 ctx_size_in; __u32 ctx_size_out; __u64 __attribute__((aligned(8))) ctx_in; __u64 __attribute__((aligned(8))) ctx_out; } test; struct { union { __u32 start_id; __u32 prog_id; __u32 map_id; __u32 btf_id; }; __u32 next_id; __u32 open_flags; }; struct { __u32 bpf_fd; __u32 info_len; __u64 __attribute__((aligned(8))) info; } info; struct { __u32 target_fd; __u32 attach_type; __u32 query_flags; __u32 attach_flags; __u64 __attribute__((aligned(8))) prog_ids; __u32 prog_cnt; } query; struct { __u64 name; __u32 prog_fd; } raw_tracepoint; struct { __u64 __attribute__((aligned(8))) btf; __u64 __attribute__((aligned(8))) btf_log_buf; __u32 btf_size; __u32 btf_log_size; __u32 btf_log_level; }; struct { __u32 pid; __u32 fd; __u32 flags; __u32 buf_len; __u64 __attribute__((aligned(8))) buf; __u32 prog_id; __u32 fd_type; __u64 probe_offset; __u64 probe_addr; } task_fd_query; } __attribute__((aligned(8))); # 2832 "../include/uapi/linux/bpf.h" enum bpf_func_id { BPF_FUNC_unspec, BPF_FUNC_map_lookup_elem, BPF_FUNC_map_update_elem, BPF_FUNC_map_delete_elem, BPF_FUNC_probe_read, BPF_FUNC_ktime_get_ns, BPF_FUNC_trace_printk, BPF_FUNC_get_prandom_u32, BPF_FUNC_get_smp_processor_id, BPF_FUNC_skb_store_bytes, BPF_FUNC_l3_csum_replace, BPF_FUNC_l4_csum_replace, BPF_FUNC_tail_call, BPF_FUNC_clone_redirect, BPF_FUNC_get_current_pid_tgid, BPF_FUNC_get_current_uid_gid, BPF_FUNC_get_current_comm, BPF_FUNC_get_cgroup_classid, BPF_FUNC_skb_vlan_push, BPF_FUNC_skb_vlan_pop, BPF_FUNC_skb_get_tunnel_key, BPF_FUNC_skb_set_tunnel_key, BPF_FUNC_perf_event_read, BPF_FUNC_redirect, BPF_FUNC_get_route_realm, BPF_FUNC_perf_event_output, BPF_FUNC_skb_load_bytes, BPF_FUNC_get_stackid, BPF_FUNC_csum_diff, BPF_FUNC_skb_get_tunnel_opt, BPF_FUNC_skb_set_tunnel_opt, BPF_FUNC_skb_change_proto, BPF_FUNC_skb_change_type, BPF_FUNC_skb_under_cgroup, BPF_FUNC_get_hash_recalc, BPF_FUNC_get_current_task, BPF_FUNC_probe_write_user, BPF_FUNC_current_task_under_cgroup, BPF_FUNC_skb_change_tail, BPF_FUNC_skb_pull_data, BPF_FUNC_csum_update, BPF_FUNC_set_hash_invalid, BPF_FUNC_get_numa_node_id, BPF_FUNC_skb_change_head, BPF_FUNC_xdp_adjust_head, BPF_FUNC_probe_read_str, BPF_FUNC_get_socket_cookie, BPF_FUNC_get_socket_uid, BPF_FUNC_set_hash, BPF_FUNC_setsockopt, BPF_FUNC_skb_adjust_room, BPF_FUNC_redirect_map, BPF_FUNC_sk_redirect_map, BPF_FUNC_sock_map_update, BPF_FUNC_xdp_adjust_meta, BPF_FUNC_perf_event_read_value, BPF_FUNC_perf_prog_read_value, BPF_FUNC_getsockopt, BPF_FUNC_override_return, BPF_FUNC_sock_ops_cb_flags_set, BPF_FUNC_msg_redirect_map, BPF_FUNC_msg_apply_bytes, BPF_FUNC_msg_cork_bytes, BPF_FUNC_msg_pull_data, BPF_FUNC_bind, BPF_FUNC_xdp_adjust_tail, BPF_FUNC_skb_get_xfrm_state, BPF_FUNC_get_stack, BPF_FUNC_skb_load_bytes_relative, BPF_FUNC_fib_lookup, BPF_FUNC_sock_hash_update, BPF_FUNC_msg_redirect_hash, BPF_FUNC_sk_redirect_hash, BPF_FUNC_lwt_push_encap, BPF_FUNC_lwt_seg6_store_bytes, BPF_FUNC_lwt_seg6_adjust_srh, BPF_FUNC_lwt_seg6_action, BPF_FUNC_rc_repeat, BPF_FUNC_rc_keydown, BPF_FUNC_skb_cgroup_id, BPF_FUNC_get_current_cgroup_id, BPF_FUNC_get_local_storage, BPF_FUNC_sk_select_reuseport, BPF_FUNC_skb_ancestor_cgroup_id, BPF_FUNC_sk_lookup_tcp, BPF_FUNC_sk_lookup_udp, BPF_FUNC_sk_release, BPF_FUNC_map_push_elem, BPF_FUNC_map_pop_elem, BPF_FUNC_map_peek_elem, BPF_FUNC_msg_push_data, BPF_FUNC_msg_pop_data, BPF_FUNC_rc_pointer_rel, BPF_FUNC_spin_lock, BPF_FUNC_spin_unlock, BPF_FUNC_sk_fullsock, BPF_FUNC_tcp_sock, BPF_FUNC_skb_ecn_set_ce, BPF_FUNC_get_listener_sock, BPF_FUNC_skc_lookup_tcp, BPF_FUNC_tcp_check_syncookie, BPF_FUNC_sysctl_get_name, BPF_FUNC_sysctl_get_current_value, BPF_FUNC_sysctl_get_new_value, BPF_FUNC_sysctl_set_new_value, BPF_FUNC_strtol, BPF_FUNC_strtoul, BPF_FUNC_sk_storage_get, BPF_FUNC_sk_storage_delete, BPF_FUNC_send_signal, __BPF_FUNC_MAX_ID, }; # 2906 "../include/uapi/linux/bpf.h" enum bpf_adj_room_mode { BPF_ADJ_ROOM_NET, BPF_ADJ_ROOM_MAC, }; enum bpf_hdr_start_off { BPF_HDR_START_MAC, BPF_HDR_START_NET, }; enum bpf_lwt_encap_mode { BPF_LWT_ENCAP_SEG6, BPF_LWT_ENCAP_SEG6_INLINE, BPF_LWT_ENCAP_IP, }; # 2933 "../include/uapi/linux/bpf.h" struct __sk_buff { __u32 len; __u32 pkt_type; __u32 mark; __u32 queue_mapping; __u32 protocol; __u32 vlan_present; __u32 vlan_tci; __u32 vlan_proto; __u32 priority; __u32 ingress_ifindex; __u32 ifindex; __u32 tc_index; __u32 cb[5]; __u32 hash; __u32 tc_classid; __u32 data; __u32 data_end; __u32 napi_id; __u32 family; __u32 remote_ip4; __u32 local_ip4; __u32 remote_ip6[4]; __u32 local_ip6[4]; __u32 remote_port; __u32 local_port; __u32 data_meta; union { struct bpf_flow_keys * flow_keys; __u64 :64; } __attribute__((aligned(8))); __u64 tstamp; __u32 wire_len; __u32 gso_segs; union { struct bpf_sock * sk; __u64 :64; } __attribute__((aligned(8))); }; struct bpf_tunnel_key { __u32 tunnel_id; union { __u32 remote_ipv4; __u32 remote_ipv6[4]; }; __u8 tunnel_tos; __u8 tunnel_ttl; __u16 tunnel_ext; __u32 tunnel_label; }; struct bpf_xfrm_state { __u32 reqid; __u32 spi; __u16 family; __u16 ext; union { __u32 remote_ipv4; __u32 remote_ipv6[4]; }; }; # 3004 "../include/uapi/linux/bpf.h" enum bpf_ret_code { BPF_OK = 0, BPF_DROP = 2, BPF_REDIRECT = 7, # 3018 "../include/uapi/linux/bpf.h" BPF_LWT_REROUTE = 128, }; struct bpf_sock { __u32 bound_dev_if; __u32 family; __u32 type; __u32 protocol; __u32 mark; __u32 priority; __u32 src_ip4; __u32 src_ip6[4]; __u32 src_port; __u32 dst_port; __u32 dst_ip4; __u32 dst_ip6[4]; __u32 state; }; struct bpf_tcp_sock { __u32 snd_cwnd; __u32 srtt_us; __u32 rtt_min; __u32 snd_ssthresh; __u32 rcv_nxt; __u32 snd_nxt; __u32 snd_una; __u32 mss_cache; __u32 ecn_flags; __u32 rate_delivered; __u32 rate_interval_us; __u32 packets_out; __u32 retrans_out; __u32 total_retrans; __u32 segs_in; __u32 data_segs_in; __u32 segs_out; __u32 data_segs_out; __u32 lost_out; __u32 sacked_out; __u64 bytes_received; __u64 bytes_acked; }; struct bpf_sock_tuple { union { struct { __be32 saddr; __be32 daddr; __be16 sport; __be16 dport; } ipv4; struct { __be32 saddr[4]; __be32 daddr[4]; __be16 sport; __be16 dport; } ipv6; }; }; struct bpf_xdp_sock { __u32 queue_id; }; # 3105 "../include/uapi/linux/bpf.h" enum xdp_action { XDP_ABORTED = 0, XDP_DROP, XDP_PASS, XDP_TX, XDP_REDIRECT, }; struct xdp_md { __u32 data; __u32 data_end; __u32 data_meta; __u32 ingress_ifindex; __u32 rx_queue_index; }; enum sk_action { SK_DROP = 0, SK_PASS, }; struct sk_msg_md { union { void * data; __u64 :64; } __attribute__((aligned(8))); union { void * data_end; __u64 :64; } __attribute__((aligned(8))); __u32 family; __u32 remote_ip4; __u32 local_ip4; __u32 remote_ip6[4]; __u32 local_ip6[4]; __u32 remote_port; __u32 local_port; __u32 size; }; struct sk_reuseport_md { union { void * data; __u64 :64; } __attribute__((aligned(8))); union { void * data_end; __u64 :64; } __attribute__((aligned(8))); __u32 len; __u32 eth_protocol; __u32 ip_protocol; __u32 bind_inany; __u32 hash; }; struct bpf_prog_info { __u32 type; __u32 id; __u8 tag[8]; __u32 jited_prog_len; __u32 xlated_prog_len; __u64 __attribute__((aligned(8))) jited_prog_insns; __u64 __attribute__((aligned(8))) xlated_prog_insns; __u64 load_time; __u32 created_by_uid; __u32 nr_map_ids; __u64 __attribute__((aligned(8))) map_ids; char name[16U]; __u32 ifindex; __u32 gpl_compatible:1; __u32 :31; __u64 netns_dev; __u64 netns_ino; __u32 nr_jited_ksyms; __u32 nr_jited_func_lens; __u64 __attribute__((aligned(8))) jited_ksyms; __u64 __attribute__((aligned(8))) jited_func_lens; __u32 btf_id; __u32 func_info_rec_size; __u64 __attribute__((aligned(8))) func_info; __u32 nr_func_info; __u32 nr_line_info; __u64 __attribute__((aligned(8))) line_info; __u64 __attribute__((aligned(8))) jited_line_info; __u32 nr_jited_line_info; __u32 line_info_rec_size; __u32 jited_line_info_rec_size; __u32 nr_prog_tags; __u64 __attribute__((aligned(8))) prog_tags; __u64 run_time_ns; __u64 run_cnt; } __attribute__((aligned(8))); struct bpf_map_info { __u32 type; __u32 id; __u32 key_size; __u32 value_size; __u32 max_entries; __u32 map_flags; char name[16U]; __u32 ifindex; __u32 :32; __u64 netns_dev; __u64 netns_ino; __u32 btf_id; __u32 btf_key_type_id; __u32 btf_value_type_id; } __attribute__((aligned(8))); struct bpf_btf_info { __u64 __attribute__((aligned(8))) btf; __u32 btf_size; __u32 id; } __attribute__((aligned(8))); struct bpf_sock_addr { __u32 user_family; __u32 user_ip4; __u32 user_ip6[4]; __u32 user_port; __u32 family; __u32 type; __u32 protocol; __u32 msg_src_ip4; __u32 msg_src_ip6[4]; union { struct bpf_sock * sk; __u64 :64; } __attribute__((aligned(8))); }; struct bpf_sock_ops { __u32 op; union { __u32 args[4]; __u32 reply; __u32 replylong[4]; }; __u32 family; __u32 remote_ip4; __u32 local_ip4; __u32 remote_ip6[4]; __u32 local_ip6[4]; __u32 remote_port; __u32 local_port; __u32 is_fullsock; __u32 snd_cwnd; __u32 srtt_us; __u32 bpf_sock_ops_cb_flags; __u32 state; __u32 rtt_min; __u32 snd_ssthresh; __u32 rcv_nxt; __u32 snd_nxt; __u32 snd_una; __u32 mss_cache; __u32 ecn_flags; __u32 rate_delivered; __u32 rate_interval_us; __u32 packets_out; __u32 retrans_out; __u32 total_retrans; __u32 segs_in; __u32 data_segs_in; __u32 segs_out; __u32 data_segs_out; __u32 lost_out; __u32 sacked_out; __u32 sk_txhash; __u64 bytes_received; __u64 bytes_acked; union { struct bpf_sock * sk; __u64 :64; } __attribute__((aligned(8))); }; # 3325 "../include/uapi/linux/bpf.h" enum { BPF_SOCK_OPS_VOID, BPF_SOCK_OPS_TIMEOUT_INIT, BPF_SOCK_OPS_RWND_INIT, BPF_SOCK_OPS_TCP_CONNECT_CB, BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB, BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB, BPF_SOCK_OPS_NEEDS_ECN, BPF_SOCK_OPS_BASE_RTT, BPF_SOCK_OPS_RTO_CB, BPF_SOCK_OPS_RETRANS_CB, BPF_SOCK_OPS_STATE_CB, BPF_SOCK_OPS_TCP_LISTEN_CB, }; enum { BPF_TCP_ESTABLISHED = 1, BPF_TCP_SYN_SENT, BPF_TCP_SYN_RECV, BPF_TCP_FIN_WAIT1, BPF_TCP_FIN_WAIT2, BPF_TCP_TIME_WAIT, BPF_TCP_CLOSE, BPF_TCP_CLOSE_WAIT, BPF_TCP_LAST_ACK, BPF_TCP_LISTEN, BPF_TCP_CLOSING, BPF_TCP_NEW_SYN_RECV, BPF_TCP_MAX_STATES }; struct bpf_perf_event_value { __u64 counter; __u64 enabled; __u64 running; }; # 3413 "../include/uapi/linux/bpf.h" struct bpf_cgroup_dev_ctx { __u32 access_type; __u32 major; __u32 minor; }; struct bpf_raw_tracepoint_args { __u64 args[0]; }; enum { BPF_FIB_LKUP_RET_SUCCESS, BPF_FIB_LKUP_RET_BLACKHOLE, BPF_FIB_LKUP_RET_UNREACHABLE, BPF_FIB_LKUP_RET_PROHIBIT, BPF_FIB_LKUP_RET_NOT_FWDED, BPF_FIB_LKUP_RET_FWD_DISABLED, BPF_FIB_LKUP_RET_UNSUPP_LWT, BPF_FIB_LKUP_RET_NO_NEIGH, BPF_FIB_LKUP_RET_FRAG_NEEDED, }; struct bpf_fib_lookup { __u8 family; __u8 l4_protocol; __be16 sport; __be16 dport; __u16 tot_len; __u32 ifindex; union { __u8 tos; __be32 flowinfo; __u32 rt_metric; }; union { __be32 ipv4_src; __u32 ipv6_src[4]; }; union { __be32 ipv4_dst; __u32 ipv6_dst[4]; }; __be16 h_vlan_proto; __be16 h_vlan_TCI; __u8 smac[6]; __u8 dmac[6]; }; enum bpf_task_fd_type { BPF_FD_TYPE_RAW_TRACEPOINT, BPF_FD_TYPE_TRACEPOINT, BPF_FD_TYPE_KPROBE, BPF_FD_TYPE_KRETPROBE, BPF_FD_TYPE_UPROBE, BPF_FD_TYPE_URETPROBE, }; struct bpf_flow_keys { __u16 nhoff; __u16 thoff; __u16 addr_proto; __u8 is_frag; __u8 is_first_frag; __u8 is_encap; __u8 ip_proto; __be16 n_proto; __be16 sport; __be16 dport; union { struct { __be32 ipv4_src; __be32 ipv4_dst; }; struct { __u32 ipv6_src[4]; __u32 ipv6_dst[4]; }; }; }; struct bpf_func_info { __u32 insn_off; __u32 type_id; }; struct bpf_line_info { __u32 insn_off; __u32 file_name_off; __u32 line_off; __u32 line_col; }; struct bpf_spin_lock { __u32 val; }; struct bpf_sysctl { __u32 write; __u32 file_pos; }; struct bpf_sockopt { union { struct bpf_sock * sk; __u64 :64; } __attribute__((aligned(8))); union { void * optval; __u64 :64; } __attribute__((aligned(8))); union { void * optval_end; __u64 :64; } __attribute__((aligned(8))); __s32 level; __s32 optname; __s32 optlen; __s32 retval; }; # 8 "../include/linux/bpf.h" 2 # 1 "../include/linux/file.h" 1 # 13 "../include/linux/file.h" struct file; extern void fput(struct file *); extern void fput_many(struct file *, unsigned int); struct file_operations; struct vfsmount; struct dentry; struct inode; struct path; extern struct file *alloc_file_pseudo(struct inode *, struct vfsmount *, const char *, int flags, const struct file_operations *); extern struct file *alloc_file_clone(struct file *, int flags, const struct file_operations *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void fput_light(struct file *file, int fput_needed) { if (fput_needed) fput(file); } struct fd { struct file *file; unsigned int flags; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void fdput(struct fd fd) { if (fd.flags & 1) fput(fd.file); } extern struct file *fget(unsigned int fd); extern struct file *fget_many(unsigned int fd, unsigned int refs); extern struct file *fget_raw(unsigned int fd); extern unsigned long __fdget(unsigned int fd); extern unsigned long __fdget_raw(unsigned int fd); extern unsigned long __fdget_pos(unsigned int fd); extern void __f_unlock_pos(struct file *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct fd __to_fd(unsigned long v) { return (struct fd){(struct file *)(v & ~3),v & 3}; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct fd fdget(unsigned int fd) { return __to_fd(__fdget(fd)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct fd fdget_raw(unsigned int fd) { return __to_fd(__fdget_raw(fd)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct fd fdget_pos(int fd) { return __to_fd(__fdget_pos(fd)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void fdput_pos(struct fd f) { if (f.flags & 2) __f_unlock_pos(f.file); fdput(f); } extern int f_dupfd(unsigned int from, struct file *file, unsigned flags); extern int replace_fd(unsigned fd, struct file *file, unsigned flags); extern void set_close_on_exec(unsigned int fd, int flag); extern bool get_close_on_exec(unsigned int fd); extern int get_unused_fd_flags(unsigned flags); extern void put_unused_fd(unsigned int fd); extern void fd_install(unsigned int fd, struct file *file); extern void flush_delayed_fput(void); extern void __fput_sync(struct file *); # 11 "../include/linux/bpf.h" 2 struct bpf_verifier_env; struct perf_event; struct bpf_prog; struct bpf_map; struct sock; struct seq_file; struct btf; struct btf_type; struct bpf_map_ops { int (*map_alloc_check)(union bpf_attr *attr); struct bpf_map *(*map_alloc)(union bpf_attr *attr); void (*map_release)(struct bpf_map *map, struct file *map_file); void (*map_free)(struct bpf_map *map); int (*map_get_next_key)(struct bpf_map *map, void *key, void *next_key); void (*map_release_uref)(struct bpf_map *map); void *(*map_lookup_elem_sys_only)(struct bpf_map *map, void *key); void *(*map_lookup_elem)(struct bpf_map *map, void *key); int (*map_update_elem)(struct bpf_map *map, void *key, void *value, u64 flags); int (*map_delete_elem)(struct bpf_map *map, void *key); int (*map_push_elem)(struct bpf_map *map, void *value, u64 flags); int (*map_pop_elem)(struct bpf_map *map, void *value); int (*map_peek_elem)(struct bpf_map *map, void *value); void *(*map_fd_get_ptr)(struct bpf_map *map, struct file *map_file, int fd); void (*map_fd_put_ptr)(void *ptr); u32 (*map_gen_lookup)(struct bpf_map *map, struct bpf_insn *insn_buf); u32 (*map_fd_sys_lookup_elem)(void *ptr); void (*map_seq_show_elem)(struct bpf_map *map, void *key, struct seq_file *m); int (*map_check_btf)(const struct bpf_map *map, const struct btf *btf, const struct btf_type *key_type, const struct btf_type *value_type); int (*map_direct_value_addr)(const struct bpf_map *map, u64 *imm, u32 off); int (*map_direct_value_meta)(const struct bpf_map *map, u64 imm, u32 *off); }; struct bpf_map_memory { u32 pages; struct user_struct *user; }; struct bpf_map { const struct bpf_map_ops *ops __attribute__((__aligned__((1 << (6))))); struct bpf_map *inner_map_meta; void *security; enum bpf_map_type map_type; u32 key_size; u32 value_size; u32 max_entries; u32 map_flags; int spin_lock_off; u32 id; int numa_node; u32 btf_key_type_id; u32 btf_value_type_id; struct btf *btf; struct bpf_map_memory memory; bool unpriv_array; bool frozen; atomic_t refcnt __attribute__((__aligned__((1 << (6))))); atomic_t usercnt; struct work_struct work; char name[16U]; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool map_value_has_spin_lock(const struct bpf_map *map) { return map->spin_lock_off >= 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_and_init_map_lock(struct bpf_map *map, void *dst) { if (__builtin_expect(!!(!map_value_has_spin_lock(map)), 1)) return; *(struct bpf_spin_lock *)(dst + map->spin_lock_off) = (struct bpf_spin_lock){}; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void copy_map_value(struct bpf_map *map, void *dst, void *src) { if (__builtin_expect(!!(map_value_has_spin_lock(map)), 0)) { u32 off = map->spin_lock_off; __memcpy(dst, src, off); __memcpy(dst + off + sizeof(struct bpf_spin_lock), src + off + sizeof(struct bpf_spin_lock), map->value_size - off - sizeof(struct bpf_spin_lock)); } else { __memcpy(dst, src, map->value_size); } } void copy_map_value_locked(struct bpf_map *map, void *dst, void *src, bool lock_src); struct bpf_offload_dev; struct bpf_offloaded_map; struct bpf_map_dev_ops { int (*map_get_next_key)(struct bpf_offloaded_map *map, void *key, void *next_key); int (*map_lookup_elem)(struct bpf_offloaded_map *map, void *key, void *value); int (*map_update_elem)(struct bpf_offloaded_map *map, void *key, void *value, u64 flags); int (*map_delete_elem)(struct bpf_offloaded_map *map, void *key); }; struct bpf_offloaded_map { struct bpf_map map; struct net_device *netdev; const struct bpf_map_dev_ops *dev_ops; void *dev_priv; struct list_head offloads; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct bpf_offloaded_map *map_to_offmap(struct bpf_map *map) { return ({ void *__mptr = (void *)(map); do { extern void __compiletime_assert_158(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(map)), typeof(((struct bpf_offloaded_map *)0)->map)) && !__builtin_types_compatible_p(typeof(*(map)), typeof(void))))) __compiletime_assert_158(); } while (0); ((struct bpf_offloaded_map *)(__mptr - __builtin_offsetof(struct bpf_offloaded_map, map))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool bpf_map_offload_neutral(const struct bpf_map *map) { return map->map_type == BPF_MAP_TYPE_PERF_EVENT_ARRAY; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool bpf_map_support_seq_show(const struct bpf_map *map) { return map->btf && map->ops->map_seq_show_elem; } int map_check_no_btf(const struct bpf_map *map, const struct btf *btf, const struct btf_type *key_type, const struct btf_type *value_type); extern const struct bpf_map_ops bpf_map_offload_ops; enum bpf_arg_type { ARG_DONTCARE = 0, ARG_CONST_MAP_PTR, ARG_PTR_TO_MAP_KEY, ARG_PTR_TO_MAP_VALUE, ARG_PTR_TO_UNINIT_MAP_VALUE, ARG_PTR_TO_MAP_VALUE_OR_NULL, ARG_PTR_TO_MEM, ARG_PTR_TO_MEM_OR_NULL, ARG_PTR_TO_UNINIT_MEM, ARG_CONST_SIZE, ARG_CONST_SIZE_OR_ZERO, ARG_PTR_TO_CTX, ARG_ANYTHING, ARG_PTR_TO_SPIN_LOCK, ARG_PTR_TO_SOCK_COMMON, ARG_PTR_TO_INT, ARG_PTR_TO_LONG, ARG_PTR_TO_SOCKET, }; enum bpf_return_type { RET_INTEGER, RET_VOID, RET_PTR_TO_MAP_VALUE, RET_PTR_TO_MAP_VALUE_OR_NULL, RET_PTR_TO_SOCKET_OR_NULL, RET_PTR_TO_TCP_SOCK_OR_NULL, RET_PTR_TO_SOCK_COMMON_OR_NULL, }; struct bpf_func_proto { u64 (*func)(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5); bool gpl_only; bool pkt_access; enum bpf_return_type ret_type; enum bpf_arg_type arg1_type; enum bpf_arg_type arg2_type; enum bpf_arg_type arg3_type; enum bpf_arg_type arg4_type; enum bpf_arg_type arg5_type; }; struct bpf_context; enum bpf_access_type { BPF_READ = 1, BPF_WRITE = 2 }; # 261 "../include/linux/bpf.h" enum bpf_reg_type { NOT_INIT = 0, SCALAR_VALUE, PTR_TO_CTX, CONST_PTR_TO_MAP, PTR_TO_MAP_VALUE, PTR_TO_MAP_VALUE_OR_NULL, PTR_TO_STACK, PTR_TO_PACKET_META, PTR_TO_PACKET, PTR_TO_PACKET_END, PTR_TO_FLOW_KEYS, PTR_TO_SOCKET, PTR_TO_SOCKET_OR_NULL, PTR_TO_SOCK_COMMON, PTR_TO_SOCK_COMMON_OR_NULL, PTR_TO_TCP_SOCK, PTR_TO_TCP_SOCK_OR_NULL, PTR_TO_TP_BUFFER, PTR_TO_XDP_SOCK, }; struct bpf_insn_access_aux { enum bpf_reg_type reg_type; int ctx_field_size; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bpf_ctx_record_field_size(struct bpf_insn_access_aux *aux, u32 size) { aux->ctx_field_size = size; } struct bpf_prog_ops { int (*test_run)(struct bpf_prog *prog, const union bpf_attr *kattr, union bpf_attr *uattr); }; struct bpf_verifier_ops { const struct bpf_func_proto * (*get_func_proto)(enum bpf_func_id func_id, const struct bpf_prog *prog); bool (*is_valid_access)(int off, int size, enum bpf_access_type type, const struct bpf_prog *prog, struct bpf_insn_access_aux *info); int (*gen_prologue)(struct bpf_insn *insn, bool direct_write, const struct bpf_prog *prog); int (*gen_ld_abs)(const struct bpf_insn *orig, struct bpf_insn *insn_buf); u32 (*convert_ctx_access)(enum bpf_access_type type, const struct bpf_insn *src, struct bpf_insn *dst, struct bpf_prog *prog, u32 *target_size); }; struct bpf_prog_offload_ops { int (*insn_hook)(struct bpf_verifier_env *env, int insn_idx, int prev_insn_idx); int (*finalize)(struct bpf_verifier_env *env); int (*replace_insn)(struct bpf_verifier_env *env, u32 off, struct bpf_insn *insn); int (*remove_insns)(struct bpf_verifier_env *env, u32 off, u32 cnt); int (*prepare)(struct bpf_prog *prog); int (*translate)(struct bpf_prog *prog); void (*destroy)(struct bpf_prog *prog); }; struct bpf_prog_offload { struct bpf_prog *prog; struct net_device *netdev; struct bpf_offload_dev *offdev; void *dev_priv; struct list_head offloads; bool dev_state; bool opt_failed; void *jited_image; u32 jited_len; }; enum bpf_cgroup_storage_type { BPF_CGROUP_STORAGE_SHARED, BPF_CGROUP_STORAGE_PERCPU, __BPF_CGROUP_STORAGE_MAX }; struct bpf_prog_stats { u64 cnt; u64 nsecs; struct u64_stats_sync syncp; }; struct bpf_prog_aux { atomic_t refcnt; u32 used_map_cnt; u32 max_ctx_offset; u32 max_pkt_offset; u32 max_tp_access; u32 stack_depth; u32 id; u32 func_cnt; u32 func_idx; bool verifier_zext; bool offload_requested; struct bpf_prog **func; void *jit_data; struct latch_tree_node ksym_tnode; struct list_head ksym_lnode; const struct bpf_prog_ops *ops; struct bpf_map **used_maps; struct bpf_prog *prog; struct user_struct *user; u64 load_time; struct bpf_map *cgroup_storage[__BPF_CGROUP_STORAGE_MAX]; char name[16U]; void *security; struct bpf_prog_offload *offload; struct btf *btf; struct bpf_func_info *func_info; struct bpf_line_info *linfo; void **jited_linfo; u32 func_info_cnt; u32 nr_linfo; u32 linfo_idx; struct bpf_prog_stats *stats; union { struct work_struct work; struct callback_head rcu; }; }; struct bpf_array { struct bpf_map map; u32 elem_size; u32 index_mask; enum bpf_prog_type owner_prog_type; bool owner_jited; union { char value[0] __attribute__((__aligned__(8))); void *ptrs[0] __attribute__((__aligned__(8))); void *pptrs[0] __attribute__((__aligned__(8))); }; }; # 452 "../include/linux/bpf.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 bpf_map_flags_to_cap(struct bpf_map *map) { u32 access_flags = map->map_flags & ((1U << 7) | (1U << 8)); if (access_flags & (1U << 7)) return ((((1UL))) << (0)); else if (access_flags & (1U << 8)) return ((((1UL))) << (1)); else return ((((1UL))) << (0)) | ((((1UL))) << (1)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool bpf_map_flags_access_ok(u32 access_flags) { return (access_flags & ((1U << 7) | (1U << 8))) != ((1U << 7) | (1U << 8)); } struct bpf_event_entry { struct perf_event *event; struct file *perf_file; struct file *map_file; struct callback_head rcu; }; bool bpf_prog_array_compatible(struct bpf_array *array, const struct bpf_prog *fp); int bpf_prog_calc_tag(struct bpf_prog *fp); const struct bpf_func_proto *bpf_get_trace_printk_proto(void); typedef unsigned long (*bpf_ctx_copy_t)(void *dst, const void *src, unsigned long off, unsigned long len); typedef u32 (*bpf_convert_ctx_access_t)(enum bpf_access_type type, const struct bpf_insn *src, struct bpf_insn *dst, struct bpf_prog *prog, u32 *target_size); u64 bpf_event_output(struct bpf_map *map, u64 flags, void *meta, u64 meta_size, void *ctx, u64 ctx_size, bpf_ctx_copy_t ctx_copy); # 508 "../include/linux/bpf.h" struct bpf_prog_array_item { struct bpf_prog *prog; struct bpf_cgroup_storage *cgroup_storage[__BPF_CGROUP_STORAGE_MAX]; }; struct bpf_prog_array { struct callback_head rcu; struct bpf_prog_array_item items[0]; }; struct bpf_prog_array *bpf_prog_array_alloc(u32 prog_cnt, gfp_t flags); void bpf_prog_array_free(struct bpf_prog_array *progs); int bpf_prog_array_length(struct bpf_prog_array *progs); bool bpf_prog_array_is_empty(struct bpf_prog_array *array); int bpf_prog_array_copy_to_user(struct bpf_prog_array *progs, __u32 *prog_ids, u32 cnt); void bpf_prog_array_delete_safe(struct bpf_prog_array *progs, struct bpf_prog *old_prog); int bpf_prog_array_copy_info(struct bpf_prog_array *array, u32 *prog_ids, u32 request_cnt, u32 *prog_cnt); int bpf_prog_array_copy(struct bpf_prog_array *old_array, struct bpf_prog *exclude_prog, struct bpf_prog *include_prog, struct bpf_prog_array **new_array); # 615 "../include/linux/bpf.h" extern __attribute__((section(".discard"), unused)) char __pcpu_scope_bpf_prog_active; extern __attribute__((section(".data..percpu" ""))) __typeof__(int) bpf_prog_active; extern const struct file_operations bpf_map_fops; extern const struct file_operations bpf_prog_fops; # 1 "../include/linux/bpf_types.h" 1 extern const struct bpf_prog_ops sk_filter_prog_ops; extern const struct bpf_verifier_ops sk_filter_verifier_ops; extern const struct bpf_prog_ops tc_cls_act_prog_ops; extern const struct bpf_verifier_ops tc_cls_act_verifier_ops; extern const struct bpf_prog_ops tc_cls_act_prog_ops; extern const struct bpf_verifier_ops tc_cls_act_verifier_ops; extern const struct bpf_prog_ops xdp_prog_ops; extern const struct bpf_verifier_ops xdp_verifier_ops; extern const struct bpf_prog_ops cg_skb_prog_ops; extern const struct bpf_verifier_ops cg_skb_verifier_ops; extern const struct bpf_prog_ops cg_sock_prog_ops; extern const struct bpf_verifier_ops cg_sock_verifier_ops; extern const struct bpf_prog_ops cg_sock_addr_prog_ops; extern const struct bpf_verifier_ops cg_sock_addr_verifier_ops; extern const struct bpf_prog_ops lwt_in_prog_ops; extern const struct bpf_verifier_ops lwt_in_verifier_ops; extern const struct bpf_prog_ops lwt_out_prog_ops; extern const struct bpf_verifier_ops lwt_out_verifier_ops; extern const struct bpf_prog_ops lwt_xmit_prog_ops; extern const struct bpf_verifier_ops lwt_xmit_verifier_ops; extern const struct bpf_prog_ops lwt_seg6local_prog_ops; extern const struct bpf_verifier_ops lwt_seg6local_verifier_ops; extern const struct bpf_prog_ops sock_ops_prog_ops; extern const struct bpf_verifier_ops sock_ops_verifier_ops; extern const struct bpf_prog_ops sk_skb_prog_ops; extern const struct bpf_verifier_ops sk_skb_verifier_ops; extern const struct bpf_prog_ops sk_msg_prog_ops; extern const struct bpf_verifier_ops sk_msg_verifier_ops; extern const struct bpf_prog_ops flow_dissector_prog_ops; extern const struct bpf_verifier_ops flow_dissector_verifier_ops; extern const struct bpf_prog_ops kprobe_prog_ops; extern const struct bpf_verifier_ops kprobe_verifier_ops; extern const struct bpf_prog_ops tracepoint_prog_ops; extern const struct bpf_verifier_ops tracepoint_verifier_ops; extern const struct bpf_prog_ops perf_event_prog_ops; extern const struct bpf_verifier_ops perf_event_verifier_ops; extern const struct bpf_prog_ops raw_tracepoint_prog_ops; extern const struct bpf_verifier_ops raw_tracepoint_verifier_ops; extern const struct bpf_prog_ops raw_tracepoint_writable_prog_ops; extern const struct bpf_verifier_ops raw_tracepoint_writable_verifier_ops; extern const struct bpf_prog_ops cg_dev_prog_ops; extern const struct bpf_verifier_ops cg_dev_verifier_ops; extern const struct bpf_prog_ops cg_sysctl_prog_ops; extern const struct bpf_verifier_ops cg_sysctl_verifier_ops; extern const struct bpf_prog_ops cg_sockopt_prog_ops; extern const struct bpf_verifier_ops cg_sockopt_verifier_ops; extern const struct bpf_prog_ops lirc_mode2_prog_ops; extern const struct bpf_verifier_ops lirc_mode2_verifier_ops; extern const struct bpf_prog_ops sk_reuseport_prog_ops; extern const struct bpf_verifier_ops sk_reuseport_verifier_ops; extern const struct bpf_map_ops array_map_ops; extern const struct bpf_map_ops percpu_array_map_ops; extern const struct bpf_map_ops prog_array_map_ops; extern const struct bpf_map_ops perf_event_array_map_ops; extern const struct bpf_map_ops cgroup_array_map_ops; extern const struct bpf_map_ops cgroup_storage_map_ops; extern const struct bpf_map_ops cgroup_storage_map_ops; extern const struct bpf_map_ops htab_map_ops; extern const struct bpf_map_ops htab_percpu_map_ops; extern const struct bpf_map_ops htab_lru_map_ops; extern const struct bpf_map_ops htab_lru_percpu_map_ops; extern const struct bpf_map_ops trie_map_ops; extern const struct bpf_map_ops stack_trace_map_ops; extern const struct bpf_map_ops array_of_maps_map_ops; extern const struct bpf_map_ops htab_of_maps_map_ops; extern const struct bpf_map_ops dev_map_ops; extern const struct bpf_map_ops sk_storage_map_ops; extern const struct bpf_map_ops sock_map_ops; extern const struct bpf_map_ops sock_hash_ops; extern const struct bpf_map_ops cpu_map_ops; extern const struct bpf_map_ops xsk_map_ops; extern const struct bpf_map_ops reuseport_array_ops; extern const struct bpf_map_ops queue_map_ops; extern const struct bpf_map_ops stack_map_ops; # 626 "../include/linux/bpf.h" 2 extern const struct bpf_prog_ops bpf_offload_prog_ops; extern const struct bpf_verifier_ops tc_cls_act_analyzer_ops; extern const struct bpf_verifier_ops xdp_analyzer_ops; struct bpf_prog *bpf_prog_get(u32 ufd); struct bpf_prog *bpf_prog_get_type_dev(u32 ufd, enum bpf_prog_type type, bool attach_drv); struct bpf_prog * __attribute__((__warn_unused_result__)) bpf_prog_add(struct bpf_prog *prog, int i); void bpf_prog_sub(struct bpf_prog *prog, int i); struct bpf_prog * __attribute__((__warn_unused_result__)) bpf_prog_inc(struct bpf_prog *prog); struct bpf_prog * __attribute__((__warn_unused_result__)) bpf_prog_inc_not_zero(struct bpf_prog *prog); void bpf_prog_put(struct bpf_prog *prog); int __bpf_prog_charge(struct user_struct *user, u32 pages); void __bpf_prog_uncharge(struct user_struct *user, u32 pages); void bpf_prog_free_id(struct bpf_prog *prog, bool do_idr_lock); void bpf_map_free_id(struct bpf_map *map, bool do_idr_lock); struct bpf_map *bpf_map_get_with_uref(u32 ufd); struct bpf_map *__bpf_map_get(struct fd f); struct bpf_map * __attribute__((__warn_unused_result__)) bpf_map_inc(struct bpf_map *map, bool uref); void bpf_map_put_with_uref(struct bpf_map *map); void bpf_map_put(struct bpf_map *map); int bpf_map_charge_memlock(struct bpf_map *map, u32 pages); void bpf_map_uncharge_memlock(struct bpf_map *map, u32 pages); int bpf_map_charge_init(struct bpf_map_memory *mem, size_t size); void bpf_map_charge_finish(struct bpf_map_memory *mem); void bpf_map_charge_move(struct bpf_map_memory *dst, struct bpf_map_memory *src); void *bpf_map_area_alloc(size_t size, int numa_node); void bpf_map_area_free(void *base); void bpf_map_init_from_attr(struct bpf_map *map, union bpf_attr *attr); extern int sysctl_unprivileged_bpf_disabled; int bpf_map_new_fd(struct bpf_map *map, int flags); int bpf_prog_new_fd(struct bpf_prog *prog); int bpf_obj_pin_user(u32 ufd, const char *pathname); int bpf_obj_get_user(const char *pathname, int flags); int bpf_percpu_hash_copy(struct bpf_map *map, void *key, void *value); int bpf_percpu_array_copy(struct bpf_map *map, void *key, void *value); int bpf_percpu_hash_update(struct bpf_map *map, void *key, void *value, u64 flags); int bpf_percpu_array_update(struct bpf_map *map, void *key, void *value, u64 flags); int bpf_stackmap_copy(struct bpf_map *map, void *key, void *value); int bpf_fd_array_map_update_elem(struct bpf_map *map, struct file *map_file, void *key, void *value, u64 map_flags); int bpf_fd_array_map_lookup_elem(struct bpf_map *map, void *key, u32 *value); int bpf_fd_htab_map_update_elem(struct bpf_map *map, struct file *map_file, void *key, void *value, u64 map_flags); int bpf_fd_htab_map_lookup_elem(struct bpf_map *map, void *key, u32 *value); int bpf_get_file_flag(int flags); int bpf_check_uarg_tail_zero(void *uaddr, size_t expected_size, size_t actual_size); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bpf_long_memcpy(void *dst, const void *src, u32 size) { const long *lsrc = src; long *ldst = dst; size /= sizeof(long); while (size--) *ldst++ = *lsrc++; } int bpf_check(struct bpf_prog **fp, union bpf_attr *attr, union bpf_attr *uattr); void bpf_patch_call_args(struct bpf_insn *insn, u32 stack_depth); struct xdp_buff; struct sk_buff; struct bpf_dtab_netdev *__dev_map_lookup_elem(struct bpf_map *map, u32 key); void __dev_map_insert_ctx(struct bpf_map *map, u32 index); void __dev_map_flush(struct bpf_map *map); int dev_map_enqueue(struct bpf_dtab_netdev *dst, struct xdp_buff *xdp, struct net_device *dev_rx); int dev_map_generic_redirect(struct bpf_dtab_netdev *dst, struct sk_buff *skb, struct bpf_prog *xdp_prog); struct bpf_cpu_map_entry *__cpu_map_lookup_elem(struct bpf_map *map, u32 key); void __cpu_map_insert_ctx(struct bpf_map *map, u32 index); void __cpu_map_flush(struct bpf_map *map); int cpu_map_enqueue(struct bpf_cpu_map_entry *rcpu, struct xdp_buff *xdp, struct net_device *dev_rx); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int bpf_map_attr_numa_node(const union bpf_attr *attr) { return (attr->map_flags & (1U << 2)) ? attr->numa_node : (-1); } struct bpf_prog *bpf_prog_get_type_path(const char *name, enum bpf_prog_type type); int array_map_alloc_check(union bpf_attr *attr); int bpf_prog_test_run_xdp(struct bpf_prog *prog, const union bpf_attr *kattr, union bpf_attr *uattr); int bpf_prog_test_run_skb(struct bpf_prog *prog, const union bpf_attr *kattr, union bpf_attr *uattr); int bpf_prog_test_run_flow_dissector(struct bpf_prog *prog, const union bpf_attr *kattr, union bpf_attr *uattr); # 880 "../include/linux/bpf.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct bpf_prog *bpf_prog_get_type(u32 ufd, enum bpf_prog_type type) { return bpf_prog_get_type_dev(ufd, type, false); } bool bpf_prog_get_ok(struct bpf_prog *, enum bpf_prog_type *, bool); int bpf_prog_offload_compile(struct bpf_prog *prog); void bpf_prog_offload_destroy(struct bpf_prog *prog); int bpf_prog_offload_info_fill(struct bpf_prog_info *info, struct bpf_prog *prog); int bpf_map_offload_info_fill(struct bpf_map_info *info, struct bpf_map *map); int bpf_map_offload_lookup_elem(struct bpf_map *map, void *key, void *value); int bpf_map_offload_update_elem(struct bpf_map *map, void *key, void *value, u64 flags); int bpf_map_offload_delete_elem(struct bpf_map *map, void *key); int bpf_map_offload_get_next_key(struct bpf_map *map, void *key, void *next_key); bool bpf_offload_prog_map_match(struct bpf_prog *prog, struct bpf_map *map); struct bpf_offload_dev * bpf_offload_dev_create(const struct bpf_prog_offload_ops *ops, void *priv); void bpf_offload_dev_destroy(struct bpf_offload_dev *offdev); void *bpf_offload_dev_priv(struct bpf_offload_dev *offdev); int bpf_offload_dev_netdev_register(struct bpf_offload_dev *offdev, struct net_device *netdev); void bpf_offload_dev_netdev_unregister(struct bpf_offload_dev *offdev, struct net_device *netdev); bool bpf_offload_dev_match(struct bpf_prog *prog, struct net_device *netdev); int bpf_prog_offload_init(struct bpf_prog *prog, union bpf_attr *attr); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool bpf_prog_is_dev_bound(const struct bpf_prog_aux *aux) { return aux->offload_requested; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool bpf_map_is_dev_bound(struct bpf_map *map) { return __builtin_expect(!!(map->ops == &bpf_map_offload_ops), 0); } struct bpf_map *bpf_map_offload_map_alloc(union bpf_attr *attr); void bpf_map_offload_map_free(struct bpf_map *map); # 957 "../include/linux/bpf.h" int sock_map_prog_update(struct bpf_map *map, struct bpf_prog *prog, u32 which); int sock_map_get_from_fd(const union bpf_attr *attr, struct bpf_prog *prog); # 974 "../include/linux/bpf.h" struct xdp_sock; struct xdp_sock *__xsk_map_lookup_elem(struct bpf_map *map, u32 key); int __xsk_map_redirect(struct bpf_map *map, struct xdp_buff *xdp, struct xdp_sock *xs); void __xsk_map_flush(struct bpf_map *map); # 999 "../include/linux/bpf.h" void bpf_sk_reuseport_detach(struct sock *sk); int bpf_fd_reuseport_array_lookup_elem(struct bpf_map *map, void *key, void *value); int bpf_fd_reuseport_array_update_elem(struct bpf_map *map, void *key, void *value, u64 map_flags); # 1026 "../include/linux/bpf.h" extern const struct bpf_func_proto bpf_map_lookup_elem_proto; extern const struct bpf_func_proto bpf_map_update_elem_proto; extern const struct bpf_func_proto bpf_map_delete_elem_proto; extern const struct bpf_func_proto bpf_map_push_elem_proto; extern const struct bpf_func_proto bpf_map_pop_elem_proto; extern const struct bpf_func_proto bpf_map_peek_elem_proto; extern const struct bpf_func_proto bpf_get_prandom_u32_proto; extern const struct bpf_func_proto bpf_get_smp_processor_id_proto; extern const struct bpf_func_proto bpf_get_numa_node_id_proto; extern const struct bpf_func_proto bpf_tail_call_proto; extern const struct bpf_func_proto bpf_ktime_get_ns_proto; extern const struct bpf_func_proto bpf_get_current_pid_tgid_proto; extern const struct bpf_func_proto bpf_get_current_uid_gid_proto; extern const struct bpf_func_proto bpf_get_current_comm_proto; extern const struct bpf_func_proto bpf_get_stackid_proto; extern const struct bpf_func_proto bpf_get_stack_proto; extern const struct bpf_func_proto bpf_sock_map_update_proto; extern const struct bpf_func_proto bpf_sock_hash_update_proto; extern const struct bpf_func_proto bpf_get_current_cgroup_id_proto; extern const struct bpf_func_proto bpf_msg_redirect_hash_proto; extern const struct bpf_func_proto bpf_msg_redirect_map_proto; extern const struct bpf_func_proto bpf_sk_redirect_hash_proto; extern const struct bpf_func_proto bpf_sk_redirect_map_proto; extern const struct bpf_func_proto bpf_spin_lock_proto; extern const struct bpf_func_proto bpf_spin_unlock_proto; extern const struct bpf_func_proto bpf_get_local_storage_proto; extern const struct bpf_func_proto bpf_strtol_proto; extern const struct bpf_func_proto bpf_strtoul_proto; extern const struct bpf_func_proto bpf_tcp_sock_proto; void bpf_user_rnd_init_once(void); u64 bpf_user_rnd_u32(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5); bool bpf_sock_common_is_valid_access(int off, int size, enum bpf_access_type type, struct bpf_insn_access_aux *info); bool bpf_sock_is_valid_access(int off, int size, enum bpf_access_type type, struct bpf_insn_access_aux *info); u32 bpf_sock_convert_ctx_access(enum bpf_access_type type, const struct bpf_insn *si, struct bpf_insn *insn_buf, struct bpf_prog *prog, u32 *target_size); # 1096 "../include/linux/bpf.h" bool bpf_tcp_sock_is_valid_access(int off, int size, enum bpf_access_type type, struct bpf_insn_access_aux *info); u32 bpf_tcp_sock_convert_ctx_access(enum bpf_access_type type, const struct bpf_insn *si, struct bpf_insn *insn_buf, struct bpf_prog *prog, u32 *target_size); bool bpf_xdp_sock_is_valid_access(int off, int size, enum bpf_access_type type, struct bpf_insn_access_aux *info); u32 bpf_xdp_sock_convert_ctx_access(enum bpf_access_type type, const struct bpf_insn *si, struct bpf_insn *insn_buf, struct bpf_prog *prog, u32 *target_size); # 6 "../include/linux/bpf-cgroup.h" 2 struct sock; struct sockaddr; struct cgroup; struct sk_buff; struct bpf_map; struct bpf_prog; struct bpf_sock_ops_kern; struct bpf_cgroup_storage; struct ctl_table; struct ctl_table_header; extern struct static_key_false cgroup_bpf_enabled_key; extern __attribute__((section(".discard"), unused)) char __pcpu_scope_bpf_cgroup_storage[__BPF_CGROUP_STORAGE_MAX]; extern __attribute__((section(".data..percpu" ""))) __typeof__(struct bpf_cgroup_storage*) bpf_cgroup_storage[__BPF_CGROUP_STORAGE_MAX]; struct bpf_cgroup_storage_map; struct bpf_storage_buffer { struct callback_head rcu; char data[0]; }; struct bpf_cgroup_storage { union { struct bpf_storage_buffer *buf; void *percpu_buf; }; struct bpf_cgroup_storage_map *map; struct bpf_cgroup_storage_key key; struct list_head list; struct rb_node node; struct callback_head rcu; }; struct bpf_prog_list { struct list_head node; struct bpf_prog *prog; struct bpf_cgroup_storage *storage[__BPF_CGROUP_STORAGE_MAX]; }; struct bpf_prog_array; struct cgroup_bpf { struct bpf_prog_array *effective[__MAX_BPF_ATTACH_TYPE]; struct list_head progs[__MAX_BPF_ATTACH_TYPE]; u32 flags[__MAX_BPF_ATTACH_TYPE]; struct bpf_prog_array *inactive; struct percpu_ref refcnt; struct work_struct release_work; }; int cgroup_bpf_inherit(struct cgroup *cgrp); void cgroup_bpf_offline(struct cgroup *cgrp); int __cgroup_bpf_attach(struct cgroup *cgrp, struct bpf_prog *prog, enum bpf_attach_type type, u32 flags); int __cgroup_bpf_detach(struct cgroup *cgrp, struct bpf_prog *prog, enum bpf_attach_type type); int __cgroup_bpf_query(struct cgroup *cgrp, const union bpf_attr *attr, union bpf_attr *uattr); int cgroup_bpf_attach(struct cgroup *cgrp, struct bpf_prog *prog, enum bpf_attach_type type, u32 flags); int cgroup_bpf_detach(struct cgroup *cgrp, struct bpf_prog *prog, enum bpf_attach_type type, u32 flags); int cgroup_bpf_query(struct cgroup *cgrp, const union bpf_attr *attr, union bpf_attr *uattr); int __cgroup_bpf_run_filter_skb(struct sock *sk, struct sk_buff *skb, enum bpf_attach_type type); int __cgroup_bpf_run_filter_sk(struct sock *sk, enum bpf_attach_type type); int __cgroup_bpf_run_filter_sock_addr(struct sock *sk, struct sockaddr *uaddr, enum bpf_attach_type type, void *t_ctx); int __cgroup_bpf_run_filter_sock_ops(struct sock *sk, struct bpf_sock_ops_kern *sock_ops, enum bpf_attach_type type); int __cgroup_bpf_check_dev_permission(short dev_type, u32 major, u32 minor, short access, enum bpf_attach_type type); int __cgroup_bpf_run_filter_sysctl(struct ctl_table_header *head, struct ctl_table *table, int write, void *buf, size_t *pcount, loff_t *ppos, void **new_buf, enum bpf_attach_type type); int __cgroup_bpf_run_filter_setsockopt(struct sock *sock, int *level, int *optname, char *optval, int *optlen, char **kernel_optval); int __cgroup_bpf_run_filter_getsockopt(struct sock *sk, int level, int optname, char *optval, int *optlen, int max_optlen, int retval); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) enum bpf_cgroup_storage_type cgroup_storage_type( struct bpf_map *map) { if (map->map_type == BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE) return BPF_CGROUP_STORAGE_PERCPU; return BPF_CGROUP_STORAGE_SHARED; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void bpf_cgroup_storage_set(struct bpf_cgroup_storage *storage[__BPF_CGROUP_STORAGE_MAX]) { enum bpf_cgroup_storage_type stype; for (stype = 0; stype < __BPF_CGROUP_STORAGE_MAX; stype++) do { do { const void *__vpp_verify = (typeof((&(bpf_cgroup_storage[stype])) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(bpf_cgroup_storage[stype])) { case 1: do { typedef typeof((bpf_cgroup_storage[stype])) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (storage[stype]); (void)pto_tmp__; } switch (sizeof((bpf_cgroup_storage[stype]))) { case 1: asm volatile ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "qi" ((pto_T__)(storage[stype]))); break; case 2: asm volatile ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "ri" ((pto_T__)(storage[stype]))); break; case 4: asm volatile ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "ri" ((pto_T__)(storage[stype]))); break; case 8: asm volatile ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "re" ((pto_T__)(storage[stype]))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((bpf_cgroup_storage[stype])) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (storage[stype]); (void)pto_tmp__; } switch (sizeof((bpf_cgroup_storage[stype]))) { case 1: asm volatile ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "qi" ((pto_T__)(storage[stype]))); break; case 2: asm volatile ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "ri" ((pto_T__)(storage[stype]))); break; case 4: asm volatile ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "ri" ((pto_T__)(storage[stype]))); break; case 8: asm volatile ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "re" ((pto_T__)(storage[stype]))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((bpf_cgroup_storage[stype])) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (storage[stype]); (void)pto_tmp__; } switch (sizeof((bpf_cgroup_storage[stype]))) { case 1: asm volatile ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "qi" ((pto_T__)(storage[stype]))); break; case 2: asm volatile ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "ri" ((pto_T__)(storage[stype]))); break; case 4: asm volatile ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "ri" ((pto_T__)(storage[stype]))); break; case 8: asm volatile ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "re" ((pto_T__)(storage[stype]))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((bpf_cgroup_storage[stype])) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (storage[stype]); (void)pto_tmp__; } switch (sizeof((bpf_cgroup_storage[stype]))) { case 1: asm volatile ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "qi" ((pto_T__)(storage[stype]))); break; case 2: asm volatile ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "ri" ((pto_T__)(storage[stype]))); break; case 4: asm volatile ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "ri" ((pto_T__)(storage[stype]))); break; case 8: asm volatile ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((bpf_cgroup_storage[stype])) : "re" ((pto_T__)(storage[stype]))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } struct bpf_cgroup_storage *bpf_cgroup_storage_alloc(struct bpf_prog *prog, enum bpf_cgroup_storage_type stype); void bpf_cgroup_storage_free(struct bpf_cgroup_storage *storage); void bpf_cgroup_storage_link(struct bpf_cgroup_storage *storage, struct cgroup *cgroup, enum bpf_attach_type type); void bpf_cgroup_storage_unlink(struct bpf_cgroup_storage *storage); int bpf_cgroup_storage_assign(struct bpf_prog *prog, struct bpf_map *map); void bpf_cgroup_storage_release(struct bpf_prog *prog, struct bpf_map *map); int bpf_percpu_cgroup_storage_copy(struct bpf_map *map, void *key, void *value); int bpf_percpu_cgroup_storage_update(struct bpf_map *map, void *key, void *value, u64 flags); # 329 "../include/linux/bpf-cgroup.h" int cgroup_bpf_prog_attach(const union bpf_attr *attr, enum bpf_prog_type ptype, struct bpf_prog *prog); int cgroup_bpf_prog_detach(const union bpf_attr *attr, enum bpf_prog_type ptype); int cgroup_bpf_prog_query(const union bpf_attr *attr, union bpf_attr *uattr); # 23 "../include/linux/cgroup-defs.h" 2 # 1 "../include/linux/psi_types.h" 1 # 1 "../include/linux/kthread.h" 1 __attribute__((__format__(printf, 4, 5))) struct task_struct *kthread_create_on_node(int (*threadfn)(void *data), void *data, int node, const char namefmt[], ...); # 29 "../include/linux/kthread.h" struct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data), void *data, unsigned int cpu, const char *namefmt); # 52 "../include/linux/kthread.h" void free_kthread_struct(struct task_struct *k); void kthread_bind(struct task_struct *k, unsigned int cpu); void kthread_bind_mask(struct task_struct *k, const struct cpumask *mask); int kthread_stop(struct task_struct *k); bool kthread_should_stop(void); bool kthread_should_park(void); bool __kthread_should_park(struct task_struct *k); bool kthread_freezable_should_stop(bool *was_frozen); void *kthread_data(struct task_struct *k); void *kthread_probe_data(struct task_struct *k); int kthread_park(struct task_struct *k); void kthread_unpark(struct task_struct *k); void kthread_parkme(void); int kthreadd(void *unused); extern struct task_struct *kthreadd_task; extern int tsk_fork_get_node(struct task_struct *tsk); # 78 "../include/linux/kthread.h" struct kthread_work; typedef void (*kthread_work_func_t)(struct kthread_work *work); void kthread_delayed_work_timer_fn(struct timer_list *t); enum { KTW_FREEZABLE = 1 << 0, }; struct kthread_worker { unsigned int flags; raw_spinlock_t lock; struct list_head work_list; struct list_head delayed_work_list; struct task_struct *task; struct kthread_work *current_work; }; struct kthread_work { struct list_head node; kthread_work_func_t func; struct kthread_worker *worker; int canceling; }; struct kthread_delayed_work { struct kthread_work work; struct timer_list timer; }; # 148 "../include/linux/kthread.h" extern void __kthread_init_worker(struct kthread_worker *worker, const char *name, struct lock_class_key *key); # 171 "../include/linux/kthread.h" int kthread_worker_fn(void *worker_ptr); __attribute__((__format__(printf, 2, 3))) struct kthread_worker * kthread_create_worker(unsigned int flags, const char namefmt[], ...); __attribute__((__format__(printf, 3, 4))) struct kthread_worker * kthread_create_worker_on_cpu(int cpu, unsigned int flags, const char namefmt[], ...); bool kthread_queue_work(struct kthread_worker *worker, struct kthread_work *work); bool kthread_queue_delayed_work(struct kthread_worker *worker, struct kthread_delayed_work *dwork, unsigned long delay); bool kthread_mod_delayed_work(struct kthread_worker *worker, struct kthread_delayed_work *dwork, unsigned long delay); void kthread_flush_work(struct kthread_work *work); void kthread_flush_worker(struct kthread_worker *worker); bool kthread_cancel_work_sync(struct kthread_work *work); bool kthread_cancel_delayed_work_sync(struct kthread_delayed_work *work); void kthread_destroy_worker(struct kthread_worker *worker); struct cgroup_subsys_state; void kthread_associate_blkcg(struct cgroup_subsys_state *css); struct cgroup_subsys_state *kthread_blkcg(void); # 5 "../include/linux/psi_types.h" 2 enum psi_task_count { NR_IOWAIT, NR_MEMSTALL, NR_RUNNING, NR_PSI_TASK_COUNTS = 3, }; enum psi_res { PSI_IO, PSI_MEM, PSI_CPU, NR_PSI_RESOURCES = 3, }; enum psi_states { PSI_IO_SOME, PSI_IO_FULL, PSI_MEM_SOME, PSI_MEM_FULL, PSI_CPU_SOME, PSI_NONIDLE, NR_PSI_STATES = 6, }; enum psi_aggregators { PSI_AVGS = 0, PSI_POLL, NR_PSI_AGGREGATORS, }; struct psi_group_cpu { seqcount_t seq __attribute__((__aligned__((1 << (6))))); unsigned int tasks[NR_PSI_TASK_COUNTS]; u32 state_mask; u32 times[NR_PSI_STATES]; u64 state_start; u32 times_prev[NR_PSI_AGGREGATORS][NR_PSI_STATES] __attribute__((__aligned__((1 << (6))))); }; struct psi_window { u64 size; u64 start_time; u64 start_value; u64 prev_growth; }; struct psi_trigger { enum psi_states state; u64 threshold; struct list_head node; struct psi_group *group; wait_queue_head_t event_wait; int event; struct psi_window win; u64 last_event_time; struct kref refcount; }; struct psi_group { struct mutex avgs_lock; struct psi_group_cpu *pcpu; u64 avg_total[NR_PSI_STATES - 1]; u64 avg_last_update; u64 avg_next_update; struct delayed_work avgs_work; u64 total[NR_PSI_AGGREGATORS][NR_PSI_STATES - 1]; unsigned long avg[NR_PSI_STATES - 1][3]; atomic_t poll_scheduled; struct kthread_worker *poll_kworker; struct kthread_delayed_work poll_work; struct mutex trigger_lock; struct list_head triggers; u32 nr_triggers[NR_PSI_STATES - 1]; u32 poll_states; u64 poll_min_period; u64 polling_total[NR_PSI_STATES - 1]; u64 polling_next_update; u64 polling_until; }; # 24 "../include/linux/cgroup-defs.h" 2 struct cgroup; struct cgroup_root; struct cgroup_subsys; struct cgroup_taskset; struct kernfs_node; struct kernfs_ops; struct kernfs_open_file; struct seq_file; struct poll_table_struct; enum cgroup_subsys_id { # 1 "../include/linux/cgroup_subsys.h" 1 # 13 "../include/linux/cgroup_subsys.h" cpuset_cgrp_id, cpu_cgrp_id, cpuacct_cgrp_id, io_cgrp_id, memory_cgrp_id, devices_cgrp_id, freezer_cgrp_id, net_cls_cgrp_id, perf_event_cgrp_id, net_prio_cgrp_id, hugetlb_cgrp_id, pids_cgrp_id, rdma_cgrp_id, debug_cgrp_id, # 45 "../include/linux/cgroup-defs.h" 2 CGROUP_SUBSYS_COUNT, }; enum { CSS_NO_REF = (1 << 0), CSS_ONLINE = (1 << 1), CSS_RELEASED = (1 << 2), CSS_VISIBLE = (1 << 3), CSS_DYING = (1 << 4), }; enum { CGRP_NOTIFY_ON_RELEASE, CGRP_CPUSET_CLONE_CHILDREN, CGRP_FREEZE, CGRP_FROZEN, }; enum { CGRP_ROOT_NOPREFIX = (1 << 1), CGRP_ROOT_XATTR = (1 << 2), CGRP_ROOT_NS_DELEGATE = (1 << 3), CGRP_ROOT_CPUSET_V2_MODE = (1 << 4), CGRP_ROOT_MEMORY_LOCAL_EVENTS = (1 << 5), }; enum { CFTYPE_ONLY_ON_ROOT = (1 << 0), CFTYPE_NOT_ON_ROOT = (1 << 1), CFTYPE_NS_DELEGATABLE = (1 << 2), CFTYPE_NO_PREFIX = (1 << 3), CFTYPE_WORLD_WRITABLE = (1 << 4), CFTYPE_DEBUG = (1 << 5), __CFTYPE_ONLY_ON_DFL = (1 << 16), __CFTYPE_NOT_ON_DFL = (1 << 17), }; struct cgroup_file { struct kernfs_node *kn; unsigned long notified_at; struct timer_list notify_timer; }; # 133 "../include/linux/cgroup-defs.h" struct cgroup_subsys_state { struct cgroup *cgroup; struct cgroup_subsys *ss; struct percpu_ref refcnt; struct list_head sibling; struct list_head children; struct list_head rstat_css_node; int id; unsigned int flags; u64 serial_nr; atomic_t online_cnt; struct work_struct destroy_work; struct rcu_work destroy_rwork; struct cgroup_subsys_state *parent; }; # 190 "../include/linux/cgroup-defs.h" struct css_set { struct cgroup_subsys_state *subsys[CGROUP_SUBSYS_COUNT]; refcount_t refcount; struct css_set *dom_cset; struct cgroup *dfl_cgrp; int nr_tasks; # 222 "../include/linux/cgroup-defs.h" struct list_head tasks; struct list_head mg_tasks; struct list_head dying_tasks; struct list_head task_iters; # 236 "../include/linux/cgroup-defs.h" struct list_head e_cset_node[CGROUP_SUBSYS_COUNT]; struct list_head threaded_csets; struct list_head threaded_csets_node; struct hlist_node hlist; struct list_head cgrp_links; struct list_head mg_preload_node; struct list_head mg_node; # 268 "../include/linux/cgroup-defs.h" struct cgroup *mg_src_cgrp; struct cgroup *mg_dst_cgrp; struct css_set *mg_dst_cset; bool dead; struct callback_head callback_head; }; struct cgroup_base_stat { struct task_cputime cputime; }; # 303 "../include/linux/cgroup-defs.h" struct cgroup_rstat_cpu { struct u64_stats_sync bsync; struct cgroup_base_stat bstat; struct cgroup_base_stat last_bstat; # 328 "../include/linux/cgroup-defs.h" struct cgroup *updated_children; struct cgroup *updated_next; }; struct cgroup_freezer_state { bool freeze; int e_freeze; int nr_frozen_descendants; int nr_frozen_tasks; }; struct cgroup { struct cgroup_subsys_state self; unsigned long flags; # 365 "../include/linux/cgroup-defs.h" int id; int level; int max_depth; # 389 "../include/linux/cgroup-defs.h" int nr_descendants; int nr_dying_descendants; int max_descendants; # 404 "../include/linux/cgroup-defs.h" int nr_populated_csets; int nr_populated_domain_children; int nr_populated_threaded_children; int nr_threaded_children; struct kernfs_node *kn; struct cgroup_file procs_file; struct cgroup_file events_file; # 421 "../include/linux/cgroup-defs.h" u16 subtree_control; u16 subtree_ss_mask; u16 old_subtree_control; u16 old_subtree_ss_mask; struct cgroup_subsys_state *subsys[CGROUP_SUBSYS_COUNT]; struct cgroup_root *root; struct list_head cset_links; # 444 "../include/linux/cgroup-defs.h" struct list_head e_csets[CGROUP_SUBSYS_COUNT]; # 453 "../include/linux/cgroup-defs.h" struct cgroup *dom_cgrp; struct cgroup *old_dom_cgrp; struct cgroup_rstat_cpu *rstat_cpu; struct list_head rstat_css_list; struct cgroup_base_stat pending_bstat; struct cgroup_base_stat bstat; struct prev_cputime prev_cputime; struct list_head pidlists; struct mutex pidlist_mutex; wait_queue_head_t offline_waitq; struct work_struct release_agent_work; struct psi_group psi; struct cgroup_bpf bpf; atomic_t congestion_count; struct cgroup_freezer_state freezer; int ancestor_ids[]; }; struct cgroup_root { struct kernfs_root *kf_root; unsigned int subsys_mask; int hierarchy_id; struct cgroup cgrp; int cgrp_ancestor_id_storage; atomic_t nr_cgrps; struct list_head root_list; unsigned int flags; struct idr cgroup_idr; char release_agent_path[4096]; char name[64]; }; # 540 "../include/linux/cgroup-defs.h" struct cftype { char name[64]; unsigned long private; size_t max_write_len; unsigned int flags; unsigned int file_offset; struct cgroup_subsys *ss; struct list_head node; struct kernfs_ops *kf_ops; int (*open)(struct kernfs_open_file *of); void (*release)(struct kernfs_open_file *of); u64 (*read_u64)(struct cgroup_subsys_state *css, struct cftype *cft); s64 (*read_s64)(struct cgroup_subsys_state *css, struct cftype *cft); int (*seq_show)(struct seq_file *sf, void *v); void *(*seq_start)(struct seq_file *sf, loff_t *ppos); void *(*seq_next)(struct seq_file *sf, void *v, loff_t *ppos); void (*seq_stop)(struct seq_file *sf, void *v); int (*write_u64)(struct cgroup_subsys_state *css, struct cftype *cft, u64 val); int (*write_s64)(struct cgroup_subsys_state *css, struct cftype *cft, s64 val); ssize_t (*write)(struct kernfs_open_file *of, char *buf, size_t nbytes, loff_t off); __poll_t (*poll)(struct kernfs_open_file *of, struct poll_table_struct *pt); struct lock_class_key lockdep_key; }; struct cgroup_subsys { struct cgroup_subsys_state *(*css_alloc)(struct cgroup_subsys_state *parent_css); int (*css_online)(struct cgroup_subsys_state *css); void (*css_offline)(struct cgroup_subsys_state *css); void (*css_released)(struct cgroup_subsys_state *css); void (*css_free)(struct cgroup_subsys_state *css); void (*css_reset)(struct cgroup_subsys_state *css); void (*css_rstat_flush)(struct cgroup_subsys_state *css, int cpu); int (*css_extra_stat_show)(struct seq_file *seq, struct cgroup_subsys_state *css); int (*can_attach)(struct cgroup_taskset *tset); void (*cancel_attach)(struct cgroup_taskset *tset); void (*attach)(struct cgroup_taskset *tset); void (*post_attach)(void); int (*can_fork)(struct task_struct *task); void (*cancel_fork)(struct task_struct *task); void (*fork)(struct task_struct *task); void (*exit)(struct task_struct *task); void (*release)(struct task_struct *task); void (*bind)(struct cgroup_subsys_state *root_css); bool early_init:1; # 664 "../include/linux/cgroup-defs.h" bool implicit_on_dfl:1; # 676 "../include/linux/cgroup-defs.h" bool threaded:1; # 690 "../include/linux/cgroup-defs.h" bool broken_hierarchy:1; bool warned_broken_hierarchy:1; int id; const char *name; const char *legacy_name; struct cgroup_root *root; struct idr css_idr; struct list_head cfts; struct cftype *dfl_cftypes; struct cftype *legacy_cftypes; # 726 "../include/linux/cgroup-defs.h" unsigned int depends_on; }; extern struct percpu_rw_semaphore cgroup_threadgroup_rwsem; # 738 "../include/linux/cgroup-defs.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cgroup_threadgroup_change_begin(struct task_struct *tsk) { percpu_down_read(&cgroup_threadgroup_rwsem); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cgroup_threadgroup_change_end(struct task_struct *tsk) { percpu_up_read(&cgroup_threadgroup_rwsem); } # 796 "../include/linux/cgroup-defs.h" struct sock_cgroup_data { union { struct { u8 is_data; u8 padding; u16 prioidx; u32 classid; } __attribute__((__packed__)); # 813 "../include/linux/cgroup-defs.h" u64 val; }; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 sock_cgroup_prioidx(const struct sock_cgroup_data *skcd) { return (skcd->is_data & 1) ? skcd->prioidx : 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 sock_cgroup_classid(const struct sock_cgroup_data *skcd) { return (skcd->is_data & 1) ? skcd->classid : 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sock_cgroup_set_prioidx(struct sock_cgroup_data *skcd, u16 prioidx) { struct sock_cgroup_data skcd_buf = {{ .val = ({ union { typeof(skcd->val) __val; char __c[1]; } __u; if (1) __read_once_size(&(skcd->val), __u.__c, sizeof(skcd->val)); else __read_once_size_nocheck(&(skcd->val), __u.__c, sizeof(skcd->val)); do { } while (0); __u.__val; }) }}; if (sock_cgroup_prioidx(&skcd_buf) == prioidx) return; if (!(skcd_buf.is_data & 1)) { skcd_buf.val = 0; skcd_buf.is_data = 1; } skcd_buf.prioidx = prioidx; ({ union { typeof(skcd->val) __val; char __c[1]; } __u = { .__val = ( typeof(skcd->val)) (skcd_buf.val) }; __write_once_size(&(skcd->val), __u.__c, sizeof(skcd->val)); __u.__val; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sock_cgroup_set_classid(struct sock_cgroup_data *skcd, u32 classid) { struct sock_cgroup_data skcd_buf = {{ .val = ({ union { typeof(skcd->val) __val; char __c[1]; } __u; if (1) __read_once_size(&(skcd->val), __u.__c, sizeof(skcd->val)); else __read_once_size_nocheck(&(skcd->val), __u.__c, sizeof(skcd->val)); do { } while (0); __u.__val; }) }}; if (sock_cgroup_classid(&skcd_buf) == classid) return; if (!(skcd_buf.is_data & 1)) { skcd_buf.val = 0; skcd_buf.is_data = 1; } skcd_buf.classid = classid; ({ union { typeof(skcd->val) __val; char __c[1]; } __u = { .__val = ( typeof(skcd->val)) (skcd_buf.val) }; __write_once_size(&(skcd->val), __u.__c, sizeof(skcd->val)); __u.__val; }); } # 29 "../include/linux/cgroup.h" 2 # 50 "../include/linux/cgroup.h" struct css_task_iter { struct cgroup_subsys *ss; unsigned int flags; struct list_head *cset_pos; struct list_head *cset_head; struct list_head *tcset_pos; struct list_head *tcset_head; struct list_head *task_pos; struct list_head *tasks_head; struct list_head *mg_tasks_head; struct list_head *dying_tasks_head; struct css_set *cur_cset; struct css_set *cur_dcset; struct task_struct *cur_task; struct list_head iters_node; }; extern struct cgroup_root cgrp_dfl_root; extern struct css_set init_css_set; # 1 "../include/linux/cgroup_subsys.h" 1 # 13 "../include/linux/cgroup_subsys.h" extern struct cgroup_subsys cpuset_cgrp_subsys; extern struct cgroup_subsys cpu_cgrp_subsys; extern struct cgroup_subsys cpuacct_cgrp_subsys; extern struct cgroup_subsys io_cgrp_subsys; extern struct cgroup_subsys memory_cgrp_subsys; extern struct cgroup_subsys devices_cgrp_subsys; extern struct cgroup_subsys freezer_cgrp_subsys; extern struct cgroup_subsys net_cls_cgrp_subsys; extern struct cgroup_subsys perf_event_cgrp_subsys; extern struct cgroup_subsys net_prio_cgrp_subsys; extern struct cgroup_subsys hugetlb_cgrp_subsys; extern struct cgroup_subsys pids_cgrp_subsys; extern struct cgroup_subsys rdma_cgrp_subsys; extern struct cgroup_subsys debug_cgrp_subsys; # 76 "../include/linux/cgroup.h" 2 # 1 "../include/linux/cgroup_subsys.h" 1 # 13 "../include/linux/cgroup_subsys.h" extern struct static_key_true cpuset_cgrp_subsys_enabled_key; extern struct static_key_true cpuset_cgrp_subsys_on_dfl_key; extern struct static_key_true cpu_cgrp_subsys_enabled_key; extern struct static_key_true cpu_cgrp_subsys_on_dfl_key; extern struct static_key_true cpuacct_cgrp_subsys_enabled_key; extern struct static_key_true cpuacct_cgrp_subsys_on_dfl_key; extern struct static_key_true io_cgrp_subsys_enabled_key; extern struct static_key_true io_cgrp_subsys_on_dfl_key; extern struct static_key_true memory_cgrp_subsys_enabled_key; extern struct static_key_true memory_cgrp_subsys_on_dfl_key; extern struct static_key_true devices_cgrp_subsys_enabled_key; extern struct static_key_true devices_cgrp_subsys_on_dfl_key; extern struct static_key_true freezer_cgrp_subsys_enabled_key; extern struct static_key_true freezer_cgrp_subsys_on_dfl_key; extern struct static_key_true net_cls_cgrp_subsys_enabled_key; extern struct static_key_true net_cls_cgrp_subsys_on_dfl_key; extern struct static_key_true perf_event_cgrp_subsys_enabled_key; extern struct static_key_true perf_event_cgrp_subsys_on_dfl_key; extern struct static_key_true net_prio_cgrp_subsys_enabled_key; extern struct static_key_true net_prio_cgrp_subsys_on_dfl_key; extern struct static_key_true hugetlb_cgrp_subsys_enabled_key; extern struct static_key_true hugetlb_cgrp_subsys_on_dfl_key; extern struct static_key_true pids_cgrp_subsys_enabled_key; extern struct static_key_true pids_cgrp_subsys_on_dfl_key; extern struct static_key_true rdma_cgrp_subsys_enabled_key; extern struct static_key_true rdma_cgrp_subsys_on_dfl_key; extern struct static_key_true debug_cgrp_subsys_enabled_key; extern struct static_key_true debug_cgrp_subsys_on_dfl_key; # 82 "../include/linux/cgroup.h" 2 # 98 "../include/linux/cgroup.h" bool css_has_online_children(struct cgroup_subsys_state *css); struct cgroup_subsys_state *css_from_id(int id, struct cgroup_subsys *ss); struct cgroup_subsys_state *cgroup_e_css(struct cgroup *cgroup, struct cgroup_subsys *ss); struct cgroup_subsys_state *cgroup_get_e_css(struct cgroup *cgroup, struct cgroup_subsys *ss); struct cgroup_subsys_state *css_tryget_online_from_dir(struct dentry *dentry, struct cgroup_subsys *ss); struct cgroup *cgroup_get_from_path(const char *path); struct cgroup *cgroup_get_from_fd(int fd); int cgroup_attach_task_all(struct task_struct *from, struct task_struct *); int cgroup_transfer_tasks(struct cgroup *to, struct cgroup *from); int cgroup_add_dfl_cftypes(struct cgroup_subsys *ss, struct cftype *cfts); int cgroup_add_legacy_cftypes(struct cgroup_subsys *ss, struct cftype *cfts); int cgroup_rm_cftypes(struct cftype *cfts); void cgroup_file_notify(struct cgroup_file *cfile); int task_cgroup_path(struct task_struct *task, char *buf, size_t buflen); int cgroupstats_build(struct cgroupstats *stats, struct dentry *dentry); int proc_cgroup_show(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *tsk); void cgroup_fork(struct task_struct *p); extern int cgroup_can_fork(struct task_struct *p); extern void cgroup_cancel_fork(struct task_struct *p); extern void cgroup_post_fork(struct task_struct *p); void cgroup_exit(struct task_struct *p); void cgroup_release(struct task_struct *p); void cgroup_free(struct task_struct *p); int cgroup_init_early(void); int cgroup_init(void); int cgroup_parse_float(const char *input, unsigned dec_shift, s64 *v); struct cgroup_subsys_state *css_next_child(struct cgroup_subsys_state *pos, struct cgroup_subsys_state *parent); struct cgroup_subsys_state *css_next_descendant_pre(struct cgroup_subsys_state *pos, struct cgroup_subsys_state *css); struct cgroup_subsys_state *css_rightmost_descendant(struct cgroup_subsys_state *pos); struct cgroup_subsys_state *css_next_descendant_post(struct cgroup_subsys_state *pos, struct cgroup_subsys_state *css); struct task_struct *cgroup_taskset_first(struct cgroup_taskset *tset, struct cgroup_subsys_state **dst_cssp); struct task_struct *cgroup_taskset_next(struct cgroup_taskset *tset, struct cgroup_subsys_state **dst_cssp); void css_task_iter_start(struct cgroup_subsys_state *css, unsigned int flags, struct css_task_iter *it); struct task_struct *css_task_iter_next(struct css_task_iter *it); void css_task_iter_end(struct css_task_iter *it); # 313 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void css_get(struct cgroup_subsys_state *css) { if (!(css->flags & CSS_NO_REF)) percpu_ref_get(&css->refcnt); } # 326 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void css_get_many(struct cgroup_subsys_state *css, unsigned int n) { if (!(css->flags & CSS_NO_REF)) percpu_ref_get_many(&css->refcnt, n); } # 343 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool css_tryget(struct cgroup_subsys_state *css) { if (!(css->flags & CSS_NO_REF)) return percpu_ref_tryget(&css->refcnt); return true; } # 360 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool css_tryget_online(struct cgroup_subsys_state *css) { if (!(css->flags & CSS_NO_REF)) return percpu_ref_tryget_live(&css->refcnt); return true; } # 382 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool css_is_dying(struct cgroup_subsys_state *css) { return !(css->flags & CSS_NO_REF) && percpu_ref_is_dying(&css->refcnt); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void css_put(struct cgroup_subsys_state *css) { if (!(css->flags & CSS_NO_REF)) percpu_ref_put(&css->refcnt); } # 406 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void css_put_many(struct cgroup_subsys_state *css, unsigned int n) { if (!(css->flags & CSS_NO_REF)) percpu_ref_put_many(&css->refcnt, n); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cgroup_get(struct cgroup *cgrp) { css_get(&cgrp->self); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cgroup_tryget(struct cgroup *cgrp) { return css_tryget(&cgrp->self); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cgroup_put(struct cgroup *cgrp) { css_put(&cgrp->self); } # 441 "../include/linux/cgroup.h" extern struct mutex cgroup_mutex; extern spinlock_t css_set_lock; # 471 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct css_set *task_css_set(struct task_struct *task) { return ({ typeof(*((task)->cgroups)) *________p1 = (typeof(*((task)->cgroups)) *)({ union { typeof(((task)->cgroups)) __val; char __c[1]; } __u; if (1) __read_once_size(&(((task)->cgroups)), __u.__c, sizeof(((task)->cgroups))); else __read_once_size_nocheck(&(((task)->cgroups)), __u.__c, sizeof(((task)->cgroups))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((lock_is_held(&(&cgroup_mutex)->dep_map) || lock_is_held(&(&css_set_lock)->dep_map) || ((task)->flags & 0x00000004) || (false)) || rcu_read_lock_held()))) { __warned = true; lockdep_rcu_suspicious("../include/linux/cgroup.h", 473, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*((task)->cgroups)) *)(________p1)); }); } # 483 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cgroup_subsys_state *task_css(struct task_struct *task, int subsys_id) { return ({ typeof(*(((task))->cgroups)) *________p1 = (typeof(*(((task))->cgroups)) *)({ union { typeof((((task))->cgroups)) __val; char __c[1]; } __u; if (1) __read_once_size(&((((task))->cgroups)), __u.__c, sizeof((((task))->cgroups))); else __read_once_size_nocheck(&((((task))->cgroups)), __u.__c, sizeof((((task))->cgroups))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((lock_is_held(&(&cgroup_mutex)->dep_map) || lock_is_held(&(&css_set_lock)->dep_map) || (((task))->flags & 0x00000004) || ((false))) || rcu_read_lock_held()))) { __warned = true; lockdep_rcu_suspicious("../include/linux/cgroup.h", 486, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(((task))->cgroups)) *)(________p1)); })->subsys[(subsys_id)]; } # 498 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cgroup_subsys_state * task_get_css(struct task_struct *task, int subsys_id) { struct cgroup_subsys_state *css; rcu_read_lock(); while (true) { css = task_css(task, subsys_id); if (__builtin_expect(!!(css_tryget(css)), 1)) break; cpu_relax(); } rcu_read_unlock(); return css; } # 528 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool task_css_is_root(struct task_struct *task, int subsys_id) { return ({ typeof(*(((task))->cgroups)) *________p1 = (typeof(*(((task))->cgroups)) *)({ union { typeof((((task))->cgroups)) __val; char __c[1]; } __u; if (1) __read_once_size(&((((task))->cgroups)), __u.__c, sizeof((((task))->cgroups))); else __read_once_size_nocheck(&((((task))->cgroups)), __u.__c, sizeof((((task))->cgroups))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((lock_is_held(&(&cgroup_mutex)->dep_map) || lock_is_held(&(&css_set_lock)->dep_map) || (((task))->flags & 0x00000004) || ((true))) || rcu_read_lock_held()))) { __warned = true; lockdep_rcu_suspicious("../include/linux/cgroup.h", 530, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(((task))->cgroups)) *)(________p1)); })->subsys[(subsys_id)] == init_css_set.subsys[subsys_id]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cgroup *task_cgroup(struct task_struct *task, int subsys_id) { return task_css(task, subsys_id)->cgroup; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cgroup *task_dfl_cgroup(struct task_struct *task) { return task_css_set(task)->dfl_cgrp; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cgroup *cgroup_parent(struct cgroup *cgrp) { struct cgroup_subsys_state *parent_css = cgrp->self.parent; if (parent_css) return ({ void *__mptr = (void *)(parent_css); do { extern void __compiletime_assert_550(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(parent_css)), typeof(((struct cgroup *)0)->self)) && !__builtin_types_compatible_p(typeof(*(parent_css)), typeof(void))))) __compiletime_assert_550(); } while (0); ((struct cgroup *)(__mptr - __builtin_offsetof(struct cgroup, self))); }); return ((void *)0); } # 563 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cgroup_is_descendant(struct cgroup *cgrp, struct cgroup *ancestor) { if (cgrp->root != ancestor->root || cgrp->level < ancestor->level) return false; return cgrp->ancestor_ids[ancestor->level] == ancestor->id; } # 582 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cgroup *cgroup_ancestor(struct cgroup *cgrp, int ancestor_level) { if (cgrp->level < ancestor_level) return ((void *)0); while (cgrp && cgrp->level > ancestor_level) cgrp = cgroup_parent(cgrp); return cgrp; } # 601 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool task_under_cgroup_hierarchy(struct task_struct *task, struct cgroup *ancestor) { struct css_set *cset = task_css_set(task); return cgroup_is_descendant(cset->dfl_cgrp, ancestor); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cgroup_is_populated(struct cgroup *cgrp) { return cgrp->nr_populated_csets + cgrp->nr_populated_domain_children + cgrp->nr_populated_threaded_children; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) ino_t cgroup_ino(struct cgroup *cgrp) { return cgrp->kn->id.ino; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cftype *of_cft(struct kernfs_open_file *of) { return of->kn->priv; } struct cgroup_subsys_state *of_css(struct kernfs_open_file *of); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cftype *seq_cft(struct seq_file *seq) { return of_cft(seq->private); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cgroup_subsys_state *seq_css(struct seq_file *seq) { return of_css(seq->private); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cgroup_name(struct cgroup *cgrp, char *buf, size_t buflen) { return kernfs_name(cgrp->kn, buf, buflen); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cgroup_path(struct cgroup *cgrp, char *buf, size_t buflen) { return kernfs_path(cgrp->kn, buf, buflen); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pr_cont_cgroup_name(struct cgroup *cgrp) { pr_cont_kernfs_name(cgrp->kn); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pr_cont_cgroup_path(struct cgroup *cgrp) { pr_cont_kernfs_path(cgrp->kn); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct psi_group *cgroup_psi(struct cgroup *cgrp) { return &cgrp->psi; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cgroup_init_kthreadd(void) { get_current()->no_cgroup_migration = 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cgroup_kthread_ready(void) { get_current()->no_cgroup_migration = 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) union kernfs_node_id *cgroup_get_kernfs_id(struct cgroup *cgrp) { return &cgrp->kn->id; } void cgroup_path_from_kernfs_id(const union kernfs_node_id *id, char *buf, size_t buflen); # 749 "../include/linux/cgroup.h" void cgroup_rstat_updated(struct cgroup *cgrp, int cpu); void cgroup_rstat_flush(struct cgroup *cgrp); void cgroup_rstat_flush_irqsafe(struct cgroup *cgrp); void cgroup_rstat_flush_hold(struct cgroup *cgrp); void cgroup_rstat_flush_release(void); void cpuacct_charge(struct task_struct *tsk, u64 cputime); void cpuacct_account_field(struct task_struct *tsk, int index, u64 val); void __cgroup_account_cputime(struct cgroup *cgrp, u64 delta_exec); void __cgroup_account_cputime_field(struct cgroup *cgrp, enum cpu_usage_stat index, u64 delta_exec); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cgroup_account_cputime(struct task_struct *task, u64 delta_exec) { struct cgroup *cgrp; cpuacct_charge(task, delta_exec); rcu_read_lock(); cgrp = task_dfl_cgroup(task); if (cgroup_parent(cgrp)) __cgroup_account_cputime(cgrp, delta_exec); rcu_read_unlock(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cgroup_account_cputime_field(struct task_struct *task, enum cpu_usage_stat index, u64 delta_exec) { struct cgroup *cgrp; cpuacct_account_field(task, index, delta_exec); rcu_read_lock(); cgrp = task_dfl_cgroup(task); if (cgroup_parent(cgrp)) __cgroup_account_cputime_field(cgrp, index, delta_exec); rcu_read_unlock(); } # 817 "../include/linux/cgroup.h" extern spinlock_t cgroup_sk_update_lock; void cgroup_sk_alloc_disable(void); void cgroup_sk_alloc(struct sock_cgroup_data *skcd); void cgroup_sk_free(struct sock_cgroup_data *skcd); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cgroup *sock_cgroup_ptr(struct sock_cgroup_data *skcd) { unsigned long v; v = ({ union { typeof(skcd->val) __val; char __c[1]; } __u; if (1) __read_once_size(&(skcd->val), __u.__c, sizeof(skcd->val)); else __read_once_size_nocheck(&(skcd->val), __u.__c, sizeof(skcd->val)); do { } while (0); __u.__val; }); if (v & 1) return &cgrp_dfl_root.cgrp; return (struct cgroup *)(unsigned long)v ?: &cgrp_dfl_root.cgrp; } # 851 "../include/linux/cgroup.h" struct cgroup_namespace { refcount_t count; struct ns_common ns; struct user_namespace *user_ns; struct ucounts *ucounts; struct css_set *root_cset; }; extern struct cgroup_namespace init_cgroup_ns; void free_cgroup_ns(struct cgroup_namespace *ns); struct cgroup_namespace *copy_cgroup_ns(unsigned long flags, struct user_namespace *user_ns, struct cgroup_namespace *old_ns); int cgroup_path_ns(struct cgroup *cgrp, char *buf, size_t buflen, struct cgroup_namespace *ns); # 884 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void get_cgroup_ns(struct cgroup_namespace *ns) { if (ns) refcount_inc_checked(&ns->count); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void put_cgroup_ns(struct cgroup_namespace *ns) { if (ns && refcount_dec_and_test_checked(&ns->count)) free_cgroup_ns(ns); } 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); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cgroup_task_freeze(struct task_struct *task) { bool ret; if (task->flags & 0x00200000) return false; rcu_read_lock(); ret = test_bit(CGRP_FREEZE, &task_dfl_cgroup(task)->flags); rcu_read_unlock(); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cgroup_task_frozen(struct task_struct *task) { return task->frozen; } # 940 "../include/linux/cgroup.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cgroup_bpf_get(struct cgroup *cgrp) { percpu_ref_get(&cgrp->bpf.refcnt); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cgroup_bpf_put(struct cgroup *cgrp) { percpu_ref_put(&cgrp->bpf.refcnt); } # 12 "../include/net/netprio_cgroup.h" 2 struct netprio_map { struct callback_head rcu; u32 priomap_len; u32 priomap[]; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 task_netprioidx(struct task_struct *p) { struct cgroup_subsys_state *css; u32 idx; rcu_read_lock(); css = task_css(p, net_prio_cgrp_id); idx = css->cgroup->id; rcu_read_unlock(); return idx; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sock_update_netprioidx(struct sock_cgroup_data *skcd) { if (((preempt_count() & ((((1UL << (4))-1) << ((0 + 8) + 8)) | (((1UL << (8))-1) << (0 + 8)) | (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))))) return; sock_cgroup_set_prioidx(skcd, task_netprioidx(get_current())); } # 43 "../include/linux/netdevice.h" 2 # 1 "../include/net/xdp.h" 1 # 36 "../include/net/xdp.h" enum xdp_mem_type { MEM_TYPE_PAGE_SHARED = 0, MEM_TYPE_PAGE_ORDER0, MEM_TYPE_PAGE_POOL, MEM_TYPE_ZERO_COPY, MEM_TYPE_MAX, }; struct xdp_mem_info { u32 type; u32 id; }; struct page_pool; struct zero_copy_allocator { void (*free)(struct zero_copy_allocator *zca, unsigned long handle); }; struct xdp_rxq_info { struct net_device *dev; u32 queue_index; u32 reg_state; struct xdp_mem_info mem; } __attribute__((__aligned__((1 << (6))))); struct xdp_buff { void *data; void *data_end; void *data_meta; void *data_hard_start; unsigned long handle; struct xdp_rxq_info *rxq; }; struct xdp_frame { void *data; u16 len; u16 headroom; u16 metasize; struct xdp_mem_info mem; struct net_device *dev_rx; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void xdp_scrub_frame(struct xdp_frame *frame) { frame->data = ((void *)0); frame->dev_rx = ((void *)0); } struct xdp_frame *xdp_convert_zc_to_xdp_frame(struct xdp_buff *xdp); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct xdp_frame *convert_to_xdp_frame(struct xdp_buff *xdp) { struct xdp_frame *xdp_frame; int metasize; int headroom; if (xdp->rxq->mem.type == MEM_TYPE_ZERO_COPY) return xdp_convert_zc_to_xdp_frame(xdp); headroom = xdp->data - xdp->data_hard_start; metasize = xdp->data - xdp->data_meta; metasize = metasize > 0 ? metasize : 0; if (__builtin_expect(!!((headroom - metasize) < sizeof(*xdp_frame)), 0)) return ((void *)0); xdp_frame = xdp->data_hard_start; xdp_frame->data = xdp->data; xdp_frame->len = xdp->data_end - xdp->data; xdp_frame->headroom = headroom - sizeof(*xdp_frame); xdp_frame->metasize = metasize; xdp_frame->mem = xdp->rxq->mem; return xdp_frame; } void xdp_return_frame(struct xdp_frame *xdpf); void xdp_return_frame_rx_napi(struct xdp_frame *xdpf); void xdp_return_buff(struct xdp_buff *xdp); void __xdp_release_frame(void *data, struct xdp_mem_info *mem); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void xdp_release_frame(struct xdp_frame *xdpf) { struct xdp_mem_info *mem = &xdpf->mem; if (mem->type == MEM_TYPE_PAGE_POOL) __xdp_release_frame(xdpf->data, mem); } int xdp_rxq_info_reg(struct xdp_rxq_info *xdp_rxq, struct net_device *dev, u32 queue_index); void xdp_rxq_info_unreg(struct xdp_rxq_info *xdp_rxq); void xdp_rxq_info_unused(struct xdp_rxq_info *xdp_rxq); bool xdp_rxq_info_is_reg(struct xdp_rxq_info *xdp_rxq); int xdp_rxq_info_reg_mem_model(struct xdp_rxq_info *xdp_rxq, enum xdp_mem_type type, void *allocator); void xdp_rxq_info_unreg_mem_model(struct xdp_rxq_info *xdp_rxq); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void xdp_set_data_meta_invalid(struct xdp_buff *xdp) { xdp->data_meta = xdp->data + 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) bool xdp_data_meta_unsupported(const struct xdp_buff *xdp) { return __builtin_expect(!!(xdp->data_meta > xdp->data), 0); } struct xdp_attachment_info { struct bpf_prog *prog; u32 flags; }; struct netdev_bpf; int xdp_attachment_query(struct xdp_attachment_info *info, struct netdev_bpf *bpf); bool xdp_attachment_flags_ok(struct xdp_attachment_info *info, struct netdev_bpf *bpf); void xdp_attachment_setup(struct xdp_attachment_info *info, struct netdev_bpf *bpf); # 44 "../include/linux/netdevice.h" 2 # 1 "../include/uapi/linux/neighbour.h" 1 # 1 "../include/linux/netlink.h" 1 # 1 "../include/net/scm.h" 1 # 1 "../include/linux/security.h" 1 # 35 "../include/linux/security.h" struct linux_binprm; struct cred; struct rlimit; struct kernel_siginfo; struct sembuf; struct kern_ipc_perm; struct audit_context; struct super_block; struct inode; struct dentry; struct file; struct vfsmount; struct path; struct qstr; struct iattr; struct fown_struct; struct file_operations; struct msg_msg; struct xattr; struct kernfs_node; struct xfrm_sec_ctx; struct mm_struct; struct fs_context; struct fs_parameter; enum fs_value_type; # 71 "../include/linux/security.h" struct ctl_table; struct audit_krule; struct user_namespace; struct timezone; enum lsm_event { LSM_POLICY_CHANGE, }; extern int cap_capable(const struct cred *cred, struct user_namespace *ns, int cap, unsigned int opts); extern int cap_settime(const struct timespec64 *ts, const struct timezone *tz); extern int cap_ptrace_access_check(struct task_struct *child, unsigned int mode); extern int cap_ptrace_traceme(struct task_struct *parent); extern int cap_capget(struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted); extern int cap_capset(struct cred *new, const struct cred *old, const kernel_cap_t *effective, const kernel_cap_t *inheritable, const kernel_cap_t *permitted); extern int cap_bprm_set_creds(struct linux_binprm *bprm); extern int cap_inode_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags); extern int cap_inode_removexattr(struct dentry *dentry, const char *name); extern int cap_inode_need_killpriv(struct dentry *dentry); extern int cap_inode_killpriv(struct dentry *dentry); extern int cap_inode_getsecurity(struct inode *inode, const char *name, void **buffer, bool alloc); extern int cap_mmap_addr(unsigned long addr); extern int cap_mmap_file(struct file *file, unsigned long reqprot, unsigned long prot, unsigned long flags); extern int cap_task_fix_setuid(struct cred *new, const struct cred *old, int flags); extern int cap_task_prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); extern int cap_task_setscheduler(struct task_struct *p); extern int cap_task_setioprio(struct task_struct *p, int ioprio); extern int cap_task_setnice(struct task_struct *p, int nice); extern int cap_vm_enough_memory(struct mm_struct *mm, long pages); struct msghdr; struct sk_buff; struct sock; struct sockaddr; struct socket; struct flowi; struct dst_entry; struct xfrm_selector; struct xfrm_policy; struct xfrm_state; struct xfrm_user_sec_ctx; struct seq_file; struct sctp_endpoint; extern unsigned long mmap_min_addr; extern unsigned long dac_mmap_min_addr; # 152 "../include/linux/security.h" struct sched_param; struct request_sock; extern int mmap_min_addr_handler(struct ctl_table *table, int write, void *buffer, size_t *lenp, loff_t *ppos); typedef int (*initxattrs) (struct inode *inode, const struct xattr *xattr_array, void *fs_data); enum kernel_load_data_id { LOADING_UNKNOWN, LOADING_FIRMWARE, LOADING_FIRMWARE_PREALLOC_BUFFER, LOADING_MODULE, LOADING_KEXEC_IMAGE, LOADING_KEXEC_INITRAMFS, LOADING_POLICY, LOADING_X509_CERTIFICATE, LOADING_MAX_ID, }; static const char * const kernel_load_data_str[] = { "unknown", "firmware", "firmware", "kernel-module", "kexec-image", "kexec-initramfs", "security-policy", "x509-certificate", "", }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *kernel_load_data_id_str(enum kernel_load_data_id id) { if ((unsigned)id >= LOADING_MAX_ID) return kernel_load_data_str[LOADING_UNKNOWN]; return kernel_load_data_str[id]; } int call_blocking_lsm_notifier(enum lsm_event event, void *data); int register_blocking_lsm_notifier(struct notifier_block *nb); int unregister_blocking_lsm_notifier(struct notifier_block *nb); extern int security_init(void); int security_binder_set_context_mgr(struct task_struct *mgr); int security_binder_transaction(struct task_struct *from, struct task_struct *to); int security_binder_transfer_binder(struct task_struct *from, struct task_struct *to); int security_binder_transfer_file(struct task_struct *from, struct task_struct *to, struct file *file); int security_ptrace_access_check(struct task_struct *child, unsigned int mode); int security_ptrace_traceme(struct task_struct *parent); int security_capget(struct task_struct *target, kernel_cap_t *effective, kernel_cap_t *inheritable, kernel_cap_t *permitted); int security_capset(struct cred *new, const struct cred *old, const kernel_cap_t *effective, const kernel_cap_t *inheritable, const kernel_cap_t *permitted); int security_capable(const struct cred *cred, struct user_namespace *ns, int cap, unsigned int opts); int security_quotactl(int cmds, int type, int id, struct super_block *sb); int security_quota_on(struct dentry *dentry); int security_syslog(int type); int security_settime64(const struct timespec64 *ts, const struct timezone *tz); int security_vm_enough_memory_mm(struct mm_struct *mm, long pages); int security_bprm_set_creds(struct linux_binprm *bprm); int security_bprm_check(struct linux_binprm *bprm); void security_bprm_committing_creds(struct linux_binprm *bprm); void security_bprm_committed_creds(struct linux_binprm *bprm); int security_fs_context_dup(struct fs_context *fc, struct fs_context *src_fc); int security_fs_context_parse_param(struct fs_context *fc, struct fs_parameter *param); int security_sb_alloc(struct super_block *sb); void security_sb_free(struct super_block *sb); void security_free_mnt_opts(void **mnt_opts); int security_sb_eat_lsm_opts(char *options, void **mnt_opts); int security_sb_remount(struct super_block *sb, void *mnt_opts); int security_sb_kern_mount(struct super_block *sb); int security_sb_show_options(struct seq_file *m, struct super_block *sb); int security_sb_statfs(struct dentry *dentry); int security_sb_mount(const char *dev_name, const struct path *path, const char *type, unsigned long flags, void *data); int security_sb_umount(struct vfsmount *mnt, int flags); int security_sb_pivotroot(const struct path *old_path, const struct path *new_path); int security_sb_set_mnt_opts(struct super_block *sb, void *mnt_opts, unsigned long kern_flags, unsigned long *set_kern_flags); int security_sb_clone_mnt_opts(const struct super_block *oldsb, struct super_block *newsb, unsigned long kern_flags, unsigned long *set_kern_flags); int security_add_mnt_opt(const char *option, const char *val, int len, void **mnt_opts); int security_move_mount(const struct path *from_path, const struct path *to_path); int security_dentry_init_security(struct dentry *dentry, int mode, const struct qstr *name, void **ctx, u32 *ctxlen); int security_dentry_create_files_as(struct dentry *dentry, int mode, struct qstr *name, const struct cred *old, struct cred *new); int security_inode_alloc(struct inode *inode); void security_inode_free(struct inode *inode); int security_inode_init_security(struct inode *inode, struct inode *dir, const struct qstr *qstr, initxattrs initxattrs, void *fs_data); int security_old_inode_init_security(struct inode *inode, struct inode *dir, const struct qstr *qstr, const char **name, void **value, size_t *len); int security_inode_create(struct inode *dir, struct dentry *dentry, umode_t mode); int security_inode_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_dentry); int security_inode_unlink(struct inode *dir, struct dentry *dentry); int security_inode_symlink(struct inode *dir, struct dentry *dentry, const char *old_name); int security_inode_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); int security_inode_rmdir(struct inode *dir, struct dentry *dentry); int security_inode_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev); int security_inode_rename(struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry, unsigned int flags); int security_inode_readlink(struct dentry *dentry); int security_inode_follow_link(struct dentry *dentry, struct inode *inode, bool rcu); int security_inode_permission(struct inode *inode, int mask); int security_inode_setattr(struct dentry *dentry, struct iattr *attr); int security_inode_getattr(const struct path *path); int security_inode_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags); void security_inode_post_setxattr(struct dentry *dentry, const char *name, const void *value, size_t size, int flags); int security_inode_getxattr(struct dentry *dentry, const char *name); int security_inode_listxattr(struct dentry *dentry); int security_inode_removexattr(struct dentry *dentry, const char *name); int security_inode_need_killpriv(struct dentry *dentry); int security_inode_killpriv(struct dentry *dentry); int security_inode_getsecurity(struct inode *inode, const char *name, void **buffer, bool alloc); int security_inode_setsecurity(struct inode *inode, const char *name, const void *value, size_t size, int flags); int security_inode_listsecurity(struct inode *inode, char *buffer, size_t buffer_size); void security_inode_getsecid(struct inode *inode, u32 *secid); int security_inode_copy_up(struct dentry *src, struct cred **new); int security_inode_copy_up_xattr(const char *name); int security_kernfs_init_security(struct kernfs_node *kn_dir, struct kernfs_node *kn); int security_file_permission(struct file *file, int mask); int security_file_alloc(struct file *file); void security_file_free(struct file *file); int security_file_ioctl(struct file *file, unsigned int cmd, unsigned long arg); int security_mmap_file(struct file *file, unsigned long prot, unsigned long flags); int security_mmap_addr(unsigned long addr); int security_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot, unsigned long prot); int security_file_lock(struct file *file, unsigned int cmd); int security_file_fcntl(struct file *file, unsigned int cmd, unsigned long arg); void security_file_set_fowner(struct file *file); int security_file_send_sigiotask(struct task_struct *tsk, struct fown_struct *fown, int sig); int security_file_receive(struct file *file); int security_file_open(struct file *file); int security_task_alloc(struct task_struct *task, unsigned long clone_flags); void security_task_free(struct task_struct *task); int security_cred_alloc_blank(struct cred *cred, gfp_t gfp); void security_cred_free(struct cred *cred); int security_prepare_creds(struct cred *new, const struct cred *old, gfp_t gfp); void security_transfer_creds(struct cred *new, const struct cred *old); void security_cred_getsecid(const struct cred *c, u32 *secid); int security_kernel_act_as(struct cred *new, u32 secid); int security_kernel_create_files_as(struct cred *new, struct inode *inode); int security_kernel_module_request(char *kmod_name); int security_kernel_load_data(enum kernel_load_data_id id); int security_kernel_read_file(struct file *file, enum kernel_read_file_id id); int security_kernel_post_read_file(struct file *file, char *buf, loff_t size, enum kernel_read_file_id id); int security_task_fix_setuid(struct cred *new, const struct cred *old, int flags); int security_task_setpgid(struct task_struct *p, pid_t pgid); int security_task_getpgid(struct task_struct *p); int security_task_getsid(struct task_struct *p); void security_task_getsecid(struct task_struct *p, u32 *secid); int security_task_setnice(struct task_struct *p, int nice); int security_task_setioprio(struct task_struct *p, int ioprio); int security_task_getioprio(struct task_struct *p); int security_task_prlimit(const struct cred *cred, const struct cred *tcred, unsigned int flags); int security_task_setrlimit(struct task_struct *p, unsigned int resource, struct rlimit *new_rlim); int security_task_setscheduler(struct task_struct *p); int security_task_getscheduler(struct task_struct *p); int security_task_movememory(struct task_struct *p); int security_task_kill(struct task_struct *p, struct kernel_siginfo *info, int sig, const struct cred *cred); int security_task_prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); void security_task_to_inode(struct task_struct *p, struct inode *inode); int security_ipc_permission(struct kern_ipc_perm *ipcp, short flag); void security_ipc_getsecid(struct kern_ipc_perm *ipcp, u32 *secid); int security_msg_msg_alloc(struct msg_msg *msg); void security_msg_msg_free(struct msg_msg *msg); int security_msg_queue_alloc(struct kern_ipc_perm *msq); void security_msg_queue_free(struct kern_ipc_perm *msq); int security_msg_queue_associate(struct kern_ipc_perm *msq, int msqflg); int security_msg_queue_msgctl(struct kern_ipc_perm *msq, int cmd); int security_msg_queue_msgsnd(struct kern_ipc_perm *msq, struct msg_msg *msg, int msqflg); int security_msg_queue_msgrcv(struct kern_ipc_perm *msq, struct msg_msg *msg, struct task_struct *target, long type, int mode); int security_shm_alloc(struct kern_ipc_perm *shp); void security_shm_free(struct kern_ipc_perm *shp); int security_shm_associate(struct kern_ipc_perm *shp, int shmflg); int security_shm_shmctl(struct kern_ipc_perm *shp, int cmd); int security_shm_shmat(struct kern_ipc_perm *shp, char *shmaddr, int shmflg); int security_sem_alloc(struct kern_ipc_perm *sma); void security_sem_free(struct kern_ipc_perm *sma); int security_sem_associate(struct kern_ipc_perm *sma, int semflg); int security_sem_semctl(struct kern_ipc_perm *sma, int cmd); int security_sem_semop(struct kern_ipc_perm *sma, struct sembuf *sops, unsigned nsops, int alter); void security_d_instantiate(struct dentry *dentry, struct inode *inode); int security_getprocattr(struct task_struct *p, const char *lsm, char *name, char **value); int security_setprocattr(const char *lsm, const char *name, void *value, size_t size); int security_netlink_send(struct sock *sk, struct sk_buff *skb); int security_ismaclabel(const char *name); int security_secid_to_secctx(u32 secid, char **secdata, u32 *seclen); int security_secctx_to_secid(const char *secdata, u32 seclen, u32 *secid); void security_release_secctx(char *secdata, u32 seclen); void security_inode_invalidate_secctx(struct inode *inode); int security_inode_notifysecctx(struct inode *inode, void *ctx, u32 ctxlen); int security_inode_setsecctx(struct dentry *dentry, void *ctx, u32 ctxlen); int security_inode_getsecctx(struct inode *inode, void **ctx, u32 *ctxlen); # 1211 "../include/linux/security.h" int security_unix_stream_connect(struct sock *sock, struct sock *other, struct sock *newsk); int security_unix_may_send(struct socket *sock, struct socket *other); int security_socket_create(int family, int type, int protocol, int kern); int security_socket_post_create(struct socket *sock, int family, int type, int protocol, int kern); int security_socket_socketpair(struct socket *socka, struct socket *sockb); int security_socket_bind(struct socket *sock, struct sockaddr *address, int addrlen); int security_socket_connect(struct socket *sock, struct sockaddr *address, int addrlen); int security_socket_listen(struct socket *sock, int backlog); int security_socket_accept(struct socket *sock, struct socket *newsock); int security_socket_sendmsg(struct socket *sock, struct msghdr *msg, int size); int security_socket_recvmsg(struct socket *sock, struct msghdr *msg, int size, int flags); int security_socket_getsockname(struct socket *sock); int security_socket_getpeername(struct socket *sock); int security_socket_getsockopt(struct socket *sock, int level, int optname); int security_socket_setsockopt(struct socket *sock, int level, int optname); int security_socket_shutdown(struct socket *sock, int how); int security_sock_rcv_skb(struct sock *sk, struct sk_buff *skb); int security_socket_getpeersec_stream(struct socket *sock, char *optval, int *optlen, unsigned len); int security_socket_getpeersec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid); int security_sk_alloc(struct sock *sk, int family, gfp_t priority); void security_sk_free(struct sock *sk); void security_sk_clone(const struct sock *sk, struct sock *newsk); void security_sk_classify_flow(struct sock *sk, struct flowi *fl); void security_req_classify_flow(const struct request_sock *req, struct flowi *fl); void security_sock_graft(struct sock*sk, struct socket *parent); int security_inet_conn_request(struct sock *sk, struct sk_buff *skb, struct request_sock *req); void security_inet_csk_clone(struct sock *newsk, const struct request_sock *req); void security_inet_conn_established(struct sock *sk, struct sk_buff *skb); int security_secmark_relabel_packet(u32 secid); void security_secmark_refcount_inc(void); void security_secmark_refcount_dec(void); int security_tun_dev_alloc_security(void **security); void security_tun_dev_free_security(void *security); int security_tun_dev_create(void); int security_tun_dev_attach_queue(void *security); int security_tun_dev_attach(struct sock *sk, void *security); int security_tun_dev_open(void *security); int security_sctp_assoc_request(struct sctp_endpoint *ep, struct sk_buff *skb); int security_sctp_bind_connect(struct sock *sk, int optname, struct sockaddr *address, int addrlen); void security_sctp_sk_clone(struct sctp_endpoint *ep, struct sock *sk, struct sock *newsk); # 1479 "../include/linux/security.h" int security_ib_pkey_access(void *sec, u64 subnet_prefix, u16 pkey); int security_ib_endport_manage_subnet(void *sec, const char *name, u8 port_num); int security_ib_alloc_security(void **sec); void security_ib_free_security(void *sec); # 1506 "../include/linux/security.h" int security_xfrm_policy_alloc(struct xfrm_sec_ctx **ctxp, struct xfrm_user_sec_ctx *sec_ctx, gfp_t gfp); int security_xfrm_policy_clone(struct xfrm_sec_ctx *old_ctx, struct xfrm_sec_ctx **new_ctxp); void security_xfrm_policy_free(struct xfrm_sec_ctx *ctx); int security_xfrm_policy_delete(struct xfrm_sec_ctx *ctx); int security_xfrm_state_alloc(struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx); int security_xfrm_state_alloc_acquire(struct xfrm_state *x, struct xfrm_sec_ctx *polsec, u32 secid); int security_xfrm_state_delete(struct xfrm_state *x); void security_xfrm_state_free(struct xfrm_state *x); int security_xfrm_policy_lookup(struct xfrm_sec_ctx *ctx, u32 fl_secid, u8 dir); int security_xfrm_state_pol_flow_match(struct xfrm_state *x, struct xfrm_policy *xp, const struct flowi *fl); int security_xfrm_decode_session(struct sk_buff *skb, u32 *secid); void security_skb_classify_flow(struct sk_buff *skb, struct flowi *fl); # 1590 "../include/linux/security.h" int security_path_unlink(const struct path *dir, struct dentry *dentry); int security_path_mkdir(const struct path *dir, struct dentry *dentry, umode_t mode); int security_path_rmdir(const struct path *dir, struct dentry *dentry); int security_path_mknod(const struct path *dir, struct dentry *dentry, umode_t mode, unsigned int dev); int security_path_truncate(const struct path *path); int security_path_symlink(const struct path *dir, struct dentry *dentry, const char *old_name); int security_path_link(struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry); int security_path_rename(const struct path *old_dir, struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry, unsigned int flags); int security_path_chmod(const struct path *path, umode_t mode); int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid); int security_path_chroot(const struct path *path); # 1675 "../include/linux/security.h" int security_key_alloc(struct key *key, const struct cred *cred, unsigned long flags); void security_key_free(struct key *key); int security_key_permission(key_ref_t key_ref, const struct cred *cred, unsigned perm); int security_key_getsecurity(struct key *key, char **_buffer); # 1712 "../include/linux/security.h" int security_audit_rule_init(u32 field, u32 op, char *rulestr, void **lsmrule); int security_audit_rule_known(struct audit_krule *krule); int security_audit_rule_match(u32 secid, u32 field, u32 op, void *lsmrule); void security_audit_rule_free(void *lsmrule); # 1744 "../include/linux/security.h" extern struct dentry *securityfs_create_file(const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops); extern struct dentry *securityfs_create_dir(const char *name, struct dentry *parent); struct dentry *securityfs_create_symlink(const char *name, struct dentry *parent, const char *target, const struct inode_operations *iops); extern void securityfs_remove(struct dentry *dentry); # 1785 "../include/linux/security.h" union bpf_attr; struct bpf_map; struct bpf_prog; struct bpf_prog_aux; extern int security_bpf(int cmd, union bpf_attr *attr, unsigned int size); extern int security_bpf_map(struct bpf_map *map, fmode_t fmode); extern int security_bpf_prog(struct bpf_prog *prog); extern int security_bpf_map_alloc(struct bpf_map *map); extern void security_bpf_map_free(struct bpf_map *map); extern int security_bpf_prog_alloc(struct bpf_prog_aux *aux); extern void security_bpf_prog_free(struct bpf_prog_aux *aux); # 9 "../include/net/scm.h" 2 # 1 "../include/linux/sched/signal.h" 1 # 1 "../include/linux/signal.h" 1 struct task_struct; extern int print_fatal_signals; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void copy_siginfo(kernel_siginfo_t *to, const kernel_siginfo_t *from) { __memcpy(to, from, sizeof(*to)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_siginfo(kernel_siginfo_t *info) { __memset(info, 0, sizeof(*info)); } int copy_siginfo_to_user(siginfo_t *to, const kernel_siginfo_t *from); int copy_siginfo_from_user(kernel_siginfo_t *to, const siginfo_t *from); enum siginfo_layout { SIL_KILL, SIL_TIMER, SIL_POLL, SIL_FAULT, SIL_FAULT_MCEERR, SIL_FAULT_BNDERR, SIL_FAULT_PKUERR, SIL_CHLD, SIL_RT, SIL_SYS, }; enum siginfo_layout siginfo_layout(unsigned sig, int si_code); # 54 "../include/linux/signal.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sigaddset(sigset_t *set, int _sig) { unsigned long sig = _sig - 1; if ((64 / 64) == 1) set->sig[0] |= 1UL << sig; else set->sig[sig / 64] |= 1UL << (sig % 64); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sigdelset(sigset_t *set, int _sig) { unsigned long sig = _sig - 1; if ((64 / 64) == 1) set->sig[0] &= ~(1UL << sig); else set->sig[sig / 64] &= ~(1UL << (sig % 64)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int sigismember(sigset_t *set, int _sig) { unsigned long sig = _sig - 1; if ((64 / 64) == 1) return 1 & (set->sig[0] >> sig); else return 1 & (set->sig[sig / 64] >> (sig % 64)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int sigisemptyset(sigset_t *set) { switch ((64 / 64)) { case 4: return (set->sig[3] | set->sig[2] | set->sig[1] | set->sig[0]) == 0; case 2: return (set->sig[1] | set->sig[0]) == 0; case 1: return set->sig[0] == 0; default: do { extern void __compiletime_assert_94(void) ; if (!(!(1))) __compiletime_assert_94(); } while (0); return 0; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int sigequalsets(const sigset_t *set1, const sigset_t *set2) { switch ((64 / 64)) { case 4: return (set1->sig[3] == set2->sig[3]) && (set1->sig[2] == set2->sig[2]) && (set1->sig[1] == set2->sig[1]) && (set1->sig[0] == set2->sig[0]); case 2: return (set1->sig[1] == set2->sig[1]) && (set1->sig[0] == set2->sig[0]); case 1: return set1->sig[0] == set2->sig[0]; } return 0; } # 147 "../include/linux/signal.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sigorsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { unsigned long a0, a1, a2, a3, b0, b1, b2, b3; switch ((64 / 64)) { case 4: a3 = a->sig[3]; a2 = a->sig[2]; b3 = b->sig[3]; b2 = b->sig[2]; r->sig[3] = ((a3) | (b3)); r->sig[2] = ((a2) | (b2)); case 2: a1 = a->sig[1]; b1 = b->sig[1]; r->sig[1] = ((a1) | (b1)); case 1: a0 = a->sig[0]; b0 = b->sig[0]; r->sig[0] = ((a0) | (b0)); break; default: do { extern void __compiletime_assert_147(void) ; if (!(!(1))) __compiletime_assert_147(); } while (0); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sigandsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { unsigned long a0, a1, a2, a3, b0, b1, b2, b3; switch ((64 / 64)) { case 4: a3 = a->sig[3]; a2 = a->sig[2]; b3 = b->sig[3]; b2 = b->sig[2]; r->sig[3] = ((a3) & (b3)); r->sig[2] = ((a2) & (b2)); case 2: a1 = a->sig[1]; b1 = b->sig[1]; r->sig[1] = ((a1) & (b1)); case 1: a0 = a->sig[0]; b0 = b->sig[0]; r->sig[0] = ((a0) & (b0)); break; default: do { extern void __compiletime_assert_150(void) ; if (!(!(1))) __compiletime_assert_150(); } while (0); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sigandnsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { unsigned long a0, a1, a2, a3, b0, b1, b2, b3; switch ((64 / 64)) { case 4: a3 = a->sig[3]; a2 = a->sig[2]; b3 = b->sig[3]; b2 = b->sig[2]; r->sig[3] = ((a3) & ~(b3)); r->sig[2] = ((a2) & ~(b2)); case 2: a1 = a->sig[1]; b1 = b->sig[1]; r->sig[1] = ((a1) & ~(b1)); case 1: a0 = a->sig[0]; b0 = b->sig[0]; r->sig[0] = ((a0) & ~(b0)); break; default: do { extern void __compiletime_assert_153(void) ; if (!(!(1))) __compiletime_assert_153(); } while (0); } } # 177 "../include/linux/signal.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void signotset(sigset_t *set) { switch ((64 / 64)) { case 4: set->sig[3] = (~(set->sig[3])); set->sig[2] = (~(set->sig[2])); case 2: set->sig[1] = (~(set->sig[1])); case 1: set->sig[0] = (~(set->sig[0])); break; default: do { extern void __compiletime_assert_177(void) ; if (!(!(1))) __compiletime_assert_177(); } while (0); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sigemptyset(sigset_t *set) { switch ((64 / 64)) { default: __memset(set, 0, sizeof(sigset_t)); break; case 2: set->sig[1] = 0; case 1: set->sig[0] = 0; break; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sigfillset(sigset_t *set) { switch ((64 / 64)) { default: __memset(set, -1, sizeof(sigset_t)); break; case 2: set->sig[1] = -1; case 1: set->sig[0] = -1; break; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sigaddsetmask(sigset_t *set, unsigned long mask) { set->sig[0] |= mask; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sigdelsetmask(sigset_t *set, unsigned long mask) { set->sig[0] &= ~mask; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int sigtestsetmask(sigset_t *set, unsigned long mask) { return (set->sig[0] & mask) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void siginitset(sigset_t *set, unsigned long mask) { set->sig[0] = mask; switch ((64 / 64)) { default: __memset(&set->sig[1], 0, sizeof(long)*((64 / 64)-1)); break; case 2: set->sig[1] = 0; case 1: ; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void siginitsetinv(sigset_t *set, unsigned long mask) { set->sig[0] = ~mask; switch ((64 / 64)) { default: __memset(&set->sig[1], -1, sizeof(long)*((64 / 64)-1)); break; case 2: set->sig[1] = -1; case 1: ; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void init_sigpending(struct sigpending *sig) { sigemptyset(&sig->signal); INIT_LIST_HEAD(&sig->list); } extern void flush_sigqueue(struct sigpending *queue); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int valid_signal(unsigned long sig) { return sig <= 64 ? 1 : 0; } struct timespec; struct pt_regs; enum pid_type; extern int next_signal(struct sigpending *pending, sigset_t *mask); extern int do_send_sig_info(int sig, struct kernel_siginfo *info, struct task_struct *p, enum pid_type type); extern int group_send_sig_info(int sig, struct kernel_siginfo *info, struct task_struct *p, enum pid_type type); extern int __group_send_sig_info(int, struct kernel_siginfo *, struct task_struct *); extern int sigprocmask(int, sigset_t *, sigset_t *); extern void set_current_blocked(sigset_t *); extern void __set_current_blocked(const sigset_t *); extern int show_unhandled_signals; extern bool get_signal(struct ksignal *ksig); extern void signal_setup_done(int failed, struct ksignal *ksig, int stepping); extern void exit_signals(struct task_struct *tsk); extern void kernel_sigaction(int, __sighandler_t); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void allow_signal(int sig) { kernel_sigaction(sig, ( __sighandler_t)2); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void disallow_signal(int sig) { kernel_sigaction(sig, (( __sighandler_t)1)); } extern struct kmem_cache *sighand_cachep; extern bool unhandled_signal(struct task_struct *tsk, int sig); # 429 "../include/linux/signal.h" void signals_init(void); int restore_altstack(const stack_t *); int __save_altstack(stack_t *, unsigned long); # 445 "../include/linux/signal.h" struct seq_file; extern void render_sigset_t(struct seq_file *, const char *, sigset_t *); # 7 "../include/linux/sched/signal.h" 2 # 1 "../include/linux/sched/jobctl.h" 1 struct task_struct; # 35 "../include/linux/sched/jobctl.h" extern bool task_set_jobctl_pending(struct task_struct *task, unsigned long mask); extern void task_clear_jobctl_trapping(struct task_struct *task); extern void task_clear_jobctl_pending(struct task_struct *task, unsigned long mask); # 9 "../include/linux/sched/signal.h" 2 # 1 "../include/linux/sched/task.h" 1 # 13 "../include/linux/sched/task.h" struct task_struct; struct rusage; union thread_union; struct kernel_clone_args { u64 flags; int *pidfd; int *child_tid; int *parent_tid; int exit_signal; unsigned long stack; unsigned long stack_size; unsigned long tls; }; extern rwlock_t tasklist_lock; extern spinlock_t mmlist_lock; extern union thread_union init_thread_union; extern struct task_struct init_task; extern int lockdep_tasklist_lock_is_held(void); extern void schedule_tail(struct task_struct *prev); extern void init_idle(struct task_struct *idle, int cpu); extern int sched_fork(unsigned long clone_flags, struct task_struct *p); extern void sched_dead(struct task_struct *p); void __attribute__((__noreturn__)) do_task_dead(void); extern void proc_caches_init(void); extern void fork_init(void); extern void release_task(struct task_struct * p); extern int copy_thread_tls(unsigned long, unsigned long, unsigned long, struct task_struct *, unsigned long); # 77 "../include/linux/sched/task.h" extern void flush_thread(void); extern void exit_thread(struct task_struct *tsk); extern void do_group_exit(int); extern void exit_files(struct task_struct *); extern void exit_itimers(struct signal_struct *); extern long _do_fork(struct kernel_clone_args *kargs); extern long do_fork(unsigned long, unsigned long, unsigned long, int *, int *); struct task_struct *fork_idle(int); struct mm_struct *copy_init_mm(void); extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); extern long kernel_wait4(pid_t, int *, int, struct rusage *); extern void free_task(struct task_struct *tsk); extern void sched_exec(void); extern void __put_task_struct(struct task_struct *t); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void put_task_struct(struct task_struct *t) { if (refcount_dec_and_test_checked(&t->usage)) __put_task_struct(t); } struct task_struct *task_rcu_dereference(struct task_struct **ptask); extern int arch_task_struct_size __attribute__((__section__(".data..read_mostly"))); # 145 "../include/linux/sched/task.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct vm_struct *task_stack_vm_area(const struct task_struct *t) { return ((void *)0); } # 161 "../include/linux/sched/task.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_lock(struct task_struct *p) { spin_lock(&p->alloc_lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void task_unlock(struct task_struct *p) { spin_unlock(&p->alloc_lock); } # 10 "../include/linux/sched/signal.h" 2 struct sighand_struct { spinlock_t siglock; refcount_t count; wait_queue_head_t signalfd_wqh; struct k_sigaction action[64]; }; struct pacct_struct { int ac_flag; long ac_exitcode; unsigned long ac_mem; u64 ac_utime, ac_stime; unsigned long ac_minflt, ac_majflt; }; struct cpu_itimer { u64 expires; u64 incr; }; struct task_cputime_atomic { atomic64_t utime; atomic64_t stime; atomic64_t sum_exec_runtime; }; # 67 "../include/linux/sched/signal.h" struct thread_group_cputimer { struct task_cputime_atomic cputime_atomic; bool running; bool checking_timer; }; struct multiprocess_signals { sigset_t signal; struct hlist_node node; }; # 85 "../include/linux/sched/signal.h" struct signal_struct { refcount_t sigcnt; atomic_t live; int nr_threads; struct list_head thread_head; wait_queue_head_t wait_chldexit; struct task_struct *curr_target; struct sigpending shared_pending; struct hlist_head multiprocess; int group_exit_code; int notify_count; struct task_struct *group_exit_task; int group_stop_count; unsigned int flags; # 125 "../include/linux/sched/signal.h" unsigned int is_child_subreaper:1; unsigned int has_child_subreaper:1; int posix_timer_id; struct list_head posix_timers; struct hrtimer real_timer; ktime_t it_real_incr; struct cpu_itimer it[2]; struct thread_group_cputimer cputimer; struct task_cputime cputime_expires; struct list_head cpu_timers[3]; struct pid *pids[PIDTYPE_MAX]; struct pid *tty_old_pgrp; int leader; struct tty_struct *tty; struct autogroup *autogroup; seqlock_t stats_lock; u64 utime, stime, cutime, cstime; u64 gtime; u64 cgtime; struct prev_cputime prev_cputime; unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw; unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt; unsigned long inblock, oublock, cinblock, coublock; unsigned long maxrss, cmaxrss; struct task_io_accounting ioac; unsigned long long sum_sched_runtime; # 209 "../include/linux/sched/signal.h" struct rlimit rlim[16]; struct pacct_struct pacct; struct taskstats *stats; unsigned audit_tty; struct tty_audit_buf *tty_audit_buf; bool oom_flag_origin; short oom_score_adj; short oom_score_adj_min; struct mm_struct *oom_mm; struct mutex cred_guard_mutex; } ; # 257 "../include/linux/sched/signal.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void signal_set_stop_flags(struct signal_struct *sig, unsigned int flags) { ({ int __ret_warn_on = !!(sig->flags & (0x00000004|0x00000008)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/sched/signal.h"), "i" (260), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (414)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); sig->flags = (sig->flags & ~((0x00000010|0x00000020) | 0x00000001 | 0x00000002)) | flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int signal_group_exit(const struct signal_struct *sig) { return (sig->flags & 0x00000004) || (sig->group_exit_task != ((void *)0)); } extern void flush_signals(struct task_struct *); extern void ignore_signals(struct task_struct *); extern void flush_signal_handlers(struct task_struct *, int force_default); extern int dequeue_signal(struct task_struct *task, sigset_t *mask, kernel_siginfo_t *info); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int kernel_dequeue_signal(void) { struct task_struct *task = get_current(); kernel_siginfo_t __info; int ret; spin_lock_irq(&task->sighand->siglock); ret = dequeue_signal(task, &task->blocked, &__info); spin_unlock_irq(&task->sighand->siglock); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void kernel_signal_stop(void) { spin_lock_irq(&get_current()->sighand->siglock); if (get_current()->jobctl & (1UL << 16)) do { unsigned long flags; ({ int __ret_warn_on = !!(!(((0x0100 | 0x0004)) & (0x0004 | 0x0008 | 0x0040 | 0x0080))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/sched/signal.h"), "i" (294), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (415)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = _raw_spin_lock_irqsave(&get_current()->pi_lock); } while (0); get_current()->task_state_change = ({ __label__ __here; __here: (unsigned long)&&__here; }); get_current()->state = ((0x0100 | 0x0004)); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); _raw_spin_unlock_irqrestore(&get_current()->pi_lock, flags); } while (0); } while (0); spin_unlock_irq(&get_current()->sighand->siglock); schedule(); } # 310 "../include/linux/sched/signal.h" int force_sig_fault_to_task(int sig, int code, void *addr , struct task_struct *t); int force_sig_fault(int sig, int code, void *addr ); int send_sig_fault(int sig, int code, void *addr , struct task_struct *t); int force_sig_mceerr(int code, void *, short); int send_sig_mceerr(int code, void *, short, struct task_struct *); int force_sig_bnderr(void *addr, void *lower, void *upper); int force_sig_pkuerr(void *addr, u32 pkey); int force_sig_ptrace_errno_trap(int errno, void *addr); extern int send_sig_info(int, struct kernel_siginfo *, struct task_struct *); extern void force_sigsegv(int sig); extern int force_sig_info(struct kernel_siginfo *); extern int __kill_pgrp_info(int sig, struct kernel_siginfo *info, struct pid *pgrp); extern int kill_pid_info(int sig, struct kernel_siginfo *info, struct pid *pid); extern int kill_pid_usb_asyncio(int sig, int errno, sigval_t addr, struct pid *, const struct cred *); extern int kill_pgrp(struct pid *pid, int sig, int priv); extern int kill_pid(struct pid *pid, int sig, int priv); extern __attribute__((__warn_unused_result__)) bool do_notify_parent(struct task_struct *, int); extern void __wake_up_parent(struct task_struct *p, struct task_struct *parent); extern void force_sig(int); extern int send_sig(int, struct task_struct *, int); extern int zap_other_threads(struct task_struct *p); extern struct sigqueue *sigqueue_alloc(void); extern void sigqueue_free(struct sigqueue *); extern int send_sigqueue(struct sigqueue *, struct pid *, enum pid_type); extern int do_sigaction(int, struct k_sigaction *, struct k_sigaction *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int restart_syscall(void) { set_tsk_thread_flag(get_current(), 2); return -513; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int signal_pending(struct task_struct *p) { return __builtin_expect(!!(test_tsk_thread_flag(p,2)), 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __fatal_signal_pending(struct task_struct *p) { return __builtin_expect(!!(sigismember(&p->pending.signal, 9)), 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int fatal_signal_pending(struct task_struct *p) { return signal_pending(p) && __fatal_signal_pending(p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int signal_pending_state(long state, struct task_struct *p) { if (!(state & (0x0001 | 0x0100))) return 0; if (!signal_pending(p)) return 0; return (state & 0x0001) || __fatal_signal_pending(p); } extern void recalc_sigpending_and_wake(struct task_struct *t); extern void recalc_sigpending(void); extern void calculate_sigpending(void); extern void signal_wake_up_state(struct task_struct *t, unsigned int state); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void signal_wake_up(struct task_struct *t, bool resume) { signal_wake_up_state(t, resume ? 0x0100 : 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ptrace_signal_wake_up(struct task_struct *t, bool resume) { signal_wake_up_state(t, resume ? 0x0008 : 0); } void task_join_group_stop(struct task_struct *task); # 450 "../include/linux/sched/signal.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_restore_sigmask(void) { get_current()->restore_sigmask = true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_tsk_restore_sigmask(struct task_struct *task) { task->restore_sigmask = false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void clear_restore_sigmask(void) { get_current()->restore_sigmask = false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool test_restore_sigmask(void) { return get_current()->restore_sigmask; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool test_tsk_restore_sigmask(struct task_struct *task) { return task->restore_sigmask; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool test_and_clear_restore_sigmask(void) { if (!get_current()->restore_sigmask) return false; get_current()->restore_sigmask = false; return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void restore_saved_sigmask(void) { if (test_and_clear_restore_sigmask()) __set_current_blocked(&get_current()->saved_sigmask); } extern int set_user_sigmask(const sigset_t *umask, size_t sigsetsize); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void restore_saved_sigmask_unless(bool interrupted) { if (interrupted) ({ int __ret_warn_on = !!(!test_ti_thread_flag(((struct thread_info *)get_current()), 2)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/sched/signal.h"), "i" (490), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (416)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); else restore_saved_sigmask(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) sigset_t *sigmask_to_save(void) { sigset_t *res = &get_current()->blocked; if (__builtin_expect(!!(test_restore_sigmask()), 0)) res = &get_current()->saved_sigmask; return res; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int kill_cad_pid(int sig, int priv) { return kill_pid(cad_pid, sig, priv); } # 515 "../include/linux/sched/signal.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int on_sig_stack(unsigned long sp) { # 526 "../include/linux/sched/signal.h" if (get_current()->sas_ss_flags & (1U << 31)) return 0; return sp > get_current()->sas_ss_sp && sp - get_current()->sas_ss_sp <= get_current()->sas_ss_size; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int sas_ss_flags(unsigned long sp) { if (!get_current()->sas_ss_size) return 2; return on_sig_stack(sp) ? 1 : 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void sas_ss_reset(struct task_struct *p) { p->sas_ss_sp = 0; p->sas_ss_size = 0; p->sas_ss_flags = 2; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long sigsp(unsigned long sp, struct ksignal *ksig) { if (__builtin_expect(!!((ksig->ka.sa.sa_flags & 0x08000000u)), 0) && ! sas_ss_flags(sp)) return get_current()->sas_ss_sp + get_current()->sas_ss_size; return sp; } extern void __cleanup_sighand(struct sighand_struct *); extern void flush_itimer_signals(void); # 576 "../include/linux/sched/signal.h" extern bool current_is_single_threaded(void); # 598 "../include/linux/sched/signal.h" typedef int (*proc_visitor)(struct task_struct *p, void *data); void walk_process_tree(struct task_struct *top, proc_visitor, void *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct pid *task_pid_type(struct task_struct *task, enum pid_type type) { struct pid *pid; if (type == PIDTYPE_PID) pid = task_pid(task); else pid = task->signal->pids[type]; return pid; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct pid *task_tgid(struct task_struct *task) { return task->signal->pids[PIDTYPE_TGID]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct pid *task_pgrp(struct task_struct *task) { return task->signal->pids[PIDTYPE_PGID]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct pid *task_session(struct task_struct *task) { return task->signal->pids[PIDTYPE_SID]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int get_nr_threads(struct task_struct *task) { return task->signal->nr_threads; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool thread_group_leader(struct task_struct *p) { return p->exit_signal >= 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool has_group_leader_pid(struct task_struct *p) { return task_pid(p) == task_tgid(p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool same_thread_group(struct task_struct *p1, struct task_struct *p2) { return p1->signal == p2->signal; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct task_struct *next_thread(const struct task_struct *p) { return ({ void *__mptr = (void *)(({ union { typeof(p->thread_group.next) __val; char __c[1]; } __u; if (1) __read_once_size(&(p->thread_group.next), __u.__c, sizeof(p->thread_group.next)); else __read_once_size_nocheck(&(p->thread_group.next), __u.__c, sizeof(p->thread_group.next)); do { } while (0); __u.__val; })); do { extern void __compiletime_assert_662(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(({ union { typeof(p->thread_group.next) __val; char __c[1]; } __u; if (1) __read_once_size(&(p->thread_group.next), __u.__c, sizeof(p->thread_group.next)); else __read_once_size_nocheck(&(p->thread_group.next), __u.__c, sizeof(p->thread_group.next)); do { } while (0); __u.__val; }))), typeof(((struct task_struct *)0)->thread_group)) && !__builtin_types_compatible_p(typeof(*(({ union { typeof(p->thread_group.next) __val; char __c[1]; } __u; if (1) __read_once_size(&(p->thread_group.next), __u.__c, sizeof(p->thread_group.next)); else __read_once_size_nocheck(&(p->thread_group.next), __u.__c, sizeof(p->thread_group.next)); do { } while (0); __u.__val; }))), typeof(void))))) __compiletime_assert_662(); } while (0); ((struct task_struct *)(__mptr - __builtin_offsetof(struct task_struct, thread_group))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int thread_group_empty(struct task_struct *p) { return list_empty(&p->thread_group); } extern struct sighand_struct *__lock_task_sighand(struct task_struct *task, unsigned long *flags); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sighand_struct *lock_task_sighand(struct task_struct *task, unsigned long *flags) { struct sighand_struct *ret; ret = __lock_task_sighand(task, flags); (void)(ret); return ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void unlock_task_sighand(struct task_struct *task, unsigned long *flags) { spin_unlock_irqrestore(&task->sighand->siglock, *flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long task_rlimit(const struct task_struct *task, unsigned int limit) { return ({ union { typeof(task->signal->rlim[limit].rlim_cur) __val; char __c[1]; } __u; if (1) __read_once_size(&(task->signal->rlim[limit].rlim_cur), __u.__c, sizeof(task->signal->rlim[limit].rlim_cur)); else __read_once_size_nocheck(&(task->signal->rlim[limit].rlim_cur), __u.__c, sizeof(task->signal->rlim[limit].rlim_cur)); do { } while (0); __u.__val; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long task_rlimit_max(const struct task_struct *task, unsigned int limit) { return ({ union { typeof(task->signal->rlim[limit].rlim_max) __val; char __c[1]; } __u; if (1) __read_once_size(&(task->signal->rlim[limit].rlim_max), __u.__c, sizeof(task->signal->rlim[limit].rlim_max)); else __read_once_size_nocheck(&(task->signal->rlim[limit].rlim_max), __u.__c, sizeof(task->signal->rlim[limit].rlim_max)); do { } while (0); __u.__val; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long rlimit(unsigned int limit) { return task_rlimit(get_current(), limit); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long rlimit_max(unsigned int limit) { return task_rlimit_max(get_current(), limit); } # 12 "../include/net/scm.h" 2 struct scm_creds { u32 pid; kuid_t uid; kgid_t gid; }; struct scm_fp_list { short count; short max; struct user_struct *user; struct file *fp[253]; }; struct scm_cookie { struct pid *pid; struct scm_fp_list *fp; struct scm_creds creds; u32 secid; }; void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm); void scm_detach_fds_compat(struct msghdr *msg, struct scm_cookie *scm); int __scm_send(struct socket *sock, struct msghdr *msg, struct scm_cookie *scm); void __scm_destroy(struct scm_cookie *scm); struct scm_fp_list *scm_fp_dup(struct scm_fp_list *fpl); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void unix_get_peersec_dgram(struct socket *sock, struct scm_cookie *scm) { security_socket_getpeersec_dgram(sock, ((void *)0), &scm->secid); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void scm_set_cred(struct scm_cookie *scm, struct pid *pid, kuid_t uid, kgid_t gid) { scm->pid = get_pid(pid); scm->creds.pid = pid_vnr(pid); scm->creds.uid = uid; scm->creds.gid = gid; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void scm_destroy_cred(struct scm_cookie *scm) { put_pid(scm->pid); scm->pid = ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void scm_destroy(struct scm_cookie *scm) { scm_destroy_cred(scm); if (scm->fp) __scm_destroy(scm); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int scm_send(struct socket *sock, struct msghdr *msg, struct scm_cookie *scm, bool forcecreds) { __memset(scm, 0, sizeof(*scm)); scm->creds.uid = (kuid_t){ -1 }; scm->creds.gid = (kgid_t){ -1 }; if (forcecreds) scm_set_cred(scm, task_tgid(get_current()), (({ ({ do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((1)))) { __warned = true; lockdep_rcu_suspicious("../include/net/scm.h", 85, "suspicious rcu_dereference_protected() usage"); } } while (0); ; ((typeof(*(get_current()->cred)) *)((get_current()->cred))); })->uid; })), (({ ({ do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((1)))) { __warned = true; lockdep_rcu_suspicious("../include/net/scm.h", 85, "suspicious rcu_dereference_protected() usage"); } } while (0); ; ((typeof(*(get_current()->cred)) *)((get_current()->cred))); })->gid; }))); unix_get_peersec_dgram(sock, scm); if (msg->msg_controllen <= 0) return 0; return __scm_send(sock, msg, scm); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void scm_passec(struct socket *sock, struct msghdr *msg, struct scm_cookie *scm) { char *secdata; u32 seclen; int err; if (test_bit(4, &sock->flags)) { err = security_secid_to_secctx(scm->secid, &secdata, &seclen); if (!err) { put_cmsg(msg, 1, 0x03, seclen, secdata); security_release_secctx(secdata, seclen); } } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void scm_recv(struct socket *sock, struct msghdr *msg, struct scm_cookie *scm, int flags) { if (!msg->msg_control) { if (test_bit(3, &sock->flags) || scm->fp) msg->msg_flags |= 8; scm_destroy(scm); return; } if (test_bit(3, &sock->flags)) { struct user_namespace *current_ns = (({ ({ do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((1)))) { __warned = true; lockdep_rcu_suspicious("../include/net/scm.h", 124, "suspicious rcu_dereference_protected() usage"); } } while (0); ; ((typeof(*(get_current()->cred)) *)((get_current()->cred))); })->user_ns; })); struct ucred ucreds = { .pid = scm->creds.pid, .uid = from_kuid_munged(current_ns, scm->creds.uid), .gid = from_kgid_munged(current_ns, scm->creds.gid), }; put_cmsg(msg, 1, 0x02, sizeof(ucreds), &ucreds); } scm_destroy_cred(scm); scm_passec(sock, msg, scm); if (!scm->fp) return; scm_detach_fds(msg, scm); } # 10 "../include/linux/netlink.h" 2 # 1 "../include/uapi/linux/netlink.h" 1 # 37 "../include/uapi/linux/netlink.h" struct sockaddr_nl { __kernel_sa_family_t nl_family; unsigned short nl_pad; __u32 nl_pid; __u32 nl_groups; }; struct nlmsghdr { __u32 nlmsg_len; __u16 nlmsg_type; __u16 nlmsg_flags; __u32 nlmsg_seq; __u32 nlmsg_pid; }; # 109 "../include/uapi/linux/netlink.h" struct nlmsgerr { int error; struct nlmsghdr msg; # 121 "../include/uapi/linux/netlink.h" }; # 135 "../include/uapi/linux/netlink.h" enum nlmsgerr_attrs { NLMSGERR_ATTR_UNUSED, NLMSGERR_ATTR_MSG, NLMSGERR_ATTR_OFFS, NLMSGERR_ATTR_COOKIE, __NLMSGERR_ATTR_MAX, NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1 }; # 160 "../include/uapi/linux/netlink.h" struct nl_pktinfo { __u32 group; }; struct nl_mmap_req { unsigned int nm_block_size; unsigned int nm_block_nr; unsigned int nm_frame_size; unsigned int nm_frame_nr; }; struct nl_mmap_hdr { unsigned int nm_status; unsigned int nm_len; __u32 nm_group; __u32 nm_pid; __u32 nm_uid; __u32 nm_gid; }; # 197 "../include/uapi/linux/netlink.h" enum { NETLINK_UNCONNECTED = 0, NETLINK_CONNECTED, }; # 211 "../include/uapi/linux/netlink.h" struct nlattr { __u16 nla_len; __u16 nla_type; }; # 247 "../include/uapi/linux/netlink.h" struct nla_bitfield32 { __u32 value; __u32 selector; }; # 11 "../include/linux/netlink.h" 2 struct net; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct nlmsghdr *nlmsg_hdr(const struct sk_buff *skb) { return (struct nlmsghdr *)skb->data; } enum netlink_skb_flags { NETLINK_SKB_DST = 0x8, }; struct netlink_skb_parms { struct scm_creds creds; __u32 portid; __u32 dst_group; __u32 flags; struct sock *sk; bool nsid_is_set; int nsid; }; void netlink_table_grab(void); void netlink_table_ungrab(void); struct netlink_kernel_cfg { unsigned int groups; unsigned int flags; void (*input)(struct sk_buff *skb); struct mutex *cb_mutex; int (*bind)(struct net *net, int group); void (*unbind)(struct net *net, int group); bool (*compare)(struct net *net, struct sock *sk); }; struct sock *__netlink_kernel_create(struct net *net, int unit, struct module *module, struct netlink_kernel_cfg *cfg); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sock * netlink_kernel_create(struct net *net, int unit, struct netlink_kernel_cfg *cfg) { return __netlink_kernel_create(net, unit, ((struct module *)0), cfg); } # 74 "../include/linux/netlink.h" struct netlink_ext_ack { const char *_msg; const struct nlattr *bad_attr; u8 cookie[20]; u8 cookie_len; }; # 113 "../include/linux/netlink.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void nl_set_extack_cookie_u64(struct netlink_ext_ack *extack, u64 cookie) { u64 __cookie = cookie; __memcpy(extack->cookie, &__cookie, sizeof(__cookie)); extack->cookie_len = sizeof(__cookie); } void netlink_kernel_release(struct sock *sk); int __netlink_change_ngroups(struct sock *sk, unsigned int groups); int netlink_change_ngroups(struct sock *sk, unsigned int groups); void __netlink_clear_multicast_users(struct sock *sk, unsigned int group); void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err, const struct netlink_ext_ack *extack); int netlink_has_listeners(struct sock *sk, unsigned int group); bool netlink_strict_get_check(struct sk_buff *skb); int netlink_unicast(struct sock *ssk, struct sk_buff *skb, __u32 portid, int nonblock); int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, __u32 portid, __u32 group, gfp_t allocation); int netlink_broadcast_filtered(struct sock *ssk, struct sk_buff *skb, __u32 portid, __u32 group, gfp_t allocation, int (*filter)(struct sock *dsk, struct sk_buff *skb, void *data), void *filter_data); int netlink_set_err(struct sock *ssk, __u32 portid, __u32 group, int code); int netlink_register_notifier(struct notifier_block *nb); int netlink_unregister_notifier(struct notifier_block *nb); struct sock *netlink_getsockbyfilp(struct file *filp); int netlink_attachskb(struct sock *sk, struct sk_buff *skb, long *timeo, struct sock *ssk); void netlink_detachskb(struct sock *sk, struct sk_buff *skb); int netlink_sendskb(struct sock *sk, struct sk_buff *skb); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff * netlink_skb_clone(struct sk_buff *skb, gfp_t gfp_mask) { struct sk_buff *nskb; nskb = skb_clone(skb, gfp_mask); if (!nskb) return ((void *)0); if (is_vmalloc_addr(skb->head)) nskb->destructor = skb->destructor; return nskb; } # 180 "../include/linux/netlink.h" struct netlink_callback { struct sk_buff *skb; const struct nlmsghdr *nlh; int (*dump)(struct sk_buff * skb, struct netlink_callback *cb); int (*done)(struct netlink_callback *cb); void *data; struct module *module; struct netlink_ext_ack *extack; u16 family; u16 min_dump_alloc; bool strict_check; u16 answer_flags; unsigned int prev_seq, seq; union { u8 ctx[48]; long args[6]; }; }; struct netlink_notify { struct net *net; u32 portid; int protocol; }; struct nlmsghdr * __nlmsg_put(struct sk_buff *skb, u32 portid, u32 seq, int type, int len, int flags); struct netlink_dump_control { int (*start)(struct netlink_callback *); int (*dump)(struct sk_buff *skb, struct netlink_callback *); int (*done)(struct netlink_callback *); void *data; struct module *module; u16 min_dump_alloc; }; int __netlink_dump_start(struct sock *ssk, struct sk_buff *skb, const struct nlmsghdr *nlh, struct netlink_dump_control *control); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int netlink_dump_start(struct sock *ssk, struct sk_buff *skb, const struct nlmsghdr *nlh, struct netlink_dump_control *control) { if (!control->module) control->module = ((struct module *)0); return __netlink_dump_start(ssk, skb, nlh, control); } struct netlink_tap { struct net_device *dev; struct module *module; struct list_head list; }; int netlink_add_tap(struct netlink_tap *nt); int netlink_remove_tap(struct netlink_tap *nt); bool __netlink_ns_capable(const struct netlink_skb_parms *nsp, struct user_namespace *ns, int cap); bool netlink_ns_capable(const struct sk_buff *skb, struct user_namespace *ns, int cap); bool netlink_capable(const struct sk_buff *skb, int cap); bool netlink_net_capable(const struct sk_buff *skb, int cap); # 7 "../include/uapi/linux/neighbour.h" 2 struct ndmsg { __u8 ndm_family; __u8 ndm_pad1; __u16 ndm_pad2; __s32 ndm_ifindex; __u16 ndm_state; __u8 ndm_flags; __u8 ndm_type; }; enum { NDA_UNSPEC, NDA_DST, NDA_LLADDR, NDA_CACHEINFO, NDA_PROBES, NDA_VLAN, NDA_PORT, NDA_VNI, NDA_IFINDEX, NDA_MASTER, NDA_LINK_NETNSID, NDA_SRC_VNI, NDA_PROTOCOL, __NDA_MAX }; # 71 "../include/uapi/linux/neighbour.h" struct nda_cacheinfo { __u32 ndm_confirmed; __u32 ndm_used; __u32 ndm_updated; __u32 ndm_refcnt; }; # 103 "../include/uapi/linux/neighbour.h" struct ndt_stats { __u64 ndts_allocs; __u64 ndts_destroys; __u64 ndts_hash_grows; __u64 ndts_res_failed; __u64 ndts_lookups; __u64 ndts_hits; __u64 ndts_rcv_probes_mcast; __u64 ndts_rcv_probes_ucast; __u64 ndts_periodic_gc_runs; __u64 ndts_forced_gc_runs; __u64 ndts_table_fulls; }; enum { NDTPA_UNSPEC, NDTPA_IFINDEX, NDTPA_REFCNT, NDTPA_REACHABLE_TIME, NDTPA_BASE_REACHABLE_TIME, NDTPA_RETRANS_TIME, NDTPA_GC_STALETIME, NDTPA_DELAY_PROBE_TIME, NDTPA_QUEUE_LEN, NDTPA_APP_PROBES, NDTPA_UCAST_PROBES, NDTPA_MCAST_PROBES, NDTPA_ANYCAST_DELAY, NDTPA_PROXY_DELAY, NDTPA_PROXY_QLEN, NDTPA_LOCKTIME, NDTPA_QUEUE_LENBYTES, NDTPA_MCAST_REPROBES, NDTPA_PAD, __NDTPA_MAX }; struct ndtmsg { __u8 ndtm_family; __u8 ndtm_pad1; __u16 ndtm_pad2; }; struct ndt_config { __u16 ndtc_key_len; __u16 ndtc_entry_size; __u32 ndtc_entries; __u32 ndtc_last_flush; __u32 ndtc_last_rand; __u32 ndtc_hash_rnd; __u32 ndtc_hash_mask; __u32 ndtc_hash_chain_gc; __u32 ndtc_proxy_qlen; }; enum { NDTA_UNSPEC, NDTA_NAME, NDTA_THRESH1, NDTA_THRESH2, NDTA_THRESH3, NDTA_CONFIG, NDTA_PARMS, NDTA_STATS, NDTA_GC_INTERVAL, NDTA_PAD, __NDTA_MAX }; # 47 "../include/linux/netdevice.h" 2 # 1 "../include/uapi/linux/netdevice.h" 1 # 32 "../include/uapi/linux/netdevice.h" # 1 "../include/linux/if_link.h" 1 # 1 "../include/uapi/linux/if_link.h" 1 struct rtnl_link_stats { __u32 rx_packets; __u32 tx_packets; __u32 rx_bytes; __u32 tx_bytes; __u32 rx_errors; __u32 tx_errors; __u32 rx_dropped; __u32 tx_dropped; __u32 multicast; __u32 collisions; __u32 rx_length_errors; __u32 rx_over_errors; __u32 rx_crc_errors; __u32 rx_frame_errors; __u32 rx_fifo_errors; __u32 rx_missed_errors; __u32 tx_aborted_errors; __u32 tx_carrier_errors; __u32 tx_fifo_errors; __u32 tx_heartbeat_errors; __u32 tx_window_errors; __u32 rx_compressed; __u32 tx_compressed; __u32 rx_nohandler; }; struct rtnl_link_stats64 { __u64 rx_packets; __u64 tx_packets; __u64 rx_bytes; __u64 tx_bytes; __u64 rx_errors; __u64 tx_errors; __u64 rx_dropped; __u64 tx_dropped; __u64 multicast; __u64 collisions; __u64 rx_length_errors; __u64 rx_over_errors; __u64 rx_crc_errors; __u64 rx_frame_errors; __u64 rx_fifo_errors; __u64 rx_missed_errors; __u64 tx_aborted_errors; __u64 tx_carrier_errors; __u64 tx_fifo_errors; __u64 tx_heartbeat_errors; __u64 tx_window_errors; __u64 rx_compressed; __u64 tx_compressed; __u64 rx_nohandler; }; struct rtnl_link_ifmap { __u64 mem_start; __u64 mem_end; __u64 base_addr; __u16 irq; __u8 dma; __u8 port; }; # 106 "../include/uapi/linux/if_link.h" enum { IFLA_UNSPEC, IFLA_ADDRESS, IFLA_BROADCAST, IFLA_IFNAME, IFLA_MTU, IFLA_LINK, IFLA_QDISC, IFLA_STATS, IFLA_COST, IFLA_PRIORITY, IFLA_MASTER, IFLA_WIRELESS, IFLA_PROTINFO, IFLA_TXQLEN, IFLA_MAP, IFLA_WEIGHT, IFLA_OPERSTATE, IFLA_LINKMODE, IFLA_LINKINFO, IFLA_NET_NS_PID, IFLA_IFALIAS, IFLA_NUM_VF, IFLA_VFINFO_LIST, IFLA_STATS64, IFLA_VF_PORTS, IFLA_PORT_SELF, IFLA_AF_SPEC, IFLA_GROUP, IFLA_NET_NS_FD, IFLA_EXT_MASK, IFLA_PROMISCUITY, IFLA_NUM_TX_QUEUES, IFLA_NUM_RX_QUEUES, IFLA_CARRIER, IFLA_PHYS_PORT_ID, IFLA_CARRIER_CHANGES, IFLA_PHYS_SWITCH_ID, IFLA_LINK_NETNSID, IFLA_PHYS_PORT_NAME, IFLA_PROTO_DOWN, IFLA_GSO_MAX_SEGS, IFLA_GSO_MAX_SIZE, IFLA_PAD, IFLA_XDP, IFLA_EVENT, IFLA_NEW_NETNSID, IFLA_IF_NETNSID, IFLA_TARGET_NETNSID = IFLA_IF_NETNSID, IFLA_CARRIER_UP_COUNT, IFLA_CARRIER_DOWN_COUNT, IFLA_NEW_IFINDEX, IFLA_MIN_MTU, IFLA_MAX_MTU, __IFLA_MAX }; # 182 "../include/uapi/linux/if_link.h" enum { IFLA_INET_UNSPEC, IFLA_INET_CONF, __IFLA_INET_MAX, }; # 220 "../include/uapi/linux/if_link.h" enum { IFLA_INET6_UNSPEC, IFLA_INET6_FLAGS, IFLA_INET6_CONF, IFLA_INET6_STATS, IFLA_INET6_MCAST, IFLA_INET6_CACHEINFO, IFLA_INET6_ICMP6STATS, IFLA_INET6_TOKEN, IFLA_INET6_ADDR_GEN_MODE, __IFLA_INET6_MAX }; enum in6_addr_gen_mode { IN6_ADDR_GEN_MODE_EUI64, IN6_ADDR_GEN_MODE_NONE, IN6_ADDR_GEN_MODE_STABLE_PRIVACY, IN6_ADDR_GEN_MODE_RANDOM, }; enum { IFLA_BR_UNSPEC, IFLA_BR_FORWARD_DELAY, IFLA_BR_HELLO_TIME, IFLA_BR_MAX_AGE, IFLA_BR_AGEING_TIME, IFLA_BR_STP_STATE, IFLA_BR_PRIORITY, IFLA_BR_VLAN_FILTERING, IFLA_BR_VLAN_PROTOCOL, IFLA_BR_GROUP_FWD_MASK, IFLA_BR_ROOT_ID, IFLA_BR_BRIDGE_ID, IFLA_BR_ROOT_PORT, IFLA_BR_ROOT_PATH_COST, IFLA_BR_TOPOLOGY_CHANGE, IFLA_BR_TOPOLOGY_CHANGE_DETECTED, IFLA_BR_HELLO_TIMER, IFLA_BR_TCN_TIMER, IFLA_BR_TOPOLOGY_CHANGE_TIMER, IFLA_BR_GC_TIMER, IFLA_BR_GROUP_ADDR, IFLA_BR_FDB_FLUSH, IFLA_BR_MCAST_ROUTER, IFLA_BR_MCAST_SNOOPING, IFLA_BR_MCAST_QUERY_USE_IFADDR, IFLA_BR_MCAST_QUERIER, IFLA_BR_MCAST_HASH_ELASTICITY, IFLA_BR_MCAST_HASH_MAX, IFLA_BR_MCAST_LAST_MEMBER_CNT, IFLA_BR_MCAST_STARTUP_QUERY_CNT, IFLA_BR_MCAST_LAST_MEMBER_INTVL, IFLA_BR_MCAST_MEMBERSHIP_INTVL, IFLA_BR_MCAST_QUERIER_INTVL, IFLA_BR_MCAST_QUERY_INTVL, IFLA_BR_MCAST_QUERY_RESPONSE_INTVL, IFLA_BR_MCAST_STARTUP_QUERY_INTVL, IFLA_BR_NF_CALL_IPTABLES, IFLA_BR_NF_CALL_IP6TABLES, IFLA_BR_NF_CALL_ARPTABLES, IFLA_BR_VLAN_DEFAULT_PVID, IFLA_BR_PAD, IFLA_BR_VLAN_STATS_ENABLED, IFLA_BR_MCAST_STATS_ENABLED, IFLA_BR_MCAST_IGMP_VERSION, IFLA_BR_MCAST_MLD_VERSION, IFLA_BR_VLAN_STATS_PER_PORT, IFLA_BR_MULTI_BOOLOPT, __IFLA_BR_MAX, }; struct ifla_bridge_id { __u8 prio[2]; __u8 addr[6]; }; enum { BRIDGE_MODE_UNSPEC, BRIDGE_MODE_HAIRPIN, }; enum { IFLA_BRPORT_UNSPEC, IFLA_BRPORT_STATE, IFLA_BRPORT_PRIORITY, IFLA_BRPORT_COST, IFLA_BRPORT_MODE, IFLA_BRPORT_GUARD, IFLA_BRPORT_PROTECT, IFLA_BRPORT_FAST_LEAVE, IFLA_BRPORT_LEARNING, IFLA_BRPORT_UNICAST_FLOOD, IFLA_BRPORT_PROXYARP, IFLA_BRPORT_LEARNING_SYNC, IFLA_BRPORT_PROXYARP_WIFI, IFLA_BRPORT_ROOT_ID, IFLA_BRPORT_BRIDGE_ID, IFLA_BRPORT_DESIGNATED_PORT, IFLA_BRPORT_DESIGNATED_COST, IFLA_BRPORT_ID, IFLA_BRPORT_NO, IFLA_BRPORT_TOPOLOGY_CHANGE_ACK, IFLA_BRPORT_CONFIG_PENDING, IFLA_BRPORT_MESSAGE_AGE_TIMER, IFLA_BRPORT_FORWARD_DELAY_TIMER, IFLA_BRPORT_HOLD_TIMER, IFLA_BRPORT_FLUSH, IFLA_BRPORT_MULTICAST_ROUTER, IFLA_BRPORT_PAD, IFLA_BRPORT_MCAST_FLOOD, IFLA_BRPORT_MCAST_TO_UCAST, IFLA_BRPORT_VLAN_TUNNEL, IFLA_BRPORT_BCAST_FLOOD, IFLA_BRPORT_GROUP_FWD_MASK, IFLA_BRPORT_NEIGH_SUPPRESS, IFLA_BRPORT_ISOLATED, IFLA_BRPORT_BACKUP_PORT, __IFLA_BRPORT_MAX }; struct ifla_cacheinfo { __u32 max_reasm_len; __u32 tstamp; __u32 reachable_time; __u32 retrans_time; }; enum { IFLA_INFO_UNSPEC, IFLA_INFO_KIND, IFLA_INFO_DATA, IFLA_INFO_XSTATS, IFLA_INFO_SLAVE_KIND, IFLA_INFO_SLAVE_DATA, __IFLA_INFO_MAX, }; enum { IFLA_VLAN_UNSPEC, IFLA_VLAN_ID, IFLA_VLAN_FLAGS, IFLA_VLAN_EGRESS_QOS, IFLA_VLAN_INGRESS_QOS, IFLA_VLAN_PROTOCOL, __IFLA_VLAN_MAX, }; struct ifla_vlan_flags { __u32 flags; __u32 mask; }; enum { IFLA_VLAN_QOS_UNSPEC, IFLA_VLAN_QOS_MAPPING, __IFLA_VLAN_QOS_MAX }; struct ifla_vlan_qos_mapping { __u32 from; __u32 to; }; enum { IFLA_MACVLAN_UNSPEC, IFLA_MACVLAN_MODE, IFLA_MACVLAN_FLAGS, IFLA_MACVLAN_MACADDR_MODE, IFLA_MACVLAN_MACADDR, IFLA_MACVLAN_MACADDR_DATA, IFLA_MACVLAN_MACADDR_COUNT, __IFLA_MACVLAN_MAX, }; enum macvlan_mode { MACVLAN_MODE_PRIVATE = 1, MACVLAN_MODE_VEPA = 2, MACVLAN_MODE_BRIDGE = 4, MACVLAN_MODE_PASSTHRU = 8, MACVLAN_MODE_SOURCE = 16, }; enum macvlan_macaddr_mode { MACVLAN_MACADDR_ADD, MACVLAN_MACADDR_DEL, MACVLAN_MACADDR_FLUSH, MACVLAN_MACADDR_SET, }; enum { IFLA_VRF_UNSPEC, IFLA_VRF_TABLE, __IFLA_VRF_MAX }; enum { IFLA_VRF_PORT_UNSPEC, IFLA_VRF_PORT_TABLE, __IFLA_VRF_PORT_MAX }; enum { IFLA_MACSEC_UNSPEC, IFLA_MACSEC_SCI, IFLA_MACSEC_PORT, IFLA_MACSEC_ICV_LEN, IFLA_MACSEC_CIPHER_SUITE, IFLA_MACSEC_WINDOW, IFLA_MACSEC_ENCODING_SA, IFLA_MACSEC_ENCRYPT, IFLA_MACSEC_PROTECT, IFLA_MACSEC_INC_SCI, IFLA_MACSEC_ES, IFLA_MACSEC_SCB, IFLA_MACSEC_REPLAY_PROTECT, IFLA_MACSEC_VALIDATION, IFLA_MACSEC_PAD, __IFLA_MACSEC_MAX, }; enum { IFLA_XFRM_UNSPEC, IFLA_XFRM_LINK, IFLA_XFRM_IF_ID, __IFLA_XFRM_MAX }; enum macsec_validation_type { MACSEC_VALIDATE_DISABLED = 0, MACSEC_VALIDATE_CHECK = 1, MACSEC_VALIDATE_STRICT = 2, __MACSEC_VALIDATE_END, MACSEC_VALIDATE_MAX = __MACSEC_VALIDATE_END - 1, }; enum { IFLA_IPVLAN_UNSPEC, IFLA_IPVLAN_MODE, IFLA_IPVLAN_FLAGS, __IFLA_IPVLAN_MAX }; enum ipvlan_mode { IPVLAN_MODE_L2 = 0, IPVLAN_MODE_L3, IPVLAN_MODE_L3S, IPVLAN_MODE_MAX }; enum { IFLA_VXLAN_UNSPEC, IFLA_VXLAN_ID, IFLA_VXLAN_GROUP, IFLA_VXLAN_LINK, IFLA_VXLAN_LOCAL, IFLA_VXLAN_TTL, IFLA_VXLAN_TOS, IFLA_VXLAN_LEARNING, IFLA_VXLAN_AGEING, IFLA_VXLAN_LIMIT, IFLA_VXLAN_PORT_RANGE, IFLA_VXLAN_PROXY, IFLA_VXLAN_RSC, IFLA_VXLAN_L2MISS, IFLA_VXLAN_L3MISS, IFLA_VXLAN_PORT, IFLA_VXLAN_GROUP6, IFLA_VXLAN_LOCAL6, IFLA_VXLAN_UDP_CSUM, IFLA_VXLAN_UDP_ZERO_CSUM6_TX, IFLA_VXLAN_UDP_ZERO_CSUM6_RX, IFLA_VXLAN_REMCSUM_TX, IFLA_VXLAN_REMCSUM_RX, IFLA_VXLAN_GBP, IFLA_VXLAN_REMCSUM_NOPARTIAL, IFLA_VXLAN_COLLECT_METADATA, IFLA_VXLAN_LABEL, IFLA_VXLAN_GPE, IFLA_VXLAN_TTL_INHERIT, IFLA_VXLAN_DF, __IFLA_VXLAN_MAX }; struct ifla_vxlan_port_range { __be16 low; __be16 high; }; enum ifla_vxlan_df { VXLAN_DF_UNSET = 0, VXLAN_DF_SET, VXLAN_DF_INHERIT, __VXLAN_DF_END, VXLAN_DF_MAX = __VXLAN_DF_END - 1, }; enum { IFLA_GENEVE_UNSPEC, IFLA_GENEVE_ID, IFLA_GENEVE_REMOTE, IFLA_GENEVE_TTL, IFLA_GENEVE_TOS, IFLA_GENEVE_PORT, IFLA_GENEVE_COLLECT_METADATA, IFLA_GENEVE_REMOTE6, IFLA_GENEVE_UDP_CSUM, IFLA_GENEVE_UDP_ZERO_CSUM6_TX, IFLA_GENEVE_UDP_ZERO_CSUM6_RX, IFLA_GENEVE_LABEL, IFLA_GENEVE_TTL_INHERIT, IFLA_GENEVE_DF, __IFLA_GENEVE_MAX }; enum ifla_geneve_df { GENEVE_DF_UNSET = 0, GENEVE_DF_SET, GENEVE_DF_INHERIT, __GENEVE_DF_END, GENEVE_DF_MAX = __GENEVE_DF_END - 1, }; enum { IFLA_PPP_UNSPEC, IFLA_PPP_DEV_FD, __IFLA_PPP_MAX }; enum ifla_gtp_role { GTP_ROLE_GGSN = 0, GTP_ROLE_SGSN, }; enum { IFLA_GTP_UNSPEC, IFLA_GTP_FD0, IFLA_GTP_FD1, IFLA_GTP_PDP_HASHSIZE, IFLA_GTP_ROLE, __IFLA_GTP_MAX, }; enum { IFLA_BOND_UNSPEC, IFLA_BOND_MODE, IFLA_BOND_ACTIVE_SLAVE, IFLA_BOND_MIIMON, IFLA_BOND_UPDELAY, IFLA_BOND_DOWNDELAY, IFLA_BOND_USE_CARRIER, IFLA_BOND_ARP_INTERVAL, IFLA_BOND_ARP_IP_TARGET, IFLA_BOND_ARP_VALIDATE, IFLA_BOND_ARP_ALL_TARGETS, IFLA_BOND_PRIMARY, IFLA_BOND_PRIMARY_RESELECT, IFLA_BOND_FAIL_OVER_MAC, IFLA_BOND_XMIT_HASH_POLICY, IFLA_BOND_RESEND_IGMP, IFLA_BOND_NUM_PEER_NOTIF, IFLA_BOND_ALL_SLAVES_ACTIVE, IFLA_BOND_MIN_LINKS, IFLA_BOND_LP_INTERVAL, IFLA_BOND_PACKETS_PER_SLAVE, IFLA_BOND_AD_LACP_RATE, IFLA_BOND_AD_SELECT, IFLA_BOND_AD_INFO, IFLA_BOND_AD_ACTOR_SYS_PRIO, IFLA_BOND_AD_USER_PORT_KEY, IFLA_BOND_AD_ACTOR_SYSTEM, IFLA_BOND_TLB_DYNAMIC_LB, __IFLA_BOND_MAX, }; enum { IFLA_BOND_AD_INFO_UNSPEC, IFLA_BOND_AD_INFO_AGGREGATOR, IFLA_BOND_AD_INFO_NUM_PORTS, IFLA_BOND_AD_INFO_ACTOR_KEY, IFLA_BOND_AD_INFO_PARTNER_KEY, IFLA_BOND_AD_INFO_PARTNER_MAC, __IFLA_BOND_AD_INFO_MAX, }; enum { IFLA_BOND_SLAVE_UNSPEC, IFLA_BOND_SLAVE_STATE, IFLA_BOND_SLAVE_MII_STATUS, IFLA_BOND_SLAVE_LINK_FAILURE_COUNT, IFLA_BOND_SLAVE_PERM_HWADDR, IFLA_BOND_SLAVE_QUEUE_ID, IFLA_BOND_SLAVE_AD_AGGREGATOR_ID, IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE, IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE, __IFLA_BOND_SLAVE_MAX, }; enum { IFLA_VF_INFO_UNSPEC, IFLA_VF_INFO, __IFLA_VF_INFO_MAX, }; enum { IFLA_VF_UNSPEC, IFLA_VF_MAC, IFLA_VF_VLAN, IFLA_VF_TX_RATE, IFLA_VF_SPOOFCHK, IFLA_VF_LINK_STATE, IFLA_VF_RATE, IFLA_VF_RSS_QUERY_EN, IFLA_VF_STATS, IFLA_VF_TRUST, IFLA_VF_IB_NODE_GUID, IFLA_VF_IB_PORT_GUID, IFLA_VF_VLAN_LIST, IFLA_VF_BROADCAST, __IFLA_VF_MAX, }; struct ifla_vf_mac { __u32 vf; __u8 mac[32]; }; struct ifla_vf_broadcast { __u8 broadcast[32]; }; struct ifla_vf_vlan { __u32 vf; __u32 vlan; __u32 qos; }; enum { IFLA_VF_VLAN_INFO_UNSPEC, IFLA_VF_VLAN_INFO, __IFLA_VF_VLAN_INFO_MAX, }; struct ifla_vf_vlan_info { __u32 vf; __u32 vlan; __u32 qos; __be16 vlan_proto; }; struct ifla_vf_tx_rate { __u32 vf; __u32 rate; }; struct ifla_vf_rate { __u32 vf; __u32 min_tx_rate; __u32 max_tx_rate; }; struct ifla_vf_spoofchk { __u32 vf; __u32 setting; }; struct ifla_vf_guid { __u32 vf; __u64 guid; }; enum { IFLA_VF_LINK_STATE_AUTO, IFLA_VF_LINK_STATE_ENABLE, IFLA_VF_LINK_STATE_DISABLE, __IFLA_VF_LINK_STATE_MAX, }; struct ifla_vf_link_state { __u32 vf; __u32 link_state; }; struct ifla_vf_rss_query_en { __u32 vf; __u32 setting; }; enum { IFLA_VF_STATS_RX_PACKETS, IFLA_VF_STATS_TX_PACKETS, IFLA_VF_STATS_RX_BYTES, IFLA_VF_STATS_TX_BYTES, IFLA_VF_STATS_BROADCAST, IFLA_VF_STATS_MULTICAST, IFLA_VF_STATS_PAD, IFLA_VF_STATS_RX_DROPPED, IFLA_VF_STATS_TX_DROPPED, __IFLA_VF_STATS_MAX, }; struct ifla_vf_trust { __u32 vf; __u32 setting; }; # 807 "../include/uapi/linux/if_link.h" enum { IFLA_VF_PORT_UNSPEC, IFLA_VF_PORT, __IFLA_VF_PORT_MAX, }; enum { IFLA_PORT_UNSPEC, IFLA_PORT_VF, IFLA_PORT_PROFILE, IFLA_PORT_VSI_TYPE, IFLA_PORT_INSTANCE_UUID, IFLA_PORT_HOST_UUID, IFLA_PORT_REQUEST, IFLA_PORT_RESPONSE, __IFLA_PORT_MAX, }; enum { PORT_REQUEST_PREASSOCIATE = 0, PORT_REQUEST_PREASSOCIATE_RR, PORT_REQUEST_ASSOCIATE, PORT_REQUEST_DISASSOCIATE, }; enum { PORT_VDP_RESPONSE_SUCCESS = 0, PORT_VDP_RESPONSE_INVALID_FORMAT, PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES, PORT_VDP_RESPONSE_UNUSED_VTID, PORT_VDP_RESPONSE_VTID_VIOLATION, PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION, PORT_VDP_RESPONSE_OUT_OF_SYNC, PORT_PROFILE_RESPONSE_SUCCESS = 0x100, PORT_PROFILE_RESPONSE_INPROGRESS, PORT_PROFILE_RESPONSE_INVALID, PORT_PROFILE_RESPONSE_BADSTATE, PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES, PORT_PROFILE_RESPONSE_ERROR, }; struct ifla_port_vsi { __u8 vsi_mgr_id; __u8 vsi_type_id[3]; __u8 vsi_type_version; __u8 pad[3]; }; enum { IFLA_IPOIB_UNSPEC, IFLA_IPOIB_PKEY, IFLA_IPOIB_MODE, IFLA_IPOIB_UMCAST, __IFLA_IPOIB_MAX }; enum { IPOIB_MODE_DATAGRAM = 0, IPOIB_MODE_CONNECTED = 1, }; enum { IFLA_HSR_UNSPEC, IFLA_HSR_SLAVE1, IFLA_HSR_SLAVE2, IFLA_HSR_MULTICAST_SPEC, IFLA_HSR_SUPERVISION_ADDR, IFLA_HSR_SEQ_NR, IFLA_HSR_VERSION, __IFLA_HSR_MAX, }; struct if_stats_msg { __u8 family; __u8 pad1; __u16 pad2; __u32 ifindex; __u32 filter_mask; }; enum { IFLA_STATS_UNSPEC, IFLA_STATS_LINK_64, IFLA_STATS_LINK_XSTATS, IFLA_STATS_LINK_XSTATS_SLAVE, IFLA_STATS_LINK_OFFLOAD_XSTATS, IFLA_STATS_AF_SPEC, __IFLA_STATS_MAX, }; # 930 "../include/uapi/linux/if_link.h" enum { LINK_XSTATS_TYPE_UNSPEC, LINK_XSTATS_TYPE_BRIDGE, LINK_XSTATS_TYPE_BOND, __LINK_XSTATS_TYPE_MAX }; enum { IFLA_OFFLOAD_XSTATS_UNSPEC, IFLA_OFFLOAD_XSTATS_CPU_HIT, __IFLA_OFFLOAD_XSTATS_MAX }; # 959 "../include/uapi/linux/if_link.h" enum { XDP_ATTACHED_NONE = 0, XDP_ATTACHED_DRV, XDP_ATTACHED_SKB, XDP_ATTACHED_HW, XDP_ATTACHED_MULTI, }; enum { IFLA_XDP_UNSPEC, IFLA_XDP_FD, IFLA_XDP_ATTACHED, IFLA_XDP_FLAGS, IFLA_XDP_PROG_ID, IFLA_XDP_DRV_PROG_ID, IFLA_XDP_SKB_PROG_ID, IFLA_XDP_HW_PROG_ID, __IFLA_XDP_MAX, }; enum { IFLA_EVENT_NONE, IFLA_EVENT_REBOOT, IFLA_EVENT_FEATURES, IFLA_EVENT_BONDING_FAILOVER, IFLA_EVENT_NOTIFY_PEERS, IFLA_EVENT_IGMP_RESEND, IFLA_EVENT_BONDING_OPTIONS, }; enum { IFLA_TUN_UNSPEC, IFLA_TUN_OWNER, IFLA_TUN_GROUP, IFLA_TUN_TYPE, IFLA_TUN_PI, IFLA_TUN_VNET_HDR, IFLA_TUN_PERSIST, IFLA_TUN_MULTI_QUEUE, IFLA_TUN_NUM_QUEUES, IFLA_TUN_NUM_DISABLED_QUEUES, __IFLA_TUN_MAX, }; # 1016 "../include/uapi/linux/if_link.h" enum { IFLA_RMNET_UNSPEC, IFLA_RMNET_MUX_ID, IFLA_RMNET_FLAGS, __IFLA_RMNET_MAX, }; struct ifla_rmnet_flags { __u32 flags; __u32 mask; }; # 6 "../include/linux/if_link.h" 2 struct ifla_vf_stats { __u64 rx_packets; __u64 tx_packets; __u64 rx_bytes; __u64 tx_bytes; __u64 broadcast; __u64 multicast; __u64 rx_dropped; __u64 tx_dropped; }; struct ifla_vf_info { __u32 vf; __u8 mac[32]; __u32 vlan; __u32 qos; __u32 spoofchk; __u32 linkstate; __u32 min_tx_rate; __u32 max_tx_rate; __u32 rss_query_en; __u32 trusted; __be16 vlan_proto; }; # 33 "../include/uapi/linux/netdevice.h" 2 # 49 "../include/uapi/linux/netdevice.h" enum { IF_PORT_UNKNOWN = 0, IF_PORT_10BASE2, IF_PORT_10BASET, IF_PORT_AUI, IF_PORT_100BASET, IF_PORT_100BASETX, IF_PORT_100BASEFX }; # 48 "../include/linux/netdevice.h" 2 # 1 "../include/uapi/linux/if_bonding.h" 1 # 98 "../include/uapi/linux/if_bonding.h" typedef struct ifbond { __s32 bond_mode; __s32 num_slaves; __s32 miimon; } ifbond; typedef struct ifslave { __s32 slave_id; char slave_name[16]; __s8 link; __s8 state; __u32 link_failure_count; } ifslave; struct ad_info { __u16 aggregator_id; __u16 ports; __u16 actor_key; __u16 partner_key; __u8 partner_system[6]; }; enum { BOND_XSTATS_UNSPEC, BOND_XSTATS_3AD, __BOND_XSTATS_MAX }; enum { BOND_3AD_STAT_LACPDU_RX, BOND_3AD_STAT_LACPDU_TX, BOND_3AD_STAT_LACPDU_UNKNOWN_RX, BOND_3AD_STAT_LACPDU_ILLEGAL_RX, BOND_3AD_STAT_MARKER_RX, BOND_3AD_STAT_MARKER_TX, BOND_3AD_STAT_MARKER_RESP_RX, BOND_3AD_STAT_MARKER_RESP_TX, BOND_3AD_STAT_MARKER_UNKNOWN_RX, BOND_3AD_STAT_PAD, __BOND_3AD_STAT_MAX }; # 49 "../include/linux/netdevice.h" 2 # 1 "../include/uapi/linux/pkt_cls.h" 1 # 1 "../include/uapi/linux/pkt_sched.h" 1 # 33 "../include/uapi/linux/pkt_sched.h" struct tc_stats { __u64 bytes; __u32 packets; __u32 drops; __u32 overlimits; __u32 bps; __u32 pps; __u32 qlen; __u32 backlog; }; struct tc_estimator { signed char interval; unsigned char ewma_log; }; # 83 "../include/uapi/linux/pkt_sched.h" enum tc_link_layer { TC_LINKLAYER_UNAWARE, TC_LINKLAYER_ETHERNET, TC_LINKLAYER_ATM, }; struct tc_ratespec { unsigned char cell_log; __u8 linklayer; unsigned short overhead; short cell_align; unsigned short mpu; __u32 rate; }; struct tc_sizespec { unsigned char cell_log; unsigned char size_log; short cell_align; int overhead; unsigned int linklayer; unsigned int mpu; unsigned int mtu; unsigned int tsize; }; enum { TCA_STAB_UNSPEC, TCA_STAB_BASE, TCA_STAB_DATA, __TCA_STAB_MAX }; struct tc_fifo_qopt { __u32 limit; }; # 138 "../include/uapi/linux/pkt_sched.h" struct tc_skbprio_qopt { __u32 limit; }; struct tc_prio_qopt { int bands; __u8 priomap[15 +1]; }; struct tc_multiq_qopt { __u16 bands; __u16 max_bands; }; # 166 "../include/uapi/linux/pkt_sched.h" struct tc_plug_qopt { # 176 "../include/uapi/linux/pkt_sched.h" int action; __u32 limit; }; struct tc_tbf_qopt { struct tc_ratespec rate; struct tc_ratespec peakrate; __u32 limit; __u32 buffer; __u32 mtu; }; enum { TCA_TBF_UNSPEC, TCA_TBF_PARMS, TCA_TBF_RTAB, TCA_TBF_PTAB, TCA_TBF_RATE64, TCA_TBF_PRATE64, TCA_TBF_BURST, TCA_TBF_PBURST, TCA_TBF_PAD, __TCA_TBF_MAX, }; # 212 "../include/uapi/linux/pkt_sched.h" struct tc_sfq_qopt { unsigned quantum; int perturb_period; __u32 limit; unsigned divisor; unsigned flows; }; struct tc_sfqred_stats { __u32 prob_drop; __u32 forced_drop; __u32 prob_mark; __u32 forced_mark; __u32 prob_mark_head; __u32 forced_mark_head; }; struct tc_sfq_qopt_v1 { struct tc_sfq_qopt v0; unsigned int depth; unsigned int headdrop; __u32 limit; __u32 qth_min; __u32 qth_max; unsigned char Wlog; unsigned char Plog; unsigned char Scell_log; unsigned char flags; __u32 max_P; struct tc_sfqred_stats stats; }; struct tc_sfq_xstats { __s32 allot; }; enum { TCA_RED_UNSPEC, TCA_RED_PARMS, TCA_RED_STAB, TCA_RED_MAX_P, __TCA_RED_MAX, }; struct tc_red_qopt { __u32 limit; __u32 qth_min; __u32 qth_max; unsigned char Wlog; unsigned char Plog; unsigned char Scell_log; unsigned char flags; }; struct tc_red_xstats { __u32 early; __u32 pdrop; __u32 other; __u32 marked; }; enum { TCA_GRED_UNSPEC, TCA_GRED_PARMS, TCA_GRED_STAB, TCA_GRED_DPS, TCA_GRED_MAX_P, TCA_GRED_LIMIT, TCA_GRED_VQ_LIST, __TCA_GRED_MAX, }; enum { TCA_GRED_VQ_ENTRY_UNSPEC, TCA_GRED_VQ_ENTRY, __TCA_GRED_VQ_ENTRY_MAX, }; enum { TCA_GRED_VQ_UNSPEC, TCA_GRED_VQ_PAD, TCA_GRED_VQ_DP, TCA_GRED_VQ_STAT_BYTES, TCA_GRED_VQ_STAT_PACKETS, TCA_GRED_VQ_STAT_BACKLOG, TCA_GRED_VQ_STAT_PROB_DROP, TCA_GRED_VQ_STAT_PROB_MARK, TCA_GRED_VQ_STAT_FORCED_DROP, TCA_GRED_VQ_STAT_FORCED_MARK, TCA_GRED_VQ_STAT_PDROP, TCA_GRED_VQ_STAT_OTHER, TCA_GRED_VQ_FLAGS, __TCA_GRED_VQ_MAX }; struct tc_gred_qopt { __u32 limit; __u32 qth_min; __u32 qth_max; __u32 DP; __u32 backlog; __u32 qave; __u32 forced; __u32 early; __u32 other; __u32 pdrop; __u8 Wlog; __u8 Plog; __u8 Scell_log; __u8 prio; __u32 packets; __u32 bytesin; }; struct tc_gred_sopt { __u32 DPs; __u32 def_DP; __u8 grio; __u8 flags; __u16 pad1; }; enum { TCA_CHOKE_UNSPEC, TCA_CHOKE_PARMS, TCA_CHOKE_STAB, TCA_CHOKE_MAX_P, __TCA_CHOKE_MAX, }; struct tc_choke_qopt { __u32 limit; __u32 qth_min; __u32 qth_max; unsigned char Wlog; unsigned char Plog; unsigned char Scell_log; unsigned char flags; }; struct tc_choke_xstats { __u32 early; __u32 pdrop; __u32 other; __u32 marked; __u32 matched; }; struct tc_htb_opt { struct tc_ratespec rate; struct tc_ratespec ceil; __u32 buffer; __u32 cbuffer; __u32 quantum; __u32 level; __u32 prio; }; struct tc_htb_glob { __u32 version; __u32 rate2quantum; __u32 defcls; __u32 debug; __u32 direct_pkts; }; enum { TCA_HTB_UNSPEC, TCA_HTB_PARMS, TCA_HTB_INIT, TCA_HTB_CTAB, TCA_HTB_RTAB, TCA_HTB_DIRECT_QLEN, TCA_HTB_RATE64, TCA_HTB_CEIL64, TCA_HTB_PAD, __TCA_HTB_MAX, }; struct tc_htb_xstats { __u32 lends; __u32 borrows; __u32 giants; __s32 tokens; __s32 ctokens; }; struct tc_hfsc_qopt { __u16 defcls; }; struct tc_service_curve { __u32 m1; __u32 d; __u32 m2; }; struct tc_hfsc_stats { __u64 work; __u64 rtwork; __u32 period; __u32 level; }; enum { TCA_HFSC_UNSPEC, TCA_HFSC_RSC, TCA_HFSC_FSC, TCA_HFSC_USC, __TCA_HFSC_MAX, }; # 466 "../include/uapi/linux/pkt_sched.h" struct tc_cbq_lssopt { unsigned char change; unsigned char flags; unsigned char ewma_log; unsigned char level; __u32 maxidle; __u32 minidle; __u32 offtime; __u32 avpkt; }; struct tc_cbq_wrropt { unsigned char flags; unsigned char priority; unsigned char cpriority; unsigned char __reserved; __u32 allot; __u32 weight; }; struct tc_cbq_ovl { unsigned char strategy; unsigned char priority2; __u16 pad; __u32 penalty; }; struct tc_cbq_police { unsigned char police; unsigned char __res1; unsigned short __res2; }; struct tc_cbq_fopt { __u32 split; __u32 defmap; __u32 defchange; }; struct tc_cbq_xstats { __u32 borrows; __u32 overactions; __s32 avgidle; __s32 undertime; }; enum { TCA_CBQ_UNSPEC, TCA_CBQ_LSSOPT, TCA_CBQ_WRROPT, TCA_CBQ_FOPT, TCA_CBQ_OVL_STRATEGY, TCA_CBQ_RATE, TCA_CBQ_RTAB, TCA_CBQ_POLICE, __TCA_CBQ_MAX, }; enum { TCA_DSMARK_UNSPEC, TCA_DSMARK_INDICES, TCA_DSMARK_DEFAULT_INDEX, TCA_DSMARK_SET_TC_INDEX, TCA_DSMARK_MASK, TCA_DSMARK_VALUE, __TCA_DSMARK_MAX, }; enum { TCA_ATM_UNSPEC, TCA_ATM_FD, TCA_ATM_PTR, TCA_ATM_HDR, TCA_ATM_EXCESS, TCA_ATM_ADDR, TCA_ATM_STATE, __TCA_ATM_MAX, }; enum { TCA_NETEM_UNSPEC, TCA_NETEM_CORR, TCA_NETEM_DELAY_DIST, TCA_NETEM_REORDER, TCA_NETEM_CORRUPT, TCA_NETEM_LOSS, TCA_NETEM_RATE, TCA_NETEM_ECN, TCA_NETEM_RATE64, TCA_NETEM_PAD, TCA_NETEM_LATENCY64, TCA_NETEM_JITTER64, TCA_NETEM_SLOT, TCA_NETEM_SLOT_DIST, __TCA_NETEM_MAX, }; struct tc_netem_qopt { __u32 latency; __u32 limit; __u32 loss; __u32 gap; __u32 duplicate; __u32 jitter; }; struct tc_netem_corr { __u32 delay_corr; __u32 loss_corr; __u32 dup_corr; }; struct tc_netem_reorder { __u32 probability; __u32 correlation; }; struct tc_netem_corrupt { __u32 probability; __u32 correlation; }; struct tc_netem_rate { __u32 rate; __s32 packet_overhead; __u32 cell_size; __s32 cell_overhead; }; struct tc_netem_slot { __s64 min_delay; __s64 max_delay; __s32 max_packets; __s32 max_bytes; __s64 dist_delay; __s64 dist_jitter; }; enum { NETEM_LOSS_UNSPEC, NETEM_LOSS_GI, NETEM_LOSS_GE, __NETEM_LOSS_MAX }; struct tc_netem_gimodel { __u32 p13; __u32 p31; __u32 p32; __u32 p14; __u32 p23; }; struct tc_netem_gemodel { __u32 p; __u32 r; __u32 h; __u32 k1; }; enum { TCA_DRR_UNSPEC, TCA_DRR_QUANTUM, __TCA_DRR_MAX }; struct tc_drr_stats { __u32 deficit; }; enum { TC_MQPRIO_HW_OFFLOAD_NONE, TC_MQPRIO_HW_OFFLOAD_TCS, __TC_MQPRIO_HW_OFFLOAD_MAX }; enum { TC_MQPRIO_MODE_DCB, TC_MQPRIO_MODE_CHANNEL, __TC_MQPRIO_MODE_MAX }; enum { TC_MQPRIO_SHAPER_DCB, TC_MQPRIO_SHAPER_BW_RATE, __TC_MQPRIO_SHAPER_MAX }; struct tc_mqprio_qopt { __u8 num_tc; __u8 prio_tc_map[15 + 1]; __u8 hw; __u16 count[16]; __u16 offset[16]; }; enum { TCA_MQPRIO_UNSPEC, TCA_MQPRIO_MODE, TCA_MQPRIO_SHAPER, TCA_MQPRIO_MIN_RATE64, TCA_MQPRIO_MAX_RATE64, __TCA_MQPRIO_MAX, }; enum { TCA_SFB_UNSPEC, TCA_SFB_PARMS, __TCA_SFB_MAX, }; struct tc_sfb_qopt { __u32 rehash_interval; __u32 warmup_time; __u32 max; __u32 bin_size; __u32 increment; __u32 decrement; __u32 limit; __u32 penalty_rate; __u32 penalty_burst; }; struct tc_sfb_xstats { __u32 earlydrop; __u32 penaltydrop; __u32 bucketdrop; __u32 queuedrop; __u32 childdrop; __u32 marked; __u32 maxqlen; __u32 maxprob; __u32 avgprob; }; enum { TCA_QFQ_UNSPEC, TCA_QFQ_WEIGHT, TCA_QFQ_LMAX, __TCA_QFQ_MAX }; struct tc_qfq_stats { __u32 weight; __u32 lmax; }; enum { TCA_CODEL_UNSPEC, TCA_CODEL_TARGET, TCA_CODEL_LIMIT, TCA_CODEL_INTERVAL, TCA_CODEL_ECN, TCA_CODEL_CE_THRESHOLD, __TCA_CODEL_MAX }; struct tc_codel_xstats { __u32 maxpacket; __u32 count; __u32 lastcount; __u32 ldelay; __s32 drop_next; __u32 drop_overlimit; __u32 ecn_mark; __u32 dropping; __u32 ce_mark; }; enum { TCA_FQ_CODEL_UNSPEC, TCA_FQ_CODEL_TARGET, TCA_FQ_CODEL_LIMIT, TCA_FQ_CODEL_INTERVAL, TCA_FQ_CODEL_ECN, TCA_FQ_CODEL_FLOWS, TCA_FQ_CODEL_QUANTUM, TCA_FQ_CODEL_CE_THRESHOLD, TCA_FQ_CODEL_DROP_BATCH_SIZE, TCA_FQ_CODEL_MEMORY_LIMIT, __TCA_FQ_CODEL_MAX }; enum { TCA_FQ_CODEL_XSTATS_QDISC, TCA_FQ_CODEL_XSTATS_CLASS, }; struct tc_fq_codel_qd_stats { __u32 maxpacket; __u32 drop_overlimit; __u32 ecn_mark; __u32 new_flow_count; __u32 new_flows_len; __u32 old_flows_len; __u32 ce_mark; __u32 memory_usage; __u32 drop_overmemory; }; struct tc_fq_codel_cl_stats { __s32 deficit; __u32 ldelay; __u32 count; __u32 lastcount; __u32 dropping; __s32 drop_next; }; struct tc_fq_codel_xstats { __u32 type; union { struct tc_fq_codel_qd_stats qdisc_stats; struct tc_fq_codel_cl_stats class_stats; }; }; enum { TCA_FQ_UNSPEC, TCA_FQ_PLIMIT, TCA_FQ_FLOW_PLIMIT, TCA_FQ_QUANTUM, TCA_FQ_INITIAL_QUANTUM, TCA_FQ_RATE_ENABLE, TCA_FQ_FLOW_DEFAULT_RATE, TCA_FQ_FLOW_MAX_RATE, TCA_FQ_BUCKETS_LOG, TCA_FQ_FLOW_REFILL_DELAY, TCA_FQ_ORPHAN_MASK, TCA_FQ_LOW_RATE_THRESHOLD, TCA_FQ_CE_THRESHOLD, __TCA_FQ_MAX }; struct tc_fq_qd_stats { __u64 gc_flows; __u64 highprio_packets; __u64 tcp_retrans; __u64 throttled; __u64 flows_plimit; __u64 pkts_too_long; __u64 allocation_errors; __s64 time_next_delayed_flow; __u32 flows; __u32 inactive_flows; __u32 throttled_flows; __u32 unthrottle_latency_ns; __u64 ce_mark; }; enum { TCA_HHF_UNSPEC, TCA_HHF_BACKLOG_LIMIT, TCA_HHF_QUANTUM, TCA_HHF_HH_FLOWS_LIMIT, TCA_HHF_RESET_TIMEOUT, TCA_HHF_ADMIT_BYTES, TCA_HHF_EVICT_TIMEOUT, TCA_HHF_NON_HH_WEIGHT, __TCA_HHF_MAX }; struct tc_hhf_xstats { __u32 drop_overlimit; __u32 hh_overlimit; __u32 hh_tot_count; __u32 hh_cur_count; }; enum { TCA_PIE_UNSPEC, TCA_PIE_TARGET, TCA_PIE_LIMIT, TCA_PIE_TUPDATE, TCA_PIE_ALPHA, TCA_PIE_BETA, TCA_PIE_ECN, TCA_PIE_BYTEMODE, __TCA_PIE_MAX }; struct tc_pie_xstats { __u64 prob; __u32 delay; __u32 avg_dq_rate; __u32 packets_in; __u32 dropped; __u32 overlimit; __u32 maxq; __u32 ecn_mark; }; struct tc_cbs_qopt { __u8 offload; __u8 _pad[3]; __s32 hicredit; __s32 locredit; __s32 idleslope; __s32 sendslope; }; enum { TCA_CBS_UNSPEC, TCA_CBS_PARMS, __TCA_CBS_MAX, }; struct tc_etf_qopt { __s32 delta; __s32 clockid; __u32 flags; }; enum { TCA_ETF_UNSPEC, TCA_ETF_PARMS, __TCA_ETF_MAX, }; enum { TCA_CAKE_UNSPEC, TCA_CAKE_PAD, TCA_CAKE_BASE_RATE64, TCA_CAKE_DIFFSERV_MODE, TCA_CAKE_ATM, TCA_CAKE_FLOW_MODE, TCA_CAKE_OVERHEAD, TCA_CAKE_RTT, TCA_CAKE_TARGET, TCA_CAKE_AUTORATE, TCA_CAKE_MEMORY, TCA_CAKE_NAT, TCA_CAKE_RAW, TCA_CAKE_WASH, TCA_CAKE_MPU, TCA_CAKE_INGRESS, TCA_CAKE_ACK_FILTER, TCA_CAKE_SPLIT_GSO, TCA_CAKE_FWMARK, __TCA_CAKE_MAX }; enum { __TCA_CAKE_STATS_INVALID, TCA_CAKE_STATS_PAD, TCA_CAKE_STATS_CAPACITY_ESTIMATE64, TCA_CAKE_STATS_MEMORY_LIMIT, TCA_CAKE_STATS_MEMORY_USED, TCA_CAKE_STATS_AVG_NETOFF, TCA_CAKE_STATS_MIN_NETLEN, TCA_CAKE_STATS_MAX_NETLEN, TCA_CAKE_STATS_MIN_ADJLEN, TCA_CAKE_STATS_MAX_ADJLEN, TCA_CAKE_STATS_TIN_STATS, TCA_CAKE_STATS_DEFICIT, TCA_CAKE_STATS_COBALT_COUNT, TCA_CAKE_STATS_DROPPING, TCA_CAKE_STATS_DROP_NEXT_US, TCA_CAKE_STATS_P_DROP, TCA_CAKE_STATS_BLUE_TIMER_US, __TCA_CAKE_STATS_MAX }; enum { __TCA_CAKE_TIN_STATS_INVALID, TCA_CAKE_TIN_STATS_PAD, TCA_CAKE_TIN_STATS_SENT_PACKETS, TCA_CAKE_TIN_STATS_SENT_BYTES64, TCA_CAKE_TIN_STATS_DROPPED_PACKETS, TCA_CAKE_TIN_STATS_DROPPED_BYTES64, TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS, TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64, TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS, TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64, TCA_CAKE_TIN_STATS_BACKLOG_PACKETS, TCA_CAKE_TIN_STATS_BACKLOG_BYTES, TCA_CAKE_TIN_STATS_THRESHOLD_RATE64, TCA_CAKE_TIN_STATS_TARGET_US, TCA_CAKE_TIN_STATS_INTERVAL_US, TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS, TCA_CAKE_TIN_STATS_WAY_MISSES, TCA_CAKE_TIN_STATS_WAY_COLLISIONS, TCA_CAKE_TIN_STATS_PEAK_DELAY_US, TCA_CAKE_TIN_STATS_AVG_DELAY_US, TCA_CAKE_TIN_STATS_BASE_DELAY_US, TCA_CAKE_TIN_STATS_SPARSE_FLOWS, TCA_CAKE_TIN_STATS_BULK_FLOWS, TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS, TCA_CAKE_TIN_STATS_MAX_SKBLEN, TCA_CAKE_TIN_STATS_FLOW_QUANTUM, __TCA_CAKE_TIN_STATS_MAX }; enum { CAKE_FLOW_NONE = 0, CAKE_FLOW_SRC_IP, CAKE_FLOW_DST_IP, CAKE_FLOW_HOSTS, CAKE_FLOW_FLOWS, CAKE_FLOW_DUAL_SRC, CAKE_FLOW_DUAL_DST, CAKE_FLOW_TRIPLE, CAKE_FLOW_MAX, }; enum { CAKE_DIFFSERV_DIFFSERV3 = 0, CAKE_DIFFSERV_DIFFSERV4, CAKE_DIFFSERV_DIFFSERV8, CAKE_DIFFSERV_BESTEFFORT, CAKE_DIFFSERV_PRECEDENCE, CAKE_DIFFSERV_MAX }; enum { CAKE_ACK_NONE = 0, CAKE_ACK_FILTER, CAKE_ACK_AGGRESSIVE, CAKE_ACK_MAX }; enum { CAKE_ATM_NONE = 0, CAKE_ATM_ATM, CAKE_ATM_PTM, CAKE_ATM_MAX }; enum { TC_TAPRIO_CMD_SET_GATES = 0x00, TC_TAPRIO_CMD_SET_AND_HOLD = 0x01, TC_TAPRIO_CMD_SET_AND_RELEASE = 0x02, }; enum { TCA_TAPRIO_SCHED_ENTRY_UNSPEC, TCA_TAPRIO_SCHED_ENTRY_INDEX, TCA_TAPRIO_SCHED_ENTRY_CMD, TCA_TAPRIO_SCHED_ENTRY_GATE_MASK, TCA_TAPRIO_SCHED_ENTRY_INTERVAL, __TCA_TAPRIO_SCHED_ENTRY_MAX, }; # 1144 "../include/uapi/linux/pkt_sched.h" enum { TCA_TAPRIO_SCHED_UNSPEC, TCA_TAPRIO_SCHED_ENTRY, __TCA_TAPRIO_SCHED_MAX, }; # 1164 "../include/uapi/linux/pkt_sched.h" enum { TCA_TAPRIO_ATTR_UNSPEC, TCA_TAPRIO_ATTR_PRIOMAP, TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST, TCA_TAPRIO_ATTR_SCHED_BASE_TIME, TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY, TCA_TAPRIO_ATTR_SCHED_CLOCKID, TCA_TAPRIO_PAD, TCA_TAPRIO_ATTR_ADMIN_SCHED, TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME, TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION, TCA_TAPRIO_ATTR_FLAGS, TCA_TAPRIO_ATTR_TXTIME_DELAY, __TCA_TAPRIO_ATTR_MAX, }; # 7 "../include/uapi/linux/pkt_cls.h" 2 enum { TCA_ACT_UNSPEC, TCA_ACT_KIND, TCA_ACT_OPTIONS, TCA_ACT_INDEX, TCA_ACT_STATS, TCA_ACT_PAD, TCA_ACT_COOKIE, __TCA_ACT_MAX }; # 88 "../include/uapi/linux/pkt_cls.h" enum tca_id { TCA_ID_UNSPEC = 0, TCA_ID_POLICE = 1, TCA_ID_GACT = 5, TCA_ID_IPT = 6, TCA_ID_PEDIT = 7, TCA_ID_MIRRED = 8, TCA_ID_NAT = 9, TCA_ID_XT = 10, TCA_ID_SKBEDIT = 11, TCA_ID_VLAN = 12, TCA_ID_BPF = 13, TCA_ID_CONNMARK = 14, TCA_ID_SKBMOD = 15, TCA_ID_CSUM = 16, TCA_ID_TUNNEL_KEY = 17, TCA_ID_SIMP = 22, TCA_ID_IFE = 25, TCA_ID_SAMPLE = 26, TCA_ID_CTINFO, __TCA_ID_MAX = 255 }; struct tc_police { __u32 index; int action; __u32 limit; __u32 burst; __u32 mtu; struct tc_ratespec rate; struct tc_ratespec peakrate; int refcnt; int bindcnt; __u32 capab; }; struct tcf_t { __u64 install; __u64 lastuse; __u64 expires; __u64 firstuse; }; struct tc_cnt { int refcnt; int bindcnt; }; # 152 "../include/uapi/linux/pkt_cls.h" enum { TCA_POLICE_UNSPEC, TCA_POLICE_TBF, TCA_POLICE_RATE, TCA_POLICE_PEAKRATE, TCA_POLICE_AVRATE, TCA_POLICE_RESULT, TCA_POLICE_TM, TCA_POLICE_PAD, __TCA_POLICE_MAX }; # 184 "../include/uapi/linux/pkt_cls.h" enum { TCA_U32_UNSPEC, TCA_U32_CLASSID, TCA_U32_HASH, TCA_U32_LINK, TCA_U32_DIVISOR, TCA_U32_SEL, TCA_U32_POLICE, TCA_U32_ACT, TCA_U32_INDEV, TCA_U32_PCNT, TCA_U32_MARK, TCA_U32_FLAGS, TCA_U32_PAD, __TCA_U32_MAX }; struct tc_u32_key { __be32 mask; __be32 val; int off; int offmask; }; struct tc_u32_sel { unsigned char flags; unsigned char offshift; unsigned char nkeys; __be16 offmask; __u16 off; short offoff; short hoff; __be32 hmask; struct tc_u32_key keys[0]; }; struct tc_u32_mark { __u32 val; __u32 mask; __u32 success; }; struct tc_u32_pcnt { __u64 rcnt; __u64 rhit; __u64 kcnts[0]; }; # 248 "../include/uapi/linux/pkt_cls.h" enum { TCA_RSVP_UNSPEC, TCA_RSVP_CLASSID, TCA_RSVP_DST, TCA_RSVP_SRC, TCA_RSVP_PINFO, TCA_RSVP_POLICE, TCA_RSVP_ACT, __TCA_RSVP_MAX }; struct tc_rsvp_gpi { __u32 key; __u32 mask; int offset; }; struct tc_rsvp_pinfo { struct tc_rsvp_gpi dpi; struct tc_rsvp_gpi spi; __u8 protocol; __u8 tunnelid; __u8 tunnelhdr; __u8 pad; }; enum { TCA_ROUTE4_UNSPEC, TCA_ROUTE4_CLASSID, TCA_ROUTE4_TO, TCA_ROUTE4_FROM, TCA_ROUTE4_IIF, TCA_ROUTE4_POLICE, TCA_ROUTE4_ACT, __TCA_ROUTE4_MAX }; enum { TCA_FW_UNSPEC, TCA_FW_CLASSID, TCA_FW_POLICE, TCA_FW_INDEV, TCA_FW_ACT, TCA_FW_MASK, __TCA_FW_MAX }; enum { TCA_TCINDEX_UNSPEC, TCA_TCINDEX_HASH, TCA_TCINDEX_MASK, TCA_TCINDEX_SHIFT, TCA_TCINDEX_FALL_THROUGH, TCA_TCINDEX_CLASSID, TCA_TCINDEX_POLICE, TCA_TCINDEX_ACT, __TCA_TCINDEX_MAX }; enum { FLOW_KEY_SRC, FLOW_KEY_DST, FLOW_KEY_PROTO, FLOW_KEY_PROTO_SRC, FLOW_KEY_PROTO_DST, FLOW_KEY_IIF, FLOW_KEY_PRIORITY, FLOW_KEY_MARK, FLOW_KEY_NFCT, FLOW_KEY_NFCT_SRC, FLOW_KEY_NFCT_DST, FLOW_KEY_NFCT_PROTO_SRC, FLOW_KEY_NFCT_PROTO_DST, FLOW_KEY_RTCLASSID, FLOW_KEY_SKUID, FLOW_KEY_SKGID, FLOW_KEY_VLAN_TAG, FLOW_KEY_RXHASH, __FLOW_KEY_MAX, }; enum { FLOW_MODE_MAP, FLOW_MODE_HASH, }; enum { TCA_FLOW_UNSPEC, TCA_FLOW_KEYS, TCA_FLOW_MODE, TCA_FLOW_BASECLASS, TCA_FLOW_RSHIFT, TCA_FLOW_ADDEND, TCA_FLOW_MASK, TCA_FLOW_XOR, TCA_FLOW_DIVISOR, TCA_FLOW_ACT, TCA_FLOW_POLICE, TCA_FLOW_EMATCHES, TCA_FLOW_PERTURB, __TCA_FLOW_MAX }; struct tc_basic_pcnt { __u64 rcnt; __u64 rhit; }; enum { TCA_BASIC_UNSPEC, TCA_BASIC_CLASSID, TCA_BASIC_EMATCHES, TCA_BASIC_ACT, TCA_BASIC_POLICE, TCA_BASIC_PCNT, TCA_BASIC_PAD, __TCA_BASIC_MAX }; enum { TCA_CGROUP_UNSPEC, TCA_CGROUP_ACT, TCA_CGROUP_POLICE, TCA_CGROUP_EMATCHES, __TCA_CGROUP_MAX, }; enum { TCA_BPF_UNSPEC, TCA_BPF_ACT, TCA_BPF_POLICE, TCA_BPF_CLASSID, TCA_BPF_OPS_LEN, TCA_BPF_OPS, TCA_BPF_FD, TCA_BPF_NAME, TCA_BPF_FLAGS, TCA_BPF_FLAGS_GEN, TCA_BPF_TAG, TCA_BPF_ID, __TCA_BPF_MAX, }; enum { TCA_FLOWER_UNSPEC, TCA_FLOWER_CLASSID, TCA_FLOWER_INDEV, TCA_FLOWER_ACT, TCA_FLOWER_KEY_ETH_DST, TCA_FLOWER_KEY_ETH_DST_MASK, TCA_FLOWER_KEY_ETH_SRC, TCA_FLOWER_KEY_ETH_SRC_MASK, TCA_FLOWER_KEY_ETH_TYPE, TCA_FLOWER_KEY_IP_PROTO, TCA_FLOWER_KEY_IPV4_SRC, TCA_FLOWER_KEY_IPV4_SRC_MASK, TCA_FLOWER_KEY_IPV4_DST, TCA_FLOWER_KEY_IPV4_DST_MASK, TCA_FLOWER_KEY_IPV6_SRC, TCA_FLOWER_KEY_IPV6_SRC_MASK, TCA_FLOWER_KEY_IPV6_DST, TCA_FLOWER_KEY_IPV6_DST_MASK, TCA_FLOWER_KEY_TCP_SRC, TCA_FLOWER_KEY_TCP_DST, TCA_FLOWER_KEY_UDP_SRC, TCA_FLOWER_KEY_UDP_DST, TCA_FLOWER_FLAGS, TCA_FLOWER_KEY_VLAN_ID, TCA_FLOWER_KEY_VLAN_PRIO, TCA_FLOWER_KEY_VLAN_ETH_TYPE, TCA_FLOWER_KEY_ENC_KEY_ID, TCA_FLOWER_KEY_ENC_IPV4_SRC, TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK, TCA_FLOWER_KEY_ENC_IPV4_DST, TCA_FLOWER_KEY_ENC_IPV4_DST_MASK, TCA_FLOWER_KEY_ENC_IPV6_SRC, TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK, TCA_FLOWER_KEY_ENC_IPV6_DST, TCA_FLOWER_KEY_ENC_IPV6_DST_MASK, TCA_FLOWER_KEY_TCP_SRC_MASK, TCA_FLOWER_KEY_TCP_DST_MASK, TCA_FLOWER_KEY_UDP_SRC_MASK, TCA_FLOWER_KEY_UDP_DST_MASK, TCA_FLOWER_KEY_SCTP_SRC_MASK, TCA_FLOWER_KEY_SCTP_DST_MASK, TCA_FLOWER_KEY_SCTP_SRC, TCA_FLOWER_KEY_SCTP_DST, TCA_FLOWER_KEY_ENC_UDP_SRC_PORT, TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK, TCA_FLOWER_KEY_ENC_UDP_DST_PORT, TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK, TCA_FLOWER_KEY_FLAGS, TCA_FLOWER_KEY_FLAGS_MASK, TCA_FLOWER_KEY_ICMPV4_CODE, TCA_FLOWER_KEY_ICMPV4_CODE_MASK, TCA_FLOWER_KEY_ICMPV4_TYPE, TCA_FLOWER_KEY_ICMPV4_TYPE_MASK, TCA_FLOWER_KEY_ICMPV6_CODE, TCA_FLOWER_KEY_ICMPV6_CODE_MASK, TCA_FLOWER_KEY_ICMPV6_TYPE, TCA_FLOWER_KEY_ICMPV6_TYPE_MASK, TCA_FLOWER_KEY_ARP_SIP, TCA_FLOWER_KEY_ARP_SIP_MASK, TCA_FLOWER_KEY_ARP_TIP, TCA_FLOWER_KEY_ARP_TIP_MASK, TCA_FLOWER_KEY_ARP_OP, TCA_FLOWER_KEY_ARP_OP_MASK, TCA_FLOWER_KEY_ARP_SHA, TCA_FLOWER_KEY_ARP_SHA_MASK, TCA_FLOWER_KEY_ARP_THA, TCA_FLOWER_KEY_ARP_THA_MASK, TCA_FLOWER_KEY_MPLS_TTL, TCA_FLOWER_KEY_MPLS_BOS, TCA_FLOWER_KEY_MPLS_TC, TCA_FLOWER_KEY_MPLS_LABEL, TCA_FLOWER_KEY_TCP_FLAGS, TCA_FLOWER_KEY_TCP_FLAGS_MASK, TCA_FLOWER_KEY_IP_TOS, TCA_FLOWER_KEY_IP_TOS_MASK, TCA_FLOWER_KEY_IP_TTL, TCA_FLOWER_KEY_IP_TTL_MASK, TCA_FLOWER_KEY_CVLAN_ID, TCA_FLOWER_KEY_CVLAN_PRIO, TCA_FLOWER_KEY_CVLAN_ETH_TYPE, TCA_FLOWER_KEY_ENC_IP_TOS, TCA_FLOWER_KEY_ENC_IP_TOS_MASK, TCA_FLOWER_KEY_ENC_IP_TTL, TCA_FLOWER_KEY_ENC_IP_TTL_MASK, TCA_FLOWER_KEY_ENC_OPTS, TCA_FLOWER_KEY_ENC_OPTS_MASK, TCA_FLOWER_IN_HW_COUNT, TCA_FLOWER_KEY_PORT_SRC_MIN, TCA_FLOWER_KEY_PORT_SRC_MAX, TCA_FLOWER_KEY_PORT_DST_MIN, TCA_FLOWER_KEY_PORT_DST_MAX, __TCA_FLOWER_MAX, }; enum { TCA_FLOWER_KEY_ENC_OPTS_UNSPEC, TCA_FLOWER_KEY_ENC_OPTS_GENEVE, __TCA_FLOWER_KEY_ENC_OPTS_MAX, }; enum { TCA_FLOWER_KEY_ENC_OPT_GENEVE_UNSPEC, TCA_FLOWER_KEY_ENC_OPT_GENEVE_CLASS, TCA_FLOWER_KEY_ENC_OPT_GENEVE_TYPE, TCA_FLOWER_KEY_ENC_OPT_GENEVE_DATA, __TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX, }; enum { TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0), TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1), }; struct tc_matchall_pcnt { __u64 rhit; }; enum { TCA_MATCHALL_UNSPEC, TCA_MATCHALL_CLASSID, TCA_MATCHALL_ACT, TCA_MATCHALL_FLAGS, TCA_MATCHALL_PCNT, TCA_MATCHALL_PAD, __TCA_MATCHALL_MAX, }; struct tcf_ematch_tree_hdr { __u16 nmatches; __u16 progid; }; enum { TCA_EMATCH_TREE_UNSPEC, TCA_EMATCH_TREE_HDR, TCA_EMATCH_TREE_LIST, __TCA_EMATCH_TREE_MAX }; struct tcf_ematch_hdr { __u16 matchid; __u16 kind; __u16 flags; __u16 pad; }; # 636 "../include/uapi/linux/pkt_cls.h" enum { TCF_LAYER_LINK, TCF_LAYER_NETWORK, TCF_LAYER_TRANSPORT, __TCF_LAYER_MAX }; # 660 "../include/uapi/linux/pkt_cls.h" enum { TCF_EM_PROG_TC }; enum { TCF_EM_OPND_EQ, TCF_EM_OPND_GT, TCF_EM_OPND_LT }; # 50 "../include/linux/netdevice.h" 2 # 1 "../include/linux/hashtable.h" 1 # 34 "../include/linux/hashtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __hash_init(struct hlist_head *ht, unsigned int sz) { unsigned int i; for (i = 0; i < sz; i++) ((&ht[i])->first = ((void *)0)); } # 76 "../include/linux/hashtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool hash_hashed(struct hlist_node *node) { return !hlist_unhashed(node); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __hash_empty(struct hlist_head *ht, unsigned int sz) { unsigned int i; for (i = 0; i < sz; i++) if (!hlist_empty(&ht[i])) return false; return true; } # 105 "../include/linux/hashtable.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hash_del(struct hlist_node *node) { hlist_del_init(node); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void hash_del_rcu(struct hlist_node *node) { hlist_del_init_rcu(node); } # 51 "../include/linux/netdevice.h" 2 struct netpoll_info; struct device; struct phy_device; struct dsa_port; struct sfp_bus; struct wireless_dev; struct wpan_dev; struct mpls_dev; struct udp_tunnel_info; struct bpf_prog; struct xdp_buff; void netdev_set_default_ethtool_ops(struct net_device *dev, const struct ethtool_ops *ops); # 107 "../include/linux/netdevice.h" enum netdev_tx { __NETDEV_TX_MIN = (-((int)(~0U >> 1)) - 1), NETDEV_TX_OK = 0x00, NETDEV_TX_BUSY = 0x10, }; typedef enum netdev_tx netdev_tx_t; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool dev_xmit_complete(int rc) { if (__builtin_expect(!!(rc < 0x0f), 1)) return true; return false; } # 161 "../include/linux/netdevice.h" struct net_device_stats { unsigned long rx_packets; unsigned long tx_packets; unsigned long rx_bytes; unsigned long tx_bytes; unsigned long rx_errors; unsigned long tx_errors; unsigned long rx_dropped; unsigned long tx_dropped; unsigned long multicast; unsigned long collisions; unsigned long rx_length_errors; unsigned long rx_over_errors; unsigned long rx_crc_errors; unsigned long rx_frame_errors; unsigned long rx_fifo_errors; unsigned long rx_missed_errors; unsigned long tx_aborted_errors; unsigned long tx_carrier_errors; unsigned long tx_fifo_errors; unsigned long tx_heartbeat_errors; unsigned long tx_window_errors; unsigned long rx_compressed; unsigned long tx_compressed; }; # 1 "../include/linux/static_key.h" 1 # 193 "../include/linux/netdevice.h" 2 extern struct static_key_false rps_needed; extern struct static_key_false rfs_needed; struct neighbour; struct neigh_parms; struct sk_buff; struct netdev_hw_addr { struct list_head list; unsigned char addr[32]; unsigned char type; bool global_use; int sync_cnt; int refcount; int synced; struct callback_head callback_head; }; struct netdev_hw_addr_list { struct list_head list; int count; }; # 237 "../include/linux/netdevice.h" struct hh_cache { unsigned int hh_len; seqlock_t hh_lock; unsigned long hh_data[(((128)+(16 -1))&~(16 - 1)) / sizeof(long)]; }; # 263 "../include/linux/netdevice.h" struct header_ops { int (*create) (struct sk_buff *skb, struct net_device *dev, unsigned short type, const void *daddr, const void *saddr, unsigned int len); int (*parse)(const struct sk_buff *skb, unsigned char *haddr); int (*cache)(const struct neighbour *neigh, struct hh_cache *hh, __be16 type); void (*cache_update)(struct hh_cache *hh, const struct net_device *dev, const unsigned char *haddr); bool (*validate)(const char *ll_header, unsigned int len); __be16 (*parse_protocol)(const struct sk_buff *skb); }; enum netdev_state_t { __LINK_STATE_START, __LINK_STATE_PRESENT, __LINK_STATE_NOCARRIER, __LINK_STATE_LINKWATCH_PENDING, __LINK_STATE_DORMANT, }; struct netdev_boot_setup { char name[16]; struct ifmap map; }; int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) netdev_boot_setup(char *str); struct gro_list { struct list_head list; int count; }; # 316 "../include/linux/netdevice.h" struct napi_struct { struct list_head poll_list; unsigned long state; int weight; unsigned long gro_bitmask; int (*poll)(struct napi_struct *, int); int poll_owner; struct net_device *dev; struct gro_list gro_hash[8]; struct sk_buff *skb; struct hrtimer timer; struct list_head dev_list; struct hlist_node napi_hash_node; unsigned int napi_id; }; enum { NAPI_STATE_SCHED, NAPI_STATE_MISSED, NAPI_STATE_DISABLE, NAPI_STATE_NPSVC, NAPI_STATE_HASHED, NAPI_STATE_NO_BUSY_POLL, NAPI_STATE_IN_BUSY_POLL, }; enum { NAPIF_STATE_SCHED = ((((1UL))) << (NAPI_STATE_SCHED)), NAPIF_STATE_MISSED = ((((1UL))) << (NAPI_STATE_MISSED)), NAPIF_STATE_DISABLE = ((((1UL))) << (NAPI_STATE_DISABLE)), NAPIF_STATE_NPSVC = ((((1UL))) << (NAPI_STATE_NPSVC)), NAPIF_STATE_HASHED = ((((1UL))) << (NAPI_STATE_HASHED)), NAPIF_STATE_NO_BUSY_POLL = ((((1UL))) << (NAPI_STATE_NO_BUSY_POLL)), NAPIF_STATE_IN_BUSY_POLL = ((((1UL))) << (NAPI_STATE_IN_BUSY_POLL)), }; enum gro_result { GRO_MERGED, GRO_MERGED_FREE, GRO_HELD, GRO_NORMAL, GRO_DROP, GRO_CONSUMED, }; typedef enum gro_result gro_result_t; # 412 "../include/linux/netdevice.h" enum rx_handler_result { RX_HANDLER_CONSUMED, RX_HANDLER_ANOTHER, RX_HANDLER_EXACT, RX_HANDLER_PASS, }; typedef enum rx_handler_result rx_handler_result_t; typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb); void __napi_schedule(struct napi_struct *n); void __napi_schedule_irqoff(struct napi_struct *n); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool napi_disable_pending(struct napi_struct *n) { return test_bit(NAPI_STATE_DISABLE, &n->state); } bool napi_schedule_prep(struct napi_struct *n); # 438 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void napi_schedule(struct napi_struct *n) { if (napi_schedule_prep(n)) __napi_schedule(n); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void napi_schedule_irqoff(struct napi_struct *n) { if (napi_schedule_prep(n)) __napi_schedule_irqoff(n); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool napi_reschedule(struct napi_struct *napi) { if (napi_schedule_prep(napi)) { __napi_schedule(napi); return true; } return false; } bool napi_complete_done(struct napi_struct *n, int work_done); # 475 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool napi_complete(struct napi_struct *n) { return napi_complete_done(n, 0); } # 492 "../include/linux/netdevice.h" bool napi_hash_del(struct napi_struct *napi); # 501 "../include/linux/netdevice.h" void napi_disable(struct napi_struct *n); # 510 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void napi_enable(struct napi_struct *n) { do { if (__builtin_expect(!!(!test_bit(NAPI_STATE_SCHED, &n->state)), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/netdevice.h"), "i" (512), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (417)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); do { } while (0); clear_bit(NAPI_STATE_SCHED, &n->state); clear_bit(NAPI_STATE_NPSVC, &n->state); } # 526 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void napi_synchronize(const struct napi_struct *n) { if (1) while (test_bit(NAPI_STATE_SCHED, &n->state)) msleep(1); else __asm__ __volatile__("" : : : "memory"); } # 543 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool napi_if_scheduled_mark_missed(struct napi_struct *n) { unsigned long val, new; do { val = ({ union { typeof(n->state) __val; char __c[1]; } __u; if (1) __read_once_size(&(n->state), __u.__c, sizeof(n->state)); else __read_once_size_nocheck(&(n->state), __u.__c, sizeof(n->state)); do { } while (0); __u.__val; }); if (val & NAPIF_STATE_DISABLE) return true; if (!(val & NAPIF_STATE_SCHED)) return false; new = val | NAPIF_STATE_MISSED; } while (({ typeof(&n->state) __ai_ptr = (&n->state); kasan_check_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__(*((__ai_ptr))) __ret; __typeof__(*((__ai_ptr))) __old = ((val)); __typeof__(*((__ai_ptr))) __new = ((new)); switch ((sizeof(*(__ai_ptr)))) { case 1: { volatile u8 *__ptr = (volatile u8 *)((__ai_ptr)); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgb %2,%1" : "=a" (__ret), "+m" (*__ptr) : "q" (__new), "0" (__old) : "memory"); break; } case 2: { volatile u16 *__ptr = (volatile u16 *)((__ai_ptr)); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgw %2,%1" : "=a" (__ret), "+m" (*__ptr) : "r" (__new), "0" (__old) : "memory"); break; } case 4: { volatile u32 *__ptr = (volatile u32 *)((__ai_ptr)); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgl %2,%1" : "=a" (__ret), "+m" (*__ptr) : "r" (__new), "0" (__old) : "memory"); break; } case 8: { volatile u64 *__ptr = (volatile u64 *)((__ai_ptr)); asm volatile(".pushsection .smp_locks,\"a\"\n" ".balign 4\n" ".long 671f - .\n" ".popsection\n" "671:" "\n\tlock; " "cmpxchgq %2,%1" : "=a" (__ret), "+m" (*__ptr) : "r" (__new), "0" (__old) : "memory"); break; } default: __cmpxchg_wrong_size(); } __ret; }); }) != val); return true; } enum netdev_queue_state_t { __QUEUE_STATE_DRV_XOFF, __QUEUE_STATE_STACK_XOFF, __QUEUE_STATE_FROZEN, }; # 587 "../include/linux/netdevice.h" struct netdev_queue { struct net_device *dev; struct Qdisc *qdisc; struct Qdisc *qdisc_sleeping; struct kobject kobj; int numa_node; unsigned long tx_maxrate; unsigned long trans_timeout; struct net_device *sb_dev; struct xdp_umem *umem; spinlock_t _xmit_lock __attribute__((__aligned__((1 << (6))))); int xmit_lock_owner; unsigned long trans_start; unsigned long state; struct dql dql; } __attribute__((__aligned__((1 << (6))))); extern int sysctl_fb_tunnels_only_for_init_net; extern int sysctl_devconf_inherit_init_net; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool net_has_fallback_tunnels(const struct net *net) { return net == &init_net || !1 || !sysctl_fb_tunnels_only_for_init_net; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int netdev_queue_numa_node_read(const struct netdev_queue *q) { return q->numa_node; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_queue_numa_node_write(struct netdev_queue *q, int node) { q->numa_node = node; } struct rps_map { unsigned int len; struct callback_head rcu; u16 cpus[0]; }; struct rps_dev_flow { u16 cpu; u16 filter; unsigned int last_qtail; }; struct rps_dev_flow_table { unsigned int mask; struct callback_head rcu; struct rps_dev_flow flows[0]; }; # 700 "../include/linux/netdevice.h" struct rps_sock_flow_table { u32 mask; u32 ents[0] __attribute__((__aligned__((1 << (6))))); }; extern u32 rps_cpu_mask; extern struct rps_sock_flow_table *rps_sock_flow_table; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void rps_record_sock_flow(struct rps_sock_flow_table *table, u32 hash) { if (table && hash) { unsigned int index = hash & table->mask; u32 val = hash & ~rps_cpu_mask; val |= ({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; }); if (table->ents[index] != val) table->ents[index] = val; } } bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index, u32 flow_id, u16 filter_id); struct netdev_rx_queue { struct rps_map *rps_map; struct rps_dev_flow_table *rps_flow_table; struct kobject kobj; struct net_device *dev; struct xdp_rxq_info xdp_rxq; struct xdp_umem *umem; } __attribute__((__aligned__((1 << (6))))); struct rx_queue_attribute { struct attribute attr; ssize_t (*show)(struct netdev_rx_queue *queue, char *buf); ssize_t (*store)(struct netdev_rx_queue *queue, const char *buf, size_t len); }; struct xps_map { unsigned int len; unsigned int alloc_len; struct callback_head rcu; u16 queues[0]; }; struct xps_dev_maps { struct callback_head rcu; struct xps_map *attr_map[0]; }; # 791 "../include/linux/netdevice.h" struct netdev_tc_txq { u16 count; u16 offset; }; struct netdev_fcoe_hbainfo { char manufacturer[64]; char serial_number[64]; char hardware_version[64]; char driver_version[64]; char optionrom_version[64]; char firmware_version[64]; char model[256]; char model_description[256]; }; struct netdev_phys_item_id { unsigned char id[32]; unsigned char id_len; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netdev_phys_item_id_same(struct netdev_phys_item_id *a, struct netdev_phys_item_id *b) { return a->id_len == b->id_len && memcmp(a->id, b->id, a->id_len) == 0; } typedef u16 (*select_queue_fallback_t)(struct net_device *dev, struct sk_buff *skb, struct net_device *sb_dev); enum tc_setup_type { TC_SETUP_QDISC_MQPRIO, TC_SETUP_CLSU32, TC_SETUP_CLSFLOWER, TC_SETUP_CLSMATCHALL, TC_SETUP_CLSBPF, TC_SETUP_BLOCK, TC_SETUP_QDISC_CBS, TC_SETUP_QDISC_RED, TC_SETUP_QDISC_PRIO, TC_SETUP_QDISC_MQ, TC_SETUP_QDISC_ETF, TC_SETUP_ROOT_QDISC, TC_SETUP_QDISC_GRED, }; enum bpf_netdev_command { XDP_SETUP_PROG, XDP_SETUP_PROG_HW, XDP_QUERY_PROG, XDP_QUERY_PROG_HW, BPF_OFFLOAD_MAP_ALLOC, BPF_OFFLOAD_MAP_FREE, XDP_SETUP_XSK_UMEM, }; struct bpf_prog_offload_ops; struct netlink_ext_ack; struct xdp_umem; struct netdev_bpf { enum bpf_netdev_command command; union { struct { u32 flags; struct bpf_prog *prog; struct netlink_ext_ack *extack; }; struct { u32 prog_id; u32 prog_flags; }; struct { struct bpf_offloaded_map *offmap; }; struct { struct xdp_umem *umem; u16 queue_id; } xsk; }; }; struct xfrmdev_ops { int (*xdo_dev_state_add) (struct xfrm_state *x); void (*xdo_dev_state_delete) (struct xfrm_state *x); void (*xdo_dev_state_free) (struct xfrm_state *x); bool (*xdo_dev_offload_ok) (struct sk_buff *skb, struct xfrm_state *x); void (*xdo_dev_state_advance_esn) (struct xfrm_state *x); }; struct dev_ifalias { struct callback_head rcuhead; char ifalias[]; }; struct devlink; struct tlsdev_ops; # 1233 "../include/linux/netdevice.h" struct net_device_ops { int (*ndo_init)(struct net_device *dev); void (*ndo_uninit)(struct net_device *dev); int (*ndo_open)(struct net_device *dev); int (*ndo_stop)(struct net_device *dev); netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb, struct net_device *dev); netdev_features_t (*ndo_features_check)(struct sk_buff *skb, struct net_device *dev, netdev_features_t features); u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb, struct net_device *sb_dev); void (*ndo_change_rx_flags)(struct net_device *dev, int flags); void (*ndo_set_rx_mode)(struct net_device *dev); int (*ndo_set_mac_address)(struct net_device *dev, void *addr); int (*ndo_validate_addr)(struct net_device *dev); int (*ndo_do_ioctl)(struct net_device *dev, struct ifreq *ifr, int cmd); int (*ndo_set_config)(struct net_device *dev, struct ifmap *map); int (*ndo_change_mtu)(struct net_device *dev, int new_mtu); int (*ndo_neigh_setup)(struct net_device *dev, struct neigh_parms *); void (*ndo_tx_timeout) (struct net_device *dev); void (*ndo_get_stats64)(struct net_device *dev, struct rtnl_link_stats64 *storage); bool (*ndo_has_offload_stats)(const struct net_device *dev, int attr_id); int (*ndo_get_offload_stats)(int attr_id, const struct net_device *dev, void *attr_data); struct net_device_stats* (*ndo_get_stats)(struct net_device *dev); int (*ndo_vlan_rx_add_vid)(struct net_device *dev, __be16 proto, u16 vid); int (*ndo_vlan_rx_kill_vid)(struct net_device *dev, __be16 proto, u16 vid); void (*ndo_poll_controller)(struct net_device *dev); int (*ndo_netpoll_setup)(struct net_device *dev, struct netpoll_info *info); void (*ndo_netpoll_cleanup)(struct net_device *dev); int (*ndo_set_vf_mac)(struct net_device *dev, int queue, u8 *mac); int (*ndo_set_vf_vlan)(struct net_device *dev, int queue, u16 vlan, u8 qos, __be16 proto); int (*ndo_set_vf_rate)(struct net_device *dev, int vf, int min_tx_rate, int max_tx_rate); int (*ndo_set_vf_spoofchk)(struct net_device *dev, int vf, bool setting); int (*ndo_set_vf_trust)(struct net_device *dev, int vf, bool setting); int (*ndo_get_vf_config)(struct net_device *dev, int vf, struct ifla_vf_info *ivf); int (*ndo_set_vf_link_state)(struct net_device *dev, int vf, int link_state); int (*ndo_get_vf_stats)(struct net_device *dev, int vf, struct ifla_vf_stats *vf_stats); int (*ndo_set_vf_port)(struct net_device *dev, int vf, struct nlattr *port[]); int (*ndo_get_vf_port)(struct net_device *dev, int vf, struct sk_buff *skb); int (*ndo_set_vf_guid)(struct net_device *dev, int vf, u64 guid, int guid_type); int (*ndo_set_vf_rss_query_en)( struct net_device *dev, int vf, bool setting); int (*ndo_setup_tc)(struct net_device *dev, enum tc_setup_type type, void *type_data); int (*ndo_fcoe_enable)(struct net_device *dev); int (*ndo_fcoe_disable)(struct net_device *dev); int (*ndo_fcoe_ddp_setup)(struct net_device *dev, u16 xid, struct scatterlist *sgl, unsigned int sgc); int (*ndo_fcoe_ddp_done)(struct net_device *dev, u16 xid); int (*ndo_fcoe_ddp_target)(struct net_device *dev, u16 xid, struct scatterlist *sgl, unsigned int sgc); int (*ndo_fcoe_get_hbainfo)(struct net_device *dev, struct netdev_fcoe_hbainfo *hbainfo); int (*ndo_fcoe_get_wwn)(struct net_device *dev, u64 *wwn, int type); int (*ndo_rx_flow_steer)(struct net_device *dev, const struct sk_buff *skb, u16 rxq_index, u32 flow_id); int (*ndo_add_slave)(struct net_device *dev, struct net_device *slave_dev, struct netlink_ext_ack *extack); int (*ndo_del_slave)(struct net_device *dev, struct net_device *slave_dev); netdev_features_t (*ndo_fix_features)(struct net_device *dev, netdev_features_t features); int (*ndo_set_features)(struct net_device *dev, netdev_features_t features); int (*ndo_neigh_construct)(struct net_device *dev, struct neighbour *n); void (*ndo_neigh_destroy)(struct net_device *dev, struct neighbour *n); int (*ndo_fdb_add)(struct ndmsg *ndm, struct nlattr *tb[], struct net_device *dev, const unsigned char *addr, u16 vid, u16 flags, struct netlink_ext_ack *extack); int (*ndo_fdb_del)(struct ndmsg *ndm, struct nlattr *tb[], struct net_device *dev, const unsigned char *addr, u16 vid); int (*ndo_fdb_dump)(struct sk_buff *skb, struct netlink_callback *cb, struct net_device *dev, struct net_device *filter_dev, int *idx); int (*ndo_fdb_get)(struct sk_buff *skb, struct nlattr *tb[], struct net_device *dev, const unsigned char *addr, u16 vid, u32 portid, u32 seq, struct netlink_ext_ack *extack); int (*ndo_bridge_setlink)(struct net_device *dev, struct nlmsghdr *nlh, u16 flags, struct netlink_ext_ack *extack); int (*ndo_bridge_getlink)(struct sk_buff *skb, u32 pid, u32 seq, struct net_device *dev, u32 filter_mask, int nlflags); int (*ndo_bridge_dellink)(struct net_device *dev, struct nlmsghdr *nlh, u16 flags); int (*ndo_change_carrier)(struct net_device *dev, bool new_carrier); int (*ndo_get_phys_port_id)(struct net_device *dev, struct netdev_phys_item_id *ppid); int (*ndo_get_port_parent_id)(struct net_device *dev, struct netdev_phys_item_id *ppid); int (*ndo_get_phys_port_name)(struct net_device *dev, char *name, size_t len); void (*ndo_udp_tunnel_add)(struct net_device *dev, struct udp_tunnel_info *ti); void (*ndo_udp_tunnel_del)(struct net_device *dev, struct udp_tunnel_info *ti); void* (*ndo_dfwd_add_station)(struct net_device *pdev, struct net_device *dev); void (*ndo_dfwd_del_station)(struct net_device *pdev, void *priv); int (*ndo_get_lock_subclass)(struct net_device *dev); int (*ndo_set_tx_maxrate)(struct net_device *dev, int queue_index, u32 maxrate); int (*ndo_get_iflink)(const struct net_device *dev); int (*ndo_change_proto_down)(struct net_device *dev, bool proto_down); int (*ndo_fill_metadata_dst)(struct net_device *dev, struct sk_buff *skb); void (*ndo_set_rx_headroom)(struct net_device *dev, int needed_headroom); int (*ndo_bpf)(struct net_device *dev, struct netdev_bpf *bpf); int (*ndo_xdp_xmit)(struct net_device *dev, int n, struct xdp_frame **xdp, u32 flags); int (*ndo_xsk_async_xmit)(struct net_device *dev, u32 queue_id); struct devlink_port * (*ndo_get_devlink_port)(struct net_device *dev); }; # 1478 "../include/linux/netdevice.h" enum netdev_priv_flags { IFF_802_1Q_VLAN = 1<<0, IFF_EBRIDGE = 1<<1, IFF_BONDING = 1<<2, IFF_ISATAP = 1<<3, IFF_WAN_HDLC = 1<<4, IFF_XMIT_DST_RELEASE = 1<<5, IFF_DONT_BRIDGE = 1<<6, IFF_DISABLE_NETPOLL = 1<<7, IFF_MACVLAN_PORT = 1<<8, IFF_BRIDGE_PORT = 1<<9, IFF_OVS_DATAPATH = 1<<10, IFF_TX_SKB_SHARING = 1<<11, IFF_UNICAST_FLT = 1<<12, IFF_TEAM_PORT = 1<<13, IFF_SUPP_NOFCS = 1<<14, IFF_LIVE_ADDR_CHANGE = 1<<15, IFF_MACVLAN = 1<<16, IFF_XMIT_DST_RELEASE_PERM = 1<<17, IFF_L3MDEV_MASTER = 1<<18, IFF_NO_QUEUE = 1<<19, IFF_OPENVSWITCH = 1<<20, IFF_L3MDEV_SLAVE = 1<<21, IFF_TEAM = 1<<22, IFF_RXFH_CONFIGURED = 1<<23, IFF_PHONY_HEADROOM = 1<<24, IFF_MACSEC = 1<<25, IFF_NO_RX_HANDLER = 1<<26, IFF_FAILOVER = 1<<27, IFF_FAILOVER_SLAVE = 1<<28, IFF_L3MDEV_RX_HANDLER = 1<<29, IFF_LIVE_RENAME_OK = 1<<30, }; # 1762 "../include/linux/netdevice.h" struct net_device { char name[16]; struct hlist_node name_hlist; struct dev_ifalias *ifalias; unsigned long mem_end; unsigned long mem_start; unsigned long base_addr; int irq; unsigned long state; struct list_head dev_list; struct list_head napi_list; struct list_head unreg_list; struct list_head close_list; struct list_head ptype_all; struct list_head ptype_specific; struct { struct list_head upper; struct list_head lower; } adj_list; netdev_features_t features; netdev_features_t hw_features; netdev_features_t wanted_features; netdev_features_t vlan_features; netdev_features_t hw_enc_features; netdev_features_t mpls_features; netdev_features_t gso_partial_features; int ifindex; int group; struct net_device_stats stats; atomic_long_t rx_dropped; atomic_long_t tx_dropped; atomic_long_t rx_nohandler; atomic_t carrier_up_count; atomic_t carrier_down_count; const struct iw_handler_def *wireless_handlers; struct iw_public_data *wireless_data; const struct net_device_ops *netdev_ops; const struct ethtool_ops *ethtool_ops; const struct l3mdev_ops *l3mdev_ops; const struct ndisc_ops *ndisc_ops; const struct xfrmdev_ops *xfrmdev_ops; const struct tlsdev_ops *tlsdev_ops; const struct header_ops *header_ops; unsigned int flags; unsigned int priv_flags; unsigned short gflags; unsigned short padded; unsigned char operstate; unsigned char link_mode; unsigned char if_port; unsigned char dma; unsigned int mtu; unsigned int min_mtu; unsigned int max_mtu; unsigned short type; unsigned short hard_header_len; unsigned char min_header_len; unsigned short needed_headroom; unsigned short needed_tailroom; unsigned char perm_addr[32]; unsigned char addr_assign_type; unsigned char addr_len; unsigned short neigh_priv_len; unsigned short dev_id; unsigned short dev_port; spinlock_t addr_list_lock; unsigned char name_assign_type; bool uc_promisc; struct netdev_hw_addr_list uc; struct netdev_hw_addr_list mc; struct netdev_hw_addr_list dev_addrs; struct kset *queues_kset; unsigned int promiscuity; unsigned int allmulti; struct vlan_info *vlan_info; struct dsa_port *dsa_ptr; struct tipc_bearer *tipc_ptr; void *atalk_ptr; struct in_device *ip_ptr; struct dn_dev *dn_ptr; struct inet6_dev *ip6_ptr; void *ax25_ptr; struct wireless_dev *ieee80211_ptr; struct wpan_dev *ieee802154_ptr; struct mpls_dev *mpls_ptr; unsigned char *dev_addr; struct netdev_rx_queue *_rx; unsigned int num_rx_queues; unsigned int real_num_rx_queues; struct bpf_prog *xdp_prog; unsigned long gro_flush_timeout; rx_handler_func_t *rx_handler; void *rx_handler_data; struct mini_Qdisc *miniq_ingress; struct netdev_queue *ingress_queue; struct nf_hook_entries *nf_hooks_ingress; unsigned char broadcast[32]; struct cpu_rmap *rx_cpu_rmap; struct hlist_node index_hlist; struct netdev_queue *_tx __attribute__((__aligned__((1 << (6))))); unsigned int num_tx_queues; unsigned int real_num_tx_queues; struct Qdisc *qdisc; struct hlist_head qdisc_hash[1 << (4)]; unsigned int tx_queue_len; spinlock_t tx_global_lock; int watchdog_timeo; struct xps_dev_maps *xps_cpus_map; struct xps_dev_maps *xps_rxqs_map; struct mini_Qdisc *miniq_egress; struct timer_list watchdog_timer; int *pcpu_refcnt; struct list_head todo_list; struct list_head link_watch_list; enum { NETREG_UNINITIALIZED=0, NETREG_REGISTERED, NETREG_UNREGISTERING, NETREG_UNREGISTERED, NETREG_RELEASED, NETREG_DUMMY, } reg_state:8; bool dismantle; enum { RTNL_LINK_INITIALIZED, RTNL_LINK_INITIALIZING, } rtnl_link_state:16; bool needs_free_netdev; void (*priv_destructor)(struct net_device *dev); struct netpoll_info *npinfo; possible_net_t nd_net; union { void *ml_priv; struct pcpu_lstats *lstats; struct pcpu_sw_netstats *tstats; struct pcpu_dstats *dstats; }; struct garp_port *garp_port; struct mrp_port *mrp_port; struct device dev; const struct attribute_group *sysfs_groups[4]; const struct attribute_group *sysfs_rx_queue_group; const struct rtnl_link_ops *rtnl_link_ops; unsigned int gso_max_size; u16 gso_max_segs; const struct dcbnl_rtnl_ops *dcbnl_ops; s16 num_tc; struct netdev_tc_txq tc_to_txq[16]; u8 prio_tc_map[15 + 1]; unsigned int fcoe_ddp_xid; struct netprio_map *priomap; struct phy_device *phydev; struct sfp_bus *sfp_bus; struct lock_class_key *qdisc_tx_busylock; struct lock_class_key *qdisc_running_key; bool proto_down; unsigned wol_enabled:1; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_elide_gro(const struct net_device *dev) { if (!(dev->features & ((netdev_features_t)1 << (NETIF_F_GRO_BIT))) || dev->xdp_prog) return true; return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int netdev_get_prio_tc_map(const struct net_device *dev, u32 prio) { return dev->prio_tc_map[prio & 15]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int netdev_set_prio_tc_map(struct net_device *dev, u8 prio, u8 tc) { if (tc >= dev->num_tc) return -22; dev->prio_tc_map[prio & 15] = tc & 15; return 0; } int netdev_txq_to_tc(struct net_device *dev, unsigned int txq); void netdev_reset_tc(struct net_device *dev); int netdev_set_tc_queue(struct net_device *dev, u8 tc, u16 count, u16 offset); int netdev_set_num_tc(struct net_device *dev, u8 num_tc); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int netdev_get_num_tc(struct net_device *dev) { return dev->num_tc; } void netdev_unbind_sb_channel(struct net_device *dev, struct net_device *sb_dev); int netdev_bind_sb_channel_queue(struct net_device *dev, struct net_device *sb_dev, u8 tc, u16 count, u16 offset); int netdev_set_sb_channel(struct net_device *dev, u16 channel); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int netdev_get_sb_channel(struct net_device *dev) { return __builtin_choose_expr(((!!(sizeof((typeof((int)(-dev->num_tc)) *)1 == (typeof((int)(0)) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)((int)(-dev->num_tc)) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)((int)(0)) * 0l)) : (int *)8))))), (((int)(-dev->num_tc)) > ((int)(0)) ? ((int)(-dev->num_tc)) : ((int)(0))), ({ typeof((int)(-dev->num_tc)) __UNIQUE_ID___x418 = ((int)(-dev->num_tc)); typeof((int)(0)) __UNIQUE_ID___y419 = ((int)(0)); ((__UNIQUE_ID___x418) > (__UNIQUE_ID___y419) ? (__UNIQUE_ID___x418) : (__UNIQUE_ID___y419)); })); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev, unsigned int index) { return &dev->_tx[index]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct netdev_queue *skb_get_tx_queue(const struct net_device *dev, const struct sk_buff *skb) { return netdev_get_tx_queue(dev, skb_get_queue_mapping(skb)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_for_each_tx_queue(struct net_device *dev, void (*f)(struct net_device *, struct netdev_queue *, void *), void *arg) { unsigned int i; for (i = 0; i < dev->num_tx_queues; i++) f(dev, &dev->_tx[i], arg); } # 2131 "../include/linux/netdevice.h" u16 netdev_pick_tx(struct net_device *dev, struct sk_buff *skb, struct net_device *sb_dev); struct netdev_queue *netdev_core_pick_tx(struct net_device *dev, struct sk_buff *skb, struct net_device *sb_dev); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned netdev_get_fwd_headroom(struct net_device *dev) { return dev->priv_flags & IFF_PHONY_HEADROOM ? 0 : dev->needed_headroom; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_set_rx_headroom(struct net_device *dev, int new_hr) { if (dev->netdev_ops->ndo_set_rx_headroom) dev->netdev_ops->ndo_set_rx_headroom(dev, new_hr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_reset_rx_headroom(struct net_device *dev) { netdev_set_rx_headroom(dev, -1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct net *dev_net(const struct net_device *dev) { return read_pnet(&dev->nd_net); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_net_set(struct net_device *dev, struct net *net) { write_pnet(&dev->nd_net, net); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *netdev_priv(const struct net_device *dev) { return (char *)dev + ((((sizeof(struct net_device))) + ((typeof((sizeof(struct net_device))))((32)) - 1)) & ~((typeof((sizeof(struct net_device))))((32)) - 1)); } # 2209 "../include/linux/netdevice.h" void netif_napi_add(struct net_device *dev, struct napi_struct *napi, int (*poll)(struct napi_struct *, int), int weight); # 2223 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_tx_napi_add(struct net_device *dev, struct napi_struct *napi, int (*poll)(struct napi_struct *, int), int weight) { set_bit(NAPI_STATE_NO_BUSY_POLL, &napi->state); netif_napi_add(dev, napi, poll, weight); } void netif_napi_del(struct napi_struct *napi); struct napi_gro_cb { void *frag0; unsigned int frag0_len; int data_offset; u16 flush; u16 flush_id; u16 count; u16 gro_remcsum_start; unsigned long age; u16 proto; u8 same_flow:1; u8 encap_mark:1; u8 csum_valid:1; u8 csum_cnt:3; u8 free:2; u8 is_ipv6:1; u8 is_fou:1; u8 is_atomic:1; u8 recursion_counter:4; __wsum csum; struct sk_buff *last; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int gro_recursion_inc_test(struct sk_buff *skb) { return ++((struct napi_gro_cb *)(skb)->cb)->recursion_counter == 15; } typedef struct sk_buff *(*gro_receive_t)(struct list_head *, struct sk_buff *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *call_gro_receive(gro_receive_t cb, struct list_head *head, struct sk_buff *skb) { if (__builtin_expect(!!(gro_recursion_inc_test(skb)), 0)) { ((struct napi_gro_cb *)(skb)->cb)->flush |= 1; return ((void *)0); } return cb(head, skb); } typedef struct sk_buff *(*gro_receive_sk_t)(struct sock *, struct list_head *, struct sk_buff *); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *call_gro_receive_sk(gro_receive_sk_t cb, struct sock *sk, struct list_head *head, struct sk_buff *skb) { if (__builtin_expect(!!(gro_recursion_inc_test(skb)), 0)) { ((struct napi_gro_cb *)(skb)->cb)->flush |= 1; return ((void *)0); } return cb(sk, head, skb); } struct packet_type { __be16 type; bool ignore_outgoing; struct net_device *dev; int (*func) (struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *); void (*list_func) (struct list_head *, struct packet_type *, struct net_device *); bool (*id_match)(struct packet_type *ptype, struct sock *sk); void *af_packet_priv; struct list_head list; }; struct offload_callbacks { struct sk_buff *(*gso_segment)(struct sk_buff *skb, netdev_features_t features); struct sk_buff *(*gro_receive)(struct list_head *head, struct sk_buff *skb); int (*gro_complete)(struct sk_buff *skb, int nhoff); }; struct packet_offload { __be16 type; u16 priority; struct offload_callbacks callbacks; struct list_head list; }; struct pcpu_sw_netstats { u64 rx_packets; u64 rx_bytes; u64 tx_packets; u64 tx_bytes; struct u64_stats_sync syncp; } __attribute__((__aligned__(4 * sizeof(u64)))); struct pcpu_lstats { u64 packets; u64 bytes; struct u64_stats_sync syncp; } __attribute__((__aligned__(2 * sizeof(u64)))); # 2406 "../include/linux/netdevice.h" enum netdev_lag_tx_type { NETDEV_LAG_TX_TYPE_UNKNOWN, NETDEV_LAG_TX_TYPE_RANDOM, NETDEV_LAG_TX_TYPE_BROADCAST, NETDEV_LAG_TX_TYPE_ROUNDROBIN, NETDEV_LAG_TX_TYPE_ACTIVEBACKUP, NETDEV_LAG_TX_TYPE_HASH, }; enum netdev_lag_hash { NETDEV_LAG_HASH_NONE, NETDEV_LAG_HASH_L2, NETDEV_LAG_HASH_L34, NETDEV_LAG_HASH_L23, NETDEV_LAG_HASH_E23, NETDEV_LAG_HASH_E34, NETDEV_LAG_HASH_UNKNOWN, }; struct netdev_lag_upper_info { enum netdev_lag_tx_type tx_type; enum netdev_lag_hash hash_type; }; struct netdev_lag_lower_state_info { u8 link_up : 1, tx_enabled : 1; }; enum netdev_cmd { NETDEV_UP = 1, NETDEV_DOWN, NETDEV_REBOOT, NETDEV_CHANGE, NETDEV_REGISTER, NETDEV_UNREGISTER, NETDEV_CHANGEMTU, NETDEV_CHANGEADDR, NETDEV_PRE_CHANGEADDR, NETDEV_GOING_DOWN, NETDEV_CHANGENAME, NETDEV_FEAT_CHANGE, NETDEV_BONDING_FAILOVER, NETDEV_PRE_UP, NETDEV_PRE_TYPE_CHANGE, NETDEV_POST_TYPE_CHANGE, NETDEV_POST_INIT, NETDEV_RELEASE, NETDEV_NOTIFY_PEERS, NETDEV_JOIN, NETDEV_CHANGEUPPER, NETDEV_RESEND_IGMP, NETDEV_PRECHANGEMTU, NETDEV_CHANGEINFODATA, NETDEV_BONDING_INFO, NETDEV_PRECHANGEUPPER, NETDEV_CHANGELOWERSTATE, NETDEV_UDP_TUNNEL_PUSH_INFO, NETDEV_UDP_TUNNEL_DROP_INFO, NETDEV_CHANGE_TX_QUEUE_LEN, NETDEV_CVLAN_FILTER_PUSH_INFO, NETDEV_CVLAN_FILTER_DROP_INFO, NETDEV_SVLAN_FILTER_PUSH_INFO, NETDEV_SVLAN_FILTER_DROP_INFO, }; const char *netdev_cmd_to_name(enum netdev_cmd cmd); int register_netdevice_notifier(struct notifier_block *nb); int unregister_netdevice_notifier(struct notifier_block *nb); struct netdev_notifier_info { struct net_device *dev; struct netlink_ext_ack *extack; }; struct netdev_notifier_info_ext { struct netdev_notifier_info info; union { u32 mtu; } ext; }; struct netdev_notifier_change_info { struct netdev_notifier_info info; unsigned int flags_changed; }; struct netdev_notifier_changeupper_info { struct netdev_notifier_info info; struct net_device *upper_dev; bool master; bool linking; void *upper_info; }; struct netdev_notifier_changelowerstate_info { struct netdev_notifier_info info; void *lower_state_info; }; struct netdev_notifier_pre_changeaddr_info { struct netdev_notifier_info info; const unsigned char *dev_addr; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_notifier_info_init(struct netdev_notifier_info *info, struct net_device *dev) { info->dev = dev; info->extack = ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct net_device * netdev_notifier_info_to_dev(const struct netdev_notifier_info *info) { return info->dev; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct netlink_ext_ack * netdev_notifier_info_to_extack(const struct netdev_notifier_info *info) { return info->extack; } int call_netdevice_notifiers(unsigned long val, struct net_device *dev); extern rwlock_t dev_base_lock; # 2561 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct net_device *next_net_device(struct net_device *dev) { struct list_head *lh; struct net *net; net = dev_net(dev); lh = dev->dev_list.next; return lh == &net->dev_base_head ? ((void *)0) : ({ void *__mptr = (void *)(lh); do { extern void __compiletime_assert_2568(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(lh)), typeof(((struct net_device *)0)->dev_list)) && !__builtin_types_compatible_p(typeof(*(lh)), typeof(void))))) __compiletime_assert_2568(); } while (0); ((struct net_device *)(__mptr - __builtin_offsetof(struct net_device, dev_list))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct net_device *next_net_device_rcu(struct net_device *dev) { struct list_head *lh; struct net *net; net = dev_net(dev); lh = ({ typeof(*((*((struct list_head **)(&(&dev->dev_list)->next))))) *________p1 = (typeof(*((*((struct list_head **)(&(&dev->dev_list)->next))))) *)({ union { typeof(((*((struct list_head **)(&(&dev->dev_list)->next))))) __val; char __c[1]; } __u; if (1) __read_once_size(&(((*((struct list_head **)(&(&dev->dev_list)->next))))), __u.__c, sizeof(((*((struct list_head **)(&(&dev->dev_list)->next)))))); else __read_once_size_nocheck(&(((*((struct list_head **)(&(&dev->dev_list)->next))))), __u.__c, sizeof(((*((struct list_head **)(&(&dev->dev_list)->next)))))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_held()))) { __warned = true; lockdep_rcu_suspicious("../include/linux/netdevice.h", 2577, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*((*((struct list_head **)(&(&dev->dev_list)->next))))) *)(________p1)); }); return lh == &net->dev_base_head ? ((void *)0) : ({ void *__mptr = (void *)(lh); do { extern void __compiletime_assert_2578(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(lh)), typeof(((struct net_device *)0)->dev_list)) && !__builtin_types_compatible_p(typeof(*(lh)), typeof(void))))) __compiletime_assert_2578(); } while (0); ((struct net_device *)(__mptr - __builtin_offsetof(struct net_device, dev_list))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct net_device *first_net_device(struct net *net) { return list_empty(&net->dev_base_head) ? ((void *)0) : ({ void *__mptr = (void *)(net->dev_base_head.next); do { extern void __compiletime_assert_2584(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(net->dev_base_head.next)), typeof(((struct net_device *)0)->dev_list)) && !__builtin_types_compatible_p(typeof(*(net->dev_base_head.next)), typeof(void))))) __compiletime_assert_2584(); } while (0); ((struct net_device *)(__mptr - __builtin_offsetof(struct net_device, dev_list))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct net_device *first_net_device_rcu(struct net *net) { struct list_head *lh = ({ typeof(*((*((struct list_head **)(&(&net->dev_base_head)->next))))) *________p1 = (typeof(*((*((struct list_head **)(&(&net->dev_base_head)->next))))) *)({ union { typeof(((*((struct list_head **)(&(&net->dev_base_head)->next))))) __val; char __c[1]; } __u; if (1) __read_once_size(&(((*((struct list_head **)(&(&net->dev_base_head)->next))))), __u.__c, sizeof(((*((struct list_head **)(&(&net->dev_base_head)->next)))))); else __read_once_size_nocheck(&(((*((struct list_head **)(&(&net->dev_base_head)->next))))), __u.__c, sizeof(((*((struct list_head **)(&(&net->dev_base_head)->next)))))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_held()))) { __warned = true; lockdep_rcu_suspicious("../include/linux/netdevice.h", 2589, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*((*((struct list_head **)(&(&net->dev_base_head)->next))))) *)(________p1)); }); return lh == &net->dev_base_head ? ((void *)0) : ({ void *__mptr = (void *)(lh); do { extern void __compiletime_assert_2591(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(lh)), typeof(((struct net_device *)0)->dev_list)) && !__builtin_types_compatible_p(typeof(*(lh)), typeof(void))))) __compiletime_assert_2591(); } while (0); ((struct net_device *)(__mptr - __builtin_offsetof(struct net_device, dev_list))); }); } int netdev_boot_setup_check(struct net_device *dev); unsigned long netdev_boot_base(const char *prefix, int unit); struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type, const char *hwaddr); struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type); struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type); void dev_add_pack(struct packet_type *pt); void dev_remove_pack(struct packet_type *pt); void __dev_remove_pack(struct packet_type *pt); void dev_add_offload(struct packet_offload *po); void dev_remove_offload(struct packet_offload *po); int dev_get_iflink(const struct net_device *dev); int dev_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb); struct net_device *__dev_get_by_flags(struct net *net, unsigned short flags, unsigned short mask); struct net_device *dev_get_by_name(struct net *net, const char *name); struct net_device *dev_get_by_name_rcu(struct net *net, const char *name); struct net_device *__dev_get_by_name(struct net *net, const char *name); int dev_alloc_name(struct net_device *dev, const char *name); int dev_open(struct net_device *dev, struct netlink_ext_ack *extack); void dev_close(struct net_device *dev); void dev_close_many(struct list_head *head, bool unlink); void dev_disable_lro(struct net_device *dev); int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *newskb); u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb, struct net_device *sb_dev); u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb, struct net_device *sb_dev); int dev_queue_xmit(struct sk_buff *skb); int dev_queue_xmit_accel(struct sk_buff *skb, struct net_device *sb_dev); int dev_direct_xmit(struct sk_buff *skb, u16 queue_id); int register_netdevice(struct net_device *dev); void unregister_netdevice_queue(struct net_device *dev, struct list_head *head); void unregister_netdevice_many(struct list_head *head); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void unregister_netdevice(struct net_device *dev) { unregister_netdevice_queue(dev, ((void *)0)); } int netdev_refcnt_read(const struct net_device *dev); void free_netdev(struct net_device *dev); void netdev_freemem(struct net_device *dev); void synchronize_net(void); int init_dummy_netdev(struct net_device *dev); struct net_device *dev_get_by_index(struct net *net, int ifindex); struct net_device *__dev_get_by_index(struct net *net, int ifindex); struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex); struct net_device *dev_get_by_napi_id(unsigned int napi_id); int netdev_get_name(struct net *net, char *name, int ifindex); int dev_restart(struct net_device *dev); int skb_gro_receive(struct sk_buff *p, struct sk_buff *skb); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int skb_gro_offset(const struct sk_buff *skb) { return ((struct napi_gro_cb *)(skb)->cb)->data_offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int skb_gro_len(const struct sk_buff *skb) { return skb->len - ((struct napi_gro_cb *)(skb)->cb)->data_offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_gro_pull(struct sk_buff *skb, unsigned int len) { ((struct napi_gro_cb *)(skb)->cb)->data_offset += len; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_gro_header_fast(struct sk_buff *skb, unsigned int offset) { return ((struct napi_gro_cb *)(skb)->cb)->frag0 + offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int skb_gro_header_hard(struct sk_buff *skb, unsigned int hlen) { return ((struct napi_gro_cb *)(skb)->cb)->frag0_len < hlen; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_gro_frag0_invalidate(struct sk_buff *skb) { ((struct napi_gro_cb *)(skb)->cb)->frag0 = ((void *)0); ((struct napi_gro_cb *)(skb)->cb)->frag0_len = 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_gro_header_slow(struct sk_buff *skb, unsigned int hlen, unsigned int offset) { if (!pskb_may_pull(skb, hlen)) return ((void *)0); skb_gro_frag0_invalidate(skb); return skb->data + offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_gro_network_header(struct sk_buff *skb) { return (((struct napi_gro_cb *)(skb)->cb)->frag0 ?: skb->data) + skb_network_offset(skb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_gro_postpull_rcsum(struct sk_buff *skb, const void *start, unsigned int len) { if (((struct napi_gro_cb *)(skb)->cb)->csum_valid) ((struct napi_gro_cb *)(skb)->cb)->csum = csum_sub(((struct napi_gro_cb *)(skb)->cb)->csum, csum_partial(start, len, 0)); } __sum16 __skb_gro_checksum_complete(struct sk_buff *skb); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_at_gro_remcsum_start(struct sk_buff *skb) { return (((struct napi_gro_cb *)(skb)->cb)->gro_remcsum_start == skb_gro_offset(skb)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __skb_gro_checksum_validate_needed(struct sk_buff *skb, bool zero_okay, __sum16 check) { return ((skb->ip_summed != 3 || skb_checksum_start_offset(skb) < skb_gro_offset(skb)) && !skb_at_gro_remcsum_start(skb) && ((struct napi_gro_cb *)(skb)->cb)->csum_cnt == 0 && (!zero_okay || check)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __sum16 __skb_gro_checksum_validate_complete(struct sk_buff *skb, __wsum psum) { if (((struct napi_gro_cb *)(skb)->cb)->csum_valid && !csum_fold(csum_add(psum, ((struct napi_gro_cb *)(skb)->cb)->csum))) return 0; ((struct napi_gro_cb *)(skb)->cb)->csum = psum; return __skb_gro_checksum_complete(skb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_gro_incr_csum_unnecessary(struct sk_buff *skb) { if (((struct napi_gro_cb *)(skb)->cb)->csum_cnt > 0) { ((struct napi_gro_cb *)(skb)->cb)->csum_cnt--; } else { __skb_incr_checksum_unnecessary(skb); } } # 2776 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __skb_gro_checksum_convert_check(struct sk_buff *skb) { return (((struct napi_gro_cb *)(skb)->cb)->csum_cnt == 0 && !((struct napi_gro_cb *)(skb)->cb)->csum_valid); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __skb_gro_checksum_convert(struct sk_buff *skb, __sum16 check, __wsum pseudo) { ((struct napi_gro_cb *)(skb)->cb)->csum = ~pseudo; ((struct napi_gro_cb *)(skb)->cb)->csum_valid = 1; } # 2796 "../include/linux/netdevice.h" struct gro_remcsum { int offset; __wsum delta; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_gro_remcsum_init(struct gro_remcsum *grc) { grc->offset = 0; grc->delta = 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *skb_gro_remcsum_process(struct sk_buff *skb, void *ptr, unsigned int off, size_t hdrlen, int start, int offset, struct gro_remcsum *grc, bool nopartial) { __wsum delta; size_t plen = hdrlen + __builtin_choose_expr(((!!(sizeof((typeof((size_t)(offset + sizeof(u16))) *)1 == (typeof((size_t)(start)) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)((size_t)(offset + sizeof(u16))) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)((size_t)(start)) * 0l)) : (int *)8))))), (((size_t)(offset + sizeof(u16))) > ((size_t)(start)) ? ((size_t)(offset + sizeof(u16))) : ((size_t)(start))), ({ typeof((size_t)(offset + sizeof(u16))) __UNIQUE_ID___x420 = ((size_t)(offset + sizeof(u16))); typeof((size_t)(start)) __UNIQUE_ID___y421 = ((size_t)(start)); ((__UNIQUE_ID___x420) > (__UNIQUE_ID___y421) ? (__UNIQUE_ID___x420) : (__UNIQUE_ID___y421)); })); do { if (__builtin_expect(!!(!((struct napi_gro_cb *)(skb)->cb)->csum_valid), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/netdevice.h"), "i" (2816), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (422)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); if (!nopartial) { ((struct napi_gro_cb *)(skb)->cb)->gro_remcsum_start = off + hdrlen + start; return ptr; } ptr = skb_gro_header_fast(skb, off); if (skb_gro_header_hard(skb, off + plen)) { ptr = skb_gro_header_slow(skb, off + plen, off); if (!ptr) return ((void *)0); } delta = remcsum_adjust(ptr + hdrlen, ((struct napi_gro_cb *)(skb)->cb)->csum, start, offset); ((struct napi_gro_cb *)(skb)->cb)->csum = csum_add(((struct napi_gro_cb *)(skb)->cb)->csum, delta); grc->offset = off + hdrlen + offset; grc->delta = delta; return ptr; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_gro_remcsum_cleanup(struct sk_buff *skb, struct gro_remcsum *grc) { void *ptr; size_t plen = grc->offset + sizeof(u16); if (!grc->delta) return; ptr = skb_gro_header_fast(skb, grc->offset); if (skb_gro_header_hard(skb, grc->offset + sizeof(u16))) { ptr = skb_gro_header_slow(skb, plen, grc->offset); if (!ptr) return; } remcsum_unadjust((__sum16 *)ptr, grc->delta); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_gro_flush_final(struct sk_buff *skb, struct sk_buff *pp, int flush) { if (PTR_ERR(pp) != -115) ((struct napi_gro_cb *)(skb)->cb)->flush |= flush; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_gro_flush_final_remcsum(struct sk_buff *skb, struct sk_buff *pp, int flush, struct gro_remcsum *grc) { if (PTR_ERR(pp) != -115) { ((struct napi_gro_cb *)(skb)->cb)->flush |= flush; skb_gro_remcsum_cleanup(skb, grc); skb->remcsum_offload = 0; } } # 2894 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dev_hard_header(struct sk_buff *skb, struct net_device *dev, unsigned short type, const void *daddr, const void *saddr, unsigned int len) { if (!dev->header_ops || !dev->header_ops->create) return 0; return dev->header_ops->create(skb, dev, type, daddr, saddr, len); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dev_parse_header(const struct sk_buff *skb, unsigned char *haddr) { const struct net_device *dev = skb->dev; if (!dev->header_ops || !dev->header_ops->parse) return 0; return dev->header_ops->parse(skb, haddr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __be16 dev_parse_header_protocol(const struct sk_buff *skb) { const struct net_device *dev = skb->dev; if (!dev->header_ops || !dev->header_ops->parse_protocol) return 0; return dev->header_ops->parse_protocol(skb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool dev_validate_header(const struct net_device *dev, char *ll_header, int len) { if (__builtin_expect(!!(len >= dev->hard_header_len), 1)) return true; if (len < dev->min_header_len) return false; if (capable(17)) { __memset(ll_header + len, 0, dev->hard_header_len - len); return true; } if (dev->header_ops && dev->header_ops->validate) return dev->header_ops->validate(ll_header, len); return false; } typedef int gifconf_func_t(struct net_device * dev, char * bufptr, int len, int size); int register_gifconf(unsigned int family, gifconf_func_t *gifconf); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_gifconf(unsigned int family) { return register_gifconf(family, ((void *)0)); } struct sd_flow_limit { u64 count; unsigned int num_buckets; unsigned int history_head; u16 history[(1 << 7)]; u8 buckets[]; }; extern int netdev_flow_limit_table_len; struct softnet_data { struct list_head poll_list; struct sk_buff_head process_queue; unsigned int processed; unsigned int time_squeeze; unsigned int received_rps; struct softnet_data *rps_ipi_list; struct sd_flow_limit *flow_limit; struct Qdisc *output_queue; struct Qdisc **output_queue_tailp; struct sk_buff *completion_queue; struct sk_buff_head xfrm_backlog; struct { u16 recursion; u8 more; } xmit; unsigned int input_queue_head __attribute__((__aligned__((1 << (6))))); call_single_data_t csd __attribute__((__aligned__((1 << (6))))); struct softnet_data *rps_ipi_next; unsigned int cpu; unsigned int input_queue_tail; unsigned int dropped; struct sk_buff_head input_pkt_queue; struct napi_struct backlog; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void input_queue_head_incr(struct softnet_data *sd) { sd->input_queue_head++; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void input_queue_tail_incr_save(struct softnet_data *sd, unsigned int *qtail) { *qtail = ++sd->input_queue_tail; } extern __attribute__((section(".discard"), unused)) char __pcpu_scope_softnet_data; extern __attribute__((section(".data..percpu" "..shared_aligned"))) __typeof__(struct softnet_data) softnet_data __attribute__((__aligned__((1 << (6))))); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int dev_recursion_level(void) { return ({ typeof(softnet_data.xmit.recursion) pscr_ret__; do { const void *__vpp_verify = (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(softnet_data.xmit.recursion)) { case 1: pscr_ret__ = ({ typeof(softnet_data.xmit.recursion) pfo_ret__; switch (sizeof(softnet_data.xmit.recursion)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(softnet_data.xmit.recursion) pfo_ret__; switch (sizeof(softnet_data.xmit.recursion)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(softnet_data.xmit.recursion) pfo_ret__; switch (sizeof(softnet_data.xmit.recursion)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(softnet_data.xmit.recursion) pfo_ret__; switch (sizeof(softnet_data.xmit.recursion)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool dev_xmit_recursion(void) { return __builtin_expect(!!(({ __this_cpu_preempt_check("read"); ({ typeof(softnet_data.xmit.recursion) pscr_ret__; do { const void *__vpp_verify = (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(softnet_data.xmit.recursion)) { case 1: pscr_ret__ = ({ typeof(softnet_data.xmit.recursion) pfo_ret__; switch (sizeof(softnet_data.xmit.recursion)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(softnet_data.xmit.recursion) pfo_ret__; switch (sizeof(softnet_data.xmit.recursion)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(softnet_data.xmit.recursion) pfo_ret__; switch (sizeof(softnet_data.xmit.recursion)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(softnet_data.xmit.recursion) pfo_ret__; switch (sizeof(softnet_data.xmit.recursion)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.recursion)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; }); }) > 10), 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_xmit_recursion_inc(void) { ({ __this_cpu_preempt_check("add"); do { do { const void *__vpp_verify = (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(softnet_data.xmit.recursion)) { case 1: do { typedef typeof((softnet_data.xmit.recursion)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((softnet_data.xmit.recursion))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((softnet_data.xmit.recursion)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((softnet_data.xmit.recursion))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((softnet_data.xmit.recursion)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((softnet_data.xmit.recursion))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((softnet_data.xmit.recursion)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((softnet_data.xmit.recursion))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_xmit_recursion_dec(void) { ({ __this_cpu_preempt_check("add"); do { do { const void *__vpp_verify = (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(softnet_data.xmit.recursion)) { case 1: do { typedef typeof((softnet_data.xmit.recursion)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(softnet_data.xmit.recursion))(1)) && ((-(typeof(softnet_data.xmit.recursion))(1)) == 1 || (-(typeof(softnet_data.xmit.recursion))(1)) == -1)) ? (int)(-(typeof(softnet_data.xmit.recursion))(1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(softnet_data.xmit.recursion))(1)); (void)pao_tmp__; } switch (sizeof((softnet_data.xmit.recursion))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "qi" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "re" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((softnet_data.xmit.recursion)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(softnet_data.xmit.recursion))(1)) && ((-(typeof(softnet_data.xmit.recursion))(1)) == 1 || (-(typeof(softnet_data.xmit.recursion))(1)) == -1)) ? (int)(-(typeof(softnet_data.xmit.recursion))(1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(softnet_data.xmit.recursion))(1)); (void)pao_tmp__; } switch (sizeof((softnet_data.xmit.recursion))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "qi" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "re" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((softnet_data.xmit.recursion)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(softnet_data.xmit.recursion))(1)) && ((-(typeof(softnet_data.xmit.recursion))(1)) == 1 || (-(typeof(softnet_data.xmit.recursion))(1)) == -1)) ? (int)(-(typeof(softnet_data.xmit.recursion))(1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(softnet_data.xmit.recursion))(1)); (void)pao_tmp__; } switch (sizeof((softnet_data.xmit.recursion))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "qi" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "re" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((softnet_data.xmit.recursion)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(softnet_data.xmit.recursion))(1)) && ((-(typeof(softnet_data.xmit.recursion))(1)) == 1 || (-(typeof(softnet_data.xmit.recursion))(1)) == -1)) ? (int)(-(typeof(softnet_data.xmit.recursion))(1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(softnet_data.xmit.recursion))(1)); (void)pao_tmp__; } switch (sizeof((softnet_data.xmit.recursion))) { case 1: if (pao_ID__ == 1) asm ("incb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decb ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "qi" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; case 2: if (pao_ID__ == 1) asm ("incw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decw ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; case 4: if (pao_ID__ == 1) asm ("incl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decl ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "ri" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; case 8: if (pao_ID__ == 1) asm ("incq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else if (pao_ID__ == -1) asm ("decq ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion))); else asm ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.recursion)) : "re" ((pao_T__)(-(typeof(softnet_data.xmit.recursion))(1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); }); } void __netif_schedule(struct Qdisc *q); void netif_schedule_queue(struct netdev_queue *txq); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_tx_schedule_all(struct net_device *dev) { unsigned int i; for (i = 0; i < dev->num_tx_queues; i++) netif_schedule_queue(netdev_get_tx_queue(dev, i)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void netif_tx_start_queue(struct netdev_queue *dev_queue) { clear_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_start_queue(struct net_device *dev) { netif_tx_start_queue(netdev_get_tx_queue(dev, 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_tx_start_all_queues(struct net_device *dev) { unsigned int i; for (i = 0; i < dev->num_tx_queues; i++) { struct netdev_queue *txq = netdev_get_tx_queue(dev, i); netif_tx_start_queue(txq); } } void netif_tx_wake_queue(struct netdev_queue *dev_queue); # 3096 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_wake_queue(struct net_device *dev) { netif_tx_wake_queue(netdev_get_tx_queue(dev, 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_tx_wake_all_queues(struct net_device *dev) { unsigned int i; for (i = 0; i < dev->num_tx_queues; i++) { struct netdev_queue *txq = netdev_get_tx_queue(dev, i); netif_tx_wake_queue(txq); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void netif_tx_stop_queue(struct netdev_queue *dev_queue) { set_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state); } # 3123 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_stop_queue(struct net_device *dev) { netif_tx_stop_queue(netdev_get_tx_queue(dev, 0)); } void netif_tx_stop_all_queues(struct net_device *dev); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_tx_queue_stopped(const struct netdev_queue *dev_queue) { return test_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_queue_stopped(const struct net_device *dev) { return netif_tx_queue_stopped(netdev_get_tx_queue(dev, 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_xmit_stopped(const struct netdev_queue *dev_queue) { return dev_queue->state & ((1 << __QUEUE_STATE_DRV_XOFF) | (1 << __QUEUE_STATE_STACK_XOFF)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_xmit_frozen_or_stopped(const struct netdev_queue *dev_queue) { return dev_queue->state & (((1 << __QUEUE_STATE_DRV_XOFF) | (1 << __QUEUE_STATE_STACK_XOFF)) | (1 << __QUEUE_STATE_FROZEN)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_xmit_frozen_or_drv_stopped(const struct netdev_queue *dev_queue) { return dev_queue->state & ((1 << __QUEUE_STATE_DRV_XOFF) | (1 << __QUEUE_STATE_FROZEN)); } # 3170 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_txq_bql_enqueue_prefetchw(struct netdev_queue *dev_queue) { prefetchw(&dev_queue->dql.num_queued); } # 3184 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_txq_bql_complete_prefetchw(struct netdev_queue *dev_queue) { prefetchw(&dev_queue->dql.limit); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_tx_sent_queue(struct netdev_queue *dev_queue, unsigned int bytes) { dql_queued(&dev_queue->dql, bytes); if (__builtin_expect(!!(dql_avail(&dev_queue->dql) >= 0), 1)) return; set_bit(__QUEUE_STATE_STACK_XOFF, &dev_queue->state); asm volatile("lock; addl $0,-4(%%rsp)" ::: "memory", "cc"); if (__builtin_expect(!!(dql_avail(&dev_queue->dql) >= 0), 0)) clear_bit(__QUEUE_STATE_STACK_XOFF, &dev_queue->state); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __netdev_tx_sent_queue(struct netdev_queue *dev_queue, unsigned int bytes, bool xmit_more) { if (xmit_more) { dql_queued(&dev_queue->dql, bytes); return netif_tx_queue_stopped(dev_queue); } netdev_tx_sent_queue(dev_queue, bytes); return true; } # 3244 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_sent_queue(struct net_device *dev, unsigned int bytes) { netdev_tx_sent_queue(netdev_get_tx_queue(dev, 0), bytes); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __netdev_sent_queue(struct net_device *dev, unsigned int bytes, bool xmit_more) { return __netdev_tx_sent_queue(netdev_get_tx_queue(dev, 0), bytes, xmit_more); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_tx_completed_queue(struct netdev_queue *dev_queue, unsigned int pkts, unsigned int bytes) { if (__builtin_expect(!!(!bytes), 0)) return; dql_completed(&dev_queue->dql, bytes); asm volatile("lock; addl $0,-4(%%rsp)" ::: "memory", "cc"); if (dql_avail(&dev_queue->dql) < 0) return; if (test_and_clear_bit(__QUEUE_STATE_STACK_XOFF, &dev_queue->state)) netif_schedule_queue(dev_queue); } # 3291 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_completed_queue(struct net_device *dev, unsigned int pkts, unsigned int bytes) { netdev_tx_completed_queue(netdev_get_tx_queue(dev, 0), pkts, bytes); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_tx_reset_queue(struct netdev_queue *q) { clear_bit(__QUEUE_STATE_STACK_XOFF, &q->state); dql_reset(&q->dql); } # 3312 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_reset_queue(struct net_device *dev_queue) { netdev_tx_reset_queue(netdev_get_tx_queue(dev_queue, 0)); } # 3325 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 netdev_cap_txqueue(struct net_device *dev, u16 queue_index) { if (__builtin_expect(!!(queue_index >= dev->real_num_tx_queues), 0)) { do { if (net_ratelimit()) printk("\001" "4" "%s selects TX queue %d, but real number of TX queues is %d\n", dev->name, queue_index, dev->real_num_tx_queues); } while (0); return 0; } return queue_index; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_running(const struct net_device *dev) { return test_bit(__LINK_STATE_START, &dev->state); } # 3362 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_start_subqueue(struct net_device *dev, u16 queue_index) { struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); netif_tx_start_queue(txq); } # 3376 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_stop_subqueue(struct net_device *dev, u16 queue_index) { struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); netif_tx_stop_queue(txq); } # 3389 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __netif_subqueue_stopped(const struct net_device *dev, u16 queue_index) { struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); return netif_tx_queue_stopped(txq); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_subqueue_stopped(const struct net_device *dev, struct sk_buff *skb) { return __netif_subqueue_stopped(dev, skb_get_queue_mapping(skb)); } # 3410 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_wake_subqueue(struct net_device *dev, u16 queue_index) { struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); netif_tx_wake_queue(txq); } int netif_set_xps_queue(struct net_device *dev, const struct cpumask *mask, u16 index); int __netif_set_xps_queue(struct net_device *dev, const unsigned long *mask, u16 index, bool is_rxqs_map); # 3431 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_attr_test_mask(unsigned long j, const unsigned long *mask, unsigned int nr_bits) { cpu_max_bits_warn(j, nr_bits); return test_bit(j, mask); } # 3447 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_attr_test_online(unsigned long j, const unsigned long *online_mask, unsigned int nr_bits) { cpu_max_bits_warn(j, nr_bits); if (online_mask) return test_bit(j, online_mask); return (j < nr_bits); } # 3467 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int netif_attrmask_next(int n, const unsigned long *srcp, unsigned int nr_bits) { if (n != -1) cpu_max_bits_warn(n, nr_bits); if (srcp) return find_next_bit(srcp, nr_bits, n + 1); return n + 1; } # 3489 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int netif_attrmask_next_and(int n, const unsigned long *src1p, const unsigned long *src2p, unsigned int nr_bits) { if (n != -1) cpu_max_bits_warn(n, nr_bits); if (src1p && src2p) return find_next_and_bit(src1p, src2p, nr_bits, n + 1); else if (src1p) return find_next_bit(src1p, nr_bits, n + 1); else if (src2p) return find_next_bit(src2p, nr_bits, n + 1); return n + 1; } # 3528 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_multiqueue(const struct net_device *dev) { return dev->num_tx_queues > 1; } int netif_set_real_num_tx_queues(struct net_device *dev, unsigned int txq); int netif_set_real_num_rx_queues(struct net_device *dev, unsigned int rxq); # 3546 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct netdev_rx_queue * __netif_get_rx_queue(struct net_device *dev, unsigned int rxq) { return dev->_rx + rxq; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned int get_netdev_rx_queue_index( struct netdev_rx_queue *queue) { struct net_device *dev = queue->dev; int index = queue - dev->_rx; do { if (__builtin_expect(!!(index >= dev->num_rx_queues), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/netdevice.h"), "i" (3559), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (423)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); return index; } int netif_get_num_default_rss_queues(void); enum skb_free_reason { SKB_REASON_CONSUMED, SKB_REASON_DROPPED, }; void __dev_kfree_skb_irq(struct sk_buff *skb, enum skb_free_reason reason); void __dev_kfree_skb_any(struct sk_buff *skb, enum skb_free_reason reason); # 3594 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_kfree_skb_irq(struct sk_buff *skb) { __dev_kfree_skb_irq(skb, SKB_REASON_DROPPED); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_consume_skb_irq(struct sk_buff *skb) { __dev_kfree_skb_irq(skb, SKB_REASON_CONSUMED); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_kfree_skb_any(struct sk_buff *skb) { __dev_kfree_skb_any(skb, SKB_REASON_DROPPED); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_consume_skb_any(struct sk_buff *skb) { __dev_kfree_skb_any(skb, SKB_REASON_CONSUMED); } void generic_xdp_tx(struct sk_buff *skb, struct bpf_prog *xdp_prog); int do_xdp_generic(struct bpf_prog *xdp_prog, struct sk_buff *skb); int netif_rx(struct sk_buff *skb); int netif_rx_ni(struct sk_buff *skb); int netif_receive_skb(struct sk_buff *skb); int netif_receive_skb_core(struct sk_buff *skb); void netif_receive_skb_list(struct list_head *head); gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb); void napi_gro_flush(struct napi_struct *napi, bool flush_old); struct sk_buff *napi_get_frags(struct napi_struct *napi); gro_result_t napi_gro_frags(struct napi_struct *napi); struct packet_offload *gro_find_receive_by_type(__be16 type); struct packet_offload *gro_find_complete_by_type(__be16 type); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void napi_free_frags(struct napi_struct *napi) { kfree_skb(napi->skb); napi->skb = ((void *)0); } bool netdev_is_rx_handler_busy(struct net_device *dev); int netdev_rx_handler_register(struct net_device *dev, rx_handler_func_t *rx_handler, void *rx_handler_data); void netdev_rx_handler_unregister(struct net_device *dev); bool dev_valid_name(const char *name); int dev_ioctl(struct net *net, unsigned int cmd, struct ifreq *ifr, bool *need_copyout); int dev_ifconf(struct net *net, struct ifconf *, int); int dev_ethtool(struct net *net, struct ifreq *); unsigned int dev_get_flags(const struct net_device *); int __dev_change_flags(struct net_device *dev, unsigned int flags, struct netlink_ext_ack *extack); int dev_change_flags(struct net_device *dev, unsigned int flags, struct netlink_ext_ack *extack); void __dev_notify_flags(struct net_device *, unsigned int old_flags, unsigned int gchanges); int dev_change_name(struct net_device *, const char *); int dev_set_alias(struct net_device *, const char *, size_t); int dev_get_alias(const struct net_device *, char *, size_t); int dev_change_net_namespace(struct net_device *, struct net *, const char *); int __dev_set_mtu(struct net_device *, int); int dev_set_mtu_ext(struct net_device *dev, int mtu, struct netlink_ext_ack *extack); int dev_set_mtu(struct net_device *, int); int dev_change_tx_queue_len(struct net_device *, unsigned long); void dev_set_group(struct net_device *, int); int dev_pre_changeaddr_notify(struct net_device *dev, const char *addr, struct netlink_ext_ack *extack); int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa, struct netlink_ext_ack *extack); int dev_change_carrier(struct net_device *, bool new_carrier); int dev_get_phys_port_id(struct net_device *dev, struct netdev_phys_item_id *ppid); int dev_get_phys_port_name(struct net_device *dev, char *name, size_t len); int dev_get_port_parent_id(struct net_device *dev, struct netdev_phys_item_id *ppid, bool recurse); bool netdev_port_same_parent_id(struct net_device *a, struct net_device *b); int dev_change_proto_down(struct net_device *dev, bool proto_down); int dev_change_proto_down_generic(struct net_device *dev, bool proto_down); struct sk_buff *validate_xmit_skb_list(struct sk_buff *skb, struct net_device *dev, bool *again); struct sk_buff *dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev, struct netdev_queue *txq, int *ret); typedef int (*bpf_op_t)(struct net_device *dev, struct netdev_bpf *bpf); int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack, int fd, u32 flags); u32 __dev_xdp_query(struct net_device *dev, bpf_op_t xdp_op, enum bpf_netdev_command cmd); int xdp_umem_query(struct net_device *dev, u16 queue_id); int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb); int dev_forward_skb(struct net_device *dev, struct sk_buff *skb); bool is_skb_forwardable(const struct net_device *dev, const struct sk_buff *skb); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) int ____dev_forward_skb(struct net_device *dev, struct sk_buff *skb) { if (skb_orphan_frags(skb, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u))) || __builtin_expect(!!(!is_skb_forwardable(dev, skb)), 0)) { atomic_long_inc(&dev->rx_dropped); kfree_skb(skb); return 1; } skb_scrub_packet(skb, true); skb->priority = 0; return 0; } bool dev_nit_active(struct net_device *dev); void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev); extern int netdev_budget; extern unsigned int netdev_budget_usecs; void netdev_run_todo(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_put(struct net_device *dev) { do { do { const void *__vpp_verify = (typeof((&(*dev->pcpu_refcnt)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*dev->pcpu_refcnt)) { case 1: do { typedef typeof((*dev->pcpu_refcnt)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(*dev->pcpu_refcnt))(1)) && ((-(typeof(*dev->pcpu_refcnt))(1)) == 1 || (-(typeof(*dev->pcpu_refcnt))(1)) == -1)) ? (int)(-(typeof(*dev->pcpu_refcnt))(1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(*dev->pcpu_refcnt))(1)); (void)pao_tmp__; } switch (sizeof((*dev->pcpu_refcnt))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "qi" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "re" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((*dev->pcpu_refcnt)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(*dev->pcpu_refcnt))(1)) && ((-(typeof(*dev->pcpu_refcnt))(1)) == 1 || (-(typeof(*dev->pcpu_refcnt))(1)) == -1)) ? (int)(-(typeof(*dev->pcpu_refcnt))(1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(*dev->pcpu_refcnt))(1)); (void)pao_tmp__; } switch (sizeof((*dev->pcpu_refcnt))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "qi" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "re" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((*dev->pcpu_refcnt)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(*dev->pcpu_refcnt))(1)) && ((-(typeof(*dev->pcpu_refcnt))(1)) == 1 || (-(typeof(*dev->pcpu_refcnt))(1)) == -1)) ? (int)(-(typeof(*dev->pcpu_refcnt))(1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(*dev->pcpu_refcnt))(1)); (void)pao_tmp__; } switch (sizeof((*dev->pcpu_refcnt))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "qi" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "re" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((*dev->pcpu_refcnt)) pao_T__; const int pao_ID__ = (__builtin_constant_p(-(typeof(*dev->pcpu_refcnt))(1)) && ((-(typeof(*dev->pcpu_refcnt))(1)) == 1 || (-(typeof(*dev->pcpu_refcnt))(1)) == -1)) ? (int)(-(typeof(*dev->pcpu_refcnt))(1)) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (-(typeof(*dev->pcpu_refcnt))(1)); (void)pao_tmp__; } switch (sizeof((*dev->pcpu_refcnt))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "qi" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "re" ((pao_T__)(-(typeof(*dev->pcpu_refcnt))(1)))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void dev_hold(struct net_device *dev) { do { do { const void *__vpp_verify = (typeof((&(*dev->pcpu_refcnt)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*dev->pcpu_refcnt)) { case 1: do { typedef typeof((*dev->pcpu_refcnt)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*dev->pcpu_refcnt))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((*dev->pcpu_refcnt)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*dev->pcpu_refcnt))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((*dev->pcpu_refcnt)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*dev->pcpu_refcnt))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((*dev->pcpu_refcnt)) pao_T__; const int pao_ID__ = (__builtin_constant_p(1) && ((1) == 1 || (1) == -1)) ? (int)(1) : 0; if (0) { pao_T__ pao_tmp__; pao_tmp__ = (1); (void)pao_tmp__; } switch (sizeof((*dev->pcpu_refcnt))) { case 1: if (pao_ID__ == 1) asm volatile ("incb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decb ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addb %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "qi" ((pao_T__)(1))); break; case 2: if (pao_ID__ == 1) asm volatile ("incw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decw ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addw %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(1))); break; case 4: if (pao_ID__ == 1) asm volatile ("incl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decl ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addl %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "ri" ((pao_T__)(1))); break; case 8: if (pao_ID__ == 1) asm volatile ("incq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else if (pao_ID__ == -1) asm volatile ("decq ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt))); else asm volatile ("addq %1, ""%%""gs"":" "%" "0" : "+m" ((*dev->pcpu_refcnt)) : "re" ((pao_T__)(1))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); } # 3747 "../include/linux/netdevice.h" void linkwatch_init_dev(struct net_device *dev); void linkwatch_fire_event(struct net_device *dev); void linkwatch_forget_dev(struct net_device *dev); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_carrier_ok(const struct net_device *dev) { return !test_bit(__LINK_STATE_NOCARRIER, &dev->state); } unsigned long dev_trans_start(struct net_device *dev); void __netdev_watchdog_up(struct net_device *dev); void netif_carrier_on(struct net_device *dev); void netif_carrier_off(struct net_device *dev); # 3782 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_dormant_on(struct net_device *dev) { if (!test_and_set_bit(__LINK_STATE_DORMANT, &dev->state)) linkwatch_fire_event(dev); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_dormant_off(struct net_device *dev) { if (test_and_clear_bit(__LINK_STATE_DORMANT, &dev->state)) linkwatch_fire_event(dev); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_dormant(const struct net_device *dev) { return test_bit(__LINK_STATE_DORMANT, &dev->state); } # 3818 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_oper_up(const struct net_device *dev) { return (dev->operstate == IF_OPER_UP || dev->operstate == IF_OPER_UNKNOWN ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_device_present(struct net_device *dev) { return test_bit(__LINK_STATE_PRESENT, &dev->state); } void netif_device_detach(struct net_device *dev); void netif_device_attach(struct net_device *dev); enum { NETIF_MSG_DRV = 0x0001, NETIF_MSG_PROBE = 0x0002, NETIF_MSG_LINK = 0x0004, NETIF_MSG_TIMER = 0x0008, NETIF_MSG_IFDOWN = 0x0010, NETIF_MSG_IFUP = 0x0020, NETIF_MSG_RX_ERR = 0x0040, NETIF_MSG_TX_ERR = 0x0080, NETIF_MSG_TX_QUEUED = 0x0100, NETIF_MSG_INTR = 0x0200, NETIF_MSG_TX_DONE = 0x0400, NETIF_MSG_RX_STATUS = 0x0800, NETIF_MSG_PKTDATA = 0x1000, NETIF_MSG_HW = 0x2000, NETIF_MSG_WOL = 0x4000, }; # 3877 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 netif_msg_init(int debug_value, int default_msg_enable_bits) { if (debug_value < 0 || debug_value >= (sizeof(u32) * 8)) return default_msg_enable_bits; if (debug_value == 0) return 0; return (1U << debug_value) - 1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __netif_tx_lock(struct netdev_queue *txq, int cpu) { spin_lock(&txq->_xmit_lock); txq->xmit_lock_owner = cpu; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __netif_tx_acquire(struct netdev_queue *txq) { (void)0; return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __netif_tx_release(struct netdev_queue *txq) { (void)0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __netif_tx_lock_bh(struct netdev_queue *txq) { spin_lock_bh(&txq->_xmit_lock); txq->xmit_lock_owner = ({ __this_cpu_preempt_check("read"); ({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; }); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __netif_tx_trylock(struct netdev_queue *txq) { bool ok = spin_trylock(&txq->_xmit_lock); if (__builtin_expect(!!(ok), 1)) txq->xmit_lock_owner = ({ __this_cpu_preempt_check("read"); ({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; }); }); return ok; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __netif_tx_unlock(struct netdev_queue *txq) { txq->xmit_lock_owner = -1; spin_unlock(&txq->_xmit_lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __netif_tx_unlock_bh(struct netdev_queue *txq) { txq->xmit_lock_owner = -1; spin_unlock_bh(&txq->_xmit_lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void txq_trans_update(struct netdev_queue *txq) { if (txq->xmit_lock_owner != -1) txq->trans_start = jiffies; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_trans_update(struct net_device *dev) { struct netdev_queue *txq = netdev_get_tx_queue(dev, 0); if (txq->trans_start != jiffies) txq->trans_start = jiffies; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_tx_lock(struct net_device *dev) { unsigned int i; int cpu; spin_lock(&dev->tx_global_lock); cpu = ({ __this_cpu_preempt_check("read"); ({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; }); }); for (i = 0; i < dev->num_tx_queues; i++) { struct netdev_queue *txq = netdev_get_tx_queue(dev, i); __netif_tx_lock(txq, cpu); set_bit(__QUEUE_STATE_FROZEN, &txq->state); __netif_tx_unlock(txq); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_tx_lock_bh(struct net_device *dev) { local_bh_disable(); netif_tx_lock(dev); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_tx_unlock(struct net_device *dev) { unsigned int i; for (i = 0; i < dev->num_tx_queues; i++) { struct netdev_queue *txq = netdev_get_tx_queue(dev, i); clear_bit(__QUEUE_STATE_FROZEN, &txq->state); netif_schedule_queue(txq); } spin_unlock(&dev->tx_global_lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_tx_unlock_bh(struct net_device *dev) { netif_tx_unlock(dev); local_bh_enable(); } # 4024 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_tx_disable(struct net_device *dev) { unsigned int i; int cpu; local_bh_disable(); cpu = ({ __this_cpu_preempt_check("read"); ({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; }); }); for (i = 0; i < dev->num_tx_queues; i++) { struct netdev_queue *txq = netdev_get_tx_queue(dev, i); __netif_tx_lock(txq, cpu); netif_tx_stop_queue(txq); __netif_tx_unlock(txq); } local_bh_enable(); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_addr_lock(struct net_device *dev) { spin_lock(&dev->addr_list_lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_addr_lock_nested(struct net_device *dev) { int subclass = 1; if (dev->netdev_ops->ndo_get_lock_subclass) subclass = dev->netdev_ops->ndo_get_lock_subclass(dev); do { _raw_spin_lock_nested(spinlock_check(&dev->addr_list_lock), subclass); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_addr_lock_bh(struct net_device *dev) { spin_lock_bh(&dev->addr_list_lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_addr_unlock(struct net_device *dev) { spin_unlock(&dev->addr_list_lock); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_addr_unlock_bh(struct net_device *dev) { spin_unlock_bh(&dev->addr_list_lock); } # 4080 "../include/linux/netdevice.h" void ether_setup(struct net_device *dev); struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name, unsigned char name_assign_type, void (*setup)(struct net_device *), unsigned int txqs, unsigned int rxqs); int dev_get_valid_name(struct net *net, struct net_device *dev, const char *name); # 4097 "../include/linux/netdevice.h" int register_netdev(struct net_device *dev); void unregister_netdev(struct net_device *dev); int __hw_addr_sync(struct netdev_hw_addr_list *to_list, struct netdev_hw_addr_list *from_list, int addr_len); void __hw_addr_unsync(struct netdev_hw_addr_list *to_list, struct netdev_hw_addr_list *from_list, int addr_len); int __hw_addr_sync_dev(struct netdev_hw_addr_list *list, struct net_device *dev, int (*sync)(struct net_device *, const unsigned char *), int (*unsync)(struct net_device *, const unsigned char *)); int __hw_addr_ref_sync_dev(struct netdev_hw_addr_list *list, struct net_device *dev, int (*sync)(struct net_device *, const unsigned char *, int), int (*unsync)(struct net_device *, const unsigned char *, int)); void __hw_addr_ref_unsync_dev(struct netdev_hw_addr_list *list, struct net_device *dev, int (*unsync)(struct net_device *, const unsigned char *, int)); void __hw_addr_unsync_dev(struct netdev_hw_addr_list *list, struct net_device *dev, int (*unsync)(struct net_device *, const unsigned char *)); void __hw_addr_init(struct netdev_hw_addr_list *list); int dev_addr_add(struct net_device *dev, const unsigned char *addr, unsigned char addr_type); int dev_addr_del(struct net_device *dev, const unsigned char *addr, unsigned char addr_type); void dev_addr_flush(struct net_device *dev); int dev_addr_init(struct net_device *dev); int dev_uc_add(struct net_device *dev, const unsigned char *addr); int dev_uc_add_excl(struct net_device *dev, const unsigned char *addr); int dev_uc_del(struct net_device *dev, const unsigned char *addr); int dev_uc_sync(struct net_device *to, struct net_device *from); int dev_uc_sync_multiple(struct net_device *to, struct net_device *from); void dev_uc_unsync(struct net_device *to, struct net_device *from); void dev_uc_flush(struct net_device *dev); void dev_uc_init(struct net_device *dev); # 4153 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __dev_uc_sync(struct net_device *dev, int (*sync)(struct net_device *, const unsigned char *), int (*unsync)(struct net_device *, const unsigned char *)) { return __hw_addr_sync_dev(&dev->uc, dev, sync, unsync); } # 4169 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __dev_uc_unsync(struct net_device *dev, int (*unsync)(struct net_device *, const unsigned char *)) { __hw_addr_unsync_dev(&dev->uc, dev, unsync); } int dev_mc_add(struct net_device *dev, const unsigned char *addr); int dev_mc_add_global(struct net_device *dev, const unsigned char *addr); int dev_mc_add_excl(struct net_device *dev, const unsigned char *addr); int dev_mc_del(struct net_device *dev, const unsigned char *addr); int dev_mc_del_global(struct net_device *dev, const unsigned char *addr); int dev_mc_sync(struct net_device *to, struct net_device *from); int dev_mc_sync_multiple(struct net_device *to, struct net_device *from); void dev_mc_unsync(struct net_device *to, struct net_device *from); void dev_mc_flush(struct net_device *dev); void dev_mc_init(struct net_device *dev); # 4197 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __dev_mc_sync(struct net_device *dev, int (*sync)(struct net_device *, const unsigned char *), int (*unsync)(struct net_device *, const unsigned char *)) { return __hw_addr_sync_dev(&dev->mc, dev, sync, unsync); } # 4213 "../include/linux/netdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void __dev_mc_unsync(struct net_device *dev, int (*unsync)(struct net_device *, const unsigned char *)) { __hw_addr_unsync_dev(&dev->mc, dev, unsync); } void dev_set_rx_mode(struct net_device *dev); void __dev_set_rx_mode(struct net_device *dev); int dev_set_promiscuity(struct net_device *dev, int inc); int dev_set_allmulti(struct net_device *dev, int inc); void netdev_state_change(struct net_device *dev); void netdev_notify_peers(struct net_device *dev); void netdev_features_change(struct net_device *dev); void dev_load(struct net *net, const char *name); struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev, struct rtnl_link_stats64 *storage); void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64, const struct net_device_stats *netdev_stats); extern int netdev_max_backlog; extern int netdev_tstamp_prequeue; extern int weight_p; extern int dev_weight_rx_bias; extern int dev_weight_tx_bias; extern int dev_rx_weight; extern int dev_tx_weight; bool netdev_has_upper_dev(struct net_device *dev, struct net_device *upper_dev); struct net_device *netdev_upper_get_next_dev_rcu(struct net_device *dev, struct list_head **iter); struct net_device *netdev_all_upper_get_next_dev_rcu(struct net_device *dev, struct list_head **iter); # 4256 "../include/linux/netdevice.h" int netdev_walk_all_upper_dev_rcu(struct net_device *dev, int (*fn)(struct net_device *upper_dev, void *data), void *data); bool netdev_has_upper_dev_all_rcu(struct net_device *dev, struct net_device *upper_dev); bool netdev_has_any_upper_dev(struct net_device *dev); void *netdev_lower_get_next_private(struct net_device *dev, struct list_head **iter); void *netdev_lower_get_next_private_rcu(struct net_device *dev, struct list_head **iter); # 4283 "../include/linux/netdevice.h" void *netdev_lower_get_next(struct net_device *dev, struct list_head **iter); struct net_device *netdev_all_lower_get_next(struct net_device *dev, struct list_head **iter); struct net_device *netdev_all_lower_get_next_rcu(struct net_device *dev, struct list_head **iter); int netdev_walk_all_lower_dev(struct net_device *dev, int (*fn)(struct net_device *lower_dev, void *data), void *data); int netdev_walk_all_lower_dev_rcu(struct net_device *dev, int (*fn)(struct net_device *lower_dev, void *data), void *data); void *netdev_adjacent_get_private(struct list_head *adj_list); void *netdev_lower_get_first_private_rcu(struct net_device *dev); struct net_device *netdev_master_upper_dev_get(struct net_device *dev); struct net_device *netdev_master_upper_dev_get_rcu(struct net_device *dev); int netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, struct netlink_ext_ack *extack); int netdev_master_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, void *upper_priv, void *upper_info, struct netlink_ext_ack *extack); void netdev_upper_dev_unlink(struct net_device *dev, struct net_device *upper_dev); void netdev_adjacent_rename_links(struct net_device *dev, char *oldname); void *netdev_lower_dev_get_private(struct net_device *dev, struct net_device *lower_dev); void netdev_lower_state_changed(struct net_device *lower_dev, void *lower_state_info); extern u8 netdev_rss_key[52] __attribute__((__section__(".data..read_mostly"))); void netdev_rss_key_fill(void *buffer, size_t len); int dev_get_nest_level(struct net_device *dev); int skb_checksum_help(struct sk_buff *skb); int skb_crc32c_csum_help(struct sk_buff *skb); int skb_csum_hwoffload_help(struct sk_buff *skb, const netdev_features_t features); struct sk_buff *__skb_gso_segment(struct sk_buff *skb, netdev_features_t features, bool tx_path); struct sk_buff *skb_mac_gso_segment(struct sk_buff *skb, netdev_features_t features); struct netdev_bonding_info { ifslave slave; ifbond master; }; struct netdev_notifier_bonding_info { struct netdev_notifier_info info; struct netdev_bonding_info bonding_info; }; void netdev_bonding_info_change(struct net_device *dev, struct netdev_bonding_info *bonding_info); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff *skb_gso_segment(struct sk_buff *skb, netdev_features_t features) { return __skb_gso_segment(skb, features, true); } __be16 skb_network_protocol(struct sk_buff *skb, int *depth); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool can_checksum_protocol(netdev_features_t features, __be16 protocol) { if (protocol == (( __be16)(__builtin_constant_p((__u16)((0x8906))) ? ((__u16)( (((__u16)((0x8906)) & (__u16)0x00ffU) << 8) | (((__u16)((0x8906)) & (__u16)0xff00U) >> 8))) : __fswab16((0x8906))))) return !!(features & ((netdev_features_t)1 << (NETIF_F_FCOE_CRC_BIT))); if (features & ((netdev_features_t)1 << (NETIF_F_HW_CSUM_BIT))) { return true; } switch (protocol) { case (( __be16)(__builtin_constant_p((__u16)((0x0800))) ? ((__u16)( (((__u16)((0x0800)) & (__u16)0x00ffU) << 8) | (((__u16)((0x0800)) & (__u16)0xff00U) >> 8))) : __fswab16((0x0800)))): return !!(features & ((netdev_features_t)1 << (NETIF_F_IP_CSUM_BIT))); case (( __be16)(__builtin_constant_p((__u16)((0x86DD))) ? ((__u16)( (((__u16)((0x86DD)) & (__u16)0x00ffU) << 8) | (((__u16)((0x86DD)) & (__u16)0xff00U) >> 8))) : __fswab16((0x86DD)))): return !!(features & ((netdev_features_t)1 << (NETIF_F_IPV6_CSUM_BIT))); default: return false; } } void netdev_rx_csum_fault(struct net_device *dev, struct sk_buff *skb); void net_enable_timestamp(void); void net_disable_timestamp(void); int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) dev_proc_init(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) netdev_tx_t __netdev_start_xmit(const struct net_device_ops *ops, struct sk_buff *skb, struct net_device *dev, bool more) { ({ __this_cpu_preempt_check("write"); do { do { const void *__vpp_verify = (typeof((&(softnet_data.xmit.more)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(softnet_data.xmit.more)) { case 1: do { typedef typeof((softnet_data.xmit.more)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (more); (void)pto_tmp__; } switch (sizeof((softnet_data.xmit.more))) { case 1: asm ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "qi" ((pto_T__)(more))); break; case 2: asm ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "ri" ((pto_T__)(more))); break; case 4: asm ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "ri" ((pto_T__)(more))); break; case 8: asm ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "re" ((pto_T__)(more))); break; default: __bad_percpu_size(); } } while (0);break; case 2: do { typedef typeof((softnet_data.xmit.more)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (more); (void)pto_tmp__; } switch (sizeof((softnet_data.xmit.more))) { case 1: asm ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "qi" ((pto_T__)(more))); break; case 2: asm ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "ri" ((pto_T__)(more))); break; case 4: asm ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "ri" ((pto_T__)(more))); break; case 8: asm ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "re" ((pto_T__)(more))); break; default: __bad_percpu_size(); } } while (0);break; case 4: do { typedef typeof((softnet_data.xmit.more)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (more); (void)pto_tmp__; } switch (sizeof((softnet_data.xmit.more))) { case 1: asm ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "qi" ((pto_T__)(more))); break; case 2: asm ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "ri" ((pto_T__)(more))); break; case 4: asm ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "ri" ((pto_T__)(more))); break; case 8: asm ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "re" ((pto_T__)(more))); break; default: __bad_percpu_size(); } } while (0);break; case 8: do { typedef typeof((softnet_data.xmit.more)) pto_T__; if (0) { pto_T__ pto_tmp__; pto_tmp__ = (more); (void)pto_tmp__; } switch (sizeof((softnet_data.xmit.more))) { case 1: asm ("mov" "b %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "qi" ((pto_T__)(more))); break; case 2: asm ("mov" "w %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "ri" ((pto_T__)(more))); break; case 4: asm ("mov" "l %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "ri" ((pto_T__)(more))); break; case 8: asm ("mov" "q %1,""%%""gs"":" "%" "0" : "+m" ((softnet_data.xmit.more)) : "re" ((pto_T__)(more))); break; default: __bad_percpu_size(); } } while (0);break; default: __bad_size_call_parameter();break; } } while (0); }); return ops->ndo_start_xmit(skb, dev); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netdev_xmit_more(void) { return ({ __this_cpu_preempt_check("read"); ({ typeof(softnet_data.xmit.more) pscr_ret__; do { const void *__vpp_verify = (typeof((&(softnet_data.xmit.more)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(softnet_data.xmit.more)) { case 1: pscr_ret__ = ({ typeof(softnet_data.xmit.more) pfo_ret__; switch (sizeof(softnet_data.xmit.more)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(softnet_data.xmit.more) pfo_ret__; switch (sizeof(softnet_data.xmit.more)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(softnet_data.xmit.more) pfo_ret__; switch (sizeof(softnet_data.xmit.more)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(softnet_data.xmit.more) pfo_ret__; switch (sizeof(softnet_data.xmit.more)) { case 1: asm ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; case 2: asm ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; case 4: asm ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; case 8: asm ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (softnet_data.xmit.more)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; }); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) netdev_tx_t netdev_start_xmit(struct sk_buff *skb, struct net_device *dev, struct netdev_queue *txq, bool more) { const struct net_device_ops *ops = dev->netdev_ops; netdev_tx_t rc; rc = __netdev_start_xmit(ops, skb, dev, more); if (rc == NETDEV_TX_OK) txq_trans_update(txq); return rc; } int netdev_class_create_file_ns(const struct class_attribute *class_attr, const void *ns); void netdev_class_remove_file_ns(const struct class_attribute *class_attr, const void *ns); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int netdev_class_create_file(const struct class_attribute *class_attr) { return netdev_class_create_file_ns(class_attr, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netdev_class_remove_file(const struct class_attribute *class_attr) { netdev_class_remove_file_ns(class_attr, ((void *)0)); } extern const struct kobj_ns_type_operations net_ns_type_operations; const char *netdev_drivername(const struct net_device *dev); void linkwatch_run_queue(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) netdev_features_t netdev_intersect_features(netdev_features_t f1, netdev_features_t f2) { if ((f1 ^ f2) & ((netdev_features_t)1 << (NETIF_F_HW_CSUM_BIT))) { if (f1 & ((netdev_features_t)1 << (NETIF_F_HW_CSUM_BIT))) f1 |= (((netdev_features_t)1 << (NETIF_F_IP_CSUM_BIT))|((netdev_features_t)1 << (NETIF_F_IPV6_CSUM_BIT))); else f2 |= (((netdev_features_t)1 << (NETIF_F_IP_CSUM_BIT))|((netdev_features_t)1 << (NETIF_F_IPV6_CSUM_BIT))); } return f1 & f2; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) netdev_features_t netdev_get_wanted_features( struct net_device *dev) { return (dev->features & ~dev->hw_features) | dev->wanted_features; } netdev_features_t netdev_increment_features(netdev_features_t all, netdev_features_t one, netdev_features_t mask); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) netdev_features_t netdev_add_tso_features(netdev_features_t features, netdev_features_t mask) { return netdev_increment_features(features, (((netdev_features_t)1 << (NETIF_F_TSO_BIT)) | ((netdev_features_t)1 << (NETIF_F_TSO6_BIT)) | ((netdev_features_t)1 << (NETIF_F_TSO_ECN_BIT)) | ((netdev_features_t)1 << (NETIF_F_TSO_MANGLEID_BIT))), mask); } int __netdev_update_features(struct net_device *dev); void netdev_update_features(struct net_device *dev); void netdev_change_features(struct net_device *dev); void netif_stacked_transfer_operstate(const struct net_device *rootdev, struct net_device *dev); netdev_features_t passthru_features_check(struct sk_buff *skb, struct net_device *dev, netdev_features_t features); netdev_features_t netif_skb_features(struct sk_buff *skb); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool net_gso_ok(netdev_features_t features, int gso_type) { netdev_features_t feature = (netdev_features_t)gso_type << NETIF_F_GSO_SHIFT; do { extern void __compiletime_assert_4496(void) ; if (!(!(SKB_GSO_TCPV4 != (((netdev_features_t)1 << (NETIF_F_TSO_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4496(); } while (0); do { extern void __compiletime_assert_4497(void) ; if (!(!(SKB_GSO_DODGY != (((netdev_features_t)1 << (NETIF_F_GSO_ROBUST_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4497(); } while (0); do { extern void __compiletime_assert_4498(void) ; if (!(!(SKB_GSO_TCP_ECN != (((netdev_features_t)1 << (NETIF_F_TSO_ECN_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4498(); } while (0); do { extern void __compiletime_assert_4499(void) ; if (!(!(SKB_GSO_TCP_FIXEDID != (((netdev_features_t)1 << (NETIF_F_TSO_MANGLEID_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4499(); } while (0); do { extern void __compiletime_assert_4500(void) ; if (!(!(SKB_GSO_TCPV6 != (((netdev_features_t)1 << (NETIF_F_TSO6_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4500(); } while (0); do { extern void __compiletime_assert_4501(void) ; if (!(!(SKB_GSO_FCOE != (((netdev_features_t)1 << (NETIF_F_FSO_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4501(); } while (0); do { extern void __compiletime_assert_4502(void) ; if (!(!(SKB_GSO_GRE != (((netdev_features_t)1 << (NETIF_F_GSO_GRE_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4502(); } while (0); do { extern void __compiletime_assert_4503(void) ; if (!(!(SKB_GSO_GRE_CSUM != (((netdev_features_t)1 << (NETIF_F_GSO_GRE_CSUM_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4503(); } while (0); do { extern void __compiletime_assert_4504(void) ; if (!(!(SKB_GSO_IPXIP4 != (((netdev_features_t)1 << (NETIF_F_GSO_IPXIP4_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4504(); } while (0); do { extern void __compiletime_assert_4505(void) ; if (!(!(SKB_GSO_IPXIP6 != (((netdev_features_t)1 << (NETIF_F_GSO_IPXIP6_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4505(); } while (0); do { extern void __compiletime_assert_4506(void) ; if (!(!(SKB_GSO_UDP_TUNNEL != (((netdev_features_t)1 << (NETIF_F_GSO_UDP_TUNNEL_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4506(); } while (0); do { extern void __compiletime_assert_4507(void) ; if (!(!(SKB_GSO_UDP_TUNNEL_CSUM != (((netdev_features_t)1 << (NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4507(); } while (0); do { extern void __compiletime_assert_4508(void) ; if (!(!(SKB_GSO_PARTIAL != (((netdev_features_t)1 << (NETIF_F_GSO_PARTIAL_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4508(); } while (0); do { extern void __compiletime_assert_4509(void) ; if (!(!(SKB_GSO_TUNNEL_REMCSUM != (((netdev_features_t)1 << (NETIF_F_GSO_TUNNEL_REMCSUM_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4509(); } while (0); do { extern void __compiletime_assert_4510(void) ; if (!(!(SKB_GSO_SCTP != (((netdev_features_t)1 << (NETIF_F_GSO_SCTP_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4510(); } while (0); do { extern void __compiletime_assert_4511(void) ; if (!(!(SKB_GSO_ESP != (((netdev_features_t)1 << (NETIF_F_GSO_ESP_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4511(); } while (0); do { extern void __compiletime_assert_4512(void) ; if (!(!(SKB_GSO_UDP != (((netdev_features_t)1 << (NETIF_F_GSO_UDP_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4512(); } while (0); do { extern void __compiletime_assert_4513(void) ; if (!(!(SKB_GSO_UDP_L4 != (((netdev_features_t)1 << (NETIF_F_GSO_UDP_L4_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_4513(); } while (0); return (features & feature) == feature; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool skb_gso_ok(struct sk_buff *skb, netdev_features_t features) { return net_gso_ok(features, ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type) && (!skb_has_frag_list(skb) || (features & ((netdev_features_t)1 << (NETIF_F_FRAGLIST_BIT)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_needs_gso(struct sk_buff *skb, netdev_features_t features) { return skb_is_gso(skb) && (!skb_gso_ok(skb, features) || __builtin_expect(!!((skb->ip_summed != 3) && (skb->ip_summed != 1)), 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_set_gso_max_size(struct net_device *dev, unsigned int size) { dev->gso_max_size = size; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void skb_gso_error_unwind(struct sk_buff *skb, __be16 protocol, int pulled_hlen, u16 mac_offset, int mac_len) { skb->protocol = protocol; skb->encapsulation = 1; skb_push(skb, pulled_hlen); skb_reset_transport_header(skb); skb->mac_header = mac_offset; skb->network_header = skb->mac_header + mac_len; skb->mac_len = mac_len; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_macsec(const struct net_device *dev) { return dev->priv_flags & IFF_MACSEC; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_macvlan(const struct net_device *dev) { return dev->priv_flags & IFF_MACVLAN; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_macvlan_port(const struct net_device *dev) { return dev->priv_flags & IFF_MACVLAN_PORT; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_bond_master(const struct net_device *dev) { return dev->flags & IFF_MASTER && dev->priv_flags & IFF_BONDING; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_bond_slave(const struct net_device *dev) { return dev->flags & IFF_SLAVE && dev->priv_flags & IFF_BONDING; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_supports_nofcs(struct net_device *dev) { return dev->priv_flags & IFF_SUPP_NOFCS; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_has_l3_rx_handler(const struct net_device *dev) { return dev->priv_flags & IFF_L3MDEV_RX_HANDLER; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_l3_master(const struct net_device *dev) { return dev->priv_flags & IFF_L3MDEV_MASTER; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_l3_slave(const struct net_device *dev) { return dev->priv_flags & IFF_L3MDEV_SLAVE; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_bridge_master(const struct net_device *dev) { return dev->priv_flags & IFF_EBRIDGE; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_bridge_port(const struct net_device *dev) { return dev->priv_flags & IFF_BRIDGE_PORT; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_ovs_master(const struct net_device *dev) { return dev->priv_flags & IFF_OPENVSWITCH; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_ovs_port(const struct net_device *dev) { return dev->priv_flags & IFF_OVS_DATAPATH; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_team_master(const struct net_device *dev) { return dev->priv_flags & IFF_TEAM; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_team_port(const struct net_device *dev) { return dev->priv_flags & IFF_TEAM_PORT; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_lag_master(const struct net_device *dev) { return netif_is_bond_master(dev) || netif_is_team_master(dev); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_lag_port(const struct net_device *dev) { return netif_is_bond_slave(dev) || netif_is_team_port(dev); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_rxfh_configured(const struct net_device *dev) { return dev->priv_flags & IFF_RXFH_CONFIGURED; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_failover(const struct net_device *dev) { return dev->priv_flags & IFF_FAILOVER; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_is_failover_slave(const struct net_device *dev) { return dev->priv_flags & IFF_FAILOVER_SLAVE; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void netif_keep_dst(struct net_device *dev) { dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE | IFF_XMIT_DST_RELEASE_PERM); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netif_reduces_vlan_mtu(struct net_device *dev) { return dev->priv_flags & IFF_MACSEC; } extern struct pernet_operations loopback_net_ops; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *netdev_name(const struct net_device *dev) { if (!dev->name[0] || strchr(dev->name, '%')) return "(unnamed net_device)"; return dev->name; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool netdev_unregistering(const struct net_device *dev) { return dev->reg_state == NETREG_UNREGISTERING; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *netdev_reg_state(const struct net_device *dev) { switch (dev->reg_state) { case NETREG_UNINITIALIZED: return " (uninitialized)"; case NETREG_REGISTERED: return ""; case NETREG_UNREGISTERING: return " (unregistering)"; case NETREG_UNREGISTERED: return " (unregistered)"; case NETREG_RELEASED: return " (released)"; case NETREG_DUMMY: return " (dummy)"; } ({ static bool __attribute__((__section__(".data.once"))) __warned; int __ret_warn_once = !!(1); if (__builtin_expect(!!(__ret_warn_once && !__warned), 0)) { __warned = true; ({ int __ret_warn_on = !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __warn_printk("%s: unknown reg_state %d\n", dev->name, dev->reg_state); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/linux/netdevice.h"), "i" (4693), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (424)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } __builtin_expect(!!(__ret_warn_once), 0); }); return " (unknown)"; } __attribute__((__format__(printf, 3, 4))) __attribute__((__cold__)) void netdev_printk(const char *level, const struct net_device *dev, const char *format, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void netdev_emerg(const struct net_device *dev, const char *format, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void netdev_alert(const struct net_device *dev, const char *format, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void netdev_crit(const struct net_device *dev, const char *format, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void netdev_err(const struct net_device *dev, const char *format, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void netdev_warn(const struct net_device *dev, const char *format, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void netdev_notice(const struct net_device *dev, const char *format, ...); __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__)) void netdev_info(const struct net_device *dev, const char *format, ...); # 4873 "../include/linux/netdevice.h" extern struct net_device *blackhole_netdev; # 67 "../drivers/net/wireless/intel/iwlwifi/iwl-config.h" 2 # 1 "../include/linux/ieee80211.h" 1 # 20 "../include/linux/ieee80211.h" # 1 "../include/linux/etherdevice.h" 1 # 23 "../include/linux/etherdevice.h" # 1 "../arch/x86/include/asm/unaligned.h" 1 # 1 "../include/linux/unaligned/access_ok.h" 1 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u16 get_unaligned_le16(const void *p) { return __le16_to_cpup((__le16 *)p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u32 get_unaligned_le32(const void *p) { return __le32_to_cpup((__le32 *)p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u64 get_unaligned_le64(const void *p) { return __le64_to_cpup((__le64 *)p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u16 get_unaligned_be16(const void *p) { return __be16_to_cpup((__be16 *)p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u32 get_unaligned_be32(const void *p) { return __be32_to_cpup((__be32 *)p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u64 get_unaligned_be64(const void *p) { return __be64_to_cpup((__be64 *)p); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void put_unaligned_le16(u16 val, void *p) { *((__le16 *)p) = (( __le16)(__u16)(val)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void put_unaligned_le32(u32 val, void *p) { *((__le32 *)p) = (( __le32)(__u32)(val)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void put_unaligned_le64(u64 val, void *p) { *((__le64 *)p) = (( __le64)(__u64)(val)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void put_unaligned_be16(u16 val, void *p) { *((__be16 *)p) = (( __be16)(__builtin_constant_p((__u16)((val))) ? ((__u16)( (((__u16)((val)) & (__u16)0x00ffU) << 8) | (((__u16)((val)) & (__u16)0xff00U) >> 8))) : __fswab16((val)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void put_unaligned_be32(u32 val, void *p) { *((__be32 *)p) = (( __be32)(__builtin_constant_p((__u32)((val))) ? ((__u32)( (((__u32)((val)) & (__u32)0x000000ffUL) << 24) | (((__u32)((val)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((val)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((val)) & (__u32)0xff000000UL) >> 24))) : __fswab32((val)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void put_unaligned_be64(u64 val, void *p) { *((__be64 *)p) = (( __be64)(__builtin_constant_p((__u64)((val))) ? ((__u64)( (((__u64)((val)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((val)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((val)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((val)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((val)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((val)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((val)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((val)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((val)))); } # 10 "../arch/x86/include/asm/unaligned.h" 2 # 1 "../include/linux/unaligned/generic.h" 1 extern void __bad_unaligned_access_size(void); # 11 "../arch/x86/include/asm/unaligned.h" 2 # 24 "../include/linux/etherdevice.h" 2 struct device; int eth_platform_get_mac_address(struct device *dev, u8 *mac_addr); unsigned char *arch_get_platform_mac_address(void); int nvmem_get_mac_address(struct device *dev, void *addrbuf); u32 eth_get_headlen(const struct net_device *dev, void *data, unsigned int len); __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev); extern const struct header_ops eth_header_ops; int eth_header(struct sk_buff *skb, struct net_device *dev, unsigned short type, const void *daddr, const void *saddr, unsigned len); int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr); int eth_header_cache(const struct neighbour *neigh, struct hh_cache *hh, __be16 type); void eth_header_cache_update(struct hh_cache *hh, const struct net_device *dev, const unsigned char *haddr); __be16 eth_header_parse_protocol(const struct sk_buff *skb); int eth_prepare_mac_addr_change(struct net_device *dev, void *p); void eth_commit_mac_addr_change(struct net_device *dev, void *p); int eth_mac_addr(struct net_device *dev, void *p); int eth_change_mtu(struct net_device *dev, int new_mtu); int eth_validate_addr(struct net_device *dev); struct net_device *alloc_etherdev_mqs(int sizeof_priv, unsigned int txqs, unsigned int rxqs); struct net_device *devm_alloc_etherdev_mqs(struct device *dev, int sizeof_priv, unsigned int txqs, unsigned int rxqs); struct sk_buff *eth_gro_receive(struct list_head *head, struct sk_buff *skb); int eth_gro_complete(struct sk_buff *skb, int nhoff); static const u8 eth_reserved_addr_base[6] __attribute__((__aligned__(2))) = { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 }; # 76 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_link_local_ether_addr(const u8 *addr) { __be16 *a = (__be16 *)addr; static const __be16 *b = (const __be16 *)eth_reserved_addr_base; static const __be16 m = (( __be16)(__builtin_constant_p((__u16)((0xfff0))) ? ((__u16)( (((__u16)((0xfff0)) & (__u16)0x00ffU) << 8) | (((__u16)((0xfff0)) & (__u16)0xff00U) >> 8))) : __fswab16((0xfff0)))); return (((*(const u32 *)addr) ^ (*(const u32 *)b)) | ( int)((a[2] ^ b[2]) & m)) == 0; } # 98 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_zero_ether_addr(const u8 *addr) { return ((*(const u32 *)addr) | (*(const u16 *)(addr + 4))) == 0; } # 116 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_multicast_ether_addr(const u8 *addr) { u32 a = *(const u32 *)addr; return 0x01 & a; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_multicast_ether_addr_64bits(const u8 addr[6+2]) { return 0x01 & (*(const u64 *)addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_local_ether_addr(const u8 *addr) { return 0x02 & addr[0]; } # 162 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_broadcast_ether_addr(const u8 *addr) { return (*(const u16 *)(addr + 0) & *(const u16 *)(addr + 2) & *(const u16 *)(addr + 4)) == 0xffff; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_unicast_ether_addr(const u8 *addr) { return !is_multicast_ether_addr(addr); } # 191 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_valid_ether_addr(const u8 *addr) { return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr); } # 206 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool eth_proto_is_802_3(__be16 proto) { proto &= (( __be16)(__builtin_constant_p((__u16)((0xFF00))) ? ((__u16)( (((__u16)((0xFF00)) & (__u16)0x00ffU) << 8) | (((__u16)((0xFF00)) & (__u16)0xff00U) >> 8))) : __fswab16((0xFF00)))); return ( u16)proto >= ( u16)(( __be16)(__builtin_constant_p((__u16)((0x0600))) ? ((__u16)( (((__u16)((0x0600)) & (__u16)0x00ffU) << 8) | (((__u16)((0x0600)) & (__u16)0xff00U) >> 8))) : __fswab16((0x0600)))); } # 223 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void eth_random_addr(u8 *addr) { get_random_bytes(addr, 6); addr[0] &= 0xfe; addr[0] |= 0x02; } # 238 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void eth_broadcast_addr(u8 *addr) { __memset(addr, 0xff, 6); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void eth_zero_addr(u8 *addr) { __memset(addr, 0x00, 6); } # 263 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void eth_hw_addr_random(struct net_device *dev) { dev->addr_assign_type = 1; eth_random_addr(dev->dev_addr); } # 276 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void ether_addr_copy(u8 *dst, const u8 *src) { *(u32 *)dst = *(const u32 *)src; *(u16 *)(dst + 4) = *(const u16 *)(src + 4); # 289 "../include/linux/etherdevice.h" } # 299 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void eth_hw_addr_inherit(struct net_device *dst, struct net_device *src) { dst->addr_assign_type = src->addr_assign_type; ether_addr_copy(dst->dev_addr, src->dev_addr); } # 315 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ether_addr_equal(const u8 *addr1, const u8 *addr2) { u32 fold = ((*(const u32 *)addr1) ^ (*(const u32 *)addr2)) | ((*(const u16 *)(addr1 + 4)) ^ (*(const u16 *)(addr2 + 4))); return fold == 0; } # 344 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ether_addr_equal_64bits(const u8 addr1[6+2], const u8 addr2[6+2]) { u64 fold = (*(const u64 *)addr1) ^ (*(const u64 *)addr2); return (fold << 16) == 0; } # 369 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ether_addr_equal_unaligned(const u8 *addr1, const u8 *addr2) { return ether_addr_equal(addr1, addr2); } # 388 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ether_addr_equal_masked(const u8 *addr1, const u8 *addr2, const u8 *mask) { int i; for (i = 0; i < 6; i++) { if ((addr1[i] ^ addr2[i]) & mask[i]) return false; } return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u64 ether_addr_to_u64(const u8 *addr) { u64 u = 0; int i; for (i = 0; i < 6; i++) u = u << 8 | addr[i]; return u; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void u64_to_ether_addr(u64 u, u8 *addr) { int i; for (i = 6 - 1; i >= 0; i--) { addr[i] = u & 0xff; u = u >> 8; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void eth_addr_dec(u8 *addr) { u64 u = ether_addr_to_u64(addr); u--; u64_to_ether_addr(u, addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void eth_addr_inc(u8 *addr) { u64 u = ether_addr_to_u64(addr); u++; u64_to_ether_addr(u, addr); } # 469 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_etherdev_addr(const struct net_device *dev, const u8 addr[6 + 2]) { struct netdev_hw_addr *ha; bool res = false; rcu_read_lock(); for (ha = ({ void *__mptr = (void *)(({ union { typeof((&dev->dev_addrs.list)->next) __val; char __c[1]; } __u; if (1) __read_once_size(&((&dev->dev_addrs.list)->next), __u.__c, sizeof((&dev->dev_addrs.list)->next)); else __read_once_size_nocheck(&((&dev->dev_addrs.list)->next), __u.__c, sizeof((&dev->dev_addrs.list)->next)); do { } while (0); __u.__val; })); do { extern void __compiletime_assert_476(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(({ union { typeof((&dev->dev_addrs.list)->next) __val; char __c[1]; } __u; if (1) __read_once_size(&((&dev->dev_addrs.list)->next), __u.__c, sizeof((&dev->dev_addrs.list)->next)); else __read_once_size_nocheck(&((&dev->dev_addrs.list)->next), __u.__c, sizeof((&dev->dev_addrs.list)->next)); do { } while (0); __u.__val; }))), typeof(((typeof(*ha) *)0)->list)) && !__builtin_types_compatible_p(typeof(*(({ union { typeof((&dev->dev_addrs.list)->next) __val; char __c[1]; } __u; if (1) __read_once_size(&((&dev->dev_addrs.list)->next), __u.__c, sizeof((&dev->dev_addrs.list)->next)); else __read_once_size_nocheck(&((&dev->dev_addrs.list)->next), __u.__c, sizeof((&dev->dev_addrs.list)->next)); do { } while (0); __u.__val; }))), typeof(void))))) __compiletime_assert_476(); } while (0); ((typeof(*ha) *)(__mptr - __builtin_offsetof(typeof(*ha), list))); }); &ha->list != (&dev->dev_addrs.list); ha = ({ void *__mptr = (void *)(({ union { typeof(ha->list.next) __val; char __c[1]; } __u; if (1) __read_once_size(&(ha->list.next), __u.__c, sizeof(ha->list.next)); else __read_once_size_nocheck(&(ha->list.next), __u.__c, sizeof(ha->list.next)); do { } while (0); __u.__val; })); do { extern void __compiletime_assert_476(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(({ union { typeof(ha->list.next) __val; char __c[1]; } __u; if (1) __read_once_size(&(ha->list.next), __u.__c, sizeof(ha->list.next)); else __read_once_size_nocheck(&(ha->list.next), __u.__c, sizeof(ha->list.next)); do { } while (0); __u.__val; }))), typeof(((typeof(*ha) *)0)->list)) && !__builtin_types_compatible_p(typeof(*(({ union { typeof(ha->list.next) __val; char __c[1]; } __u; if (1) __read_once_size(&(ha->list.next), __u.__c, sizeof(ha->list.next)); else __read_once_size_nocheck(&(ha->list.next), __u.__c, sizeof(ha->list.next)); do { } while (0); __u.__val; }))), typeof(void))))) __compiletime_assert_476(); } while (0); ((typeof(*ha) *)(__mptr - __builtin_offsetof(typeof(*ha), list))); })) { res = ether_addr_equal_64bits(addr, ha->addr); if (res) break; } rcu_read_unlock(); return res; } # 498 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long compare_ether_header(const void *a, const void *b) { unsigned long fold; # 511 "../include/linux/etherdevice.h" fold = *(unsigned long *)a ^ *(unsigned long *)b; fold |= *(unsigned long *)(a + 6) ^ *(unsigned long *)(b + 6); return fold; } # 530 "../include/linux/etherdevice.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int eth_skb_pad(struct sk_buff *skb) { return skb_put_padto(skb, 60); } # 21 "../include/linux/ieee80211.h" 2 # 124 "../include/linux/ieee80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_sn_less(u16 sn1, u16 sn2) { return ((sn1 - sn2) & ((0xFFF0) >> 4)) > ((((0xFFF0) >> 4) + 1) >> 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 ieee80211_sn_add(u16 sn1, u16 sn2) { return (sn1 + sn2) & ((0xFFF0) >> 4); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 ieee80211_sn_inc(u16 sn) { return ieee80211_sn_add(sn, 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 ieee80211_sn_sub(u16 sn1, u16 sn2) { return (sn1 - sn2) & ((0xFFF0) >> 4); } # 233 "../include/linux/ieee80211.h" struct ieee80211_hdr { __le16 frame_control; __le16 duration_id; u8 addr1[6]; u8 addr2[6]; u8 addr3[6]; __le16 seq_ctrl; u8 addr4[6]; } __attribute__((__packed__)) __attribute__((__aligned__(2))); struct ieee80211_hdr_3addr { __le16 frame_control; __le16 duration_id; u8 addr1[6]; u8 addr2[6]; u8 addr3[6]; __le16 seq_ctrl; } __attribute__((__packed__)) __attribute__((__aligned__(2))); struct ieee80211_qos_hdr { __le16 frame_control; __le16 duration_id; u8 addr1[6]; u8 addr2[6]; u8 addr3[6]; __le16 seq_ctrl; __le16 qos_ctrl; } __attribute__((__packed__)) __attribute__((__aligned__(2))); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_has_tods(__le16 fc) { return (fc & (( __le16)(__u16)(0x0100))) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_has_fromds(__le16 fc) { return (fc & (( __le16)(__u16)(0x0200))) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_has_a4(__le16 fc) { __le16 tmp = (( __le16)(__u16)(0x0100 | 0x0200)); return (fc & tmp) == tmp; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_has_morefrags(__le16 fc) { return (fc & (( __le16)(__u16)(0x0400))) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_has_retry(__le16 fc) { return (fc & (( __le16)(__u16)(0x0800))) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_has_pm(__le16 fc) { return (fc & (( __le16)(__u16)(0x1000))) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_has_moredata(__le16 fc) { return (fc & (( __le16)(__u16)(0x2000))) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_has_protected(__le16 fc) { return (fc & (( __le16)(__u16)(0x4000))) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_has_order(__le16 fc) { return (fc & (( __le16)(__u16)(0x8000))) != 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_mgmt(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c))) == (( __le16)(__u16)(0x0000)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_ctl(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c))) == (( __le16)(__u16)(0x0004)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_data(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c))) == (( __le16)(__u16)(0x0008)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_data_qos(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x0080))) == (( __le16)(__u16)(0x0008 | 0x0080)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_data_present(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x40))) == (( __le16)(__u16)(0x0008)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_assoc_req(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0000 | 0x0000)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_assoc_resp(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0000 | 0x0010)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_reassoc_req(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0000 | 0x0020)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_reassoc_resp(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0000 | 0x0030)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_probe_req(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0000 | 0x0040)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_probe_resp(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0000 | 0x0050)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_beacon(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0000 | 0x0080)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_atim(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0000 | 0x0090)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_disassoc(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0000 | 0x00A0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_auth(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0000 | 0x00B0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_deauth(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0000 | 0x00C0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_action(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0000 | 0x00D0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_back_req(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0004 | 0x0080)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_back(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0004 | 0x0090)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_pspoll(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0004 | 0x00A0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_rts(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0004 | 0x00B0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_cts(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0004 | 0x00C0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_ack(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0004 | 0x00D0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_cfend(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0004 | 0x00E0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_cfendack(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0004 | 0x00F0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_nullfunc(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0008 | 0x0040)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_qos_nullfunc(__le16 fc) { return (fc & (( __le16)(__u16)(0x000c | 0x00f0))) == (( __le16)(__u16)(0x0008 | 0x00C0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_bufferable_mmpdu(__le16 fc) { return ieee80211_is_mgmt(fc) && (ieee80211_is_action(fc) || ieee80211_is_disassoc(fc) || ieee80211_is_deauth(fc)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_first_frag(__le16 seq_ctrl) { return (seq_ctrl & (( __le16)(__u16)(0x000F))) == 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_frag(struct ieee80211_hdr *hdr) { return ieee80211_has_morefrags(hdr->frame_control) || hdr->seq_ctrl & (( __le16)(__u16)(0x000F)); } struct ieee80211s_hdr { u8 flags; u8 ttl; __le32 seqnum; u8 eaddr1[6]; u8 eaddr2[6]; } __attribute__((__packed__)) __attribute__((__aligned__(2))); # 674 "../include/linux/ieee80211.h" enum ieee80211_preq_flags { IEEE80211_PREQ_PROACTIVE_PREP_FLAG = 1<<2, }; enum ieee80211_preq_target_flags { IEEE80211_PREQ_TO_FLAG = 1<<0, IEEE80211_PREQ_USN_FLAG = 1<<2, }; struct ieee80211_quiet_ie { u8 count; u8 period; __le16 duration; __le16 offset; } __attribute__((__packed__)); struct ieee80211_msrment_ie { u8 token; u8 mode; u8 type; u8 request[0]; } __attribute__((__packed__)); struct ieee80211_channel_sw_ie { u8 mode; u8 new_ch_num; u8 count; } __attribute__((__packed__)); struct ieee80211_ext_chansw_ie { u8 mode; u8 new_operating_class; u8 new_ch_num; u8 count; } __attribute__((__packed__)); struct ieee80211_sec_chan_offs_ie { u8 sec_chan_offs; } __attribute__((__packed__)); struct ieee80211_mesh_chansw_params_ie { u8 mesh_ttl; u8 mesh_flags; __le16 mesh_reason; __le16 mesh_pre_value; } __attribute__((__packed__)); struct ieee80211_wide_bw_chansw_ie { u8 new_channel_width; u8 new_center_freq_seg0, new_center_freq_seg1; } __attribute__((__packed__)); struct ieee80211_tim_ie { u8 dtim_count; u8 dtim_period; u8 bitmap_ctrl; u8 virtual_map[1]; } __attribute__((__packed__)); struct ieee80211_meshconf_ie { u8 meshconf_psel; u8 meshconf_pmetric; u8 meshconf_congest; u8 meshconf_synch; u8 meshconf_auth; u8 meshconf_form; u8 meshconf_cap; } __attribute__((__packed__)); # 805 "../include/linux/ieee80211.h" enum mesh_config_capab_flags { IEEE80211_MESHCONF_CAPAB_ACCEPT_PLINKS = 0x01, IEEE80211_MESHCONF_CAPAB_FORWARDING = 0x08, IEEE80211_MESHCONF_CAPAB_TBTT_ADJUSTING = 0x20, IEEE80211_MESHCONF_CAPAB_POWER_SAVE_LEVEL = 0x40, }; # 827 "../include/linux/ieee80211.h" struct ieee80211_rann_ie { u8 rann_flags; u8 rann_hopcount; u8 rann_ttl; u8 rann_addr[6]; __le32 rann_seq; __le32 rann_interval; __le32 rann_metric; } __attribute__((__packed__)); enum ieee80211_rann_flags { RANN_FLAG_IS_GATE = 1 << 0, }; enum ieee80211_ht_chanwidth_values { IEEE80211_HT_CHANWIDTH_20MHZ = 0, IEEE80211_HT_CHANWIDTH_ANY = 1, }; # 859 "../include/linux/ieee80211.h" enum ieee80211_vht_opmode_bits { IEEE80211_OPMODE_NOTIF_CHANWIDTH_MASK = 3, IEEE80211_OPMODE_NOTIF_CHANWIDTH_20MHZ = 0, IEEE80211_OPMODE_NOTIF_CHANWIDTH_40MHZ = 1, IEEE80211_OPMODE_NOTIF_CHANWIDTH_80MHZ = 2, IEEE80211_OPMODE_NOTIF_CHANWIDTH_160MHZ = 3, IEEE80211_OPMODE_NOTIF_RX_NSS_MASK = 0x70, IEEE80211_OPMODE_NOTIF_RX_NSS_SHIFT = 4, IEEE80211_OPMODE_NOTIF_RX_NSS_TYPE_BF = 0x80, }; # 879 "../include/linux/ieee80211.h" struct ieee80211_tpc_report_ie { u8 tx_power; u8 link_margin; } __attribute__((__packed__)); struct ieee80211_mgmt { __le16 frame_control; __le16 duration; u8 da[6]; u8 sa[6]; u8 bssid[6]; __le16 seq_ctrl; union { struct { __le16 auth_alg; __le16 auth_transaction; __le16 status_code; u8 variable[0]; } __attribute__((__packed__)) auth; struct { __le16 reason_code; } __attribute__((__packed__)) deauth; struct { __le16 capab_info; __le16 listen_interval; u8 variable[0]; } __attribute__((__packed__)) assoc_req; struct { __le16 capab_info; __le16 status_code; __le16 aid; u8 variable[0]; } __attribute__((__packed__)) assoc_resp, reassoc_resp; struct { __le16 capab_info; __le16 listen_interval; u8 current_ap[6]; u8 variable[0]; } __attribute__((__packed__)) reassoc_req; struct { __le16 reason_code; } __attribute__((__packed__)) disassoc; struct { __le64 timestamp; __le16 beacon_int; __le16 capab_info; u8 variable[0]; } __attribute__((__packed__)) beacon; struct { u8 variable[0]; } __attribute__((__packed__)) probe_req; struct { __le64 timestamp; __le16 beacon_int; __le16 capab_info; u8 variable[0]; } __attribute__((__packed__)) probe_resp; struct { u8 category; union { struct { u8 action_code; u8 dialog_token; u8 status_code; u8 variable[0]; } __attribute__((__packed__)) wme_action; struct{ u8 action_code; u8 variable[0]; } __attribute__((__packed__)) chan_switch; struct{ u8 action_code; struct ieee80211_ext_chansw_ie data; u8 variable[0]; } __attribute__((__packed__)) ext_chan_switch; struct{ u8 action_code; u8 dialog_token; u8 element_id; u8 length; struct ieee80211_msrment_ie msr_elem; } __attribute__((__packed__)) measurement; struct{ u8 action_code; u8 dialog_token; __le16 capab; __le16 timeout; __le16 start_seq_num; } __attribute__((__packed__)) addba_req; struct{ u8 action_code; u8 dialog_token; __le16 status; __le16 capab; __le16 timeout; } __attribute__((__packed__)) addba_resp; struct{ u8 action_code; __le16 params; __le16 reason_code; } __attribute__((__packed__)) delba; struct { u8 action_code; u8 variable[0]; } __attribute__((__packed__)) self_prot; struct{ u8 action_code; u8 variable[0]; } __attribute__((__packed__)) mesh_action; struct { u8 action; u8 trans_id[2]; } __attribute__((__packed__)) sa_query; struct { u8 action; u8 smps_control; } __attribute__((__packed__)) ht_smps; struct { u8 action_code; u8 chanwidth; } __attribute__((__packed__)) ht_notify_cw; struct { u8 action_code; u8 dialog_token; __le16 capability; u8 variable[0]; } __attribute__((__packed__)) tdls_discover_resp; struct { u8 action_code; u8 operating_mode; } __attribute__((__packed__)) vht_opmode_notif; struct { u8 action_code; u8 membership[8]; u8 position[16]; } __attribute__((__packed__)) vht_group_notif; struct { u8 action_code; u8 dialog_token; u8 tpc_elem_id; u8 tpc_elem_length; struct ieee80211_tpc_report_ie tpc; } __attribute__((__packed__)) tpc_report; struct { u8 action_code; u8 dialog_token; u8 follow_up; u8 tod[6]; u8 toa[6]; __le16 tod_error; __le16 toa_error; u8 variable[0]; } __attribute__((__packed__)) ftm; } u; } __attribute__((__packed__)) action; } u; } __attribute__((__packed__)) __attribute__((__aligned__(2))); # 1055 "../include/linux/ieee80211.h" struct ieee80211_mmie { u8 element_id; u8 length; __le16 key_id; u8 sequence_number[6]; u8 mic[8]; } __attribute__((__packed__)); struct ieee80211_mmie_16 { u8 element_id; u8 length; __le16 key_id; u8 sequence_number[6]; u8 mic[16]; } __attribute__((__packed__)); struct ieee80211_vendor_ie { u8 element_id; u8 len; u8 oui[3]; u8 oui_type; } __attribute__((__packed__)); struct ieee80211_wmm_ac_param { u8 aci_aifsn; u8 cw; __le16 txop_limit; } __attribute__((__packed__)); struct ieee80211_wmm_param_ie { u8 element_id; u8 len; u8 oui[3]; u8 oui_type; u8 oui_subtype; u8 version; u8 qos_info; u8 reserved; struct ieee80211_wmm_ac_param ac[4]; } __attribute__((__packed__)); struct ieee80211_rts { __le16 frame_control; __le16 duration; u8 ra[6]; u8 ta[6]; } __attribute__((__packed__)) __attribute__((__aligned__(2))); struct ieee80211_cts { __le16 frame_control; __le16 duration; u8 ra[6]; } __attribute__((__packed__)) __attribute__((__aligned__(2))); struct ieee80211_pspoll { __le16 frame_control; __le16 aid; u8 bssid[6]; u8 ta[6]; } __attribute__((__packed__)) __attribute__((__aligned__(2))); struct ieee80211_ch_switch_timing { __le16 switch_time; __le16 switch_timeout; } __attribute__((__packed__)); struct ieee80211_tdls_lnkie { u8 ie_type; u8 ie_len; u8 bssid[6]; u8 init_sta[6]; u8 resp_sta[6]; } __attribute__((__packed__)); struct ieee80211_tdls_data { u8 da[6]; u8 sa[6]; __be16 ether_type; u8 payload_type; u8 category; u8 action_code; union { struct { u8 dialog_token; __le16 capability; u8 variable[0]; } __attribute__((__packed__)) setup_req; struct { __le16 status_code; u8 dialog_token; __le16 capability; u8 variable[0]; } __attribute__((__packed__)) setup_resp; struct { __le16 status_code; u8 dialog_token; u8 variable[0]; } __attribute__((__packed__)) setup_cfm; struct { __le16 reason_code; u8 variable[0]; } __attribute__((__packed__)) teardown; struct { u8 dialog_token; u8 variable[0]; } __attribute__((__packed__)) discover_req; struct { u8 target_channel; u8 oper_class; u8 variable[0]; } __attribute__((__packed__)) chan_switch_req; struct { __le16 status_code; u8 variable[0]; } __attribute__((__packed__)) chan_switch_resp; } u; } __attribute__((__packed__)); enum ieee80211_p2p_attr_id { IEEE80211_P2P_ATTR_STATUS = 0, IEEE80211_P2P_ATTR_MINOR_REASON, IEEE80211_P2P_ATTR_CAPABILITY, IEEE80211_P2P_ATTR_DEVICE_ID, IEEE80211_P2P_ATTR_GO_INTENT, IEEE80211_P2P_ATTR_GO_CONFIG_TIMEOUT, IEEE80211_P2P_ATTR_LISTEN_CHANNEL, IEEE80211_P2P_ATTR_GROUP_BSSID, IEEE80211_P2P_ATTR_EXT_LISTEN_TIMING, IEEE80211_P2P_ATTR_INTENDED_IFACE_ADDR, IEEE80211_P2P_ATTR_MANAGABILITY, IEEE80211_P2P_ATTR_CHANNEL_LIST, IEEE80211_P2P_ATTR_ABSENCE_NOTICE, IEEE80211_P2P_ATTR_DEVICE_INFO, IEEE80211_P2P_ATTR_GROUP_INFO, IEEE80211_P2P_ATTR_GROUP_ID, IEEE80211_P2P_ATTR_INTERFACE, IEEE80211_P2P_ATTR_OPER_CHANNEL, IEEE80211_P2P_ATTR_INVITE_FLAGS, IEEE80211_P2P_ATTR_VENDOR_SPECIFIC = 221, IEEE80211_P2P_ATTR_MAX }; struct ieee80211_p2p_noa_desc { u8 count; __le32 duration; __le32 interval; __le32 start_time; } __attribute__((__packed__)); struct ieee80211_p2p_noa_attr { u8 index; u8 oppps_ctwindow; struct ieee80211_p2p_noa_desc desc[4]; } __attribute__((__packed__)); # 1239 "../include/linux/ieee80211.h" struct ieee80211_bar { __le16 frame_control; __le16 duration; __u8 ra[6]; __u8 ta[6]; __le16 control; __le16 start_seq_num; } __attribute__((__packed__)); # 1266 "../include/linux/ieee80211.h" struct ieee80211_mcs_info { u8 rx_mask[10]; __le16 rx_highest; u8 tx_params; u8 reserved[3]; } __attribute__((__packed__)); # 1300 "../include/linux/ieee80211.h" struct ieee80211_ht_cap { __le16 cap_info; u8 ampdu_params_info; struct ieee80211_mcs_info mcs; __le16 extended_ht_cap_info; __le32 tx_BF_cap_info; u8 antenna_selection_info; } __attribute__((__packed__)); # 1348 "../include/linux/ieee80211.h" enum ieee80211_max_ampdu_length_exp { IEEE80211_HT_MAX_AMPDU_8K = 0, IEEE80211_HT_MAX_AMPDU_16K = 1, IEEE80211_HT_MAX_AMPDU_32K = 2, IEEE80211_HT_MAX_AMPDU_64K = 3 }; enum ieee80211_vht_max_ampdu_length_exp { IEEE80211_VHT_MAX_AMPDU_8K = 0, IEEE80211_VHT_MAX_AMPDU_16K = 1, IEEE80211_VHT_MAX_AMPDU_32K = 2, IEEE80211_VHT_MAX_AMPDU_64K = 3, IEEE80211_VHT_MAX_AMPDU_128K = 4, IEEE80211_VHT_MAX_AMPDU_256K = 5, IEEE80211_VHT_MAX_AMPDU_512K = 6, IEEE80211_VHT_MAX_AMPDU_1024K = 7 }; enum ieee80211_min_mpdu_spacing { IEEE80211_HT_MPDU_DENSITY_NONE = 0, IEEE80211_HT_MPDU_DENSITY_0_25 = 1, IEEE80211_HT_MPDU_DENSITY_0_5 = 2, IEEE80211_HT_MPDU_DENSITY_1 = 3, IEEE80211_HT_MPDU_DENSITY_2 = 4, IEEE80211_HT_MPDU_DENSITY_4 = 5, IEEE80211_HT_MPDU_DENSITY_8 = 6, IEEE80211_HT_MPDU_DENSITY_16 = 7 }; struct ieee80211_ht_operation { u8 primary_chan; u8 ht_param; __le16 operation_mode; __le16 stbc_param; u8 basic_set[16]; } __attribute__((__packed__)); # 1473 "../include/linux/ieee80211.h" struct ieee80211_vht_mcs_info { __le16 rx_mcs_map; __le16 rx_highest; __le16 tx_mcs_map; __le16 tx_highest; } __attribute__((__packed__)); # 1501 "../include/linux/ieee80211.h" enum ieee80211_vht_mcs_support { IEEE80211_VHT_MCS_SUPPORT_0_7 = 0, IEEE80211_VHT_MCS_SUPPORT_0_8 = 1, IEEE80211_VHT_MCS_SUPPORT_0_9 = 2, IEEE80211_VHT_MCS_NOT_SUPPORTED = 3, }; # 1516 "../include/linux/ieee80211.h" struct ieee80211_vht_cap { __le32 vht_cap_info; struct ieee80211_vht_mcs_info supp_mcs; } __attribute__((__packed__)); # 1529 "../include/linux/ieee80211.h" enum ieee80211_vht_chanwidth { IEEE80211_VHT_CHANWIDTH_USE_HT = 0, IEEE80211_VHT_CHANWIDTH_80MHZ = 1, IEEE80211_VHT_CHANWIDTH_160MHZ = 2, IEEE80211_VHT_CHANWIDTH_80P80MHZ = 3, }; # 1546 "../include/linux/ieee80211.h" struct ieee80211_vht_operation { u8 chan_width; u8 center_freq_seg0_idx; u8 center_freq_seg1_idx; __le16 basic_mcs_set; } __attribute__((__packed__)); struct ieee80211_he_cap_elem { u8 mac_cap_info[6]; u8 phy_cap_info[11]; } __attribute__((__packed__)); # 1580 "../include/linux/ieee80211.h" enum ieee80211_he_mcs_support { IEEE80211_HE_MCS_SUPPORT_0_7 = 0, IEEE80211_HE_MCS_SUPPORT_0_9 = 1, IEEE80211_HE_MCS_SUPPORT_0_11 = 2, IEEE80211_HE_MCS_NOT_SUPPORTED = 3, }; # 1606 "../include/linux/ieee80211.h" struct ieee80211_he_mcs_nss_supp { __le16 rx_mcs_80; __le16 tx_mcs_80; __le16 rx_mcs_160; __le16 tx_mcs_160; __le16 rx_mcs_80p80; __le16 tx_mcs_80p80; } __attribute__((__packed__)); struct ieee80211_he_operation { __le32 he_oper_params; __le16 he_mcs_nss_set; u8 optional[0]; } __attribute__((__packed__)); struct ieee80211_he_mu_edca_param_ac_rec { u8 aifsn; u8 ecw_min_max; u8 mu_edca_timer; } __attribute__((__packed__)); struct ieee80211_mu_edca_param_set { u8 mu_qos_info; struct ieee80211_he_mu_edca_param_ac_rec ac_be; struct ieee80211_he_mu_edca_param_ac_rec ac_bk; struct ieee80211_he_mu_edca_param_ac_rec ac_vi; struct ieee80211_he_mu_edca_param_ac_rec ac_vo; } __attribute__((__packed__)); # 1709 "../include/linux/ieee80211.h" int ieee80211_get_vht_max_nss(struct ieee80211_vht_cap *cap, enum ieee80211_vht_chanwidth bw, int mcs, bool ext_nss_bw_capable); # 1955 "../include/linux/ieee80211.h" enum ieee80211_he_highest_mcs_supported_subfield_enc { HIGHEST_MCS_SUPPORTED_MCS7 = 0, HIGHEST_MCS_SUPPORTED_MCS8, HIGHEST_MCS_SUPPORTED_MCS9, HIGHEST_MCS_SUPPORTED_MCS10, HIGHEST_MCS_SUPPORTED_MCS11, }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 ieee80211_he_mcs_nss_size(const struct ieee80211_he_cap_elem *he_cap) { u8 count = 4; if (he_cap->phy_cap_info[0] & 0x08) count += 4; if (he_cap->phy_cap_info[0] & 0x10) count += 4; return count; } # 1994 "../include/linux/ieee80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 ieee80211_he_ppe_size(u8 ppe_thres_hdr, const u8 *phy_cap_info) { u8 n; if ((phy_cap_info[6] & 0x80) == 0) return 0; n = (__builtin_constant_p(ppe_thres_hdr & 0x78) ? ((unsigned int) ((!!((ppe_thres_hdr & 0x78) & (1ULL << 0))) + (!!((ppe_thres_hdr & 0x78) & (1ULL << 1))) + (!!((ppe_thres_hdr & 0x78) & (1ULL << 2))) + (!!((ppe_thres_hdr & 0x78) & (1ULL << 3))) + (!!((ppe_thres_hdr & 0x78) & (1ULL << 4))) + (!!((ppe_thres_hdr & 0x78) & (1ULL << 5))) + (!!((ppe_thres_hdr & 0x78) & (1ULL << 6))) + (!!((ppe_thres_hdr & 0x78) & (1ULL << 7))))) : __arch_hweight8(ppe_thres_hdr & 0x78)); n *= (1 + ((ppe_thres_hdr & (7)) >> (0))); n = (n * (3) * 2) + 7; n = (((n) + (8) - 1) / (8)); return n; } # 2040 "../include/linux/ieee80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 ieee80211_he_oper_size(const u8 *he_oper_ie) { struct ieee80211_he_operation *he_oper = (void *)he_oper_ie; u8 oper_len = sizeof(struct ieee80211_he_operation); u32 he_oper_params; if (!he_oper_ie) return 0; he_oper_params = (( __u32)(__le32)(he_oper->he_oper_params)); if (he_oper_params & 0x00004000) oper_len += 3; if (he_oper_params & 0x00008000) oper_len++; if (he_oper_params & 0x00020000) oper_len += 4; oper_len++; return oper_len; } # 2138 "../include/linux/ieee80211.h" enum { WLAN_ERP_PREAMBLE_SHORT = 0, WLAN_ERP_PREAMBLE_LONG = 1, }; enum { IEEE80211_BANDID_TV_WS = 0, IEEE80211_BANDID_SUB1 = 1, IEEE80211_BANDID_2G = 2, IEEE80211_BANDID_3G = 3, IEEE80211_BANDID_5G = 4, IEEE80211_BANDID_60G = 5, }; enum ieee80211_statuscode { WLAN_STATUS_SUCCESS = 0, WLAN_STATUS_UNSPECIFIED_FAILURE = 1, WLAN_STATUS_CAPS_UNSUPPORTED = 10, WLAN_STATUS_REASSOC_NO_ASSOC = 11, WLAN_STATUS_ASSOC_DENIED_UNSPEC = 12, WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG = 13, WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION = 14, WLAN_STATUS_CHALLENGE_FAIL = 15, WLAN_STATUS_AUTH_TIMEOUT = 16, WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA = 17, WLAN_STATUS_ASSOC_DENIED_RATES = 18, WLAN_STATUS_ASSOC_DENIED_NOSHORTPREAMBLE = 19, WLAN_STATUS_ASSOC_DENIED_NOPBCC = 20, WLAN_STATUS_ASSOC_DENIED_NOAGILITY = 21, WLAN_STATUS_ASSOC_DENIED_NOSPECTRUM = 22, WLAN_STATUS_ASSOC_REJECTED_BAD_POWER = 23, WLAN_STATUS_ASSOC_REJECTED_BAD_SUPP_CHAN = 24, WLAN_STATUS_ASSOC_DENIED_NOSHORTTIME = 25, WLAN_STATUS_ASSOC_DENIED_NODSSSOFDM = 26, WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY = 30, WLAN_STATUS_ROBUST_MGMT_FRAME_POLICY_VIOLATION = 31, WLAN_STATUS_INVALID_IE = 40, WLAN_STATUS_INVALID_GROUP_CIPHER = 41, WLAN_STATUS_INVALID_PAIRWISE_CIPHER = 42, WLAN_STATUS_INVALID_AKMP = 43, WLAN_STATUS_UNSUPP_RSN_VERSION = 44, WLAN_STATUS_INVALID_RSN_IE_CAP = 45, WLAN_STATUS_CIPHER_SUITE_REJECTED = 46, WLAN_STATUS_UNSPECIFIED_QOS = 32, WLAN_STATUS_ASSOC_DENIED_NOBANDWIDTH = 33, WLAN_STATUS_ASSOC_DENIED_LOWACK = 34, WLAN_STATUS_ASSOC_DENIED_UNSUPP_QOS = 35, WLAN_STATUS_REQUEST_DECLINED = 37, WLAN_STATUS_INVALID_QOS_PARAM = 38, WLAN_STATUS_CHANGE_TSPEC = 39, WLAN_STATUS_WAIT_TS_DELAY = 47, WLAN_STATUS_NO_DIRECT_LINK = 48, WLAN_STATUS_STA_NOT_PRESENT = 49, WLAN_STATUS_STA_NOT_QSTA = 50, WLAN_STATUS_ANTI_CLOG_REQUIRED = 76, WLAN_STATUS_FCG_NOT_SUPP = 78, WLAN_STATUS_STA_NO_TBTT = 78, WLAN_STATUS_REJECTED_WITH_SUGGESTED_CHANGES = 39, WLAN_STATUS_REJECTED_FOR_DELAY_PERIOD = 47, WLAN_STATUS_REJECT_WITH_SCHEDULE = 83, WLAN_STATUS_PENDING_ADMITTING_FST_SESSION = 86, WLAN_STATUS_PERFORMING_FST_NOW = 87, WLAN_STATUS_PENDING_GAP_IN_BA_WINDOW = 88, WLAN_STATUS_REJECT_U_PID_SETTING = 89, WLAN_STATUS_REJECT_DSE_BAND = 96, WLAN_STATUS_DENIED_WITH_SUGGESTED_BAND_AND_CHANNEL = 99, WLAN_STATUS_DENIED_DUE_TO_SPECTRUM_MANAGEMENT = 103, WLAN_STATUS_FILS_AUTHENTICATION_FAILURE = 108, WLAN_STATUS_UNKNOWN_AUTHENTICATION_SERVER = 109, }; enum ieee80211_reasoncode { WLAN_REASON_UNSPECIFIED = 1, WLAN_REASON_PREV_AUTH_NOT_VALID = 2, WLAN_REASON_DEAUTH_LEAVING = 3, WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY = 4, WLAN_REASON_DISASSOC_AP_BUSY = 5, WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA = 6, WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA = 7, WLAN_REASON_DISASSOC_STA_HAS_LEFT = 8, WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH = 9, WLAN_REASON_DISASSOC_BAD_POWER = 10, WLAN_REASON_DISASSOC_BAD_SUPP_CHAN = 11, WLAN_REASON_INVALID_IE = 13, WLAN_REASON_MIC_FAILURE = 14, WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT = 15, WLAN_REASON_GROUP_KEY_HANDSHAKE_TIMEOUT = 16, WLAN_REASON_IE_DIFFERENT = 17, WLAN_REASON_INVALID_GROUP_CIPHER = 18, WLAN_REASON_INVALID_PAIRWISE_CIPHER = 19, WLAN_REASON_INVALID_AKMP = 20, WLAN_REASON_UNSUPP_RSN_VERSION = 21, WLAN_REASON_INVALID_RSN_IE_CAP = 22, WLAN_REASON_IEEE8021X_FAILED = 23, WLAN_REASON_CIPHER_SUITE_REJECTED = 24, WLAN_REASON_TDLS_TEARDOWN_UNREACHABLE = 25, WLAN_REASON_TDLS_TEARDOWN_UNSPECIFIED = 26, WLAN_REASON_DISASSOC_UNSPECIFIED_QOS = 32, WLAN_REASON_DISASSOC_QAP_NO_BANDWIDTH = 33, WLAN_REASON_DISASSOC_LOW_ACK = 34, WLAN_REASON_DISASSOC_QAP_EXCEED_TXOP = 35, WLAN_REASON_QSTA_LEAVE_QBSS = 36, WLAN_REASON_QSTA_NOT_USE = 37, WLAN_REASON_QSTA_REQUIRE_SETUP = 38, WLAN_REASON_QSTA_TIMEOUT = 39, WLAN_REASON_QSTA_CIPHER_NOT_SUPP = 45, WLAN_REASON_MESH_PEER_CANCELED = 52, WLAN_REASON_MESH_MAX_PEERS = 53, WLAN_REASON_MESH_CONFIG = 54, WLAN_REASON_MESH_CLOSE = 55, WLAN_REASON_MESH_MAX_RETRIES = 56, WLAN_REASON_MESH_CONFIRM_TIMEOUT = 57, WLAN_REASON_MESH_INVALID_GTK = 58, WLAN_REASON_MESH_INCONSISTENT_PARAM = 59, WLAN_REASON_MESH_INVALID_SECURITY = 60, WLAN_REASON_MESH_PATH_ERROR = 61, WLAN_REASON_MESH_PATH_NOFORWARD = 62, WLAN_REASON_MESH_PATH_DEST_UNREACHABLE = 63, WLAN_REASON_MAC_EXISTS_IN_MBSS = 64, WLAN_REASON_MESH_CHAN_REGULATORY = 65, WLAN_REASON_MESH_CHAN = 66, }; enum ieee80211_eid { WLAN_EID_SSID = 0, WLAN_EID_SUPP_RATES = 1, WLAN_EID_FH_PARAMS = 2, WLAN_EID_DS_PARAMS = 3, WLAN_EID_CF_PARAMS = 4, WLAN_EID_TIM = 5, WLAN_EID_IBSS_PARAMS = 6, WLAN_EID_COUNTRY = 7, WLAN_EID_REQUEST = 10, WLAN_EID_QBSS_LOAD = 11, WLAN_EID_EDCA_PARAM_SET = 12, WLAN_EID_TSPEC = 13, WLAN_EID_TCLAS = 14, WLAN_EID_SCHEDULE = 15, WLAN_EID_CHALLENGE = 16, WLAN_EID_PWR_CONSTRAINT = 32, WLAN_EID_PWR_CAPABILITY = 33, WLAN_EID_TPC_REQUEST = 34, WLAN_EID_TPC_REPORT = 35, WLAN_EID_SUPPORTED_CHANNELS = 36, WLAN_EID_CHANNEL_SWITCH = 37, WLAN_EID_MEASURE_REQUEST = 38, WLAN_EID_MEASURE_REPORT = 39, WLAN_EID_QUIET = 40, WLAN_EID_IBSS_DFS = 41, WLAN_EID_ERP_INFO = 42, WLAN_EID_TS_DELAY = 43, WLAN_EID_TCLAS_PROCESSING = 44, WLAN_EID_HT_CAPABILITY = 45, WLAN_EID_QOS_CAPA = 46, WLAN_EID_RSN = 48, WLAN_EID_802_15_COEX = 49, WLAN_EID_EXT_SUPP_RATES = 50, WLAN_EID_AP_CHAN_REPORT = 51, WLAN_EID_NEIGHBOR_REPORT = 52, WLAN_EID_RCPI = 53, WLAN_EID_MOBILITY_DOMAIN = 54, WLAN_EID_FAST_BSS_TRANSITION = 55, WLAN_EID_TIMEOUT_INTERVAL = 56, WLAN_EID_RIC_DATA = 57, WLAN_EID_DSE_REGISTERED_LOCATION = 58, WLAN_EID_SUPPORTED_REGULATORY_CLASSES = 59, WLAN_EID_EXT_CHANSWITCH_ANN = 60, WLAN_EID_HT_OPERATION = 61, WLAN_EID_SECONDARY_CHANNEL_OFFSET = 62, WLAN_EID_BSS_AVG_ACCESS_DELAY = 63, WLAN_EID_ANTENNA_INFO = 64, WLAN_EID_RSNI = 65, WLAN_EID_MEASUREMENT_PILOT_TX_INFO = 66, WLAN_EID_BSS_AVAILABLE_CAPACITY = 67, WLAN_EID_BSS_AC_ACCESS_DELAY = 68, WLAN_EID_TIME_ADVERTISEMENT = 69, WLAN_EID_RRM_ENABLED_CAPABILITIES = 70, WLAN_EID_MULTIPLE_BSSID = 71, WLAN_EID_BSS_COEX_2040 = 72, WLAN_EID_BSS_INTOLERANT_CHL_REPORT = 73, WLAN_EID_OVERLAP_BSS_SCAN_PARAM = 74, WLAN_EID_RIC_DESCRIPTOR = 75, WLAN_EID_MMIE = 76, WLAN_EID_ASSOC_COMEBACK_TIME = 77, WLAN_EID_EVENT_REQUEST = 78, WLAN_EID_EVENT_REPORT = 79, WLAN_EID_DIAGNOSTIC_REQUEST = 80, WLAN_EID_DIAGNOSTIC_REPORT = 81, WLAN_EID_LOCATION_PARAMS = 82, WLAN_EID_NON_TX_BSSID_CAP = 83, WLAN_EID_SSID_LIST = 84, WLAN_EID_MULTI_BSSID_IDX = 85, WLAN_EID_FMS_DESCRIPTOR = 86, WLAN_EID_FMS_REQUEST = 87, WLAN_EID_FMS_RESPONSE = 88, WLAN_EID_QOS_TRAFFIC_CAPA = 89, WLAN_EID_BSS_MAX_IDLE_PERIOD = 90, WLAN_EID_TSF_REQUEST = 91, WLAN_EID_TSF_RESPOSNE = 92, WLAN_EID_WNM_SLEEP_MODE = 93, WLAN_EID_TIM_BCAST_REQ = 94, WLAN_EID_TIM_BCAST_RESP = 95, WLAN_EID_COLL_IF_REPORT = 96, WLAN_EID_CHANNEL_USAGE = 97, WLAN_EID_TIME_ZONE = 98, WLAN_EID_DMS_REQUEST = 99, WLAN_EID_DMS_RESPONSE = 100, WLAN_EID_LINK_ID = 101, WLAN_EID_WAKEUP_SCHEDUL = 102, WLAN_EID_CHAN_SWITCH_TIMING = 104, WLAN_EID_PTI_CONTROL = 105, WLAN_EID_PU_BUFFER_STATUS = 106, WLAN_EID_INTERWORKING = 107, WLAN_EID_ADVERTISEMENT_PROTOCOL = 108, WLAN_EID_EXPEDITED_BW_REQ = 109, WLAN_EID_QOS_MAP_SET = 110, WLAN_EID_ROAMING_CONSORTIUM = 111, WLAN_EID_EMERGENCY_ALERT = 112, WLAN_EID_MESH_CONFIG = 113, WLAN_EID_MESH_ID = 114, WLAN_EID_LINK_METRIC_REPORT = 115, WLAN_EID_CONGESTION_NOTIFICATION = 116, WLAN_EID_PEER_MGMT = 117, WLAN_EID_CHAN_SWITCH_PARAM = 118, WLAN_EID_MESH_AWAKE_WINDOW = 119, WLAN_EID_BEACON_TIMING = 120, WLAN_EID_MCCAOP_SETUP_REQ = 121, WLAN_EID_MCCAOP_SETUP_RESP = 122, WLAN_EID_MCCAOP_ADVERT = 123, WLAN_EID_MCCAOP_TEARDOWN = 124, WLAN_EID_GANN = 125, WLAN_EID_RANN = 126, WLAN_EID_EXT_CAPABILITY = 127, WLAN_EID_PREQ = 130, WLAN_EID_PREP = 131, WLAN_EID_PERR = 132, WLAN_EID_PXU = 137, WLAN_EID_PXUC = 138, WLAN_EID_AUTH_MESH_PEER_EXCH = 139, WLAN_EID_MIC = 140, WLAN_EID_DESTINATION_URI = 141, WLAN_EID_UAPSD_COEX = 142, WLAN_EID_WAKEUP_SCHEDULE = 143, WLAN_EID_EXT_SCHEDULE = 144, WLAN_EID_STA_AVAILABILITY = 145, WLAN_EID_DMG_TSPEC = 146, WLAN_EID_DMG_AT = 147, WLAN_EID_DMG_CAP = 148, WLAN_EID_CISCO_VENDOR_SPECIFIC = 150, WLAN_EID_DMG_OPERATION = 151, WLAN_EID_DMG_BSS_PARAM_CHANGE = 152, WLAN_EID_DMG_BEAM_REFINEMENT = 153, WLAN_EID_CHANNEL_MEASURE_FEEDBACK = 154, WLAN_EID_AWAKE_WINDOW = 157, WLAN_EID_MULTI_BAND = 158, WLAN_EID_ADDBA_EXT = 159, WLAN_EID_NEXT_PCP_LIST = 160, WLAN_EID_PCP_HANDOVER = 161, WLAN_EID_DMG_LINK_MARGIN = 162, WLAN_EID_SWITCHING_STREAM = 163, WLAN_EID_SESSION_TRANSITION = 164, WLAN_EID_DYN_TONE_PAIRING_REPORT = 165, WLAN_EID_CLUSTER_REPORT = 166, WLAN_EID_RELAY_CAP = 167, WLAN_EID_RELAY_XFER_PARAM_SET = 168, WLAN_EID_BEAM_LINK_MAINT = 169, WLAN_EID_MULTIPLE_MAC_ADDR = 170, WLAN_EID_U_PID = 171, WLAN_EID_DMG_LINK_ADAPT_ACK = 172, WLAN_EID_MCCAOP_ADV_OVERVIEW = 174, WLAN_EID_QUIET_PERIOD_REQ = 175, WLAN_EID_QUIET_PERIOD_RESP = 177, WLAN_EID_EPAC_POLICY = 182, WLAN_EID_CLISTER_TIME_OFF = 183, WLAN_EID_INTER_AC_PRIO = 184, WLAN_EID_SCS_DESCRIPTOR = 185, WLAN_EID_QLOAD_REPORT = 186, WLAN_EID_HCCA_TXOP_UPDATE_COUNT = 187, WLAN_EID_HL_STREAM_ID = 188, WLAN_EID_GCR_GROUP_ADDR = 189, WLAN_EID_ANTENNA_SECTOR_ID_PATTERN = 190, WLAN_EID_VHT_CAPABILITY = 191, WLAN_EID_VHT_OPERATION = 192, WLAN_EID_EXTENDED_BSS_LOAD = 193, WLAN_EID_WIDE_BW_CHANNEL_SWITCH = 194, WLAN_EID_VHT_TX_POWER_ENVELOPE = 195, WLAN_EID_CHANNEL_SWITCH_WRAPPER = 196, WLAN_EID_AID = 197, WLAN_EID_QUIET_CHANNEL = 198, WLAN_EID_OPMODE_NOTIF = 199, WLAN_EID_VENDOR_SPECIFIC = 221, WLAN_EID_QOS_PARAMETER = 222, WLAN_EID_CAG_NUMBER = 237, WLAN_EID_AP_CSN = 239, WLAN_EID_FILS_INDICATION = 240, WLAN_EID_DILS = 241, WLAN_EID_FRAGMENT = 242, WLAN_EID_EXTENSION = 255 }; enum ieee80211_eid_ext { WLAN_EID_EXT_ASSOC_DELAY_INFO = 1, WLAN_EID_EXT_FILS_REQ_PARAMS = 2, WLAN_EID_EXT_FILS_KEY_CONFIRM = 3, WLAN_EID_EXT_FILS_SESSION = 4, WLAN_EID_EXT_FILS_HLP_CONTAINER = 5, WLAN_EID_EXT_FILS_IP_ADDR_ASSIGN = 6, WLAN_EID_EXT_KEY_DELIVERY = 7, WLAN_EID_EXT_FILS_WRAPPED_DATA = 8, WLAN_EID_EXT_FILS_PUBLIC_KEY = 12, WLAN_EID_EXT_FILS_NONCE = 13, WLAN_EID_EXT_FUTURE_CHAN_GUIDANCE = 14, WLAN_EID_EXT_HE_CAPABILITY = 35, WLAN_EID_EXT_HE_OPERATION = 36, WLAN_EID_EXT_UORA = 37, WLAN_EID_EXT_HE_MU_EDCA = 38, WLAN_EID_EXT_MAX_CHANNEL_SWITCH_TIME = 52, WLAN_EID_EXT_MULTIPLE_BSSID_CONFIGURATION = 55, WLAN_EID_EXT_NON_INHERITANCE = 56, }; enum ieee80211_category { WLAN_CATEGORY_SPECTRUM_MGMT = 0, WLAN_CATEGORY_QOS = 1, WLAN_CATEGORY_DLS = 2, WLAN_CATEGORY_BACK = 3, WLAN_CATEGORY_PUBLIC = 4, WLAN_CATEGORY_RADIO_MEASUREMENT = 5, WLAN_CATEGORY_HT = 7, WLAN_CATEGORY_SA_QUERY = 8, WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9, WLAN_CATEGORY_WNM = 10, WLAN_CATEGORY_WNM_UNPROTECTED = 11, WLAN_CATEGORY_TDLS = 12, WLAN_CATEGORY_MESH_ACTION = 13, WLAN_CATEGORY_MULTIHOP_ACTION = 14, WLAN_CATEGORY_SELF_PROTECTED = 15, WLAN_CATEGORY_DMG = 16, WLAN_CATEGORY_WMM = 17, WLAN_CATEGORY_FST = 18, WLAN_CATEGORY_UNPROT_DMG = 20, WLAN_CATEGORY_VHT = 21, WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126, WLAN_CATEGORY_VENDOR_SPECIFIC = 127, }; enum ieee80211_spectrum_mgmt_actioncode { WLAN_ACTION_SPCT_MSR_REQ = 0, WLAN_ACTION_SPCT_MSR_RPRT = 1, WLAN_ACTION_SPCT_TPC_REQ = 2, WLAN_ACTION_SPCT_TPC_RPRT = 3, WLAN_ACTION_SPCT_CHL_SWITCH = 4, }; enum ieee80211_ht_actioncode { WLAN_HT_ACTION_NOTIFY_CHANWIDTH = 0, WLAN_HT_ACTION_SMPS = 1, WLAN_HT_ACTION_PSMP = 2, WLAN_HT_ACTION_PCO_PHASE = 3, WLAN_HT_ACTION_CSI = 4, WLAN_HT_ACTION_NONCOMPRESSED_BF = 5, WLAN_HT_ACTION_COMPRESSED_BF = 6, WLAN_HT_ACTION_ASEL_IDX_FEEDBACK = 7, }; enum ieee80211_vht_actioncode { WLAN_VHT_ACTION_COMPRESSED_BF = 0, WLAN_VHT_ACTION_GROUPID_MGMT = 1, WLAN_VHT_ACTION_OPMODE_NOTIF = 2, }; enum ieee80211_self_protected_actioncode { WLAN_SP_RESERVED = 0, WLAN_SP_MESH_PEERING_OPEN = 1, WLAN_SP_MESH_PEERING_CONFIRM = 2, WLAN_SP_MESH_PEERING_CLOSE = 3, WLAN_SP_MGK_INFORM = 4, WLAN_SP_MGK_ACK = 5, }; enum ieee80211_mesh_actioncode { WLAN_MESH_ACTION_LINK_METRIC_REPORT, WLAN_MESH_ACTION_HWMP_PATH_SELECTION, WLAN_MESH_ACTION_GATE_ANNOUNCEMENT, WLAN_MESH_ACTION_CONGESTION_CONTROL_NOTIFICATION, WLAN_MESH_ACTION_MCCA_SETUP_REQUEST, WLAN_MESH_ACTION_MCCA_SETUP_REPLY, WLAN_MESH_ACTION_MCCA_ADVERTISEMENT_REQUEST, WLAN_MESH_ACTION_MCCA_ADVERTISEMENT, WLAN_MESH_ACTION_MCCA_TEARDOWN, WLAN_MESH_ACTION_TBTT_ADJUSTMENT_REQUEST, WLAN_MESH_ACTION_TBTT_ADJUSTMENT_RESPONSE, }; enum ieee80211_key_len { WLAN_KEY_LEN_WEP40 = 5, WLAN_KEY_LEN_WEP104 = 13, WLAN_KEY_LEN_CCMP = 16, WLAN_KEY_LEN_CCMP_256 = 32, WLAN_KEY_LEN_TKIP = 32, WLAN_KEY_LEN_AES_CMAC = 16, WLAN_KEY_LEN_SMS4 = 32, WLAN_KEY_LEN_GCMP = 16, WLAN_KEY_LEN_GCMP_256 = 32, WLAN_KEY_LEN_BIP_CMAC_256 = 32, WLAN_KEY_LEN_BIP_GMAC_128 = 16, WLAN_KEY_LEN_BIP_GMAC_256 = 32, }; # 2615 "../include/linux/ieee80211.h" enum ieee80211_pub_actioncode { WLAN_PUB_ACTION_20_40_BSS_COEX = 0, WLAN_PUB_ACTION_DSE_ENABLEMENT = 1, WLAN_PUB_ACTION_DSE_DEENABLEMENT = 2, WLAN_PUB_ACTION_DSE_REG_LOC_ANN = 3, WLAN_PUB_ACTION_EXT_CHANSW_ANN = 4, WLAN_PUB_ACTION_DSE_MSMT_REQ = 5, WLAN_PUB_ACTION_DSE_MSMT_RESP = 6, WLAN_PUB_ACTION_MSMT_PILOT = 7, WLAN_PUB_ACTION_DSE_PC = 8, WLAN_PUB_ACTION_VENDOR_SPECIFIC = 9, WLAN_PUB_ACTION_GAS_INITIAL_REQ = 10, WLAN_PUB_ACTION_GAS_INITIAL_RESP = 11, WLAN_PUB_ACTION_GAS_COMEBACK_REQ = 12, WLAN_PUB_ACTION_GAS_COMEBACK_RESP = 13, WLAN_PUB_ACTION_TDLS_DISCOVER_RES = 14, WLAN_PUB_ACTION_LOC_TRACK_NOTI = 15, WLAN_PUB_ACTION_QAB_REQUEST_FRAME = 16, WLAN_PUB_ACTION_QAB_RESPONSE_FRAME = 17, WLAN_PUB_ACTION_QMF_POLICY = 18, WLAN_PUB_ACTION_QMF_POLICY_CHANGE = 19, WLAN_PUB_ACTION_QLOAD_REQUEST = 20, WLAN_PUB_ACTION_QLOAD_REPORT = 21, WLAN_PUB_ACTION_HCCA_TXOP_ADVERT = 22, WLAN_PUB_ACTION_HCCA_TXOP_RESPONSE = 23, WLAN_PUB_ACTION_PUBLIC_KEY = 24, WLAN_PUB_ACTION_CHANNEL_AVAIL_QUERY = 25, WLAN_PUB_ACTION_CHANNEL_SCHEDULE_MGMT = 26, WLAN_PUB_ACTION_CONTACT_VERI_SIGNAL = 27, WLAN_PUB_ACTION_GDD_ENABLEMENT_REQ = 28, WLAN_PUB_ACTION_GDD_ENABLEMENT_RESP = 29, WLAN_PUB_ACTION_NETWORK_CHANNEL_CONTROL = 30, WLAN_PUB_ACTION_WHITE_SPACE_MAP_ANN = 31, WLAN_PUB_ACTION_FTM_REQUEST = 32, WLAN_PUB_ACTION_FTM = 33, WLAN_PUB_ACTION_FILS_DISCOVERY = 34, }; enum ieee80211_tdls_actioncode { WLAN_TDLS_SETUP_REQUEST = 0, WLAN_TDLS_SETUP_RESPONSE = 1, WLAN_TDLS_SETUP_CONFIRM = 2, WLAN_TDLS_TEARDOWN = 3, WLAN_TDLS_PEER_TRAFFIC_INDICATION = 4, WLAN_TDLS_CHANNEL_SWITCH_REQUEST = 5, WLAN_TDLS_CHANNEL_SWITCH_RESPONSE = 6, WLAN_TDLS_PEER_PSM_REQUEST = 7, WLAN_TDLS_PEER_PSM_RESPONSE = 8, WLAN_TDLS_PEER_TRAFFIC_RESPONSE = 9, WLAN_TDLS_DISCOVERY_REQUEST = 10, }; # 2736 "../include/linux/ieee80211.h" enum ieee80211_mesh_sync_method { IEEE80211_SYNC_METHOD_NEIGHBOR_OFFSET = 1, IEEE80211_SYNC_METHOD_VENDOR = 255, }; # 2748 "../include/linux/ieee80211.h" enum ieee80211_mesh_path_protocol { IEEE80211_PATH_PROTOCOL_HWMP = 1, IEEE80211_PATH_PROTOCOL_VENDOR = 255, }; # 2760 "../include/linux/ieee80211.h" enum ieee80211_mesh_path_metric { IEEE80211_PATH_METRIC_AIRTIME = 1, IEEE80211_PATH_METRIC_VENDOR = 255, }; # 2780 "../include/linux/ieee80211.h" enum ieee80211_root_mode_identifier { IEEE80211_ROOTMODE_NO_ROOT = 0, IEEE80211_ROOTMODE_ROOT = 1, IEEE80211_PROACTIVE_PREQ_NO_PREP = 2, IEEE80211_PROACTIVE_PREQ_WITH_PREP = 3, IEEE80211_PROACTIVE_RANN = 4, }; # 2838 "../include/linux/ieee80211.h" struct ieee80211_country_ie_triplet { union { struct { u8 first_channel; u8 num_channels; s8 max_power; } __attribute__((__packed__)) chans; struct { u8 reg_extension_id; u8 reg_class; u8 coverage_class; } __attribute__((__packed__)) ext; }; } __attribute__((__packed__)); enum ieee80211_timeout_interval_type { WLAN_TIMEOUT_REASSOC_DEADLINE = 1 , WLAN_TIMEOUT_KEY_LIFETIME = 2 , WLAN_TIMEOUT_ASSOC_COMEBACK = 3 , }; struct ieee80211_timeout_interval_ie { u8 type; __le32 value; } __attribute__((__packed__)); enum ieee80211_idle_options { WLAN_IDLE_OPTIONS_PROTECTED_KEEP_ALIVE = ((((1UL))) << (0)), }; # 2890 "../include/linux/ieee80211.h" struct ieee80211_bss_max_idle_period_ie { __le16 max_idle_period; u8 idle_options; } __attribute__((__packed__)); enum ieee80211_back_actioncode { WLAN_ACTION_ADDBA_REQ = 0, WLAN_ACTION_ADDBA_RESP = 1, WLAN_ACTION_DELBA = 2, }; enum ieee80211_back_parties { WLAN_BACK_RECIPIENT = 0, WLAN_BACK_INITIATOR = 1, }; enum ieee80211_sa_query_action { WLAN_ACTION_SA_QUERY_REQUEST = 0, WLAN_ACTION_SA_QUERY_RESPONSE = 1, }; # 2923 "../include/linux/ieee80211.h" struct ieee80211_bssid_index { u8 bssid_index; u8 dtim_period; u8 dtim_count; }; # 2938 "../include/linux/ieee80211.h" struct ieee80211_multiple_bssid_configuration { u8 bssid_count; u8 profile_periodicity; }; # 3001 "../include/linux/ieee80211.h" enum ieee80211_tspec_status_code { IEEE80211_TSPEC_STATUS_ADMISS_ACCEPTED = 0, IEEE80211_TSPEC_STATUS_ADDTS_INVAL_PARAMS = 0x1, }; struct ieee80211_tspec_ie { u8 element_id; u8 len; u8 oui[3]; u8 oui_type; u8 oui_subtype; u8 version; __le16 tsinfo; u8 tsinfo_resvd; __le16 nominal_msdu; __le16 max_msdu; __le32 min_service_int; __le32 max_service_int; __le32 inactivity_int; __le32 suspension_int; __le32 service_start_time; __le32 min_data_rate; __le32 mean_data_rate; __le32 peak_data_rate; __le32 max_burst_size; __le32 delay_bound; __le32 min_phy_rate; __le16 sba; __le16 medium_time; } __attribute__((__packed__)); # 3041 "../include/linux/ieee80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 *ieee80211_get_qos_ctl(struct ieee80211_hdr *hdr) { if (ieee80211_has_a4(hdr->frame_control)) return (u8 *)hdr + 30; else return (u8 *)hdr + 24; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 ieee80211_get_tid(struct ieee80211_hdr *hdr) { u8 *qc = ieee80211_get_qos_ctl(hdr); return qc[0] & 0x000f; } # 3070 "../include/linux/ieee80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 *ieee80211_get_SA(struct ieee80211_hdr *hdr) { if (ieee80211_has_a4(hdr->frame_control)) return hdr->addr4; if (ieee80211_has_fromds(hdr->frame_control)) return hdr->addr3; return hdr->addr2; } # 3089 "../include/linux/ieee80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 *ieee80211_get_DA(struct ieee80211_hdr *hdr) { if (ieee80211_has_tods(hdr->frame_control)) return hdr->addr3; else return hdr->addr1; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool _ieee80211_is_robust_mgmt_frame(struct ieee80211_hdr *hdr) { if (ieee80211_is_disassoc(hdr->frame_control) || ieee80211_is_deauth(hdr->frame_control)) return true; if (ieee80211_is_action(hdr->frame_control)) { u8 *category; # 3117 "../include/linux/ieee80211.h" if (ieee80211_has_protected(hdr->frame_control)) return true; category = ((u8 *) hdr) + 24; return *category != WLAN_CATEGORY_PUBLIC && *category != WLAN_CATEGORY_HT && *category != WLAN_CATEGORY_WNM_UNPROTECTED && *category != WLAN_CATEGORY_SELF_PROTECTED && *category != WLAN_CATEGORY_UNPROT_DMG && *category != WLAN_CATEGORY_VHT && *category != WLAN_CATEGORY_VENDOR_SPECIFIC; } return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_robust_mgmt_frame(struct sk_buff *skb) { if (skb->len < __builtin_offsetof(struct ieee80211_mgmt, u.action.u)) return false; return _ieee80211_is_robust_mgmt_frame((void *)skb->data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_public_action(struct ieee80211_hdr *hdr, size_t len) { struct ieee80211_mgmt *mgmt = (void *)hdr; if (len < __builtin_offsetof(struct ieee80211_mgmt, u.action.u)) return false; if (!ieee80211_is_action(hdr->frame_control)) return false; return mgmt->u.action.category == WLAN_CATEGORY_PUBLIC; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool _ieee80211_is_group_privacy_action(struct ieee80211_hdr *hdr) { struct ieee80211_mgmt *mgmt = (void *)hdr; if (!ieee80211_is_action(hdr->frame_control) || !is_multicast_ether_addr(hdr->addr1)) return false; return mgmt->u.action.category == WLAN_CATEGORY_MESH_ACTION || mgmt->u.action.category == WLAN_CATEGORY_MULTIHOP_ACTION; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_is_group_privacy_action(struct sk_buff *skb) { if (skb->len < __builtin_offsetof(struct ieee80211_mgmt, u.action.u)) return false; return _ieee80211_is_group_privacy_action((void *)skb->data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long ieee80211_tu_to_usec(unsigned long tu) { return 1024 * tu; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_check_tim(const struct ieee80211_tim_ie *tim, u8 tim_len, u16 aid) { u8 mask; u8 index, indexn1, indexn2; if (__builtin_expect(!!(!tim || tim_len < sizeof(*tim)), 0)) return false; aid &= 0x3fff; index = aid / 8; mask = 1 << (aid & 7); indexn1 = tim->bitmap_ctrl & 0xfe; indexn2 = tim_len + indexn1 - 4; if (index < indexn1 || index > indexn2) return false; index -= indexn1; return !!(tim->virtual_map[index] & mask); } # 3236 "../include/linux/ieee80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int ieee80211_get_tdls_action(struct sk_buff *skb, u32 hdr_size) { if (!skb_is_nonlinear(skb) && skb->len > (skb_network_offset(skb) + 2)) { const u8 *tdls_data = skb_network_header(skb) - 2; if (get_unaligned_be16(tdls_data) == 0x890D && tdls_data[2] == 0x2 && tdls_data[3] == WLAN_CATEGORY_TDLS) return tdls_data[4]; } return -1; } # 3264 "../include/linux/ieee80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool ieee80211_action_contains_tpc(struct sk_buff *skb) { struct ieee80211_mgmt *mgmt = (void *)skb->data; if (!ieee80211_is_action(mgmt->frame_control)) return false; if (skb->len < __builtin_offsetof(struct ieee80211_mgmt, u.action.u) + sizeof(mgmt->u.action.u.tpc_report)) return false; # 3286 "../include/linux/ieee80211.h" if (mgmt->u.action.category != WLAN_CATEGORY_SPECTRUM_MGMT && mgmt->u.action.category != WLAN_CATEGORY_RADIO_MEASUREMENT) return false; if (mgmt->u.action.u.tpc_report.action_code != WLAN_ACTION_SPCT_TPC_RPRT) return false; if (mgmt->u.action.u.tpc_report.tpc_elem_id != WLAN_EID_TPC_REPORT || mgmt->u.action.u.tpc_report.tpc_elem_length != sizeof(struct ieee80211_tpc_report_ie)) return false; return true; } struct element { u8 id; u8 datalen; u8 data[]; } __attribute__((__packed__)); # 3350 "../include/linux/ieee80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool for_each_element_completed(const struct element *element, const void *data, size_t datalen) { return (const u8 *)element == (const u8 *)data + datalen; } # 68 "../drivers/net/wireless/intel/iwlwifi/iwl-config.h" 2 # 1 "../include/uapi/linux/nl80211.h" 1 # 1100 "../include/uapi/linux/nl80211.h" enum nl80211_commands { NL80211_CMD_UNSPEC, NL80211_CMD_GET_WIPHY, NL80211_CMD_SET_WIPHY, NL80211_CMD_NEW_WIPHY, NL80211_CMD_DEL_WIPHY, NL80211_CMD_GET_INTERFACE, NL80211_CMD_SET_INTERFACE, NL80211_CMD_NEW_INTERFACE, NL80211_CMD_DEL_INTERFACE, NL80211_CMD_GET_KEY, NL80211_CMD_SET_KEY, NL80211_CMD_NEW_KEY, NL80211_CMD_DEL_KEY, NL80211_CMD_GET_BEACON, NL80211_CMD_SET_BEACON, NL80211_CMD_START_AP, NL80211_CMD_NEW_BEACON = NL80211_CMD_START_AP, NL80211_CMD_STOP_AP, NL80211_CMD_DEL_BEACON = NL80211_CMD_STOP_AP, NL80211_CMD_GET_STATION, NL80211_CMD_SET_STATION, NL80211_CMD_NEW_STATION, NL80211_CMD_DEL_STATION, NL80211_CMD_GET_MPATH, NL80211_CMD_SET_MPATH, NL80211_CMD_NEW_MPATH, NL80211_CMD_DEL_MPATH, NL80211_CMD_SET_BSS, NL80211_CMD_SET_REG, NL80211_CMD_REQ_SET_REG, NL80211_CMD_GET_MESH_CONFIG, NL80211_CMD_SET_MESH_CONFIG, NL80211_CMD_SET_MGMT_EXTRA_IE , NL80211_CMD_GET_REG, NL80211_CMD_GET_SCAN, NL80211_CMD_TRIGGER_SCAN, NL80211_CMD_NEW_SCAN_RESULTS, NL80211_CMD_SCAN_ABORTED, NL80211_CMD_REG_CHANGE, NL80211_CMD_AUTHENTICATE, NL80211_CMD_ASSOCIATE, NL80211_CMD_DEAUTHENTICATE, NL80211_CMD_DISASSOCIATE, NL80211_CMD_MICHAEL_MIC_FAILURE, NL80211_CMD_REG_BEACON_HINT, NL80211_CMD_JOIN_IBSS, NL80211_CMD_LEAVE_IBSS, NL80211_CMD_TESTMODE, NL80211_CMD_CONNECT, NL80211_CMD_ROAM, NL80211_CMD_DISCONNECT, NL80211_CMD_SET_WIPHY_NETNS, NL80211_CMD_GET_SURVEY, NL80211_CMD_NEW_SURVEY_RESULTS, NL80211_CMD_SET_PMKSA, NL80211_CMD_DEL_PMKSA, NL80211_CMD_FLUSH_PMKSA, NL80211_CMD_REMAIN_ON_CHANNEL, NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL, NL80211_CMD_SET_TX_BITRATE_MASK, NL80211_CMD_REGISTER_FRAME, NL80211_CMD_REGISTER_ACTION = NL80211_CMD_REGISTER_FRAME, NL80211_CMD_FRAME, NL80211_CMD_ACTION = NL80211_CMD_FRAME, NL80211_CMD_FRAME_TX_STATUS, NL80211_CMD_ACTION_TX_STATUS = NL80211_CMD_FRAME_TX_STATUS, NL80211_CMD_SET_POWER_SAVE, NL80211_CMD_GET_POWER_SAVE, NL80211_CMD_SET_CQM, NL80211_CMD_NOTIFY_CQM, NL80211_CMD_SET_CHANNEL, NL80211_CMD_SET_WDS_PEER, NL80211_CMD_FRAME_WAIT_CANCEL, NL80211_CMD_JOIN_MESH, NL80211_CMD_LEAVE_MESH, NL80211_CMD_UNPROT_DEAUTHENTICATE, NL80211_CMD_UNPROT_DISASSOCIATE, NL80211_CMD_NEW_PEER_CANDIDATE, NL80211_CMD_GET_WOWLAN, NL80211_CMD_SET_WOWLAN, NL80211_CMD_START_SCHED_SCAN, NL80211_CMD_STOP_SCHED_SCAN, NL80211_CMD_SCHED_SCAN_RESULTS, NL80211_CMD_SCHED_SCAN_STOPPED, NL80211_CMD_SET_REKEY_OFFLOAD, NL80211_CMD_PMKSA_CANDIDATE, NL80211_CMD_TDLS_OPER, NL80211_CMD_TDLS_MGMT, NL80211_CMD_UNEXPECTED_FRAME, NL80211_CMD_PROBE_CLIENT, NL80211_CMD_REGISTER_BEACONS, NL80211_CMD_UNEXPECTED_4ADDR_FRAME, NL80211_CMD_SET_NOACK_MAP, NL80211_CMD_CH_SWITCH_NOTIFY, NL80211_CMD_START_P2P_DEVICE, NL80211_CMD_STOP_P2P_DEVICE, NL80211_CMD_CONN_FAILED, NL80211_CMD_SET_MCAST_RATE, NL80211_CMD_SET_MAC_ACL, NL80211_CMD_RADAR_DETECT, NL80211_CMD_GET_PROTOCOL_FEATURES, NL80211_CMD_UPDATE_FT_IES, NL80211_CMD_FT_EVENT, NL80211_CMD_CRIT_PROTOCOL_START, NL80211_CMD_CRIT_PROTOCOL_STOP, NL80211_CMD_GET_COALESCE, NL80211_CMD_SET_COALESCE, NL80211_CMD_CHANNEL_SWITCH, NL80211_CMD_VENDOR, NL80211_CMD_SET_QOS_MAP, NL80211_CMD_ADD_TX_TS, NL80211_CMD_DEL_TX_TS, NL80211_CMD_GET_MPP, NL80211_CMD_JOIN_OCB, NL80211_CMD_LEAVE_OCB, NL80211_CMD_CH_SWITCH_STARTED_NOTIFY, NL80211_CMD_TDLS_CHANNEL_SWITCH, NL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH, NL80211_CMD_WIPHY_REG_CHANGE, NL80211_CMD_ABORT_SCAN, NL80211_CMD_START_NAN, NL80211_CMD_STOP_NAN, NL80211_CMD_ADD_NAN_FUNCTION, NL80211_CMD_DEL_NAN_FUNCTION, NL80211_CMD_CHANGE_NAN_CONFIG, NL80211_CMD_NAN_MATCH, NL80211_CMD_SET_MULTICAST_TO_UNICAST, NL80211_CMD_UPDATE_CONNECT_PARAMS, NL80211_CMD_SET_PMK, NL80211_CMD_DEL_PMK, NL80211_CMD_PORT_AUTHORIZED, NL80211_CMD_RELOAD_REGDB, NL80211_CMD_EXTERNAL_AUTH, NL80211_CMD_STA_OPMODE_CHANGED, NL80211_CMD_CONTROL_PORT_FRAME, NL80211_CMD_GET_FTM_RESPONDER_STATS, NL80211_CMD_PEER_MEASUREMENT_START, NL80211_CMD_PEER_MEASUREMENT_RESULT, NL80211_CMD_PEER_MEASUREMENT_COMPLETE, NL80211_CMD_NOTIFY_RADAR, NL80211_CMD_UPDATE_OWE_INFO, NL80211_CMD_PROBE_MESH_LINK, __NL80211_CMD_AFTER_LAST, NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1 }; # 2363 "../include/uapi/linux/nl80211.h" enum nl80211_attrs { NL80211_ATTR_UNSPEC, NL80211_ATTR_WIPHY, NL80211_ATTR_WIPHY_NAME, NL80211_ATTR_IFINDEX, NL80211_ATTR_IFNAME, NL80211_ATTR_IFTYPE, NL80211_ATTR_MAC, NL80211_ATTR_KEY_DATA, NL80211_ATTR_KEY_IDX, NL80211_ATTR_KEY_CIPHER, NL80211_ATTR_KEY_SEQ, NL80211_ATTR_KEY_DEFAULT, NL80211_ATTR_BEACON_INTERVAL, NL80211_ATTR_DTIM_PERIOD, NL80211_ATTR_BEACON_HEAD, NL80211_ATTR_BEACON_TAIL, NL80211_ATTR_STA_AID, NL80211_ATTR_STA_FLAGS, NL80211_ATTR_STA_LISTEN_INTERVAL, NL80211_ATTR_STA_SUPPORTED_RATES, NL80211_ATTR_STA_VLAN, NL80211_ATTR_STA_INFO, NL80211_ATTR_WIPHY_BANDS, NL80211_ATTR_MNTR_FLAGS, NL80211_ATTR_MESH_ID, NL80211_ATTR_STA_PLINK_ACTION, NL80211_ATTR_MPATH_NEXT_HOP, NL80211_ATTR_MPATH_INFO, NL80211_ATTR_BSS_CTS_PROT, NL80211_ATTR_BSS_SHORT_PREAMBLE, NL80211_ATTR_BSS_SHORT_SLOT_TIME, NL80211_ATTR_HT_CAPABILITY, NL80211_ATTR_SUPPORTED_IFTYPES, NL80211_ATTR_REG_ALPHA2, NL80211_ATTR_REG_RULES, NL80211_ATTR_MESH_CONFIG, NL80211_ATTR_BSS_BASIC_RATES, NL80211_ATTR_WIPHY_TXQ_PARAMS, NL80211_ATTR_WIPHY_FREQ, NL80211_ATTR_WIPHY_CHANNEL_TYPE, NL80211_ATTR_KEY_DEFAULT_MGMT, NL80211_ATTR_MGMT_SUBTYPE, NL80211_ATTR_IE, NL80211_ATTR_MAX_NUM_SCAN_SSIDS, NL80211_ATTR_SCAN_FREQUENCIES, NL80211_ATTR_SCAN_SSIDS, NL80211_ATTR_GENERATION, NL80211_ATTR_BSS, NL80211_ATTR_REG_INITIATOR, NL80211_ATTR_REG_TYPE, NL80211_ATTR_SUPPORTED_COMMANDS, NL80211_ATTR_FRAME, NL80211_ATTR_SSID, NL80211_ATTR_AUTH_TYPE, NL80211_ATTR_REASON_CODE, NL80211_ATTR_KEY_TYPE, NL80211_ATTR_MAX_SCAN_IE_LEN, NL80211_ATTR_CIPHER_SUITES, NL80211_ATTR_FREQ_BEFORE, NL80211_ATTR_FREQ_AFTER, NL80211_ATTR_FREQ_FIXED, NL80211_ATTR_WIPHY_RETRY_SHORT, NL80211_ATTR_WIPHY_RETRY_LONG, NL80211_ATTR_WIPHY_FRAG_THRESHOLD, NL80211_ATTR_WIPHY_RTS_THRESHOLD, NL80211_ATTR_TIMED_OUT, NL80211_ATTR_USE_MFP, NL80211_ATTR_STA_FLAGS2, NL80211_ATTR_CONTROL_PORT, NL80211_ATTR_TESTDATA, NL80211_ATTR_PRIVACY, NL80211_ATTR_DISCONNECTED_BY_AP, NL80211_ATTR_STATUS_CODE, NL80211_ATTR_CIPHER_SUITES_PAIRWISE, NL80211_ATTR_CIPHER_SUITE_GROUP, NL80211_ATTR_WPA_VERSIONS, NL80211_ATTR_AKM_SUITES, NL80211_ATTR_REQ_IE, NL80211_ATTR_RESP_IE, NL80211_ATTR_PREV_BSSID, NL80211_ATTR_KEY, NL80211_ATTR_KEYS, NL80211_ATTR_PID, NL80211_ATTR_4ADDR, NL80211_ATTR_SURVEY_INFO, NL80211_ATTR_PMKID, NL80211_ATTR_MAX_NUM_PMKIDS, NL80211_ATTR_DURATION, NL80211_ATTR_COOKIE, NL80211_ATTR_WIPHY_COVERAGE_CLASS, NL80211_ATTR_TX_RATES, NL80211_ATTR_FRAME_MATCH, NL80211_ATTR_ACK, NL80211_ATTR_PS_STATE, NL80211_ATTR_CQM, NL80211_ATTR_LOCAL_STATE_CHANGE, NL80211_ATTR_AP_ISOLATE, NL80211_ATTR_WIPHY_TX_POWER_SETTING, NL80211_ATTR_WIPHY_TX_POWER_LEVEL, NL80211_ATTR_TX_FRAME_TYPES, NL80211_ATTR_RX_FRAME_TYPES, NL80211_ATTR_FRAME_TYPE, NL80211_ATTR_CONTROL_PORT_ETHERTYPE, NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT, NL80211_ATTR_SUPPORT_IBSS_RSN, NL80211_ATTR_WIPHY_ANTENNA_TX, NL80211_ATTR_WIPHY_ANTENNA_RX, NL80211_ATTR_MCAST_RATE, NL80211_ATTR_OFFCHANNEL_TX_OK, NL80211_ATTR_BSS_HT_OPMODE, NL80211_ATTR_KEY_DEFAULT_TYPES, NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION, NL80211_ATTR_MESH_SETUP, NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX, NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX, NL80211_ATTR_SUPPORT_MESH_AUTH, NL80211_ATTR_STA_PLINK_STATE, NL80211_ATTR_WOWLAN_TRIGGERS, NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED, NL80211_ATTR_SCHED_SCAN_INTERVAL, NL80211_ATTR_INTERFACE_COMBINATIONS, NL80211_ATTR_SOFTWARE_IFTYPES, NL80211_ATTR_REKEY_DATA, NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS, NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN, NL80211_ATTR_SCAN_SUPP_RATES, NL80211_ATTR_HIDDEN_SSID, NL80211_ATTR_IE_PROBE_RESP, NL80211_ATTR_IE_ASSOC_RESP, NL80211_ATTR_STA_WME, NL80211_ATTR_SUPPORT_AP_UAPSD, NL80211_ATTR_ROAM_SUPPORT, NL80211_ATTR_SCHED_SCAN_MATCH, NL80211_ATTR_MAX_MATCH_SETS, NL80211_ATTR_PMKSA_CANDIDATE, NL80211_ATTR_TX_NO_CCK_RATE, NL80211_ATTR_TDLS_ACTION, NL80211_ATTR_TDLS_DIALOG_TOKEN, NL80211_ATTR_TDLS_OPERATION, NL80211_ATTR_TDLS_SUPPORT, NL80211_ATTR_TDLS_EXTERNAL_SETUP, NL80211_ATTR_DEVICE_AP_SME, NL80211_ATTR_DONT_WAIT_FOR_ACK, NL80211_ATTR_FEATURE_FLAGS, NL80211_ATTR_PROBE_RESP_OFFLOAD, NL80211_ATTR_PROBE_RESP, NL80211_ATTR_DFS_REGION, NL80211_ATTR_DISABLE_HT, NL80211_ATTR_HT_CAPABILITY_MASK, NL80211_ATTR_NOACK_MAP, NL80211_ATTR_INACTIVITY_TIMEOUT, NL80211_ATTR_RX_SIGNAL_DBM, NL80211_ATTR_BG_SCAN_PERIOD, NL80211_ATTR_WDEV, NL80211_ATTR_USER_REG_HINT_TYPE, NL80211_ATTR_CONN_FAILED_REASON, NL80211_ATTR_AUTH_DATA, NL80211_ATTR_VHT_CAPABILITY, NL80211_ATTR_SCAN_FLAGS, NL80211_ATTR_CHANNEL_WIDTH, NL80211_ATTR_CENTER_FREQ1, NL80211_ATTR_CENTER_FREQ2, NL80211_ATTR_P2P_CTWINDOW, NL80211_ATTR_P2P_OPPPS, NL80211_ATTR_LOCAL_MESH_POWER_MODE, NL80211_ATTR_ACL_POLICY, NL80211_ATTR_MAC_ADDRS, NL80211_ATTR_MAC_ACL_MAX, NL80211_ATTR_RADAR_EVENT, NL80211_ATTR_EXT_CAPA, NL80211_ATTR_EXT_CAPA_MASK, NL80211_ATTR_STA_CAPABILITY, NL80211_ATTR_STA_EXT_CAPABILITY, NL80211_ATTR_PROTOCOL_FEATURES, NL80211_ATTR_SPLIT_WIPHY_DUMP, NL80211_ATTR_DISABLE_VHT, NL80211_ATTR_VHT_CAPABILITY_MASK, NL80211_ATTR_MDID, NL80211_ATTR_IE_RIC, NL80211_ATTR_CRIT_PROT_ID, NL80211_ATTR_MAX_CRIT_PROT_DURATION, NL80211_ATTR_PEER_AID, NL80211_ATTR_COALESCE_RULE, NL80211_ATTR_CH_SWITCH_COUNT, NL80211_ATTR_CH_SWITCH_BLOCK_TX, NL80211_ATTR_CSA_IES, NL80211_ATTR_CSA_C_OFF_BEACON, NL80211_ATTR_CSA_C_OFF_PRESP, NL80211_ATTR_RXMGMT_FLAGS, NL80211_ATTR_STA_SUPPORTED_CHANNELS, NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES, NL80211_ATTR_HANDLE_DFS, NL80211_ATTR_SUPPORT_5_MHZ, NL80211_ATTR_SUPPORT_10_MHZ, NL80211_ATTR_OPMODE_NOTIF, NL80211_ATTR_VENDOR_ID, NL80211_ATTR_VENDOR_SUBCMD, NL80211_ATTR_VENDOR_DATA, NL80211_ATTR_VENDOR_EVENTS, NL80211_ATTR_QOS_MAP, NL80211_ATTR_MAC_HINT, NL80211_ATTR_WIPHY_FREQ_HINT, NL80211_ATTR_MAX_AP_ASSOC_STA, NL80211_ATTR_TDLS_PEER_CAPABILITY, NL80211_ATTR_SOCKET_OWNER, NL80211_ATTR_CSA_C_OFFSETS_TX, NL80211_ATTR_MAX_CSA_COUNTERS, NL80211_ATTR_TDLS_INITIATOR, NL80211_ATTR_USE_RRM, NL80211_ATTR_WIPHY_DYN_ACK, NL80211_ATTR_TSID, NL80211_ATTR_USER_PRIO, NL80211_ATTR_ADMITTED_TIME, NL80211_ATTR_SMPS_MODE, NL80211_ATTR_OPER_CLASS, NL80211_ATTR_MAC_MASK, NL80211_ATTR_WIPHY_SELF_MANAGED_REG, NL80211_ATTR_EXT_FEATURES, NL80211_ATTR_SURVEY_RADIO_STATS, NL80211_ATTR_NETNS_FD, NL80211_ATTR_SCHED_SCAN_DELAY, NL80211_ATTR_REG_INDOOR, NL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS, NL80211_ATTR_MAX_SCAN_PLAN_INTERVAL, NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS, NL80211_ATTR_SCHED_SCAN_PLANS, NL80211_ATTR_PBSS, NL80211_ATTR_BSS_SELECT, NL80211_ATTR_STA_SUPPORT_P2P_PS, NL80211_ATTR_PAD, NL80211_ATTR_IFTYPE_EXT_CAPA, NL80211_ATTR_MU_MIMO_GROUP_DATA, NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR, NL80211_ATTR_SCAN_START_TIME_TSF, NL80211_ATTR_SCAN_START_TIME_TSF_BSSID, NL80211_ATTR_MEASUREMENT_DURATION, NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY, NL80211_ATTR_MESH_PEER_AID, NL80211_ATTR_NAN_MASTER_PREF, NL80211_ATTR_BANDS, NL80211_ATTR_NAN_FUNC, NL80211_ATTR_NAN_MATCH, NL80211_ATTR_FILS_KEK, NL80211_ATTR_FILS_NONCES, NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED, NL80211_ATTR_BSSID, NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI, NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST, NL80211_ATTR_TIMEOUT_REASON, NL80211_ATTR_FILS_ERP_USERNAME, NL80211_ATTR_FILS_ERP_REALM, NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM, NL80211_ATTR_FILS_ERP_RRK, NL80211_ATTR_FILS_CACHE_ID, NL80211_ATTR_PMK, NL80211_ATTR_SCHED_SCAN_MULTI, NL80211_ATTR_SCHED_SCAN_MAX_REQS, NL80211_ATTR_WANT_1X_4WAY_HS, NL80211_ATTR_PMKR0_NAME, NL80211_ATTR_PORT_AUTHORIZED, NL80211_ATTR_EXTERNAL_AUTH_ACTION, NL80211_ATTR_EXTERNAL_AUTH_SUPPORT, NL80211_ATTR_NSS, NL80211_ATTR_ACK_SIGNAL, NL80211_ATTR_CONTROL_PORT_OVER_NL80211, NL80211_ATTR_TXQ_STATS, NL80211_ATTR_TXQ_LIMIT, NL80211_ATTR_TXQ_MEMORY_LIMIT, NL80211_ATTR_TXQ_QUANTUM, NL80211_ATTR_HE_CAPABILITY, NL80211_ATTR_FTM_RESPONDER, NL80211_ATTR_FTM_RESPONDER_STATS, NL80211_ATTR_TIMEOUT, NL80211_ATTR_PEER_MEASUREMENTS, NL80211_ATTR_AIRTIME_WEIGHT, NL80211_ATTR_STA_TX_POWER_SETTING, NL80211_ATTR_STA_TX_POWER, NL80211_ATTR_SAE_PASSWORD, NL80211_ATTR_TWT_RESPONDER, __NL80211_ATTR_AFTER_LAST, NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST, NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1 }; # 2906 "../include/uapi/linux/nl80211.h" enum nl80211_iftype { NL80211_IFTYPE_UNSPECIFIED, NL80211_IFTYPE_ADHOC, NL80211_IFTYPE_STATION, NL80211_IFTYPE_AP, NL80211_IFTYPE_AP_VLAN, NL80211_IFTYPE_WDS, NL80211_IFTYPE_MONITOR, NL80211_IFTYPE_MESH_POINT, NL80211_IFTYPE_P2P_CLIENT, NL80211_IFTYPE_P2P_GO, NL80211_IFTYPE_P2P_DEVICE, NL80211_IFTYPE_OCB, NL80211_IFTYPE_NAN, NUM_NL80211_IFTYPES, NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1 }; # 2950 "../include/uapi/linux/nl80211.h" enum nl80211_sta_flags { __NL80211_STA_FLAG_INVALID, NL80211_STA_FLAG_AUTHORIZED, NL80211_STA_FLAG_SHORT_PREAMBLE, NL80211_STA_FLAG_WME, NL80211_STA_FLAG_MFP, NL80211_STA_FLAG_AUTHENTICATED, NL80211_STA_FLAG_TDLS_PEER, NL80211_STA_FLAG_ASSOCIATED, __NL80211_STA_FLAG_AFTER_LAST, NL80211_STA_FLAG_MAX = __NL80211_STA_FLAG_AFTER_LAST - 1 }; # 2972 "../include/uapi/linux/nl80211.h" enum nl80211_sta_p2p_ps_status { NL80211_P2P_PS_UNSUPPORTED = 0, NL80211_P2P_PS_SUPPORTED, NUM_NL80211_P2P_PS_STATUS, }; # 2988 "../include/uapi/linux/nl80211.h" struct nl80211_sta_flag_update { __u32 mask; __u32 set; } __attribute__((packed)); enum nl80211_he_gi { NL80211_RATE_INFO_HE_GI_0_8, NL80211_RATE_INFO_HE_GI_1_6, NL80211_RATE_INFO_HE_GI_3_2, }; # 3015 "../include/uapi/linux/nl80211.h" enum nl80211_he_ru_alloc { NL80211_RATE_INFO_HE_RU_ALLOC_26, NL80211_RATE_INFO_HE_RU_ALLOC_52, NL80211_RATE_INFO_HE_RU_ALLOC_106, NL80211_RATE_INFO_HE_RU_ALLOC_242, NL80211_RATE_INFO_HE_RU_ALLOC_484, NL80211_RATE_INFO_HE_RU_ALLOC_996, NL80211_RATE_INFO_HE_RU_ALLOC_2x996, }; # 3066 "../include/uapi/linux/nl80211.h" enum nl80211_rate_info { __NL80211_RATE_INFO_INVALID, NL80211_RATE_INFO_BITRATE, NL80211_RATE_INFO_MCS, NL80211_RATE_INFO_40_MHZ_WIDTH, NL80211_RATE_INFO_SHORT_GI, NL80211_RATE_INFO_BITRATE32, NL80211_RATE_INFO_VHT_MCS, NL80211_RATE_INFO_VHT_NSS, NL80211_RATE_INFO_80_MHZ_WIDTH, NL80211_RATE_INFO_80P80_MHZ_WIDTH, NL80211_RATE_INFO_160_MHZ_WIDTH, NL80211_RATE_INFO_10_MHZ_WIDTH, NL80211_RATE_INFO_5_MHZ_WIDTH, NL80211_RATE_INFO_HE_MCS, NL80211_RATE_INFO_HE_NSS, NL80211_RATE_INFO_HE_GI, NL80211_RATE_INFO_HE_DCM, NL80211_RATE_INFO_HE_RU_ALLOC, __NL80211_RATE_INFO_AFTER_LAST, NL80211_RATE_INFO_MAX = __NL80211_RATE_INFO_AFTER_LAST - 1 }; # 3108 "../include/uapi/linux/nl80211.h" enum nl80211_sta_bss_param { __NL80211_STA_BSS_PARAM_INVALID, NL80211_STA_BSS_PARAM_CTS_PROT, NL80211_STA_BSS_PARAM_SHORT_PREAMBLE, NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME, NL80211_STA_BSS_PARAM_DTIM_PERIOD, NL80211_STA_BSS_PARAM_BEACON_INTERVAL, __NL80211_STA_BSS_PARAM_AFTER_LAST, NL80211_STA_BSS_PARAM_MAX = __NL80211_STA_BSS_PARAM_AFTER_LAST - 1 }; # 3200 "../include/uapi/linux/nl80211.h" enum nl80211_sta_info { __NL80211_STA_INFO_INVALID, NL80211_STA_INFO_INACTIVE_TIME, NL80211_STA_INFO_RX_BYTES, NL80211_STA_INFO_TX_BYTES, NL80211_STA_INFO_LLID, NL80211_STA_INFO_PLID, NL80211_STA_INFO_PLINK_STATE, NL80211_STA_INFO_SIGNAL, NL80211_STA_INFO_TX_BITRATE, NL80211_STA_INFO_RX_PACKETS, NL80211_STA_INFO_TX_PACKETS, NL80211_STA_INFO_TX_RETRIES, NL80211_STA_INFO_TX_FAILED, NL80211_STA_INFO_SIGNAL_AVG, NL80211_STA_INFO_RX_BITRATE, NL80211_STA_INFO_BSS_PARAM, NL80211_STA_INFO_CONNECTED_TIME, NL80211_STA_INFO_STA_FLAGS, NL80211_STA_INFO_BEACON_LOSS, NL80211_STA_INFO_T_OFFSET, NL80211_STA_INFO_LOCAL_PM, NL80211_STA_INFO_PEER_PM, NL80211_STA_INFO_NONPEER_PM, NL80211_STA_INFO_RX_BYTES64, NL80211_STA_INFO_TX_BYTES64, NL80211_STA_INFO_CHAIN_SIGNAL, NL80211_STA_INFO_CHAIN_SIGNAL_AVG, NL80211_STA_INFO_EXPECTED_THROUGHPUT, NL80211_STA_INFO_RX_DROP_MISC, NL80211_STA_INFO_BEACON_RX, NL80211_STA_INFO_BEACON_SIGNAL_AVG, NL80211_STA_INFO_TID_STATS, NL80211_STA_INFO_RX_DURATION, NL80211_STA_INFO_PAD, NL80211_STA_INFO_ACK_SIGNAL, NL80211_STA_INFO_ACK_SIGNAL_AVG, NL80211_STA_INFO_RX_MPDUS, NL80211_STA_INFO_FCS_ERROR_COUNT, NL80211_STA_INFO_CONNECTED_TO_GATE, NL80211_STA_INFO_TX_DURATION, NL80211_STA_INFO_AIRTIME_WEIGHT, NL80211_STA_INFO_AIRTIME_LINK_METRIC, __NL80211_STA_INFO_AFTER_LAST, NL80211_STA_INFO_MAX = __NL80211_STA_INFO_AFTER_LAST - 1 }; # 3268 "../include/uapi/linux/nl80211.h" enum nl80211_tid_stats { __NL80211_TID_STATS_INVALID, NL80211_TID_STATS_RX_MSDU, NL80211_TID_STATS_TX_MSDU, NL80211_TID_STATS_TX_MSDU_RETRIES, NL80211_TID_STATS_TX_MSDU_FAILED, NL80211_TID_STATS_PAD, NL80211_TID_STATS_TXQ_STATS, NUM_NL80211_TID_STATS, NL80211_TID_STATS_MAX = NUM_NL80211_TID_STATS - 1 }; # 3301 "../include/uapi/linux/nl80211.h" enum nl80211_txq_stats { __NL80211_TXQ_STATS_INVALID, NL80211_TXQ_STATS_BACKLOG_BYTES, NL80211_TXQ_STATS_BACKLOG_PACKETS, NL80211_TXQ_STATS_FLOWS, NL80211_TXQ_STATS_DROPS, NL80211_TXQ_STATS_ECN_MARKS, NL80211_TXQ_STATS_OVERLIMIT, NL80211_TXQ_STATS_OVERMEMORY, NL80211_TXQ_STATS_COLLISIONS, NL80211_TXQ_STATS_TX_BYTES, NL80211_TXQ_STATS_TX_PACKETS, NL80211_TXQ_STATS_MAX_FLOWS, NUM_NL80211_TXQ_STATS, NL80211_TXQ_STATS_MAX = NUM_NL80211_TXQ_STATS - 1 }; # 3329 "../include/uapi/linux/nl80211.h" enum nl80211_mpath_flags { NL80211_MPATH_FLAG_ACTIVE = 1<<0, NL80211_MPATH_FLAG_RESOLVING = 1<<1, NL80211_MPATH_FLAG_SN_VALID = 1<<2, NL80211_MPATH_FLAG_FIXED = 1<<3, NL80211_MPATH_FLAG_RESOLVED = 1<<4, }; # 3358 "../include/uapi/linux/nl80211.h" enum nl80211_mpath_info { __NL80211_MPATH_INFO_INVALID, NL80211_MPATH_INFO_FRAME_QLEN, NL80211_MPATH_INFO_SN, NL80211_MPATH_INFO_METRIC, NL80211_MPATH_INFO_EXPTIME, NL80211_MPATH_INFO_FLAGS, NL80211_MPATH_INFO_DISCOVERY_TIMEOUT, NL80211_MPATH_INFO_DISCOVERY_RETRIES, NL80211_MPATH_INFO_HOP_COUNT, NL80211_MPATH_INFO_PATH_CHANGE, __NL80211_MPATH_INFO_AFTER_LAST, NL80211_MPATH_INFO_MAX = __NL80211_MPATH_INFO_AFTER_LAST - 1 }; # 3393 "../include/uapi/linux/nl80211.h" enum nl80211_band_iftype_attr { __NL80211_BAND_IFTYPE_ATTR_INVALID, NL80211_BAND_IFTYPE_ATTR_IFTYPES, NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC, NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY, NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET, NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE, __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST, NL80211_BAND_IFTYPE_ATTR_MAX = __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST - 1 }; # 3427 "../include/uapi/linux/nl80211.h" enum nl80211_band_attr { __NL80211_BAND_ATTR_INVALID, NL80211_BAND_ATTR_FREQS, NL80211_BAND_ATTR_RATES, NL80211_BAND_ATTR_HT_MCS_SET, NL80211_BAND_ATTR_HT_CAPA, NL80211_BAND_ATTR_HT_AMPDU_FACTOR, NL80211_BAND_ATTR_HT_AMPDU_DENSITY, NL80211_BAND_ATTR_VHT_MCS_SET, NL80211_BAND_ATTR_VHT_CAPA, NL80211_BAND_ATTR_IFTYPE_DATA, __NL80211_BAND_ATTR_AFTER_LAST, NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1 }; # 3459 "../include/uapi/linux/nl80211.h" enum nl80211_wmm_rule { __NL80211_WMMR_INVALID, NL80211_WMMR_CW_MIN, NL80211_WMMR_CW_MAX, NL80211_WMMR_AIFSN, NL80211_WMMR_TXOP, __NL80211_WMMR_LAST, NL80211_WMMR_MAX = __NL80211_WMMR_LAST - 1 }; # 3532 "../include/uapi/linux/nl80211.h" enum nl80211_frequency_attr { __NL80211_FREQUENCY_ATTR_INVALID, NL80211_FREQUENCY_ATTR_FREQ, NL80211_FREQUENCY_ATTR_DISABLED, NL80211_FREQUENCY_ATTR_NO_IR, __NL80211_FREQUENCY_ATTR_NO_IBSS, NL80211_FREQUENCY_ATTR_RADAR, NL80211_FREQUENCY_ATTR_MAX_TX_POWER, NL80211_FREQUENCY_ATTR_DFS_STATE, NL80211_FREQUENCY_ATTR_DFS_TIME, NL80211_FREQUENCY_ATTR_NO_HT40_MINUS, NL80211_FREQUENCY_ATTR_NO_HT40_PLUS, NL80211_FREQUENCY_ATTR_NO_80MHZ, NL80211_FREQUENCY_ATTR_NO_160MHZ, NL80211_FREQUENCY_ATTR_DFS_CAC_TIME, NL80211_FREQUENCY_ATTR_INDOOR_ONLY, NL80211_FREQUENCY_ATTR_IR_CONCURRENT, NL80211_FREQUENCY_ATTR_NO_20MHZ, NL80211_FREQUENCY_ATTR_NO_10MHZ, NL80211_FREQUENCY_ATTR_WMM, __NL80211_FREQUENCY_ATTR_AFTER_LAST, NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1 }; # 3575 "../include/uapi/linux/nl80211.h" enum nl80211_bitrate_attr { __NL80211_BITRATE_ATTR_INVALID, NL80211_BITRATE_ATTR_RATE, NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE, __NL80211_BITRATE_ATTR_AFTER_LAST, NL80211_BITRATE_ATTR_MAX = __NL80211_BITRATE_ATTR_AFTER_LAST - 1 }; # 3601 "../include/uapi/linux/nl80211.h" enum nl80211_reg_initiator { NL80211_REGDOM_SET_BY_CORE, NL80211_REGDOM_SET_BY_USER, NL80211_REGDOM_SET_BY_DRIVER, NL80211_REGDOM_SET_BY_COUNTRY_IE, }; # 3624 "../include/uapi/linux/nl80211.h" enum nl80211_reg_type { NL80211_REGDOM_TYPE_COUNTRY, NL80211_REGDOM_TYPE_WORLD, NL80211_REGDOM_TYPE_CUSTOM_WORLD, NL80211_REGDOM_TYPE_INTERSECTION, }; # 3656 "../include/uapi/linux/nl80211.h" enum nl80211_reg_rule_attr { __NL80211_REG_RULE_ATTR_INVALID, NL80211_ATTR_REG_RULE_FLAGS, NL80211_ATTR_FREQ_RANGE_START, NL80211_ATTR_FREQ_RANGE_END, NL80211_ATTR_FREQ_RANGE_MAX_BW, NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN, NL80211_ATTR_POWER_RULE_MAX_EIRP, NL80211_ATTR_DFS_CAC_TIME, __NL80211_REG_RULE_ATTR_AFTER_LAST, NL80211_REG_RULE_ATTR_MAX = __NL80211_REG_RULE_ATTR_AFTER_LAST - 1 }; # 3709 "../include/uapi/linux/nl80211.h" enum nl80211_sched_scan_match_attr { __NL80211_SCHED_SCAN_MATCH_ATTR_INVALID, NL80211_SCHED_SCAN_MATCH_ATTR_SSID, NL80211_SCHED_SCAN_MATCH_ATTR_RSSI, NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI, NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST, NL80211_SCHED_SCAN_MATCH_ATTR_BSSID, NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI, __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST, NL80211_SCHED_SCAN_MATCH_ATTR_MAX = __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST - 1 }; # 3750 "../include/uapi/linux/nl80211.h" enum nl80211_reg_rule_flags { NL80211_RRF_NO_OFDM = 1<<0, NL80211_RRF_NO_CCK = 1<<1, NL80211_RRF_NO_INDOOR = 1<<2, NL80211_RRF_NO_OUTDOOR = 1<<3, NL80211_RRF_DFS = 1<<4, NL80211_RRF_PTP_ONLY = 1<<5, NL80211_RRF_PTMP_ONLY = 1<<6, NL80211_RRF_NO_IR = 1<<7, __NL80211_RRF_NO_IBSS = 1<<8, NL80211_RRF_AUTO_BW = 1<<11, NL80211_RRF_IR_CONCURRENT = 1<<12, NL80211_RRF_NO_HT40MINUS = 1<<13, NL80211_RRF_NO_HT40PLUS = 1<<14, NL80211_RRF_NO_80MHZ = 1<<15, NL80211_RRF_NO_160MHZ = 1<<16, }; # 3786 "../include/uapi/linux/nl80211.h" enum nl80211_dfs_regions { NL80211_DFS_UNSET = 0, NL80211_DFS_FCC = 1, NL80211_DFS_ETSI = 2, NL80211_DFS_JP = 3, }; # 3810 "../include/uapi/linux/nl80211.h" enum nl80211_user_reg_hint_type { NL80211_USER_REG_HINT_USER = 0, NL80211_USER_REG_HINT_CELL_BASE = 1, NL80211_USER_REG_HINT_INDOOR = 2, }; # 3843 "../include/uapi/linux/nl80211.h" enum nl80211_survey_info { __NL80211_SURVEY_INFO_INVALID, NL80211_SURVEY_INFO_FREQUENCY, NL80211_SURVEY_INFO_NOISE, NL80211_SURVEY_INFO_IN_USE, NL80211_SURVEY_INFO_TIME, NL80211_SURVEY_INFO_TIME_BUSY, NL80211_SURVEY_INFO_TIME_EXT_BUSY, NL80211_SURVEY_INFO_TIME_RX, NL80211_SURVEY_INFO_TIME_TX, NL80211_SURVEY_INFO_TIME_SCAN, NL80211_SURVEY_INFO_PAD, __NL80211_SURVEY_INFO_AFTER_LAST, NL80211_SURVEY_INFO_MAX = __NL80211_SURVEY_INFO_AFTER_LAST - 1 }; # 3887 "../include/uapi/linux/nl80211.h" enum nl80211_mntr_flags { __NL80211_MNTR_FLAG_INVALID, NL80211_MNTR_FLAG_FCSFAIL, NL80211_MNTR_FLAG_PLCPFAIL, NL80211_MNTR_FLAG_CONTROL, NL80211_MNTR_FLAG_OTHER_BSS, NL80211_MNTR_FLAG_COOK_FRAMES, NL80211_MNTR_FLAG_ACTIVE, __NL80211_MNTR_FLAG_AFTER_LAST, NL80211_MNTR_FLAG_MAX = __NL80211_MNTR_FLAG_AFTER_LAST - 1 }; # 3919 "../include/uapi/linux/nl80211.h" enum nl80211_mesh_power_mode { NL80211_MESH_POWER_UNKNOWN, NL80211_MESH_POWER_ACTIVE, NL80211_MESH_POWER_LIGHT_SLEEP, NL80211_MESH_POWER_DEEP_SLEEP, __NL80211_MESH_POWER_AFTER_LAST, NL80211_MESH_POWER_MAX = __NL80211_MESH_POWER_AFTER_LAST - 1 }; # 4042 "../include/uapi/linux/nl80211.h" enum nl80211_meshconf_params { __NL80211_MESHCONF_INVALID, NL80211_MESHCONF_RETRY_TIMEOUT, NL80211_MESHCONF_CONFIRM_TIMEOUT, NL80211_MESHCONF_HOLDING_TIMEOUT, NL80211_MESHCONF_MAX_PEER_LINKS, NL80211_MESHCONF_MAX_RETRIES, NL80211_MESHCONF_TTL, NL80211_MESHCONF_AUTO_OPEN_PLINKS, NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES, NL80211_MESHCONF_PATH_REFRESH_TIME, NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT, NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT, NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL, NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME, NL80211_MESHCONF_HWMP_ROOTMODE, NL80211_MESHCONF_ELEMENT_TTL, NL80211_MESHCONF_HWMP_RANN_INTERVAL, NL80211_MESHCONF_GATE_ANNOUNCEMENTS, NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL, NL80211_MESHCONF_FORWARDING, NL80211_MESHCONF_RSSI_THRESHOLD, NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR, NL80211_MESHCONF_HT_OPMODE, NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT, NL80211_MESHCONF_HWMP_ROOT_INTERVAL, NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL, NL80211_MESHCONF_POWER_MODE, NL80211_MESHCONF_AWAKE_WINDOW, NL80211_MESHCONF_PLINK_TIMEOUT, NL80211_MESHCONF_CONNECTED_TO_GATE, __NL80211_MESHCONF_ATTR_AFTER_LAST, NL80211_MESHCONF_ATTR_MAX = __NL80211_MESHCONF_ATTR_AFTER_LAST - 1 }; # 4128 "../include/uapi/linux/nl80211.h" enum nl80211_mesh_setup_params { __NL80211_MESH_SETUP_INVALID, NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL, NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC, NL80211_MESH_SETUP_IE, NL80211_MESH_SETUP_USERSPACE_AUTH, NL80211_MESH_SETUP_USERSPACE_AMPE, NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC, NL80211_MESH_SETUP_USERSPACE_MPM, NL80211_MESH_SETUP_AUTH_PROTOCOL, __NL80211_MESH_SETUP_ATTR_AFTER_LAST, NL80211_MESH_SETUP_ATTR_MAX = __NL80211_MESH_SETUP_ATTR_AFTER_LAST - 1 }; # 4158 "../include/uapi/linux/nl80211.h" enum nl80211_txq_attr { __NL80211_TXQ_ATTR_INVALID, NL80211_TXQ_ATTR_AC, NL80211_TXQ_ATTR_TXOP, NL80211_TXQ_ATTR_CWMIN, NL80211_TXQ_ATTR_CWMAX, NL80211_TXQ_ATTR_AIFS, __NL80211_TXQ_ATTR_AFTER_LAST, NL80211_TXQ_ATTR_MAX = __NL80211_TXQ_ATTR_AFTER_LAST - 1 }; enum nl80211_ac { NL80211_AC_VO, NL80211_AC_VI, NL80211_AC_BE, NL80211_AC_BK, NL80211_NUM_ACS }; # 4195 "../include/uapi/linux/nl80211.h" enum nl80211_channel_type { NL80211_CHAN_NO_HT, NL80211_CHAN_HT20, NL80211_CHAN_HT40MINUS, NL80211_CHAN_HT40PLUS }; # 4217 "../include/uapi/linux/nl80211.h" enum nl80211_key_mode { NL80211_KEY_RX_TX, NL80211_KEY_NO_TX, NL80211_KEY_SET_TX }; # 4242 "../include/uapi/linux/nl80211.h" enum nl80211_chan_width { NL80211_CHAN_WIDTH_20_NOHT, NL80211_CHAN_WIDTH_20, NL80211_CHAN_WIDTH_40, NL80211_CHAN_WIDTH_80, NL80211_CHAN_WIDTH_80P80, NL80211_CHAN_WIDTH_160, NL80211_CHAN_WIDTH_5, NL80211_CHAN_WIDTH_10, }; # 4262 "../include/uapi/linux/nl80211.h" enum nl80211_bss_scan_width { NL80211_BSS_CHAN_WIDTH_20, NL80211_BSS_CHAN_WIDTH_10, NL80211_BSS_CHAN_WIDTH_5, }; # 4320 "../include/uapi/linux/nl80211.h" enum nl80211_bss { __NL80211_BSS_INVALID, NL80211_BSS_BSSID, NL80211_BSS_FREQUENCY, NL80211_BSS_TSF, NL80211_BSS_BEACON_INTERVAL, NL80211_BSS_CAPABILITY, NL80211_BSS_INFORMATION_ELEMENTS, NL80211_BSS_SIGNAL_MBM, NL80211_BSS_SIGNAL_UNSPEC, NL80211_BSS_STATUS, NL80211_BSS_SEEN_MS_AGO, NL80211_BSS_BEACON_IES, NL80211_BSS_CHAN_WIDTH, NL80211_BSS_BEACON_TSF, NL80211_BSS_PRESP_DATA, NL80211_BSS_LAST_SEEN_BOOTTIME, NL80211_BSS_PAD, NL80211_BSS_PARENT_TSF, NL80211_BSS_PARENT_BSSID, NL80211_BSS_CHAIN_SIGNAL, __NL80211_BSS_AFTER_LAST, NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1 }; # 4359 "../include/uapi/linux/nl80211.h" enum nl80211_bss_status { NL80211_BSS_STATUS_AUTHENTICATED, NL80211_BSS_STATUS_ASSOCIATED, NL80211_BSS_STATUS_IBSS_JOINED, }; # 4382 "../include/uapi/linux/nl80211.h" enum nl80211_auth_type { NL80211_AUTHTYPE_OPEN_SYSTEM, NL80211_AUTHTYPE_SHARED_KEY, NL80211_AUTHTYPE_FT, NL80211_AUTHTYPE_NETWORK_EAP, NL80211_AUTHTYPE_SAE, NL80211_AUTHTYPE_FILS_SK, NL80211_AUTHTYPE_FILS_SK_PFS, NL80211_AUTHTYPE_FILS_PK, __NL80211_AUTHTYPE_NUM, NL80211_AUTHTYPE_MAX = __NL80211_AUTHTYPE_NUM - 1, NL80211_AUTHTYPE_AUTOMATIC }; # 4405 "../include/uapi/linux/nl80211.h" enum nl80211_key_type { NL80211_KEYTYPE_GROUP, NL80211_KEYTYPE_PAIRWISE, NL80211_KEYTYPE_PEERKEY, NUM_NL80211_KEYTYPES }; enum nl80211_mfp { NL80211_MFP_NO, NL80211_MFP_REQUIRED, NL80211_MFP_OPTIONAL, }; enum nl80211_wpa_versions { NL80211_WPA_VERSION_1 = 1 << 0, NL80211_WPA_VERSION_2 = 1 << 1, NL80211_WPA_VERSION_3 = 1 << 2, }; # 4440 "../include/uapi/linux/nl80211.h" enum nl80211_key_default_types { __NL80211_KEY_DEFAULT_TYPE_INVALID, NL80211_KEY_DEFAULT_TYPE_UNICAST, NL80211_KEY_DEFAULT_TYPE_MULTICAST, NUM_NL80211_KEY_DEFAULT_TYPES }; # 4473 "../include/uapi/linux/nl80211.h" enum nl80211_key_attributes { __NL80211_KEY_INVALID, NL80211_KEY_DATA, NL80211_KEY_IDX, NL80211_KEY_CIPHER, NL80211_KEY_SEQ, NL80211_KEY_DEFAULT, NL80211_KEY_DEFAULT_MGMT, NL80211_KEY_TYPE, NL80211_KEY_DEFAULT_TYPES, NL80211_KEY_MODE, __NL80211_KEY_AFTER_LAST, NL80211_KEY_MAX = __NL80211_KEY_AFTER_LAST - 1 }; # 4505 "../include/uapi/linux/nl80211.h" enum nl80211_tx_rate_attributes { __NL80211_TXRATE_INVALID, NL80211_TXRATE_LEGACY, NL80211_TXRATE_HT, NL80211_TXRATE_VHT, NL80211_TXRATE_GI, __NL80211_TXRATE_AFTER_LAST, NL80211_TXRATE_MAX = __NL80211_TXRATE_AFTER_LAST - 1 }; # 4524 "../include/uapi/linux/nl80211.h" struct nl80211_txrate_vht { __u16 mcs[8]; }; enum nl80211_txrate_gi { NL80211_TXRATE_DEFAULT_GI, NL80211_TXRATE_FORCE_SGI, NL80211_TXRATE_FORCE_LGI, }; # 4542 "../include/uapi/linux/nl80211.h" enum nl80211_band { NL80211_BAND_2GHZ, NL80211_BAND_5GHZ, NL80211_BAND_60GHZ, NUM_NL80211_BANDS, }; enum nl80211_ps_state { NL80211_PS_DISABLED, NL80211_PS_ENABLED, }; # 4593 "../include/uapi/linux/nl80211.h" enum nl80211_attr_cqm { __NL80211_ATTR_CQM_INVALID, NL80211_ATTR_CQM_RSSI_THOLD, NL80211_ATTR_CQM_RSSI_HYST, NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT, NL80211_ATTR_CQM_PKT_LOSS_EVENT, NL80211_ATTR_CQM_TXE_RATE, NL80211_ATTR_CQM_TXE_PKTS, NL80211_ATTR_CQM_TXE_INTVL, NL80211_ATTR_CQM_BEACON_LOSS_EVENT, NL80211_ATTR_CQM_RSSI_LEVEL, __NL80211_ATTR_CQM_AFTER_LAST, NL80211_ATTR_CQM_MAX = __NL80211_ATTR_CQM_AFTER_LAST - 1 }; # 4618 "../include/uapi/linux/nl80211.h" enum nl80211_cqm_rssi_threshold_event { NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW, NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH, NL80211_CQM_RSSI_BEACON_LOSS_EVENT, }; # 4631 "../include/uapi/linux/nl80211.h" enum nl80211_tx_power_setting { NL80211_TX_POWER_AUTOMATIC, NL80211_TX_POWER_LIMITED, NL80211_TX_POWER_FIXED, }; # 4658 "../include/uapi/linux/nl80211.h" enum nl80211_packet_pattern_attr { __NL80211_PKTPAT_INVALID, NL80211_PKTPAT_MASK, NL80211_PKTPAT_PATTERN, NL80211_PKTPAT_OFFSET, NUM_NL80211_PKTPAT, MAX_NL80211_PKTPAT = NUM_NL80211_PKTPAT - 1, }; # 4681 "../include/uapi/linux/nl80211.h" struct nl80211_pattern_support { __u32 max_patterns; __u32 min_pattern_len; __u32 max_pattern_len; __u32 max_pkt_offset; } __attribute__((packed)); # 4786 "../include/uapi/linux/nl80211.h" enum nl80211_wowlan_triggers { __NL80211_WOWLAN_TRIG_INVALID, NL80211_WOWLAN_TRIG_ANY, NL80211_WOWLAN_TRIG_DISCONNECT, NL80211_WOWLAN_TRIG_MAGIC_PKT, NL80211_WOWLAN_TRIG_PKT_PATTERN, NL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED, NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE, NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST, NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE, NL80211_WOWLAN_TRIG_RFKILL_RELEASE, NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211, NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN, NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023, NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN, NL80211_WOWLAN_TRIG_TCP_CONNECTION, NL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH, NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST, NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS, NL80211_WOWLAN_TRIG_NET_DETECT, NL80211_WOWLAN_TRIG_NET_DETECT_RESULTS, NUM_NL80211_WOWLAN_TRIG, MAX_NL80211_WOWLAN_TRIG = NUM_NL80211_WOWLAN_TRIG - 1 }; # 4846 "../include/uapi/linux/nl80211.h" struct nl80211_wowlan_tcp_data_seq { __u32 start, offset, len; }; # 4857 "../include/uapi/linux/nl80211.h" struct nl80211_wowlan_tcp_data_token { __u32 offset, len; __u8 token_stream[]; }; struct nl80211_wowlan_tcp_data_token_feature { __u32 min_len, max_len, bufsize; }; # 4904 "../include/uapi/linux/nl80211.h" enum nl80211_wowlan_tcp_attrs { __NL80211_WOWLAN_TCP_INVALID, NL80211_WOWLAN_TCP_SRC_IPV4, NL80211_WOWLAN_TCP_DST_IPV4, NL80211_WOWLAN_TCP_DST_MAC, NL80211_WOWLAN_TCP_SRC_PORT, NL80211_WOWLAN_TCP_DST_PORT, NL80211_WOWLAN_TCP_DATA_PAYLOAD, NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ, NL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN, NL80211_WOWLAN_TCP_DATA_INTERVAL, NL80211_WOWLAN_TCP_WAKE_PAYLOAD, NL80211_WOWLAN_TCP_WAKE_MASK, NUM_NL80211_WOWLAN_TCP, MAX_NL80211_WOWLAN_TCP = NUM_NL80211_WOWLAN_TCP - 1 }; # 4932 "../include/uapi/linux/nl80211.h" struct nl80211_coalesce_rule_support { __u32 max_rules; struct nl80211_pattern_support pat; __u32 max_delay; } __attribute__((packed)); # 4949 "../include/uapi/linux/nl80211.h" enum nl80211_attr_coalesce_rule { __NL80211_COALESCE_RULE_INVALID, NL80211_ATTR_COALESCE_RULE_DELAY, NL80211_ATTR_COALESCE_RULE_CONDITION, NL80211_ATTR_COALESCE_RULE_PKT_PATTERN, NUM_NL80211_ATTR_COALESCE_RULE, NL80211_ATTR_COALESCE_RULE_MAX = NUM_NL80211_ATTR_COALESCE_RULE - 1 }; # 4967 "../include/uapi/linux/nl80211.h" enum nl80211_coalesce_condition { NL80211_COALESCE_CONDITION_MATCH, NL80211_COALESCE_CONDITION_NO_MATCH }; # 4982 "../include/uapi/linux/nl80211.h" enum nl80211_iface_limit_attrs { NL80211_IFACE_LIMIT_UNSPEC, NL80211_IFACE_LIMIT_MAX, NL80211_IFACE_LIMIT_TYPES, NUM_NL80211_IFACE_LIMIT, MAX_NL80211_IFACE_LIMIT = NUM_NL80211_IFACE_LIMIT - 1 }; # 5041 "../include/uapi/linux/nl80211.h" enum nl80211_if_combination_attrs { NL80211_IFACE_COMB_UNSPEC, NL80211_IFACE_COMB_LIMITS, NL80211_IFACE_COMB_MAXNUM, NL80211_IFACE_COMB_STA_AP_BI_MATCH, NL80211_IFACE_COMB_NUM_CHANNELS, NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS, NL80211_IFACE_COMB_RADAR_DETECT_REGIONS, NL80211_IFACE_COMB_BI_MIN_GCD, NUM_NL80211_IFACE_COMB, MAX_NL80211_IFACE_COMB = NUM_NL80211_IFACE_COMB - 1 }; # 5075 "../include/uapi/linux/nl80211.h" enum nl80211_plink_state { NL80211_PLINK_LISTEN, NL80211_PLINK_OPN_SNT, NL80211_PLINK_OPN_RCVD, NL80211_PLINK_CNF_RCVD, NL80211_PLINK_ESTAB, NL80211_PLINK_HOLDING, NL80211_PLINK_BLOCKED, NUM_NL80211_PLINK_STATES, MAX_NL80211_PLINK_STATES = NUM_NL80211_PLINK_STATES - 1 }; # 5097 "../include/uapi/linux/nl80211.h" enum plink_actions { NL80211_PLINK_ACTION_NO_ACTION, NL80211_PLINK_ACTION_OPEN, NL80211_PLINK_ACTION_BLOCK, NUM_NL80211_PLINK_ACTIONS, }; # 5119 "../include/uapi/linux/nl80211.h" enum nl80211_rekey_data { __NL80211_REKEY_DATA_INVALID, NL80211_REKEY_DATA_KEK, NL80211_REKEY_DATA_KCK, NL80211_REKEY_DATA_REPLAY_CTR, NUM_NL80211_REKEY_DATA, MAX_NL80211_REKEY_DATA = NUM_NL80211_REKEY_DATA - 1 }; # 5139 "../include/uapi/linux/nl80211.h" enum nl80211_hidden_ssid { NL80211_HIDDEN_SSID_NOT_IN_USE, NL80211_HIDDEN_SSID_ZERO_LEN, NL80211_HIDDEN_SSID_ZERO_CONTENTS }; # 5155 "../include/uapi/linux/nl80211.h" enum nl80211_sta_wme_attr { __NL80211_STA_WME_INVALID, NL80211_STA_WME_UAPSD_QUEUES, NL80211_STA_WME_MAX_SP, __NL80211_STA_WME_AFTER_LAST, NL80211_STA_WME_MAX = __NL80211_STA_WME_AFTER_LAST - 1 }; # 5177 "../include/uapi/linux/nl80211.h" enum nl80211_pmksa_candidate_attr { __NL80211_PMKSA_CANDIDATE_INVALID, NL80211_PMKSA_CANDIDATE_INDEX, NL80211_PMKSA_CANDIDATE_BSSID, NL80211_PMKSA_CANDIDATE_PREAUTH, NUM_NL80211_PMKSA_CANDIDATE, MAX_NL80211_PMKSA_CANDIDATE = NUM_NL80211_PMKSA_CANDIDATE - 1 }; # 5196 "../include/uapi/linux/nl80211.h" enum nl80211_tdls_operation { NL80211_TDLS_DISCOVERY_REQ, NL80211_TDLS_SETUP, NL80211_TDLS_TEARDOWN, NL80211_TDLS_ENABLE_LINK, NL80211_TDLS_DISABLE_LINK, }; # 5305 "../include/uapi/linux/nl80211.h" enum nl80211_feature_flags { NL80211_FEATURE_SK_TX_STATUS = 1 << 0, NL80211_FEATURE_HT_IBSS = 1 << 1, NL80211_FEATURE_INACTIVITY_TIMER = 1 << 2, NL80211_FEATURE_CELL_BASE_REG_HINTS = 1 << 3, NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL = 1 << 4, NL80211_FEATURE_SAE = 1 << 5, NL80211_FEATURE_LOW_PRIORITY_SCAN = 1 << 6, NL80211_FEATURE_SCAN_FLUSH = 1 << 7, NL80211_FEATURE_AP_SCAN = 1 << 8, NL80211_FEATURE_VIF_TXPOWER = 1 << 9, NL80211_FEATURE_NEED_OBSS_SCAN = 1 << 10, NL80211_FEATURE_P2P_GO_CTWIN = 1 << 11, NL80211_FEATURE_P2P_GO_OPPPS = 1 << 12, NL80211_FEATURE_ADVERTISE_CHAN_LIMITS = 1 << 14, NL80211_FEATURE_FULL_AP_CLIENT_STATE = 1 << 15, NL80211_FEATURE_USERSPACE_MPM = 1 << 16, NL80211_FEATURE_ACTIVE_MONITOR = 1 << 17, NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE = 1 << 18, NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES = 1 << 19, NL80211_FEATURE_WFA_TPC_IE_IN_PROBES = 1 << 20, NL80211_FEATURE_QUIET = 1 << 21, NL80211_FEATURE_TX_POWER_INSERTION = 1 << 22, NL80211_FEATURE_ACKTO_ESTIMATION = 1 << 23, NL80211_FEATURE_STATIC_SMPS = 1 << 24, NL80211_FEATURE_DYNAMIC_SMPS = 1 << 25, NL80211_FEATURE_SUPPORTS_WMM_ADMISSION = 1 << 26, NL80211_FEATURE_MAC_ON_CREATE = 1 << 27, NL80211_FEATURE_TDLS_CHANNEL_SWITCH = 1 << 28, NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR = 1 << 29, NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR = 1 << 30, NL80211_FEATURE_ND_RANDOM_MAC_ADDR = 1U << 31, }; # 5451 "../include/uapi/linux/nl80211.h" enum nl80211_ext_feature_index { NL80211_EXT_FEATURE_VHT_IBSS, NL80211_EXT_FEATURE_RRM, NL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER, NL80211_EXT_FEATURE_SCAN_START_TIME, NL80211_EXT_FEATURE_BSS_PARENT_TSF, NL80211_EXT_FEATURE_SET_SCAN_DWELL, NL80211_EXT_FEATURE_BEACON_RATE_LEGACY, NL80211_EXT_FEATURE_BEACON_RATE_HT, NL80211_EXT_FEATURE_BEACON_RATE_VHT, NL80211_EXT_FEATURE_FILS_STA, NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA, NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED, NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI, NL80211_EXT_FEATURE_CQM_RSSI_LIST, NL80211_EXT_FEATURE_FILS_SK_OFFLOAD, NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK, NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X, NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME, NL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP, NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE, NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION, NL80211_EXT_FEATURE_MFP_OPTIONAL, NL80211_EXT_FEATURE_LOW_SPAN_SCAN, NL80211_EXT_FEATURE_LOW_POWER_SCAN, NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN, NL80211_EXT_FEATURE_DFS_OFFLOAD, NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211, NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT, NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT = NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT, NL80211_EXT_FEATURE_TXQS, NL80211_EXT_FEATURE_SCAN_RANDOM_SN, NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT, NL80211_EXT_FEATURE_CAN_REPLACE_PTK0, NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER, NL80211_EXT_FEATURE_AIRTIME_FAIRNESS, NL80211_EXT_FEATURE_AP_PMKSA_CACHING, NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD, NL80211_EXT_FEATURE_EXT_KEY_ID, NL80211_EXT_FEATURE_STA_TX_PWR, NL80211_EXT_FEATURE_SAE_OFFLOAD, NUM_NL80211_EXT_FEATURES, MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1 }; # 5513 "../include/uapi/linux/nl80211.h" enum nl80211_probe_resp_offload_support_attr { NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS = 1<<0, NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2 = 1<<1, NL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P = 1<<2, NL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U = 1<<3, }; enum nl80211_connect_failed_reason { NL80211_CONN_FAIL_MAX_CLIENTS, NL80211_CONN_FAIL_BLOCKED_CLIENT, }; # 5539 "../include/uapi/linux/nl80211.h" enum nl80211_timeout_reason { NL80211_TIMEOUT_UNSPECIFIED, NL80211_TIMEOUT_SCAN, NL80211_TIMEOUT_AUTH, NL80211_TIMEOUT_ASSOC, }; # 5605 "../include/uapi/linux/nl80211.h" enum nl80211_scan_flags { NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0, NL80211_SCAN_FLAG_FLUSH = 1<<1, NL80211_SCAN_FLAG_AP = 1<<2, NL80211_SCAN_FLAG_RANDOM_ADDR = 1<<3, NL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME = 1<<4, NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP = 1<<5, NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE = 1<<6, NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 1<<7, NL80211_SCAN_FLAG_LOW_SPAN = 1<<8, NL80211_SCAN_FLAG_LOW_POWER = 1<<9, NL80211_SCAN_FLAG_HIGH_ACCURACY = 1<<10, NL80211_SCAN_FLAG_RANDOM_SN = 1<<11, NL80211_SCAN_FLAG_MIN_PREQ_CONTENT = 1<<12, }; # 5634 "../include/uapi/linux/nl80211.h" enum nl80211_acl_policy { NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED, NL80211_ACL_POLICY_DENY_UNLESS_LISTED, }; # 5649 "../include/uapi/linux/nl80211.h" enum nl80211_smps_mode { NL80211_SMPS_OFF, NL80211_SMPS_STATIC, NL80211_SMPS_DYNAMIC, __NL80211_SMPS_AFTER_LAST, NL80211_SMPS_MAX = __NL80211_SMPS_AFTER_LAST - 1 }; # 5679 "../include/uapi/linux/nl80211.h" enum nl80211_radar_event { NL80211_RADAR_DETECTED, NL80211_RADAR_CAC_FINISHED, NL80211_RADAR_CAC_ABORTED, NL80211_RADAR_NOP_FINISHED, NL80211_RADAR_PRE_CAC_EXPIRED, NL80211_RADAR_CAC_STARTED, }; # 5699 "../include/uapi/linux/nl80211.h" enum nl80211_dfs_state { NL80211_DFS_USABLE, NL80211_DFS_UNAVAILABLE, NL80211_DFS_AVAILABLE, }; # 5713 "../include/uapi/linux/nl80211.h" enum nl80211_protocol_features { NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP = 1 << 0, }; # 5726 "../include/uapi/linux/nl80211.h" enum nl80211_crit_proto_id { NL80211_CRIT_PROTO_UNSPEC, NL80211_CRIT_PROTO_DHCP, NL80211_CRIT_PROTO_EAPOL, NL80211_CRIT_PROTO_APIPA, NUM_NL80211_CRIT_PROTO }; # 5749 "../include/uapi/linux/nl80211.h" enum nl80211_rxmgmt_flags { NL80211_RXMGMT_FLAG_ANSWERED = 1 << 0, NL80211_RXMGMT_FLAG_EXTERNAL_AUTH = 1 << 1, }; # 5769 "../include/uapi/linux/nl80211.h" struct nl80211_vendor_cmd_info { __u32 vendor_id; __u32 subcmd; }; # 5784 "../include/uapi/linux/nl80211.h" enum nl80211_tdls_peer_capability { NL80211_TDLS_PEER_HT = 1<<0, NL80211_TDLS_PEER_VHT = 1<<1, NL80211_TDLS_PEER_WMM = 1<<2, }; # 5803 "../include/uapi/linux/nl80211.h" enum nl80211_sched_scan_plan { __NL80211_SCHED_SCAN_PLAN_INVALID, NL80211_SCHED_SCAN_PLAN_INTERVAL, NL80211_SCHED_SCAN_PLAN_ITERATIONS, __NL80211_SCHED_SCAN_PLAN_AFTER_LAST, NL80211_SCHED_SCAN_PLAN_MAX = __NL80211_SCHED_SCAN_PLAN_AFTER_LAST - 1 }; # 5821 "../include/uapi/linux/nl80211.h" struct nl80211_bss_select_rssi_adjust { __u8 band; __s8 delta; } __attribute__((packed)); # 5848 "../include/uapi/linux/nl80211.h" enum nl80211_bss_select_attr { __NL80211_BSS_SELECT_ATTR_INVALID, NL80211_BSS_SELECT_ATTR_RSSI, NL80211_BSS_SELECT_ATTR_BAND_PREF, NL80211_BSS_SELECT_ATTR_RSSI_ADJUST, __NL80211_BSS_SELECT_ATTR_AFTER_LAST, NL80211_BSS_SELECT_ATTR_MAX = __NL80211_BSS_SELECT_ATTR_AFTER_LAST - 1 }; # 5868 "../include/uapi/linux/nl80211.h" enum nl80211_nan_function_type { NL80211_NAN_FUNC_PUBLISH, NL80211_NAN_FUNC_SUBSCRIBE, NL80211_NAN_FUNC_FOLLOW_UP, __NL80211_NAN_FUNC_TYPE_AFTER_LAST, NL80211_NAN_FUNC_MAX_TYPE = __NL80211_NAN_FUNC_TYPE_AFTER_LAST - 1, }; # 5886 "../include/uapi/linux/nl80211.h" enum nl80211_nan_publish_type { NL80211_NAN_SOLICITED_PUBLISH = 1 << 0, NL80211_NAN_UNSOLICITED_PUBLISH = 1 << 1, }; # 5900 "../include/uapi/linux/nl80211.h" enum nl80211_nan_func_term_reason { NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST, NL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED, NL80211_NAN_FUNC_TERM_REASON_ERROR, }; # 5952 "../include/uapi/linux/nl80211.h" enum nl80211_nan_func_attributes { __NL80211_NAN_FUNC_INVALID, NL80211_NAN_FUNC_TYPE, NL80211_NAN_FUNC_SERVICE_ID, NL80211_NAN_FUNC_PUBLISH_TYPE, NL80211_NAN_FUNC_PUBLISH_BCAST, NL80211_NAN_FUNC_SUBSCRIBE_ACTIVE, NL80211_NAN_FUNC_FOLLOW_UP_ID, NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID, NL80211_NAN_FUNC_FOLLOW_UP_DEST, NL80211_NAN_FUNC_CLOSE_RANGE, NL80211_NAN_FUNC_TTL, NL80211_NAN_FUNC_SERVICE_INFO, NL80211_NAN_FUNC_SRF, NL80211_NAN_FUNC_RX_MATCH_FILTER, NL80211_NAN_FUNC_TX_MATCH_FILTER, NL80211_NAN_FUNC_INSTANCE_ID, NL80211_NAN_FUNC_TERM_REASON, NUM_NL80211_NAN_FUNC_ATTR, NL80211_NAN_FUNC_ATTR_MAX = NUM_NL80211_NAN_FUNC_ATTR - 1 }; # 5991 "../include/uapi/linux/nl80211.h" enum nl80211_nan_srf_attributes { __NL80211_NAN_SRF_INVALID, NL80211_NAN_SRF_INCLUDE, NL80211_NAN_SRF_BF, NL80211_NAN_SRF_BF_IDX, NL80211_NAN_SRF_MAC_ADDRS, NUM_NL80211_NAN_SRF_ATTR, NL80211_NAN_SRF_ATTR_MAX = NUM_NL80211_NAN_SRF_ATTR - 1, }; # 6016 "../include/uapi/linux/nl80211.h" enum nl80211_nan_match_attributes { __NL80211_NAN_MATCH_INVALID, NL80211_NAN_MATCH_FUNC_LOCAL, NL80211_NAN_MATCH_FUNC_PEER, NUM_NL80211_NAN_MATCH_ATTR, NL80211_NAN_MATCH_ATTR_MAX = NUM_NL80211_NAN_MATCH_ATTR - 1 }; enum nl80211_external_auth_action { NL80211_EXTERNAL_AUTH_START, NL80211_EXTERNAL_AUTH_ABORT, }; # 6051 "../include/uapi/linux/nl80211.h" enum nl80211_ftm_responder_attributes { __NL80211_FTM_RESP_ATTR_INVALID, NL80211_FTM_RESP_ATTR_ENABLED, NL80211_FTM_RESP_ATTR_LCI, NL80211_FTM_RESP_ATTR_CIVICLOC, __NL80211_FTM_RESP_ATTR_LAST, NL80211_FTM_RESP_ATTR_MAX = __NL80211_FTM_RESP_ATTR_LAST - 1, }; # 6091 "../include/uapi/linux/nl80211.h" enum nl80211_ftm_responder_stats { __NL80211_FTM_STATS_INVALID, NL80211_FTM_STATS_SUCCESS_NUM, NL80211_FTM_STATS_PARTIAL_NUM, NL80211_FTM_STATS_FAILED_NUM, NL80211_FTM_STATS_ASAP_NUM, NL80211_FTM_STATS_NON_ASAP_NUM, NL80211_FTM_STATS_TOTAL_DURATION_MSEC, NL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM, NL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM, NL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM, NL80211_FTM_STATS_PAD, __NL80211_FTM_STATS_AFTER_LAST, NL80211_FTM_STATS_MAX = __NL80211_FTM_STATS_AFTER_LAST - 1 }; # 6116 "../include/uapi/linux/nl80211.h" enum nl80211_preamble { NL80211_PREAMBLE_LEGACY, NL80211_PREAMBLE_HT, NL80211_PREAMBLE_VHT, NL80211_PREAMBLE_DMG, }; # 6133 "../include/uapi/linux/nl80211.h" enum nl80211_peer_measurement_type { NL80211_PMSR_TYPE_INVALID, NL80211_PMSR_TYPE_FTM, NUM_NL80211_PMSR_TYPES, NL80211_PMSR_TYPE_MAX = NUM_NL80211_PMSR_TYPES - 1 }; # 6150 "../include/uapi/linux/nl80211.h" enum nl80211_peer_measurement_status { NL80211_PMSR_STATUS_SUCCESS, NL80211_PMSR_STATUS_REFUSED, NL80211_PMSR_STATUS_TIMEOUT, NL80211_PMSR_STATUS_FAILURE, }; # 6170 "../include/uapi/linux/nl80211.h" enum nl80211_peer_measurement_req { __NL80211_PMSR_REQ_ATTR_INVALID, NL80211_PMSR_REQ_ATTR_DATA, NL80211_PMSR_REQ_ATTR_GET_AP_TSF, NUM_NL80211_PMSR_REQ_ATTRS, NL80211_PMSR_REQ_ATTR_MAX = NUM_NL80211_PMSR_REQ_ATTRS - 1 }; # 6206 "../include/uapi/linux/nl80211.h" enum nl80211_peer_measurement_resp { __NL80211_PMSR_RESP_ATTR_INVALID, NL80211_PMSR_RESP_ATTR_DATA, NL80211_PMSR_RESP_ATTR_STATUS, NL80211_PMSR_RESP_ATTR_HOST_TIME, NL80211_PMSR_RESP_ATTR_AP_TSF, NL80211_PMSR_RESP_ATTR_FINAL, NL80211_PMSR_RESP_ATTR_PAD, NUM_NL80211_PMSR_RESP_ATTRS, NL80211_PMSR_RESP_ATTR_MAX = NUM_NL80211_PMSR_RESP_ATTRS - 1 }; # 6238 "../include/uapi/linux/nl80211.h" enum nl80211_peer_measurement_peer_attrs { __NL80211_PMSR_PEER_ATTR_INVALID, NL80211_PMSR_PEER_ATTR_ADDR, NL80211_PMSR_PEER_ATTR_CHAN, NL80211_PMSR_PEER_ATTR_REQ, NL80211_PMSR_PEER_ATTR_RESP, NUM_NL80211_PMSR_PEER_ATTRS, NL80211_PMSR_PEER_ATTR_MAX = NUM_NL80211_PMSR_PEER_ATTRS - 1, }; # 6275 "../include/uapi/linux/nl80211.h" enum nl80211_peer_measurement_attrs { __NL80211_PMSR_ATTR_INVALID, NL80211_PMSR_ATTR_MAX_PEERS, NL80211_PMSR_ATTR_REPORT_AP_TSF, NL80211_PMSR_ATTR_RANDOMIZE_MAC_ADDR, NL80211_PMSR_ATTR_TYPE_CAPA, NL80211_PMSR_ATTR_PEERS, NUM_NL80211_PMSR_ATTR, NL80211_PMSR_ATTR_MAX = NUM_NL80211_PMSR_ATTR - 1 }; # 6317 "../include/uapi/linux/nl80211.h" enum nl80211_peer_measurement_ftm_capa { __NL80211_PMSR_FTM_CAPA_ATTR_INVALID, NL80211_PMSR_FTM_CAPA_ATTR_ASAP, NL80211_PMSR_FTM_CAPA_ATTR_NON_ASAP, NL80211_PMSR_FTM_CAPA_ATTR_REQ_LCI, NL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC, NL80211_PMSR_FTM_CAPA_ATTR_PREAMBLES, NL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS, NL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT, NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST, NUM_NL80211_PMSR_FTM_CAPA_ATTR, NL80211_PMSR_FTM_CAPA_ATTR_MAX = NUM_NL80211_PMSR_FTM_CAPA_ATTR - 1 }; # 6361 "../include/uapi/linux/nl80211.h" enum nl80211_peer_measurement_ftm_req { __NL80211_PMSR_FTM_REQ_ATTR_INVALID, NL80211_PMSR_FTM_REQ_ATTR_ASAP, NL80211_PMSR_FTM_REQ_ATTR_PREAMBLE, NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP, NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD, NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION, NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST, NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES, NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI, NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC, NUM_NL80211_PMSR_FTM_REQ_ATTR, NL80211_PMSR_FTM_REQ_ATTR_MAX = NUM_NL80211_PMSR_FTM_REQ_ATTR - 1 }; # 6395 "../include/uapi/linux/nl80211.h" enum nl80211_peer_measurement_ftm_failure_reasons { NL80211_PMSR_FTM_FAILURE_UNSPECIFIED, NL80211_PMSR_FTM_FAILURE_NO_RESPONSE, NL80211_PMSR_FTM_FAILURE_REJECTED, NL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL, NL80211_PMSR_FTM_FAILURE_PEER_NOT_CAPABLE, NL80211_PMSR_FTM_FAILURE_INVALID_TIMESTAMP, NL80211_PMSR_FTM_FAILURE_PEER_BUSY, NL80211_PMSR_FTM_FAILURE_BAD_CHANGED_PARAMS, }; # 6461 "../include/uapi/linux/nl80211.h" enum nl80211_peer_measurement_ftm_resp { __NL80211_PMSR_FTM_RESP_ATTR_INVALID, NL80211_PMSR_FTM_RESP_ATTR_FAIL_REASON, NL80211_PMSR_FTM_RESP_ATTR_BURST_INDEX, NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS, NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES, NL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME, NL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP, NL80211_PMSR_FTM_RESP_ATTR_BURST_DURATION, NL80211_PMSR_FTM_RESP_ATTR_FTMS_PER_BURST, NL80211_PMSR_FTM_RESP_ATTR_RSSI_AVG, NL80211_PMSR_FTM_RESP_ATTR_RSSI_SPREAD, NL80211_PMSR_FTM_RESP_ATTR_TX_RATE, NL80211_PMSR_FTM_RESP_ATTR_RX_RATE, NL80211_PMSR_FTM_RESP_ATTR_RTT_AVG, NL80211_PMSR_FTM_RESP_ATTR_RTT_VARIANCE, NL80211_PMSR_FTM_RESP_ATTR_RTT_SPREAD, NL80211_PMSR_FTM_RESP_ATTR_DIST_AVG, NL80211_PMSR_FTM_RESP_ATTR_DIST_VARIANCE, NL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD, NL80211_PMSR_FTM_RESP_ATTR_LCI, NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC, NL80211_PMSR_FTM_RESP_ATTR_PAD, NUM_NL80211_PMSR_FTM_RESP_ATTR, NL80211_PMSR_FTM_RESP_ATTR_MAX = NUM_NL80211_PMSR_FTM_RESP_ATTR - 1 }; # 69 "../drivers/net/wireless/intel/iwlwifi/iwl-config.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-csr.h" 1 # 304 "../drivers/net/wireless/intel/iwlwifi/iwl-csr.h" enum { SILICON_A_STEP = 0, SILICON_B_STEP, SILICON_C_STEP, }; # 553 "../drivers/net/wireless/intel/iwlwifi/iwl-csr.h" enum dtd_diode_reg { DTS_DIODE_REG_DIG_VAL = 0x000000FF, DTS_DIODE_REG_VREF_LOW = 0x0000FF00, DTS_DIODE_REG_VREF_HIGH = 0x00FF0000, DTS_DIODE_REG_VREF_ID = 0x03000000, DTS_DIODE_REG_PASS_ONCE = 0x80000000, DTS_DIODE_REG_FLAGS_MSK = 0xFF000000, DTS_DIODE_REG_FLAGS_VREFS_ID_POS = 0, DTS_DIODE_REG_FLAGS_VREFS_ID = 0x00000003, DTS_DIODE_REG_FLAGS_PASS_ONCE_POS = 7, DTS_DIODE_REG_FLAGS_PASS_ONCE = 0x00000080, }; # 588 "../drivers/net/wireless/intel/iwlwifi/iwl-csr.h" enum msix_fh_int_causes { MSIX_FH_INT_CAUSES_Q0 = ((((1UL))) << (0)), MSIX_FH_INT_CAUSES_Q1 = ((((1UL))) << (1)), MSIX_FH_INT_CAUSES_D2S_CH0_NUM = ((((1UL))) << (16)), MSIX_FH_INT_CAUSES_D2S_CH1_NUM = ((((1UL))) << (17)), MSIX_FH_INT_CAUSES_S2D = ((((1UL))) << (19)), MSIX_FH_INT_CAUSES_FH_ERR = ((((1UL))) << (21)), }; enum msix_hw_int_causes { MSIX_HW_INT_CAUSES_REG_ALIVE = ((((1UL))) << (0)), MSIX_HW_INT_CAUSES_REG_WAKEUP = ((((1UL))) << (1)), MSIX_HW_INT_CAUSES_REG_IPC = ((((1UL))) << (1)), MSIX_HW_INT_CAUSES_REG_IML = ((((1UL))) << (2)), MSIX_HW_INT_CAUSES_REG_SW_ERR_V2 = ((((1UL))) << (5)), MSIX_HW_INT_CAUSES_REG_CT_KILL = ((((1UL))) << (6)), MSIX_HW_INT_CAUSES_REG_RF_KILL = ((((1UL))) << (7)), MSIX_HW_INT_CAUSES_REG_PERIODIC = ((((1UL))) << (8)), MSIX_HW_INT_CAUSES_REG_SW_ERR = ((((1UL))) << (25)), MSIX_HW_INT_CAUSES_REG_SCD = ((((1UL))) << (26)), MSIX_HW_INT_CAUSES_REG_FH_TX = ((((1UL))) << (27)), MSIX_HW_INT_CAUSES_REG_HW_ERR = ((((1UL))) << (29)), MSIX_HW_INT_CAUSES_REG_HAP = ((((1UL))) << (30)), }; # 70 "../drivers/net/wireless/intel/iwlwifi/iwl-config.h" 2 enum iwl_device_family { IWL_DEVICE_FAMILY_UNDEFINED, IWL_DEVICE_FAMILY_1000, IWL_DEVICE_FAMILY_100, IWL_DEVICE_FAMILY_2000, IWL_DEVICE_FAMILY_2030, IWL_DEVICE_FAMILY_105, IWL_DEVICE_FAMILY_135, IWL_DEVICE_FAMILY_5000, IWL_DEVICE_FAMILY_5150, IWL_DEVICE_FAMILY_6000, IWL_DEVICE_FAMILY_6000i, IWL_DEVICE_FAMILY_6005, IWL_DEVICE_FAMILY_6030, IWL_DEVICE_FAMILY_6050, IWL_DEVICE_FAMILY_6150, IWL_DEVICE_FAMILY_7000, IWL_DEVICE_FAMILY_8000, IWL_DEVICE_FAMILY_9000, IWL_DEVICE_FAMILY_22000, IWL_DEVICE_FAMILY_22560, IWL_DEVICE_FAMILY_AX210, }; # 104 "../drivers/net/wireless/intel/iwlwifi/iwl-config.h" enum iwl_led_mode { IWL_LED_DEFAULT, IWL_LED_RF_STATE, IWL_LED_BLINK, IWL_LED_DISABLE, }; enum iwl_nvm_type { IWL_NVM, IWL_NVM_EXT, IWL_NVM_SDP, }; # 157 "../drivers/net/wireless/intel/iwlwifi/iwl-config.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 num_of_ant(u8 mask) { return !!((mask) & ((((1UL))) << (0))) + !!((mask) & ((((1UL))) << (1))) + !!((mask) & ((((1UL))) << (2))); } # 178 "../drivers/net/wireless/intel/iwlwifi/iwl-config.h" struct iwl_base_params { unsigned int wd_timeout; u16 eeprom_size; u16 max_event_log_size; u8 pll_cfg:1, shadow_ram_support:1, shadow_reg_enable:1, pcie_l1_allowed:1, apmg_wake_up_wa:1, scd_chain_ext_wa:1; u16 num_of_queues; u32 max_tfd_queue_size; u8 max_ll_items; u8 led_compensation; }; struct iwl_ht_params { u8 ht_greenfield_support:1, stbc:1, ldpc:1, use_rts_for_aggregation:1; u8 ht40_bands; }; struct iwl_tt_tx_backoff { s32 temperature; u32 backoff; }; # 240 "../drivers/net/wireless/intel/iwlwifi/iwl-config.h" struct iwl_tt_params { u32 ct_kill_entry; u32 ct_kill_exit; u32 ct_kill_duration; u32 dynamic_smps_entry; u32 dynamic_smps_exit; u32 tx_protection_entry; u32 tx_protection_exit; struct iwl_tt_tx_backoff tx_backoff[6]; u8 support_ct_kill:1, support_dynamic_smps:1, support_tx_protection:1, support_tx_backoff:1; }; # 273 "../drivers/net/wireless/intel/iwlwifi/iwl-config.h" struct iwl_eeprom_params { const u8 regulatory_bands[7]; bool enhanced_txpower; }; struct iwl_pwr_tx_backoff { u32 pwr; u32 backoff; }; # 318 "../drivers/net/wireless/intel/iwlwifi/iwl-config.h" struct iwl_csr_params { u8 flag_sw_reset; u8 flag_mac_clock_ready; u8 flag_init_done; u8 flag_mac_access_req; u8 flag_val_mac_access_en; u8 flag_master_dis; u8 flag_stop_master; u8 addr_sw_reset; u32 mac_addr0_otp; u32 mac_addr1_otp; u32 mac_addr0_strap; u32 mac_addr1_strap; }; # 394 "../drivers/net/wireless/intel/iwlwifi/iwl-config.h" struct iwl_cfg { const char *name; const char *fw_name_pre; const struct iwl_base_params *base_params; const struct iwl_ht_params *ht_params; const struct iwl_eeprom_params *eeprom_params; const struct iwl_pwr_tx_backoff *pwr_tx_backoffs; const char *default_nvm_file_C_step; const struct iwl_tt_params *thermal_params; const struct iwl_csr_params *csr; enum iwl_device_family device_family; enum iwl_led_mode led_mode; enum iwl_nvm_type nvm_type; u32 max_data_size; u32 max_inst_size; netdev_features_t features; u32 dccm_offset; u32 dccm_len; u32 dccm2_offset; u32 dccm2_len; u32 smem_offset; u32 smem_len; u32 soc_latency; u16 nvm_ver; u16 nvm_calib_ver; u32 rx_with_siso_diversity:1, bt_shared_single_ant:1, internal_wimax_coex:1, host_interrupt_operation_mode:1, high_temp:1, mac_addr_from_csr:1, lp_xtal_workaround:1, disable_dummy_notification:1, apmg_not_supported:1, mq_rx_supported:1, vht_mu_mimo_supported:1, rf_id:1, integrated:1, use_tfh:1, gen2:1, cdb:1, dbgc_supported:1, bisr_workaround:1, uhb_supported:1; u8 valid_tx_ant; u8 valid_rx_ant; u8 non_shared_ant; u8 nvm_hw_section_num; u8 max_rx_agg_size; u8 max_tx_agg_size; u8 max_ht_ampdu_exponent; u8 max_vht_ampdu_exponent; u8 ucode_api_max; u8 ucode_api_min; u32 min_umac_error_event_table; u32 extra_phy_cfg_flags; u32 d3_debug_data_base_addr; u32 d3_debug_data_length; u32 min_txq_size; u32 umac_prph_offset; u32 fw_mon_smem_write_ptr_addr; u32 fw_mon_smem_write_ptr_msk; u32 fw_mon_smem_cycle_cnt_ptr_addr; u32 fw_mon_smem_cycle_cnt_ptr_msk; u32 gp2_reg_addr; u32 min_256_ba_txq_size; }; extern const struct iwl_csr_params iwl_csr_v1; extern const struct iwl_csr_params iwl_csr_v2; extern const struct iwl_cfg iwl5300_agn_cfg; extern const struct iwl_cfg iwl5100_agn_cfg; extern const struct iwl_cfg iwl5350_agn_cfg; extern const struct iwl_cfg iwl5100_bgn_cfg; extern const struct iwl_cfg iwl5100_abg_cfg; extern const struct iwl_cfg iwl5150_agn_cfg; extern const struct iwl_cfg iwl5150_abg_cfg; extern const struct iwl_cfg iwl6005_2agn_cfg; extern const struct iwl_cfg iwl6005_2abg_cfg; extern const struct iwl_cfg iwl6005_2bg_cfg; extern const struct iwl_cfg iwl6005_2agn_sff_cfg; extern const struct iwl_cfg iwl6005_2agn_d_cfg; extern const struct iwl_cfg iwl6005_2agn_mow1_cfg; extern const struct iwl_cfg iwl6005_2agn_mow2_cfg; extern const struct iwl_cfg iwl1030_bgn_cfg; extern const struct iwl_cfg iwl1030_bg_cfg; extern const struct iwl_cfg iwl6030_2agn_cfg; extern const struct iwl_cfg iwl6030_2abg_cfg; extern const struct iwl_cfg iwl6030_2bgn_cfg; extern const struct iwl_cfg iwl6030_2bg_cfg; extern const struct iwl_cfg iwl6000i_2agn_cfg; extern const struct iwl_cfg iwl6000i_2abg_cfg; extern const struct iwl_cfg iwl6000i_2bg_cfg; extern const struct iwl_cfg iwl6000_3agn_cfg; extern const struct iwl_cfg iwl6050_2agn_cfg; extern const struct iwl_cfg iwl6050_2abg_cfg; extern const struct iwl_cfg iwl6150_bgn_cfg; extern const struct iwl_cfg iwl6150_bg_cfg; extern const struct iwl_cfg iwl1000_bgn_cfg; extern const struct iwl_cfg iwl1000_bg_cfg; extern const struct iwl_cfg iwl100_bgn_cfg; extern const struct iwl_cfg iwl100_bg_cfg; extern const struct iwl_cfg iwl130_bgn_cfg; extern const struct iwl_cfg iwl130_bg_cfg; extern const struct iwl_cfg iwl2000_2bgn_cfg; extern const struct iwl_cfg iwl2000_2bgn_d_cfg; extern const struct iwl_cfg iwl2030_2bgn_cfg; extern const struct iwl_cfg iwl6035_2agn_cfg; extern const struct iwl_cfg iwl6035_2agn_sff_cfg; extern const struct iwl_cfg iwl105_bgn_cfg; extern const struct iwl_cfg iwl105_bgn_d_cfg; extern const struct iwl_cfg iwl135_bgn_cfg; extern const struct iwl_cfg iwl7260_2ac_cfg; extern const struct iwl_cfg iwl7260_2ac_cfg_high_temp; extern const struct iwl_cfg iwl7260_2n_cfg; extern const struct iwl_cfg iwl7260_n_cfg; extern const struct iwl_cfg iwl3160_2ac_cfg; extern const struct iwl_cfg iwl3160_2n_cfg; extern const struct iwl_cfg iwl3160_n_cfg; extern const struct iwl_cfg iwl3165_2ac_cfg; extern const struct iwl_cfg iwl3168_2ac_cfg; extern const struct iwl_cfg iwl7265_2ac_cfg; extern const struct iwl_cfg iwl7265_2n_cfg; extern const struct iwl_cfg iwl7265_n_cfg; extern const struct iwl_cfg iwl7265d_2ac_cfg; extern const struct iwl_cfg iwl7265d_2n_cfg; extern const struct iwl_cfg iwl7265d_n_cfg; extern const struct iwl_cfg iwl8260_2n_cfg; extern const struct iwl_cfg iwl8260_2ac_cfg; extern const struct iwl_cfg iwl8265_2ac_cfg; extern const struct iwl_cfg iwl8275_2ac_cfg; extern const struct iwl_cfg iwl4165_2ac_cfg; extern const struct iwl_cfg iwl9160_2ac_cfg; extern const struct iwl_cfg iwl9260_2ac_cfg; extern const struct iwl_cfg iwl9260_2ac_160_cfg; extern const struct iwl_cfg iwl9260_killer_2ac_cfg; extern const struct iwl_cfg iwl9270_2ac_cfg; extern const struct iwl_cfg iwl9460_2ac_cfg; extern const struct iwl_cfg iwl9560_2ac_cfg; extern const struct iwl_cfg iwl9560_2ac_cfg_quz_a0_jf_b0_soc; extern const struct iwl_cfg iwl9560_2ac_160_cfg; extern const struct iwl_cfg iwl9560_2ac_160_cfg_quz_a0_jf_b0_soc; extern const struct iwl_cfg iwl9460_2ac_cfg_soc; extern const struct iwl_cfg iwl9461_2ac_cfg_soc; extern const struct iwl_cfg iwl9461_2ac_cfg_quz_a0_jf_b0_soc; extern const struct iwl_cfg iwl9462_2ac_cfg_soc; extern const struct iwl_cfg iwl9462_2ac_cfg_quz_a0_jf_b0_soc; extern const struct iwl_cfg iwl9560_2ac_cfg_soc; extern const struct iwl_cfg iwl9560_2ac_160_cfg_soc; extern const struct iwl_cfg iwl9560_killer_2ac_cfg_soc; extern const struct iwl_cfg iwl9560_killer_s_2ac_cfg_soc; extern const struct iwl_cfg iwl9560_killer_i_2ac_cfg_quz_a0_jf_b0_soc; extern const struct iwl_cfg iwl9560_killer_s_2ac_cfg_quz_a0_jf_b0_soc; extern const struct iwl_cfg iwl9460_2ac_cfg_shared_clk; extern const struct iwl_cfg iwl9461_2ac_cfg_shared_clk; extern const struct iwl_cfg iwl9462_2ac_cfg_shared_clk; extern const struct iwl_cfg iwl9560_2ac_cfg_shared_clk; extern const struct iwl_cfg iwl9560_2ac_160_cfg_shared_clk; extern const struct iwl_cfg iwl9560_killer_2ac_cfg_shared_clk; extern const struct iwl_cfg iwl9560_killer_s_2ac_cfg_shared_clk; extern const struct iwl_cfg iwl22000_2ac_cfg_hr; extern const struct iwl_cfg iwl22000_2ac_cfg_hr_cdb; extern const struct iwl_cfg iwl22000_2ac_cfg_jf; extern const struct iwl_cfg iwl_ax101_cfg_qu_hr; extern const struct iwl_cfg iwl_ax101_cfg_quz_hr; extern const struct iwl_cfg iwl22000_2ax_cfg_hr; extern const struct iwl_cfg iwl_ax200_cfg_cc; extern const struct iwl_cfg iwl_ax201_cfg_qu_hr; extern const struct iwl_cfg iwl_ax201_cfg_quz_hr; extern const struct iwl_cfg iwl_ax1650i_cfg_quz_hr; extern const struct iwl_cfg iwl_ax1650s_cfg_quz_hr; extern const struct iwl_cfg killer1650s_2ax_cfg_qu_b0_hr_b0; extern const struct iwl_cfg killer1650i_2ax_cfg_qu_b0_hr_b0; extern const struct iwl_cfg killer1650x_2ax_cfg; extern const struct iwl_cfg killer1650w_2ax_cfg; extern const struct iwl_cfg iwl9461_2ac_cfg_qu_b0_jf_b0; extern const struct iwl_cfg iwl9462_2ac_cfg_qu_b0_jf_b0; extern const struct iwl_cfg iwl9560_2ac_cfg_qu_b0_jf_b0; extern const struct iwl_cfg iwl9560_2ac_160_cfg_qu_b0_jf_b0; extern const struct iwl_cfg killer1550i_2ac_cfg_qu_b0_jf_b0; extern const struct iwl_cfg killer1550s_2ac_cfg_qu_b0_jf_b0; extern const struct iwl_cfg iwl22000_2ax_cfg_jf; extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_a0_f0; extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_b0_f0; extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_b0; extern const struct iwl_cfg iwl9560_2ac_cfg_qnj_jf_b0; extern const struct iwl_cfg iwl22000_2ax_cfg_qnj_hr_a0; extern const struct iwl_cfg iwlax210_2ax_cfg_so_jf_a0; extern const struct iwl_cfg iwlax210_2ax_cfg_so_hr_a0; extern const struct iwl_cfg iwlax211_2ax_cfg_so_gf_a0; extern const struct iwl_cfg iwlax210_2ax_cfg_ty_gf_a0; extern const struct iwl_cfg iwlax411_2ax_cfg_so_gf4_a0; # 64 "../drivers/net/wireless/intel/iwlwifi/fw/runtime.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" 1 # 72 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-debug.h" 1 # 18 "../drivers/net/wireless/intel/iwlwifi/iwl-debug.h" # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-modparams.h" 1 # 67 "../drivers/net/wireless/intel/iwlwifi/iwl-modparams.h" extern struct iwl_mod_params iwlwifi_mod_params; enum iwl_power_level { IWL_POWER_INDEX_1, IWL_POWER_INDEX_2, IWL_POWER_INDEX_3, IWL_POWER_INDEX_4, IWL_POWER_INDEX_5, IWL_POWER_NUM }; enum iwl_disable_11n { IWL_DISABLE_HT_ALL = ((((1UL))) << (0)), IWL_DISABLE_HT_TXAGG = ((((1UL))) << (1)), IWL_DISABLE_HT_RXAGG = ((((1UL))) << (2)), IWL_ENABLE_HT_TXAGG = ((((1UL))) << (3)), }; enum iwl_amsdu_size { IWL_AMSDU_DEF = 0, IWL_AMSDU_4K = 1, IWL_AMSDU_8K = 2, IWL_AMSDU_12K = 3, IWL_AMSDU_2K = 4, }; enum iwl_uapsd_disable { IWL_DISABLE_UAPSD_BSS = ((((1UL))) << (0)), IWL_DISABLE_UAPSD_P2P_CLIENT = ((((1UL))) << (1)), }; # 127 "../drivers/net/wireless/intel/iwlwifi/iwl-modparams.h" struct iwl_mod_params { int swcrypto; unsigned int disable_11n; int amsdu_size; bool fw_restart; bool bt_coex_active; int led_mode; bool power_save; int power_level; u32 debug_level; int antenna_coupling; char *nvm_file; u32 uapsd_disable; bool d0i3_disable; unsigned int d0i3_timeout; bool lar_disable; bool fw_monitor; bool disable_11ac; bool disable_11ax; bool remove_when_gone; bool enable_ini; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_enable_rx_ampdu(void) { if (iwlwifi_mod_params.disable_11n & IWL_DISABLE_HT_RXAGG) return false; return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_enable_tx_ampdu(void) { if (iwlwifi_mod_params.disable_11n & IWL_DISABLE_HT_TXAGG) return false; if (iwlwifi_mod_params.disable_11n & IWL_ENABLE_HT_TXAGG) return true; return true; } # 19 "../drivers/net/wireless/intel/iwlwifi/iwl-debug.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_have_debug_level(u32 level) { return iwlwifi_mod_params.debug_level & level; } struct device; void __iwl_err(struct device *dev, bool rfkill_prefix, bool only_trace, const char *fmt, ...) __attribute__((__format__(printf, 4, 5))); void __iwl_warn(struct device *dev, const char *fmt, ...) __attribute__((__format__(printf, 2, 3))); void __iwl_info(struct device *dev, const char *fmt, ...) __attribute__((__format__(printf, 2, 3))); void __iwl_crit(struct device *dev, const char *fmt, ...) __attribute__((__format__(printf, 2, 3))); # 65 "../drivers/net/wireless/intel/iwlwifi/iwl-debug.h" void __iwl_dbg(struct device *dev, u32 level, bool limit, const char *function, const char *fmt, ...) __attribute__((__format__(printf, 5, 6))); # 73 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/fw/img.h" 1 # 68 "../drivers/net/wireless/intel/iwlwifi/fw/img.h" # 1 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" 1 # 70 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" struct iwl_fw_ini_header { __le32 tlv_version; __le32 apply_point; u8 data[]; } __attribute__((__packed__)); # 89 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" struct iwl_fw_ini_allocation_tlv { struct iwl_fw_ini_header header; __le32 allocation_id; __le32 buffer_location; __le32 size; __le32 max_fragments; __le32 min_frag_size; } __attribute__((__packed__)); # 105 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" enum iwl_fw_ini_dbg_domain { IWL_FW_INI_DBG_DOMAIN_ALWAYS_ON = 0, IWL_FW_INI_DBG_DOMAIN_REPORT_PS, }; # 118 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" struct iwl_fw_ini_hcmd { u8 id; u8 group; __le16 reserved; u8 data[0]; } __attribute__((__packed__)); # 136 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" struct iwl_fw_ini_hcmd_tlv { struct iwl_fw_ini_header header; __le32 domain; __le32 period_msec; struct iwl_fw_ini_hcmd hcmd; } __attribute__((__packed__)); struct iwl_fw_ini_debug_flow_tlv { struct iwl_fw_ini_header header; __le32 debug_flow_cfg; } __attribute__((__packed__)); # 163 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" struct iwl_fw_ini_region_cfg_dhc { __le32 id_and_grp; __le32 desc; } __attribute__((__packed__)); struct iwl_fw_ini_region_cfg_internal { __le32 num_of_ranges; __le32 range_data_size; } __attribute__((__packed__)); # 190 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" struct iwl_fw_ini_region_cfg_fifos { __le32 fid1; __le32 fid2; __le32 num_of_registers; __le32 header_only; } __attribute__((__packed__)); # 215 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" struct iwl_fw_ini_region_cfg { __le32 region_id; __le32 region_type; __le32 domain; __le32 name_len; u8 name[32]; union { struct iwl_fw_ini_region_cfg_internal internal; __le32 allocation_id; struct iwl_fw_ini_region_cfg_fifos fifos; struct iwl_fw_ini_region_cfg_dhc dhc_desc; __le32 notif_id_and_grp; }; __le32 offset; __le32 start_addr[]; } __attribute__((__packed__)); # 240 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" struct iwl_fw_ini_region_tlv { struct iwl_fw_ini_header header; __le32 num_regions; struct iwl_fw_ini_region_cfg region_config[]; } __attribute__((__packed__)); # 266 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" struct iwl_fw_ini_trigger { __le32 trigger_id; __le32 override_trig; __le32 dump_delay; __le32 occurrences; __le32 reserved; __le32 ignore_consec; __le32 force_restart; __le32 multi_dut; __le32 trigger_data; __le32 num_regions; __le32 data[]; } __attribute__((__packed__)); # 288 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" struct iwl_fw_ini_trigger_tlv { struct iwl_fw_ini_header header; __le32 num_triggers; struct iwl_fw_ini_trigger trigger_config[]; } __attribute__((__packed__)); # 308 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" struct iwl_fw_ini_debug_info_tlv { struct iwl_fw_ini_header header; __le32 img_name_len; u8 img_name[32]; __le32 dbg_cfg_name_len; u8 dbg_cfg_name[64]; } __attribute__((__packed__)); # 359 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" enum iwl_fw_ini_trigger_id { IWL_FW_TRIGGER_ID_INVALID = 0, IWL_FW_TRIGGER_ID_FW_ASSERT = 1, IWL_FW_TRIGGER_ID_FW_HW_ERROR = 2, IWL_FW_TRIGGER_ID_FW_TFD_Q_HANG = 3, IWL_FW_TRIGGER_ID_FW_DEBUG_HOST_TRIGGER = 4, IWL_FW_TRIGGER_ID_FW_GENERIC_NOTIFICATION = 5, IWL_FW_TRIGGER_ID_USER_TRIGGER = 6, IWL_FW_TRIGGER_ID_PERIODIC_TRIGGER = 7, IWL_FW_TRIGGER_ID_HOST_PEER_CLIENT_INACTIVITY = 8, IWL_FW_TRIGGER_ID_HOST_TX_LATENCY_THRESHOLD_CROSSED = 9, IWL_FW_TRIGGER_ID_HOST_TX_RESPONSE_STATUS_FAILED = 10, IWL_FW_TRIGGER_ID_HOST_OS_REQ_DEAUTH_PEER = 11, IWL_FW_TRIGGER_ID_HOST_STOP_GO_REQUEST = 12, IWL_FW_TRIGGER_ID_HOST_START_GO_REQUEST = 13, IWL_FW_TRIGGER_ID_HOST_JOIN_GROUP_REQUEST = 14, IWL_FW_TRIGGER_ID_HOST_SCAN_START = 15, IWL_FW_TRIGGER_ID_HOST_SCAN_SUBMITTED = 16, IWL_FW_TRIGGER_ID_HOST_SCAN_PARAMS = 17, IWL_FW_TRIGGER_ID_HOST_CHECK_FOR_HANG = 18, IWL_FW_TRIGGER_ID_HOST_BAR_RECEIVED = 19, IWL_FW_TRIGGER_ID_HOST_AGG_TX_RESPONSE_STATUS_FAILED = 20, IWL_FW_TRIGGER_ID_HOST_EAPOL_TX_RESPONSE_FAILED = 21, IWL_FW_TRIGGER_ID_HOST_FAKE_TX_RESPONSE_SUSPECTED = 22, IWL_FW_TRIGGER_ID_HOST_AUTH_REQ_FROM_ASSOC_CLIENT = 23, IWL_FW_TRIGGER_ID_HOST_ROAM_COMPLETE = 24, IWL_FW_TRIGGER_ID_HOST_AUTH_ASSOC_FAST_FAILED = 25, IWL_FW_TRIGGER_ID_HOST_D3_START = 26, IWL_FW_TRIGGER_ID_HOST_D3_END = 27, IWL_FW_TRIGGER_ID_HOST_BSS_MISSED_BEACONS = 28, IWL_FW_TRIGGER_ID_HOST_P2P_CLIENT_MISSED_BEACONS = 29, IWL_FW_TRIGGER_ID_HOST_PEER_CLIENT_TX_FAILURES = 30, IWL_FW_TRIGGER_ID_HOST_TX_WFD_ACTION_FRAME_FAILED = 31, IWL_FW_TRIGGER_ID_HOST_AUTH_ASSOC_FAILED = 32, IWL_FW_TRIGGER_ID_HOST_SCAN_COMPLETE = 33, IWL_FW_TRIGGER_ID_HOST_SCAN_ABORT = 34, IWL_FW_TRIGGER_ID_HOST_NIC_ALIVE = 35, IWL_FW_TRIGGER_ID_HOST_CHANNEL_SWITCH_COMPLETE = 36, IWL_FW_TRIGGER_ID_NUM, }; # 422 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" enum iwl_fw_ini_apply_point { IWL_FW_INI_APPLY_INVALID, IWL_FW_INI_APPLY_EARLY, IWL_FW_INI_APPLY_AFTER_ALIVE, IWL_FW_INI_APPLY_POST_INIT, IWL_FW_INI_APPLY_MISSED_BEACONS, IWL_FW_INI_APPLY_SCAN_COMPLETE, IWL_FW_INI_APPLY_NUM, }; # 443 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" enum iwl_fw_ini_allocation_id { IWL_FW_INI_ALLOCATION_INVALID, IWL_FW_INI_ALLOCATION_ID_DBGC1, IWL_FW_INI_ALLOCATION_ID_DBGC2, IWL_FW_INI_ALLOCATION_ID_DBGC3, IWL_FW_INI_ALLOCATION_ID_SDFX, IWL_FW_INI_ALLOCATION_ID_FW_DUMP, IWL_FW_INI_ALLOCATION_ID_USER_DEFINED, }; # 461 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" enum iwl_fw_ini_buffer_location { IWL_FW_INI_LOCATION_INVALID, IWL_FW_INI_LOCATION_SRAM_PATH, IWL_FW_INI_LOCATION_DRAM_PATH, IWL_FW_INI_LOCATION_NPK_PATH, }; # 475 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" enum iwl_fw_ini_debug_flow { IWL_FW_INI_DEBUG_INVALID, IWL_FW_INI_DEBUG_DBTR_FLOW, IWL_FW_INI_DEBUG_TB2DTF_FLOW, }; # 502 "../drivers/net/wireless/intel/iwlwifi/fw/api/dbg-tlv.h" enum iwl_fw_ini_region_type { IWL_FW_INI_REGION_INVALID, IWL_FW_INI_REGION_DEVICE_MEMORY, IWL_FW_INI_REGION_PERIPHERY_MAC, IWL_FW_INI_REGION_PERIPHERY_PHY, IWL_FW_INI_REGION_PERIPHERY_AUX, IWL_FW_INI_REGION_DRAM_BUFFER, IWL_FW_INI_REGION_DRAM_IMR, IWL_FW_INI_REGION_INTERNAL_BUFFER, IWL_FW_INI_REGION_TXF, IWL_FW_INI_REGION_RXF, IWL_FW_INI_REGION_PAGING, IWL_FW_INI_REGION_CSR, IWL_FW_INI_REGION_NOTIFICATION, IWL_FW_INI_REGION_DHC, IWL_FW_INI_REGION_LMAC_ERROR_TABLE, IWL_FW_INI_REGION_UMAC_ERROR_TABLE, IWL_FW_INI_REGION_NUM }; # 69 "../drivers/net/wireless/intel/iwlwifi/fw/img.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" 1 # 73 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_ucode_header { __le32 ver; union { struct { __le32 inst_size; __le32 data_size; __le32 init_size; __le32 init_data_size; __le32 boot_size; u8 data[0]; } v1; struct { __le32 build; __le32 inst_size; __le32 data_size; __le32 init_size; __le32 init_data_size; __le32 boot_size; u8 data[0]; } v2; } u; }; # 105 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" enum iwl_ucode_tlv_type { IWL_UCODE_TLV_INVALID = 0, IWL_UCODE_TLV_INST = 1, IWL_UCODE_TLV_DATA = 2, IWL_UCODE_TLV_INIT = 3, IWL_UCODE_TLV_INIT_DATA = 4, IWL_UCODE_TLV_BOOT = 5, IWL_UCODE_TLV_PROBE_MAX_LEN = 6, IWL_UCODE_TLV_PAN = 7, IWL_UCODE_TLV_RUNT_EVTLOG_PTR = 8, IWL_UCODE_TLV_RUNT_EVTLOG_SIZE = 9, IWL_UCODE_TLV_RUNT_ERRLOG_PTR = 10, IWL_UCODE_TLV_INIT_EVTLOG_PTR = 11, IWL_UCODE_TLV_INIT_EVTLOG_SIZE = 12, IWL_UCODE_TLV_INIT_ERRLOG_PTR = 13, IWL_UCODE_TLV_ENHANCE_SENS_TBL = 14, IWL_UCODE_TLV_PHY_CALIBRATION_SIZE = 15, IWL_UCODE_TLV_WOWLAN_INST = 16, IWL_UCODE_TLV_WOWLAN_DATA = 17, IWL_UCODE_TLV_FLAGS = 18, IWL_UCODE_TLV_SEC_RT = 19, IWL_UCODE_TLV_SEC_INIT = 20, IWL_UCODE_TLV_SEC_WOWLAN = 21, IWL_UCODE_TLV_DEF_CALIB = 22, IWL_UCODE_TLV_PHY_SKU = 23, IWL_UCODE_TLV_SECURE_SEC_RT = 24, IWL_UCODE_TLV_SECURE_SEC_INIT = 25, IWL_UCODE_TLV_SECURE_SEC_WOWLAN = 26, IWL_UCODE_TLV_NUM_OF_CPU = 27, IWL_UCODE_TLV_CSCHEME = 28, IWL_UCODE_TLV_API_CHANGES_SET = 29, IWL_UCODE_TLV_ENABLED_CAPABILITIES = 30, IWL_UCODE_TLV_N_SCAN_CHANNELS = 31, IWL_UCODE_TLV_PAGING = 32, IWL_UCODE_TLV_SEC_RT_USNIFFER = 34, IWL_UCODE_TLV_FW_VERSION = 36, IWL_UCODE_TLV_FW_DBG_DEST = 38, IWL_UCODE_TLV_FW_DBG_CONF = 39, IWL_UCODE_TLV_FW_DBG_TRIGGER = 40, IWL_UCODE_TLV_CMD_VERSIONS = 48, IWL_UCODE_TLV_FW_GSCAN_CAPA = 50, IWL_UCODE_TLV_FW_MEM_SEG = 51, IWL_UCODE_TLV_IML = 52, IWL_UCODE_TLV_UMAC_DEBUG_ADDRS = 54, IWL_UCODE_TLV_LMAC_DEBUG_ADDRS = 55, IWL_UCODE_TLV_FW_RECOVERY_INFO = 57, IWL_UCODE_TLV_FW_FSEQ_VERSION = 60, IWL_UCODE_TLV_DEBUG_BASE = 0x1000000, IWL_UCODE_TLV_TYPE_DEBUG_INFO = IWL_UCODE_TLV_DEBUG_BASE + 0, IWL_UCODE_TLV_TYPE_BUFFER_ALLOCATION = IWL_UCODE_TLV_DEBUG_BASE + 1, IWL_UCODE_TLV_TYPE_HCMD = IWL_UCODE_TLV_DEBUG_BASE + 2, IWL_UCODE_TLV_TYPE_REGIONS = IWL_UCODE_TLV_DEBUG_BASE + 3, IWL_UCODE_TLV_TYPE_TRIGGERS = IWL_UCODE_TLV_DEBUG_BASE + 4, IWL_UCODE_TLV_TYPE_DEBUG_FLOW = IWL_UCODE_TLV_DEBUG_BASE + 5, IWL_UCODE_TLV_DEBUG_MAX = IWL_UCODE_TLV_TYPE_DEBUG_FLOW, IWL_UCODE_TLV_FW_DBG_DUMP_LST = 0x1000, }; struct iwl_ucode_tlv { __le32 type; __le32 length; u8 data[0]; }; struct iwl_tlv_ucode_header { __le32 zero; __le32 magic; u8 human_readable[64]; __le32 ver; __le32 build; __le64 ignore; u8 data[0]; }; struct iwl_ucode_api { __le32 api_index; __le32 api_flags; } __attribute__((__packed__)); struct iwl_ucode_capa { __le32 api_index; __le32 api_capa; } __attribute__((__packed__)); # 235 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" enum iwl_ucode_tlv_flag { IWL_UCODE_TLV_FLAGS_PAN = ((((1UL))) << (0)), IWL_UCODE_TLV_FLAGS_NEWSCAN = ((((1UL))) << (1)), IWL_UCODE_TLV_FLAGS_MFP = ((((1UL))) << (2)), IWL_UCODE_TLV_FLAGS_SHORT_BL = ((((1UL))) << (7)), IWL_UCODE_TLV_FLAGS_D3_6_IPV6_ADDRS = ((((1UL))) << (10)), IWL_UCODE_TLV_FLAGS_NO_BASIC_SSID = ((((1UL))) << (12)), IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_SMALL = ((((1UL))) << (15)), IWL_UCODE_TLV_FLAGS_NEW_NSOFFL_LARGE = ((((1UL))) << (16)), IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT = ((((1UL))) << (24)), IWL_UCODE_TLV_FLAGS_EBS_SUPPORT = ((((1UL))) << (25)), IWL_UCODE_TLV_FLAGS_P2P_PS_UAPSD = ((((1UL))) << (26)), IWL_UCODE_TLV_FLAGS_BCAST_FILTERING = ((((1UL))) << (29)), }; typedef unsigned int iwl_ucode_tlv_api_t; # 295 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" enum iwl_ucode_tlv_api { IWL_UCODE_TLV_API_FRAGMENTED_SCAN = ( iwl_ucode_tlv_api_t)8, IWL_UCODE_TLV_API_WIFI_MCC_UPDATE = ( iwl_ucode_tlv_api_t)9, IWL_UCODE_TLV_API_LQ_SS_PARAMS = ( iwl_ucode_tlv_api_t)18, IWL_UCODE_TLV_API_NEW_VERSION = ( iwl_ucode_tlv_api_t)20, IWL_UCODE_TLV_API_SCAN_TSF_REPORT = ( iwl_ucode_tlv_api_t)28, IWL_UCODE_TLV_API_TKIP_MIC_KEYS = ( iwl_ucode_tlv_api_t)29, IWL_UCODE_TLV_API_STA_TYPE = ( iwl_ucode_tlv_api_t)30, IWL_UCODE_TLV_API_NAN2_VER2 = ( iwl_ucode_tlv_api_t)31, IWL_UCODE_TLV_API_ADAPTIVE_DWELL = ( iwl_ucode_tlv_api_t)32, IWL_UCODE_TLV_API_OCE = ( iwl_ucode_tlv_api_t)33, IWL_UCODE_TLV_API_NEW_BEACON_TEMPLATE = ( iwl_ucode_tlv_api_t)34, IWL_UCODE_TLV_API_NEW_RX_STATS = ( iwl_ucode_tlv_api_t)35, IWL_UCODE_TLV_API_WOWLAN_KEY_MATERIAL = ( iwl_ucode_tlv_api_t)36, IWL_UCODE_TLV_API_QUOTA_LOW_LATENCY = ( iwl_ucode_tlv_api_t)38, IWL_UCODE_TLV_API_DEPRECATE_TTAK = ( iwl_ucode_tlv_api_t)41, IWL_UCODE_TLV_API_ADAPTIVE_DWELL_V2 = ( iwl_ucode_tlv_api_t)42, IWL_UCODE_TLV_API_FRAG_EBS = ( iwl_ucode_tlv_api_t)44, IWL_UCODE_TLV_API_REDUCE_TX_POWER = ( iwl_ucode_tlv_api_t)45, IWL_UCODE_TLV_API_SHORT_BEACON_NOTIF = ( iwl_ucode_tlv_api_t)46, IWL_UCODE_TLV_API_BEACON_FILTER_V4 = ( iwl_ucode_tlv_api_t)47, IWL_UCODE_TLV_API_REGULATORY_NVM_INFO = ( iwl_ucode_tlv_api_t)48, IWL_UCODE_TLV_API_FTM_NEW_RANGE_REQ = ( iwl_ucode_tlv_api_t)49, IWL_UCODE_TLV_API_SCAN_OFFLOAD_CHANS = ( iwl_ucode_tlv_api_t)50, IWL_UCODE_TLV_API_MBSSID_HE = ( iwl_ucode_tlv_api_t)52, IWL_UCODE_TLV_API_WOWLAN_TCP_SYN_WAKE = ( iwl_ucode_tlv_api_t)53, IWL_UCODE_TLV_API_FTM_RTT_ACCURACY = ( iwl_ucode_tlv_api_t)54, IWL_UCODE_TLV_API_SAR_TABLE_VER = ( iwl_ucode_tlv_api_t)55, IWL_UCODE_TLV_API_ADWELL_HB_DEF_N_AP = ( iwl_ucode_tlv_api_t)57, NUM_IWL_UCODE_TLV_API }; typedef unsigned int iwl_ucode_tlv_capa_t; # 411 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" enum iwl_ucode_tlv_capa { IWL_UCODE_TLV_CAPA_D0I3_SUPPORT = ( iwl_ucode_tlv_capa_t)0, IWL_UCODE_TLV_CAPA_LAR_SUPPORT = ( iwl_ucode_tlv_capa_t)1, IWL_UCODE_TLV_CAPA_UMAC_SCAN = ( iwl_ucode_tlv_capa_t)2, IWL_UCODE_TLV_CAPA_BEAMFORMER = ( iwl_ucode_tlv_capa_t)3, IWL_UCODE_TLV_CAPA_TDLS_SUPPORT = ( iwl_ucode_tlv_capa_t)6, IWL_UCODE_TLV_CAPA_TXPOWER_INSERTION_SUPPORT = ( iwl_ucode_tlv_capa_t)8, IWL_UCODE_TLV_CAPA_DS_PARAM_SET_IE_SUPPORT = ( iwl_ucode_tlv_capa_t)9, IWL_UCODE_TLV_CAPA_WFA_TPC_REP_IE_SUPPORT = ( iwl_ucode_tlv_capa_t)10, IWL_UCODE_TLV_CAPA_QUIET_PERIOD_SUPPORT = ( iwl_ucode_tlv_capa_t)11, IWL_UCODE_TLV_CAPA_DQA_SUPPORT = ( iwl_ucode_tlv_capa_t)12, IWL_UCODE_TLV_CAPA_TDLS_CHANNEL_SWITCH = ( iwl_ucode_tlv_capa_t)13, IWL_UCODE_TLV_CAPA_CNSLDTD_D3_D0_IMG = ( iwl_ucode_tlv_capa_t)17, IWL_UCODE_TLV_CAPA_HOTSPOT_SUPPORT = ( iwl_ucode_tlv_capa_t)18, IWL_UCODE_TLV_CAPA_DC2DC_CONFIG_SUPPORT = ( iwl_ucode_tlv_capa_t)19, IWL_UCODE_TLV_CAPA_CSUM_SUPPORT = ( iwl_ucode_tlv_capa_t)21, IWL_UCODE_TLV_CAPA_RADIO_BEACON_STATS = ( iwl_ucode_tlv_capa_t)22, IWL_UCODE_TLV_CAPA_P2P_SCM_UAPSD = ( iwl_ucode_tlv_capa_t)26, IWL_UCODE_TLV_CAPA_BT_COEX_PLCR = ( iwl_ucode_tlv_capa_t)28, IWL_UCODE_TLV_CAPA_LAR_MULTI_MCC = ( iwl_ucode_tlv_capa_t)29, IWL_UCODE_TLV_CAPA_BT_COEX_RRC = ( iwl_ucode_tlv_capa_t)30, IWL_UCODE_TLV_CAPA_GSCAN_SUPPORT = ( iwl_ucode_tlv_capa_t)31, IWL_UCODE_TLV_CAPA_STA_PM_NOTIF = ( iwl_ucode_tlv_capa_t)38, IWL_UCODE_TLV_CAPA_BINDING_CDB_SUPPORT = ( iwl_ucode_tlv_capa_t)39, IWL_UCODE_TLV_CAPA_CDB_SUPPORT = ( iwl_ucode_tlv_capa_t)40, IWL_UCODE_TLV_CAPA_D0I3_END_FIRST = ( iwl_ucode_tlv_capa_t)41, IWL_UCODE_TLV_CAPA_TLC_OFFLOAD = ( iwl_ucode_tlv_capa_t)43, IWL_UCODE_TLV_CAPA_DYNAMIC_QUOTA = ( iwl_ucode_tlv_capa_t)44, IWL_UCODE_TLV_CAPA_COEX_SCHEMA_2 = ( iwl_ucode_tlv_capa_t)45, IWL_UCODE_TLV_CAPA_CHANNEL_SWITCH_CMD = ( iwl_ucode_tlv_capa_t)46, IWL_UCODE_TLV_CAPA_ULTRA_HB_CHANNELS = ( iwl_ucode_tlv_capa_t)48, IWL_UCODE_TLV_CAPA_FTM_CALIBRATED = ( iwl_ucode_tlv_capa_t)47, IWL_UCODE_TLV_CAPA_CS_MODIFY = ( iwl_ucode_tlv_capa_t)49, IWL_UCODE_TLV_CAPA_EXTENDED_DTS_MEASURE = ( iwl_ucode_tlv_capa_t)64, IWL_UCODE_TLV_CAPA_SHORT_PM_TIMEOUTS = ( iwl_ucode_tlv_capa_t)65, IWL_UCODE_TLV_CAPA_BT_MPLUT_SUPPORT = ( iwl_ucode_tlv_capa_t)67, IWL_UCODE_TLV_CAPA_MULTI_QUEUE_RX_SUPPORT = ( iwl_ucode_tlv_capa_t)68, IWL_UCODE_TLV_CAPA_CSA_AND_TBTT_OFFLOAD = ( iwl_ucode_tlv_capa_t)70, IWL_UCODE_TLV_CAPA_BEACON_ANT_SELECTION = ( iwl_ucode_tlv_capa_t)71, IWL_UCODE_TLV_CAPA_BEACON_STORING = ( iwl_ucode_tlv_capa_t)72, IWL_UCODE_TLV_CAPA_LAR_SUPPORT_V3 = ( iwl_ucode_tlv_capa_t)73, IWL_UCODE_TLV_CAPA_CT_KILL_BY_FW = ( iwl_ucode_tlv_capa_t)74, IWL_UCODE_TLV_CAPA_TEMP_THS_REPORT_SUPPORT = ( iwl_ucode_tlv_capa_t)75, IWL_UCODE_TLV_CAPA_CTDP_SUPPORT = ( iwl_ucode_tlv_capa_t)76, IWL_UCODE_TLV_CAPA_USNIFFER_UNIFIED = ( iwl_ucode_tlv_capa_t)77, IWL_UCODE_TLV_CAPA_EXTEND_SHARED_MEM_CFG = ( iwl_ucode_tlv_capa_t)80, IWL_UCODE_TLV_CAPA_LQM_SUPPORT = ( iwl_ucode_tlv_capa_t)81, IWL_UCODE_TLV_CAPA_TX_POWER_ACK = ( iwl_ucode_tlv_capa_t)84, IWL_UCODE_TLV_CAPA_D3_DEBUG = ( iwl_ucode_tlv_capa_t)87, IWL_UCODE_TLV_CAPA_LED_CMD_SUPPORT = ( iwl_ucode_tlv_capa_t)88, IWL_UCODE_TLV_CAPA_MCC_UPDATE_11AX_SUPPORT = ( iwl_ucode_tlv_capa_t)89, IWL_UCODE_TLV_CAPA_CSI_REPORTING = ( iwl_ucode_tlv_capa_t)90, IWL_UCODE_TLV_CAPA_MLME_OFFLOAD = ( iwl_ucode_tlv_capa_t)96, NUM_IWL_UCODE_TLV_CAPA }; # 508 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_tlv_calib_ctrl { __le32 flow_trigger; __le32 event_trigger; } __attribute__((__packed__)); enum iwl_fw_phy_cfg { FW_PHY_CFG_RADIO_TYPE_POS = 0, FW_PHY_CFG_RADIO_TYPE = 0x3 << FW_PHY_CFG_RADIO_TYPE_POS, FW_PHY_CFG_RADIO_STEP_POS = 2, FW_PHY_CFG_RADIO_STEP = 0x3 << FW_PHY_CFG_RADIO_STEP_POS, FW_PHY_CFG_RADIO_DASH_POS = 4, FW_PHY_CFG_RADIO_DASH = 0x3 << FW_PHY_CFG_RADIO_DASH_POS, FW_PHY_CFG_TX_CHAIN_POS = 16, FW_PHY_CFG_TX_CHAIN = 0xf << FW_PHY_CFG_TX_CHAIN_POS, FW_PHY_CFG_RX_CHAIN_POS = 20, FW_PHY_CFG_RX_CHAIN = 0xf << FW_PHY_CFG_RX_CHAIN_POS, FW_PHY_CFG_SHARED_CLK = ((((1UL))) << (31)), }; # 542 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_cipher_scheme { __le32 cipher; u8 flags; u8 hdr_len; u8 pn_len; u8 pn_off; u8 key_idx_off; u8 key_idx_mask; u8 key_idx_shift; u8 mic_len; u8 hw_cipher; } __attribute__((__packed__)); enum iwl_fw_dbg_reg_operator { CSR_ASSIGN, CSR_SETBIT, CSR_CLEARBIT, PRPH_ASSIGN, PRPH_SETBIT, PRPH_CLEARBIT, INDIRECT_ASSIGN, INDIRECT_SETBIT, INDIRECT_CLEARBIT, PRPH_BLOCKBIT, }; # 578 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_dbg_reg_op { u8 op; u8 reserved[3]; __le32 addr; __le32 val; } __attribute__((__packed__)); # 593 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" enum iwl_fw_dbg_monitor_mode { SMEM_MODE = 0, EXTERNAL_MODE = 1, MARBH_MODE = 2, MIPI_MODE = 3, }; # 609 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_dbg_mem_seg_tlv { __le32 data_type; __le32 ofs; __le32 len; } __attribute__((__packed__)); # 631 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_dbg_dest_tlv_v1 { u8 version; u8 monitor_mode; u8 size_power; u8 reserved; __le32 base_reg; __le32 end_reg; __le32 write_ptr_reg; __le32 wrap_count; u8 base_shift; u8 end_shift; struct iwl_fw_dbg_reg_op reg_ops[0]; } __attribute__((__packed__)); # 652 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_dbg_dest_tlv { u8 version; u8 monitor_mode; u8 size_power; u8 reserved; __le32 cfg_reg; __le32 write_ptr_reg; __le32 wrap_count; u8 base_shift; u8 size_shift; struct iwl_fw_dbg_reg_op reg_ops[0]; } __attribute__((__packed__)); struct iwl_fw_dbg_conf_hcmd { u8 id; u8 reserved; __le16 len; u8 data[0]; } __attribute__((__packed__)); # 680 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" enum iwl_fw_dbg_trigger_mode { IWL_FW_DBG_TRIGGER_START = ((((1UL))) << (0)), IWL_FW_DBG_TRIGGER_STOP = ((((1UL))) << (1)), IWL_FW_DBG_TRIGGER_MONITOR_ONLY = ((((1UL))) << (2)), }; enum iwl_fw_dbg_trigger_flags { IWL_FW_DBG_FORCE_RESTART = ((((1UL))) << (0)), }; # 704 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" enum iwl_fw_dbg_trigger_vif_type { IWL_FW_DBG_CONF_VIF_ANY = NL80211_IFTYPE_UNSPECIFIED, IWL_FW_DBG_CONF_VIF_IBSS = NL80211_IFTYPE_ADHOC, IWL_FW_DBG_CONF_VIF_STATION = NL80211_IFTYPE_STATION, IWL_FW_DBG_CONF_VIF_AP = NL80211_IFTYPE_AP, IWL_FW_DBG_CONF_VIF_P2P_CLIENT = NL80211_IFTYPE_P2P_CLIENT, IWL_FW_DBG_CONF_VIF_P2P_GO = NL80211_IFTYPE_P2P_GO, IWL_FW_DBG_CONF_VIF_P2P_DEVICE = NL80211_IFTYPE_P2P_DEVICE, }; # 732 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_dbg_trigger_tlv { __le32 id; __le32 vif_type; __le32 stop_conf_ids; __le32 stop_delay; u8 mode; u8 start_conf_id; __le16 occurrences; __le16 trig_dis_ms; u8 flags; u8 reserved[5]; u8 data[0]; } __attribute__((__packed__)); # 760 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_dbg_trigger_missed_bcon { __le32 stop_consec_missed_bcon; __le32 stop_consec_missed_bcon_since_rx; __le32 reserved2[2]; __le32 start_consec_missed_bcon; __le32 start_consec_missed_bcon_since_rx; __le32 reserved1[2]; } __attribute__((__packed__)); struct iwl_fw_dbg_trigger_cmd { struct cmd { u8 cmd_id; u8 group_id; } __attribute__((__packed__)) cmds[16]; } __attribute__((__packed__)); # 787 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_dbg_trigger_stats { __le32 stop_offset; __le32 stop_threshold; __le32 start_offset; __le32 start_threshold; } __attribute__((__packed__)); struct iwl_fw_dbg_trigger_low_rssi { __le32 rssi; } __attribute__((__packed__)); # 819 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_dbg_trigger_mlme { u8 stop_auth_denied; u8 stop_auth_timeout; u8 stop_rx_deauth; u8 stop_tx_deauth; u8 stop_assoc_denied; u8 stop_assoc_timeout; u8 stop_connection_loss; u8 reserved; u8 start_auth_denied; u8 start_auth_timeout; u8 start_rx_deauth; u8 start_tx_deauth; u8 start_assoc_denied; u8 start_assoc_timeout; u8 start_connection_loss; u8 reserved2; } __attribute__((__packed__)); # 852 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_dbg_trigger_txq_timer { __le32 command_queue; __le32 bss; __le32 softap; __le32 p2p_go; __le32 p2p_client; __le32 p2p_device; __le32 ibss; __le32 tdls; __le32 reserved[4]; } __attribute__((__packed__)); # 872 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_dbg_trigger_time_event { struct { __le32 id; __le32 action_bitmap; __le32 status_bitmap; } __attribute__((__packed__)) time_events[16]; } __attribute__((__packed__)); # 897 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_dbg_trigger_ba { __le16 rx_ba_start; __le16 rx_ba_stop; __le16 tx_ba_start; __le16 tx_ba_stop; __le16 rx_bar; __le16 tx_bar; __le16 frame_timeout; } __attribute__((__packed__)); struct iwl_fw_dbg_trigger_tdls { u8 action_bitmap; u8 peer_mode; u8 peer[6]; u8 reserved[4]; } __attribute__((__packed__)); struct iwl_fw_dbg_trigger_tx_status { struct tx_status { u8 status; u8 reserved[3]; } __attribute__((__packed__)) statuses[16]; __le32 reserved[2]; } __attribute__((__packed__)); # 944 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_dbg_conf_tlv { u8 id; u8 usniffer; u8 reserved; u8 num_of_hcmds; struct iwl_fw_dbg_conf_hcmd hcmd; } __attribute__((__packed__)); # 961 "../drivers/net/wireless/intel/iwlwifi/fw/file.h" struct iwl_fw_cmd_version { u8 cmd; u8 group; u8 cmd_ver; u8 notif_ver; } __attribute__((__packed__)); # 71 "../drivers/net/wireless/intel/iwlwifi/fw/img.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" 1 # 99 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" enum iwl_fw_error_dump_type { IWL_FW_ERROR_DUMP_CSR = 1, IWL_FW_ERROR_DUMP_RXF = 2, IWL_FW_ERROR_DUMP_TXCMD = 3, IWL_FW_ERROR_DUMP_DEV_FW_INFO = 4, IWL_FW_ERROR_DUMP_FW_MONITOR = 5, IWL_FW_ERROR_DUMP_PRPH = 6, IWL_FW_ERROR_DUMP_TXF = 7, IWL_FW_ERROR_DUMP_FH_REGS = 8, IWL_FW_ERROR_DUMP_MEM = 9, IWL_FW_ERROR_DUMP_ERROR_INFO = 10, IWL_FW_ERROR_DUMP_RB = 11, IWL_FW_ERROR_DUMP_PAGING = 12, IWL_FW_ERROR_DUMP_RADIO_REG = 13, IWL_FW_ERROR_DUMP_INTERNAL_TXF = 14, IWL_FW_ERROR_DUMP_EXTERNAL = 15, IWL_FW_ERROR_DUMP_MEM_CFG = 16, IWL_FW_ERROR_DUMP_D3_DEBUG_DATA = 17, IWL_FW_ERROR_DUMP_MAX, }; struct iwl_fw_error_dump_data { __le32 type; __le32 len; __u8 data[]; } __attribute__((__packed__)); struct iwl_fw_error_dump_file { __le32 barker; __le32 file_len; u8 data[0]; } __attribute__((__packed__)); struct iwl_fw_error_dump_txcmd { __le32 cmdlen; __le32 caplen; u8 data[]; } __attribute__((__packed__)); # 169 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" struct iwl_fw_error_dump_fifo { __le32 fifo_num; __le32 available_bytes; __le32 wr_ptr; __le32 rd_ptr; __le32 fence_ptr; __le32 fence_mode; u8 data[]; } __attribute__((__packed__)); enum iwl_fw_error_dump_family { IWL_FW_ERROR_DUMP_FAMILY_7 = 7, IWL_FW_ERROR_DUMP_FAMILY_8 = 8, }; # 199 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" struct iwl_fw_error_dump_info { __le32 hw_type; __le32 hw_step; u8 fw_human_readable[64]; u8 dev_human_readable[64]; u8 bus_human_readable[8]; u8 num_of_lmacs; __le32 umac_err_id; __le32 lmac_err_id[2]; } __attribute__((__packed__)); # 221 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" struct iwl_fw_error_dump_fw_mon { __le32 fw_mon_wr_ptr; __le32 fw_mon_base_ptr; __le32 fw_mon_cycle_cnt; __le32 fw_mon_base_high_ptr; __le32 reserved[2]; u8 data[]; } __attribute__((__packed__)); # 243 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" struct iwl_fw_error_dump_smem_cfg { __le32 num_lmacs; __le32 num_txfifo_entries; struct { __le32 txfifo_size[15]; __le32 rxfifo1_size; } lmac[2]; __le32 rxfifo2_size; __le32 internal_txfifo_addr; __le32 internal_txfifo_size[6]; } __attribute__((__packed__)); struct iwl_fw_error_dump_prph { __le32 prph_start; __le32 data[]; }; enum iwl_fw_error_dump_mem_type { IWL_FW_ERROR_DUMP_MEM_SRAM, IWL_FW_ERROR_DUMP_MEM_SMEM, IWL_FW_ERROR_DUMP_MEM_NAMED_MEM = 10, }; struct iwl_fw_error_dump_mem { __le32 type; __le32 offset; u8 data[]; }; # 296 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" struct iwl_fw_ini_fifo_hdr { __le32 fifo_num; __le32 num_of_registers; } __attribute__((__packed__)); # 310 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" struct iwl_fw_ini_error_dump_range { __le32 range_data_size; union { __le32 internal_base_addr; __le64 dram_base_addr; __le32 page_num; struct iwl_fw_ini_fifo_hdr fifo_hdr; }; __le32 data[]; } __attribute__((__packed__)); # 329 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" struct iwl_fw_ini_error_dump_header { __le32 version; __le32 region_id; __le32 num_of_ranges; __le32 name_len; u8 name[32]; }; struct iwl_fw_ini_error_dump { struct iwl_fw_ini_error_dump_header header; struct iwl_fw_ini_error_dump_range ranges[]; } __attribute__((__packed__)); # 355 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" struct iwl_fw_ini_error_dump_register { __le32 addr; __le32 data; } __attribute__((__packed__)); # 389 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" struct iwl_fw_ini_dump_info { __le32 version; __le32 trigger_id; __le32 trigger_reason; __le32 is_external_cfg; __le32 ver_type; __le32 ver_subtype; __le32 hw_step; __le32 hw_type; __le32 rf_id_flavor; __le32 rf_id_dash; __le32 rf_id_step; __le32 rf_id_type; __le32 lmac_major; __le32 lmac_minor; __le32 umac_major; __le32 umac_minor; __le32 build_tag_len; u8 build_tag[64]; __le32 img_name_len; u8 img_name[32]; __le32 internal_dbg_cfg_name_len; u8 internal_dbg_cfg_name[64]; __le32 external_dbg_cfg_name_len; u8 external_dbg_cfg_name[64]; __le32 regions_num; __le32 region_ids[]; } __attribute__((__packed__)); # 426 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" struct iwl_fw_error_dump_rb { __le32 index; __le32 rxq; __le32 reserved; u8 data[]; }; # 440 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" struct iwl_fw_ini_monitor_dump { struct iwl_fw_ini_error_dump_header header; __le32 write_ptr; __le32 cycle_cnt; struct iwl_fw_ini_error_dump_range ranges[]; } __attribute__((__packed__)); # 454 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" struct iwl_fw_error_dump_paging { __le32 index; __le32 reserved; u8 data[]; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct iwl_fw_error_dump_data * iwl_fw_error_next_data(struct iwl_fw_error_dump_data *data) { return (void *)(data->data + (( __u32)(__le32)(data->len))); } # 502 "../drivers/net/wireless/intel/iwlwifi/fw/error-dump.h" enum iwl_fw_dbg_trigger { FW_DBG_TRIGGER_INVALID = 0, FW_DBG_TRIGGER_USER, FW_DBG_TRIGGER_FW_ASSERT, FW_DBG_TRIGGER_MISSED_BEACONS, FW_DBG_TRIGGER_CHANNEL_SWITCH, FW_DBG_TRIGGER_FW_NOTIF, FW_DBG_TRIGGER_MLME, FW_DBG_TRIGGER_STATS, FW_DBG_TRIGGER_RSSI, FW_DBG_TRIGGER_TXQ_TIMERS, FW_DBG_TRIGGER_TIME_EVENT, FW_DBG_TRIGGER_BA, FW_DBG_TRIGGER_TX_LATENCY, FW_DBG_TRIGGER_TDLS, FW_DBG_TRIGGER_TX_STATUS, FW_DBG_TRIGGER_ALIVE_TIMEOUT, FW_DBG_TRIGGER_DRIVER, FW_DBG_TRIGGER_MAX, }; struct iwl_fw_error_dump_trigger_desc { __le32 type; u8 data[]; }; # 72 "../drivers/net/wireless/intel/iwlwifi/fw/img.h" 2 # 83 "../drivers/net/wireless/intel/iwlwifi/fw/img.h" enum iwl_ucode_type { IWL_UCODE_REGULAR, IWL_UCODE_INIT, IWL_UCODE_WOWLAN, IWL_UCODE_REGULAR_USNIFFER, IWL_UCODE_TYPE_MAX, }; # 98 "../drivers/net/wireless/intel/iwlwifi/fw/img.h" enum iwl_ucode_sec { IWL_UCODE_SECTION_DATA, IWL_UCODE_SECTION_INST, }; struct iwl_ucode_capabilities { u32 max_probe_length; u32 n_scan_channels; u32 standard_phy_calibration_size; u32 flags; u32 error_log_addr; u32 error_log_size; unsigned long _api[(((NUM_IWL_UCODE_TLV_API) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8)))]; unsigned long _capa[(((NUM_IWL_UCODE_TLV_CAPA) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) * 8)))]; const struct iwl_fw_cmd_version *cmd_versions; u32 n_cmd_versions; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool fw_has_api(const struct iwl_ucode_capabilities *capabilities, iwl_ucode_tlv_api_t api) { return test_bit(( long)api, capabilities->_api); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool fw_has_capa(const struct iwl_ucode_capabilities *capabilities, iwl_ucode_tlv_capa_t capa) { return test_bit(( long)capa, capabilities->_capa); } struct fw_desc { const void *data; u32 len; u32 offset; }; struct fw_img { struct fw_desc *sec; int num_sec; bool is_dual_cpus; u32 paging_mem_size; }; # 181 "../drivers/net/wireless/intel/iwlwifi/fw/img.h" struct iwl_fw_paging { dma_addr_t fw_paging_phys; struct page *fw_paging_block; u32 fw_paging_size; }; struct iwl_fw_cscheme_list { u8 size; struct iwl_fw_cipher_scheme cs[]; } __attribute__((__packed__)); enum iwl_fw_type { IWL_FW_DVM, IWL_FW_MVM, }; # 219 "../drivers/net/wireless/intel/iwlwifi/fw/img.h" struct iwl_fw_dbg { struct iwl_fw_dbg_dest_tlv_v1 *dest_tlv; u8 n_dest_reg; struct iwl_fw_dbg_conf_tlv *conf_tlv[32]; struct iwl_fw_dbg_trigger_tlv *trigger_tlv[FW_DBG_TRIGGER_MAX]; size_t trigger_tlv_len[FW_DBG_TRIGGER_MAX]; struct iwl_fw_dbg_mem_seg_tlv *mem_tlv; size_t n_mem_tlv; u32 dump_mask; }; struct iwl_fw_ini_allocation_data { struct iwl_fw_ini_allocation_tlv tlv; u32 is_alloc; } __attribute__((__packed__)); struct iwl_fw_ini_active_triggers { bool active; size_t size; struct iwl_fw_ini_trigger *trig; }; # 272 "../drivers/net/wireless/intel/iwlwifi/fw/img.h" struct iwl_fw { u32 ucode_ver; char fw_version[32]; struct fw_img img[IWL_UCODE_TYPE_MAX]; size_t iml_len; u8 *iml; struct iwl_ucode_capabilities ucode_capa; bool enhance_sensitivity_table; u32 init_evtlog_ptr, init_evtlog_size, init_errlog_ptr; u32 inst_evtlog_ptr, inst_evtlog_size, inst_errlog_ptr; struct iwl_tlv_calib_ctrl default_calib[IWL_UCODE_TYPE_MAX]; u32 phy_config; u8 valid_tx_ant; u8 valid_rx_ant; enum iwl_fw_type type; struct iwl_fw_cipher_scheme cs[1]; u8 human_readable[64]; struct iwl_fw_dbg dbg; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *get_fw_dbg_mode_string(int mode) { switch (mode) { case SMEM_MODE: return "SMEM"; case EXTERNAL_MODE: return "EXTERNAL_DRAM"; case MARBH_MODE: return "MARBH"; case MIPI_MODE: return "MIPI"; default: return "UNKNOWN"; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_fw_dbg_conf_usniffer(const struct iwl_fw *fw, u8 id) { const struct iwl_fw_dbg_conf_tlv *conf_tlv = fw->dbg.conf_tlv[id]; if (!conf_tlv) return false; return conf_tlv->usniffer; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct fw_img * iwl_get_ucode_image(const struct iwl_fw *fw, enum iwl_ucode_type ucode_type) { if (ucode_type >= IWL_UCODE_TYPE_MAX) return ((void *)0); return &fw->img[ucode_type]; } # 75 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-op-mode.h" 1 # 68 "../drivers/net/wireless/intel/iwlwifi/iwl-op-mode.h" # 1 "../include/linux/debugfs.h" 1 # 21 "../include/linux/debugfs.h" struct device; struct file_operations; struct debugfs_blob_wrapper { void *data; unsigned long size; }; struct debugfs_reg32 { char *name; unsigned long offset; }; struct debugfs_regset32 { const struct debugfs_reg32 *regs; int nregs; void *base; }; extern struct dentry *arch_debugfs_dir; # 59 "../include/linux/debugfs.h" struct dentry *debugfs_lookup(const char *name, struct dentry *parent); struct dentry *debugfs_create_file(const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops); struct dentry *debugfs_create_file_unsafe(const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops); struct dentry *debugfs_create_file_size(const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops, loff_t file_size); struct dentry *debugfs_create_dir(const char *name, struct dentry *parent); struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent, const char *dest); typedef struct vfsmount *(*debugfs_automount_t)(struct dentry *, void *); struct dentry *debugfs_create_automount(const char *name, struct dentry *parent, debugfs_automount_t f, void *data); void debugfs_remove(struct dentry *dentry); void debugfs_remove_recursive(struct dentry *dentry); const struct file_operations *debugfs_real_fops(const struct file *filp); int debugfs_file_get(struct dentry *dentry); void debugfs_file_put(struct dentry *dentry); ssize_t debugfs_attr_read(struct file *file, char *buf, size_t len, loff_t *ppos); ssize_t debugfs_attr_write(struct file *file, const char *buf, size_t len, loff_t *ppos); struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry, struct dentry *new_dir, const char *new_name); struct dentry *debugfs_create_u8(const char *name, umode_t mode, struct dentry *parent, u8 *value); struct dentry *debugfs_create_u16(const char *name, umode_t mode, struct dentry *parent, u16 *value); struct dentry *debugfs_create_u32(const char *name, umode_t mode, struct dentry *parent, u32 *value); struct dentry *debugfs_create_u64(const char *name, umode_t mode, struct dentry *parent, u64 *value); struct dentry *debugfs_create_ulong(const char *name, umode_t mode, struct dentry *parent, unsigned long *value); struct dentry *debugfs_create_x8(const char *name, umode_t mode, struct dentry *parent, u8 *value); struct dentry *debugfs_create_x16(const char *name, umode_t mode, struct dentry *parent, u16 *value); struct dentry *debugfs_create_x32(const char *name, umode_t mode, struct dentry *parent, u32 *value); struct dentry *debugfs_create_x64(const char *name, umode_t mode, struct dentry *parent, u64 *value); struct dentry *debugfs_create_size_t(const char *name, umode_t mode, struct dentry *parent, size_t *value); struct dentry *debugfs_create_atomic_t(const char *name, umode_t mode, struct dentry *parent, atomic_t *value); struct dentry *debugfs_create_bool(const char *name, umode_t mode, struct dentry *parent, bool *value); struct dentry *debugfs_create_blob(const char *name, umode_t mode, struct dentry *parent, struct debugfs_blob_wrapper *blob); struct dentry *debugfs_create_regset32(const char *name, umode_t mode, struct dentry *parent, struct debugfs_regset32 *regset); void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs, int nregs, void *base, char *prefix); void debugfs_create_u32_array(const char *name, umode_t mode, struct dentry *parent, u32 *array, u32 elements); struct dentry *debugfs_create_devm_seqfile(struct device *dev, const char *name, struct dentry *parent, int (*read_fn)(struct seq_file *s, void *data)); bool debugfs_initialized(void); ssize_t debugfs_read_file_bool(struct file *file, char *user_buf, size_t count, loff_t *ppos); ssize_t debugfs_write_file_bool(struct file *file, const char *user_buf, size_t count, loff_t *ppos); # 69 "../drivers/net/wireless/intel/iwlwifi/iwl-op-mode.h" 2 struct iwl_op_mode; struct iwl_trans; struct sk_buff; struct iwl_device_cmd; struct iwl_rx_cmd_buffer; struct iwl_fw; struct iwl_cfg; # 147 "../drivers/net/wireless/intel/iwlwifi/iwl-op-mode.h" struct iwl_op_mode_ops { struct iwl_op_mode *(*start)(struct iwl_trans *trans, const struct iwl_cfg *cfg, const struct iwl_fw *fw, struct dentry *dbgfs_dir); void (*stop)(struct iwl_op_mode *op_mode); void (*rx)(struct iwl_op_mode *op_mode, struct napi_struct *napi, struct iwl_rx_cmd_buffer *rxb); void (*rx_rss)(struct iwl_op_mode *op_mode, struct napi_struct *napi, struct iwl_rx_cmd_buffer *rxb, unsigned int queue); void (*async_cb)(struct iwl_op_mode *op_mode, const struct iwl_device_cmd *cmd); void (*queue_full)(struct iwl_op_mode *op_mode, int queue); void (*queue_not_full)(struct iwl_op_mode *op_mode, int queue); bool (*hw_rf_kill)(struct iwl_op_mode *op_mode, bool state); void (*free_skb)(struct iwl_op_mode *op_mode, struct sk_buff *skb); void (*nic_error)(struct iwl_op_mode *op_mode); void (*cmd_queue_full)(struct iwl_op_mode *op_mode); void (*nic_config)(struct iwl_op_mode *op_mode); void (*wimax_active)(struct iwl_op_mode *op_mode); int (*enter_d0i3)(struct iwl_op_mode *op_mode); int (*exit_d0i3)(struct iwl_op_mode *op_mode); }; int iwl_opmode_register(const char *name, const struct iwl_op_mode_ops *ops); void iwl_opmode_deregister(const char *name); struct iwl_op_mode { const struct iwl_op_mode_ops *ops; char op_mode_specific[0] __attribute__((__aligned__(sizeof(void *)))); }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_op_mode_stop(struct iwl_op_mode *op_mode) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-op-mode.h", 188, 0); do { } while (0); } while (0); op_mode->ops->stop(op_mode); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_op_mode_rx(struct iwl_op_mode *op_mode, struct napi_struct *napi, struct iwl_rx_cmd_buffer *rxb) { return op_mode->ops->rx(op_mode, napi, rxb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_op_mode_rx_rss(struct iwl_op_mode *op_mode, struct napi_struct *napi, struct iwl_rx_cmd_buffer *rxb, unsigned int queue) { op_mode->ops->rx_rss(op_mode, napi, rxb, queue); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_op_mode_async_cb(struct iwl_op_mode *op_mode, const struct iwl_device_cmd *cmd) { if (op_mode->ops->async_cb) op_mode->ops->async_cb(op_mode, cmd); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_op_mode_queue_full(struct iwl_op_mode *op_mode, int queue) { op_mode->ops->queue_full(op_mode, queue); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_op_mode_queue_not_full(struct iwl_op_mode *op_mode, int queue) { op_mode->ops->queue_not_full(op_mode, queue); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool __attribute__((__warn_unused_result__)) iwl_op_mode_hw_rf_kill(struct iwl_op_mode *op_mode, bool state) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-op-mode.h", 229, 0); do { } while (0); } while (0); return op_mode->ops->hw_rf_kill(op_mode, state); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_op_mode_free_skb(struct iwl_op_mode *op_mode, struct sk_buff *skb) { op_mode->ops->free_skb(op_mode, skb); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_op_mode_nic_error(struct iwl_op_mode *op_mode) { op_mode->ops->nic_error(op_mode); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_op_mode_cmd_queue_full(struct iwl_op_mode *op_mode) { op_mode->ops->cmd_queue_full(op_mode); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_op_mode_nic_config(struct iwl_op_mode *op_mode) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-op-mode.h", 251, 0); do { } while (0); } while (0); op_mode->ops->nic_config(op_mode); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_op_mode_wimax_active(struct iwl_op_mode *op_mode) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-op-mode.h", 257, 0); do { } while (0); } while (0); op_mode->ops->wimax_active(op_mode); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_op_mode_enter_d0i3(struct iwl_op_mode *op_mode) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-op-mode.h", 263, 0); do { } while (0); } while (0); if (!op_mode->ops->enter_d0i3) return 0; return op_mode->ops->enter_d0i3(op_mode); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_op_mode_exit_d0i3(struct iwl_op_mode *op_mode) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-op-mode.h", 272, 0); do { } while (0); } while (0); if (!op_mode->ops->exit_d0i3) return 0; return op_mode->ops->exit_d0i3(op_mode); } # 76 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/fw/api/cmdhdr.h" 1 # 85 "../drivers/net/wireless/intel/iwlwifi/fw/api/cmdhdr.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 iwl_cmd_opcode(u32 cmdid) { return cmdid & 0xFF; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 iwl_cmd_groupid(u32 cmdid) { return ((cmdid & 0xFF00) >> 8); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 iwl_cmd_version(u32 cmdid) { return ((cmdid & 0xFF0000) >> 16); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 iwl_cmd_id(u8 opcode, u8 groupid, u8 version) { return opcode + (groupid << 8) + (version << 16); } # 120 "../drivers/net/wireless/intel/iwlwifi/fw/api/cmdhdr.h" struct iwl_cmd_header { u8 cmd; u8 group_id; # 152 "../drivers/net/wireless/intel/iwlwifi/fw/api/cmdhdr.h" __le16 sequence; } __attribute__((__packed__)); # 170 "../drivers/net/wireless/intel/iwlwifi/fw/api/cmdhdr.h" struct iwl_cmd_header_wide { u8 cmd; u8 group_id; __le16 sequence; __le16 length; u8 reserved; u8 version; } __attribute__((__packed__)); struct iwl_calib_res_notif_phy_db { __le16 type; __le16 length; u8 data[]; } __attribute__((__packed__)); struct iwl_phy_db_cmd { __le16 type; __le16 length; u8 data[]; } __attribute__((__packed__)); struct iwl_cmd_response { __le32 status; }; # 77 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/fw/api/txq.h" 1 # 91 "../drivers/net/wireless/intel/iwlwifi/fw/api/txq.h" enum iwl_mvm_dqa_txq { IWL_MVM_DQA_CMD_QUEUE = 0, IWL_MVM_DQA_AUX_QUEUE = 1, IWL_MVM_DQA_P2P_DEVICE_QUEUE = 2, IWL_MVM_DQA_INJECT_MONITOR_QUEUE = 2, IWL_MVM_DQA_GCAST_QUEUE = 3, IWL_MVM_DQA_BSS_CLIENT_QUEUE = 4, IWL_MVM_DQA_MIN_MGMT_QUEUE = 5, IWL_MVM_DQA_MAX_MGMT_QUEUE = 8, IWL_MVM_DQA_AP_PROBE_RESP_QUEUE = 9, IWL_MVM_DQA_MIN_DATA_QUEUE = 10, IWL_MVM_DQA_MAX_DATA_QUEUE = 31, }; enum iwl_mvm_tx_fifo { IWL_MVM_TX_FIFO_BK = 0, IWL_MVM_TX_FIFO_BE, IWL_MVM_TX_FIFO_VI, IWL_MVM_TX_FIFO_VO, IWL_MVM_TX_FIFO_MCAST = 5, IWL_MVM_TX_FIFO_CMD = 7, }; enum iwl_gen2_tx_fifo { IWL_GEN2_TX_FIFO_CMD = 0, IWL_GEN2_EDCA_TX_FIFO_BK, IWL_GEN2_EDCA_TX_FIFO_BE, IWL_GEN2_EDCA_TX_FIFO_VI, IWL_GEN2_EDCA_TX_FIFO_VO, IWL_GEN2_TRIG_TX_FIFO_BK, IWL_GEN2_TRIG_TX_FIFO_BE, IWL_GEN2_TRIG_TX_FIFO_VI, IWL_GEN2_TRIG_TX_FIFO_VO, }; enum iwl_tx_queue_cfg_actions { TX_QUEUE_CFG_ENABLE_QUEUE = ((((1UL))) << (0)), TX_QUEUE_CFG_TFD_SHORT_FORMAT = ((((1UL))) << (1)), }; # 149 "../drivers/net/wireless/intel/iwlwifi/fw/api/txq.h" struct iwl_tx_queue_cfg_cmd { u8 sta_id; u8 tid; __le16 flags; __le32 cb_size; __le64 byte_cnt_addr; __le64 tfdq_addr; } __attribute__((__packed__)); # 165 "../drivers/net/wireless/intel/iwlwifi/fw/api/txq.h" struct iwl_tx_queue_cfg_rsp { __le16 queue_number; __le16 flags; __le16 write_pointer; __le16 reserved; } __attribute__((__packed__)); # 78 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.h" 1 # 73 "../drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.h" struct iwl_apply_point_data { void *data; int size; int offset; }; struct iwl_trans; void iwl_load_fw_dbg_tlv(struct device *dev, struct iwl_trans *trans); void iwl_fw_dbg_free(struct iwl_trans *trans); void iwl_fw_dbg_copy_tlv(struct iwl_trans *trans, struct iwl_ucode_tlv *tlv, bool ext); void iwl_alloc_dbg_tlv(struct iwl_trans *trans, size_t len, const u8 *data, bool ext); # 80 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" 2 # 123 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" struct iwl_rx_packet { # 141 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" __le32 len_n_flags; struct iwl_cmd_header hdr; u8 data[]; } __attribute__((__packed__)); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 iwl_rx_packet_len(const struct iwl_rx_packet *pkt) { return (( __u32)(__le32)(pkt->len_n_flags)) & 0x00003FFF; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 iwl_rx_packet_payload_len(const struct iwl_rx_packet *pkt) { return iwl_rx_packet_len(pkt) - sizeof(pkt->hdr); } # 172 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" enum CMD_MODE { CMD_ASYNC = ((((1UL))) << (0)), CMD_WANT_SKB = ((((1UL))) << (1)), CMD_SEND_IN_RFKILL = ((((1UL))) << (2)), CMD_HIGH_PRIO = ((((1UL))) << (3)), CMD_SEND_IN_IDLE = ((((1UL))) << (4)), CMD_MAKE_TRANS_IDLE = ((((1UL))) << (5)), CMD_WAKE_UP_TRANS = ((((1UL))) << (6)), CMD_WANT_ASYNC_CALLBACK = ((((1UL))) << (7)), }; # 192 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" struct iwl_device_cmd { union { struct { struct iwl_cmd_header hdr; u8 payload[320]; }; struct { struct iwl_cmd_header_wide hdr_wide; u8 payload_wide[320 - sizeof(struct iwl_cmd_header_wide) + sizeof(struct iwl_cmd_header)]; }; }; } __attribute__((__packed__)); # 230 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" enum iwl_hcmd_dataflag { IWL_HCMD_DFL_NOCOPY = ((((1UL))) << (0)), IWL_HCMD_DFL_DUP = ((((1UL))) << (1)), }; enum iwl_error_event_table_status { IWL_ERROR_EVENT_TABLE_LMAC1 = ((((1UL))) << (0)), IWL_ERROR_EVENT_TABLE_LMAC2 = ((((1UL))) << (1)), IWL_ERROR_EVENT_TABLE_UMAC = ((((1UL))) << (2)), }; # 254 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" struct iwl_host_cmd { const void *data[2]; struct iwl_rx_packet *resp_pkt; unsigned long _rx_page_addr; u32 _rx_page_order; u32 flags; u32 id; u16 len[2]; u8 dataflags[2]; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_free_resp(struct iwl_host_cmd *cmd) { free_pages(cmd->_rx_page_addr, cmd->_rx_page_order); } struct iwl_rx_cmd_buffer { struct page *_page; int _offset; bool _page_stolen; u32 _rx_page_order; unsigned int truesize; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *rxb_addr(struct iwl_rx_cmd_buffer *r) { return (void *)((unsigned long)lowmem_page_address(r->_page) + r->_offset); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int rxb_offset(struct iwl_rx_cmd_buffer *r) { return r->_offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct page *rxb_steal_page(struct iwl_rx_cmd_buffer *r) { r->_page_stolen = true; get_page(r->_page); return r->_page; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_free_rxb(struct iwl_rx_cmd_buffer *r) { __free_pages(r->_page, r->_rx_page_order); } # 322 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" enum iwl_d3_status { IWL_D3_STATUS_ALIVE, IWL_D3_STATUS_RESET, }; # 341 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" enum iwl_trans_status { STATUS_SYNC_HCMD_ACTIVE, STATUS_DEVICE_ENABLED, STATUS_TPOWER_PMI, STATUS_INT_ENABLED, STATUS_RFKILL_HW, STATUS_RFKILL_OPMODE, STATUS_FW_ERROR, STATUS_TRANS_GOING_IDLE, STATUS_TRANS_IDLE, STATUS_TRANS_DEAD, }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_trans_get_rb_size_order(enum iwl_amsdu_size rb_size) { switch (rb_size) { case IWL_AMSDU_2K: return ( __builtin_constant_p(2 * 1024) ? ( ((2 * 1024) == 0UL) ? 64 - 12 : (((2 * 1024) < (1UL << 12)) ? 0 : ( __builtin_constant_p((2 * 1024) - 1) ? ( __builtin_constant_p((2 * 1024) - 1) ? ( ((2 * 1024) - 1) < 2 ? 0 : ((2 * 1024) - 1) & (1ULL << 63) ? 63 : ((2 * 1024) - 1) & (1ULL << 62) ? 62 : ((2 * 1024) - 1) & (1ULL << 61) ? 61 : ((2 * 1024) - 1) & (1ULL << 60) ? 60 : ((2 * 1024) - 1) & (1ULL << 59) ? 59 : ((2 * 1024) - 1) & (1ULL << 58) ? 58 : ((2 * 1024) - 1) & (1ULL << 57) ? 57 : ((2 * 1024) - 1) & (1ULL << 56) ? 56 : ((2 * 1024) - 1) & (1ULL << 55) ? 55 : ((2 * 1024) - 1) & (1ULL << 54) ? 54 : ((2 * 1024) - 1) & (1ULL << 53) ? 53 : ((2 * 1024) - 1) & (1ULL << 52) ? 52 : ((2 * 1024) - 1) & (1ULL << 51) ? 51 : ((2 * 1024) - 1) & (1ULL << 50) ? 50 : ((2 * 1024) - 1) & (1ULL << 49) ? 49 : ((2 * 1024) - 1) & (1ULL << 48) ? 48 : ((2 * 1024) - 1) & (1ULL << 47) ? 47 : ((2 * 1024) - 1) & (1ULL << 46) ? 46 : ((2 * 1024) - 1) & (1ULL << 45) ? 45 : ((2 * 1024) - 1) & (1ULL << 44) ? 44 : ((2 * 1024) - 1) & (1ULL << 43) ? 43 : ((2 * 1024) - 1) & (1ULL << 42) ? 42 : ((2 * 1024) - 1) & (1ULL << 41) ? 41 : ((2 * 1024) - 1) & (1ULL << 40) ? 40 : ((2 * 1024) - 1) & (1ULL << 39) ? 39 : ((2 * 1024) - 1) & (1ULL << 38) ? 38 : ((2 * 1024) - 1) & (1ULL << 37) ? 37 : ((2 * 1024) - 1) & (1ULL << 36) ? 36 : ((2 * 1024) - 1) & (1ULL << 35) ? 35 : ((2 * 1024) - 1) & (1ULL << 34) ? 34 : ((2 * 1024) - 1) & (1ULL << 33) ? 33 : ((2 * 1024) - 1) & (1ULL << 32) ? 32 : ((2 * 1024) - 1) & (1ULL << 31) ? 31 : ((2 * 1024) - 1) & (1ULL << 30) ? 30 : ((2 * 1024) - 1) & (1ULL << 29) ? 29 : ((2 * 1024) - 1) & (1ULL << 28) ? 28 : ((2 * 1024) - 1) & (1ULL << 27) ? 27 : ((2 * 1024) - 1) & (1ULL << 26) ? 26 : ((2 * 1024) - 1) & (1ULL << 25) ? 25 : ((2 * 1024) - 1) & (1ULL << 24) ? 24 : ((2 * 1024) - 1) & (1ULL << 23) ? 23 : ((2 * 1024) - 1) & (1ULL << 22) ? 22 : ((2 * 1024) - 1) & (1ULL << 21) ? 21 : ((2 * 1024) - 1) & (1ULL << 20) ? 20 : ((2 * 1024) - 1) & (1ULL << 19) ? 19 : ((2 * 1024) - 1) & (1ULL << 18) ? 18 : ((2 * 1024) - 1) & (1ULL << 17) ? 17 : ((2 * 1024) - 1) & (1ULL << 16) ? 16 : ((2 * 1024) - 1) & (1ULL << 15) ? 15 : ((2 * 1024) - 1) & (1ULL << 14) ? 14 : ((2 * 1024) - 1) & (1ULL << 13) ? 13 : ((2 * 1024) - 1) & (1ULL << 12) ? 12 : ((2 * 1024) - 1) & (1ULL << 11) ? 11 : ((2 * 1024) - 1) & (1ULL << 10) ? 10 : ((2 * 1024) - 1) & (1ULL << 9) ? 9 : ((2 * 1024) - 1) & (1ULL << 8) ? 8 : ((2 * 1024) - 1) & (1ULL << 7) ? 7 : ((2 * 1024) - 1) & (1ULL << 6) ? 6 : ((2 * 1024) - 1) & (1ULL << 5) ? 5 : ((2 * 1024) - 1) & (1ULL << 4) ? 4 : ((2 * 1024) - 1) & (1ULL << 3) ? 3 : ((2 * 1024) - 1) & (1ULL << 2) ? 2 : 1) : -1) : (sizeof((2 * 1024) - 1) <= 4) ? __ilog2_u32((2 * 1024) - 1) : __ilog2_u64((2 * 1024) - 1) ) - 12 + 1) ) : __get_order(2 * 1024) ); case IWL_AMSDU_4K: return ( __builtin_constant_p(4 * 1024) ? ( ((4 * 1024) == 0UL) ? 64 - 12 : (((4 * 1024) < (1UL << 12)) ? 0 : ( __builtin_constant_p((4 * 1024) - 1) ? ( __builtin_constant_p((4 * 1024) - 1) ? ( ((4 * 1024) - 1) < 2 ? 0 : ((4 * 1024) - 1) & (1ULL << 63) ? 63 : ((4 * 1024) - 1) & (1ULL << 62) ? 62 : ((4 * 1024) - 1) & (1ULL << 61) ? 61 : ((4 * 1024) - 1) & (1ULL << 60) ? 60 : ((4 * 1024) - 1) & (1ULL << 59) ? 59 : ((4 * 1024) - 1) & (1ULL << 58) ? 58 : ((4 * 1024) - 1) & (1ULL << 57) ? 57 : ((4 * 1024) - 1) & (1ULL << 56) ? 56 : ((4 * 1024) - 1) & (1ULL << 55) ? 55 : ((4 * 1024) - 1) & (1ULL << 54) ? 54 : ((4 * 1024) - 1) & (1ULL << 53) ? 53 : ((4 * 1024) - 1) & (1ULL << 52) ? 52 : ((4 * 1024) - 1) & (1ULL << 51) ? 51 : ((4 * 1024) - 1) & (1ULL << 50) ? 50 : ((4 * 1024) - 1) & (1ULL << 49) ? 49 : ((4 * 1024) - 1) & (1ULL << 48) ? 48 : ((4 * 1024) - 1) & (1ULL << 47) ? 47 : ((4 * 1024) - 1) & (1ULL << 46) ? 46 : ((4 * 1024) - 1) & (1ULL << 45) ? 45 : ((4 * 1024) - 1) & (1ULL << 44) ? 44 : ((4 * 1024) - 1) & (1ULL << 43) ? 43 : ((4 * 1024) - 1) & (1ULL << 42) ? 42 : ((4 * 1024) - 1) & (1ULL << 41) ? 41 : ((4 * 1024) - 1) & (1ULL << 40) ? 40 : ((4 * 1024) - 1) & (1ULL << 39) ? 39 : ((4 * 1024) - 1) & (1ULL << 38) ? 38 : ((4 * 1024) - 1) & (1ULL << 37) ? 37 : ((4 * 1024) - 1) & (1ULL << 36) ? 36 : ((4 * 1024) - 1) & (1ULL << 35) ? 35 : ((4 * 1024) - 1) & (1ULL << 34) ? 34 : ((4 * 1024) - 1) & (1ULL << 33) ? 33 : ((4 * 1024) - 1) & (1ULL << 32) ? 32 : ((4 * 1024) - 1) & (1ULL << 31) ? 31 : ((4 * 1024) - 1) & (1ULL << 30) ? 30 : ((4 * 1024) - 1) & (1ULL << 29) ? 29 : ((4 * 1024) - 1) & (1ULL << 28) ? 28 : ((4 * 1024) - 1) & (1ULL << 27) ? 27 : ((4 * 1024) - 1) & (1ULL << 26) ? 26 : ((4 * 1024) - 1) & (1ULL << 25) ? 25 : ((4 * 1024) - 1) & (1ULL << 24) ? 24 : ((4 * 1024) - 1) & (1ULL << 23) ? 23 : ((4 * 1024) - 1) & (1ULL << 22) ? 22 : ((4 * 1024) - 1) & (1ULL << 21) ? 21 : ((4 * 1024) - 1) & (1ULL << 20) ? 20 : ((4 * 1024) - 1) & (1ULL << 19) ? 19 : ((4 * 1024) - 1) & (1ULL << 18) ? 18 : ((4 * 1024) - 1) & (1ULL << 17) ? 17 : ((4 * 1024) - 1) & (1ULL << 16) ? 16 : ((4 * 1024) - 1) & (1ULL << 15) ? 15 : ((4 * 1024) - 1) & (1ULL << 14) ? 14 : ((4 * 1024) - 1) & (1ULL << 13) ? 13 : ((4 * 1024) - 1) & (1ULL << 12) ? 12 : ((4 * 1024) - 1) & (1ULL << 11) ? 11 : ((4 * 1024) - 1) & (1ULL << 10) ? 10 : ((4 * 1024) - 1) & (1ULL << 9) ? 9 : ((4 * 1024) - 1) & (1ULL << 8) ? 8 : ((4 * 1024) - 1) & (1ULL << 7) ? 7 : ((4 * 1024) - 1) & (1ULL << 6) ? 6 : ((4 * 1024) - 1) & (1ULL << 5) ? 5 : ((4 * 1024) - 1) & (1ULL << 4) ? 4 : ((4 * 1024) - 1) & (1ULL << 3) ? 3 : ((4 * 1024) - 1) & (1ULL << 2) ? 2 : 1) : -1) : (sizeof((4 * 1024) - 1) <= 4) ? __ilog2_u32((4 * 1024) - 1) : __ilog2_u64((4 * 1024) - 1) ) - 12 + 1) ) : __get_order(4 * 1024) ); case IWL_AMSDU_8K: return ( __builtin_constant_p(8 * 1024) ? ( ((8 * 1024) == 0UL) ? 64 - 12 : (((8 * 1024) < (1UL << 12)) ? 0 : ( __builtin_constant_p((8 * 1024) - 1) ? ( __builtin_constant_p((8 * 1024) - 1) ? ( ((8 * 1024) - 1) < 2 ? 0 : ((8 * 1024) - 1) & (1ULL << 63) ? 63 : ((8 * 1024) - 1) & (1ULL << 62) ? 62 : ((8 * 1024) - 1) & (1ULL << 61) ? 61 : ((8 * 1024) - 1) & (1ULL << 60) ? 60 : ((8 * 1024) - 1) & (1ULL << 59) ? 59 : ((8 * 1024) - 1) & (1ULL << 58) ? 58 : ((8 * 1024) - 1) & (1ULL << 57) ? 57 : ((8 * 1024) - 1) & (1ULL << 56) ? 56 : ((8 * 1024) - 1) & (1ULL << 55) ? 55 : ((8 * 1024) - 1) & (1ULL << 54) ? 54 : ((8 * 1024) - 1) & (1ULL << 53) ? 53 : ((8 * 1024) - 1) & (1ULL << 52) ? 52 : ((8 * 1024) - 1) & (1ULL << 51) ? 51 : ((8 * 1024) - 1) & (1ULL << 50) ? 50 : ((8 * 1024) - 1) & (1ULL << 49) ? 49 : ((8 * 1024) - 1) & (1ULL << 48) ? 48 : ((8 * 1024) - 1) & (1ULL << 47) ? 47 : ((8 * 1024) - 1) & (1ULL << 46) ? 46 : ((8 * 1024) - 1) & (1ULL << 45) ? 45 : ((8 * 1024) - 1) & (1ULL << 44) ? 44 : ((8 * 1024) - 1) & (1ULL << 43) ? 43 : ((8 * 1024) - 1) & (1ULL << 42) ? 42 : ((8 * 1024) - 1) & (1ULL << 41) ? 41 : ((8 * 1024) - 1) & (1ULL << 40) ? 40 : ((8 * 1024) - 1) & (1ULL << 39) ? 39 : ((8 * 1024) - 1) & (1ULL << 38) ? 38 : ((8 * 1024) - 1) & (1ULL << 37) ? 37 : ((8 * 1024) - 1) & (1ULL << 36) ? 36 : ((8 * 1024) - 1) & (1ULL << 35) ? 35 : ((8 * 1024) - 1) & (1ULL << 34) ? 34 : ((8 * 1024) - 1) & (1ULL << 33) ? 33 : ((8 * 1024) - 1) & (1ULL << 32) ? 32 : ((8 * 1024) - 1) & (1ULL << 31) ? 31 : ((8 * 1024) - 1) & (1ULL << 30) ? 30 : ((8 * 1024) - 1) & (1ULL << 29) ? 29 : ((8 * 1024) - 1) & (1ULL << 28) ? 28 : ((8 * 1024) - 1) & (1ULL << 27) ? 27 : ((8 * 1024) - 1) & (1ULL << 26) ? 26 : ((8 * 1024) - 1) & (1ULL << 25) ? 25 : ((8 * 1024) - 1) & (1ULL << 24) ? 24 : ((8 * 1024) - 1) & (1ULL << 23) ? 23 : ((8 * 1024) - 1) & (1ULL << 22) ? 22 : ((8 * 1024) - 1) & (1ULL << 21) ? 21 : ((8 * 1024) - 1) & (1ULL << 20) ? 20 : ((8 * 1024) - 1) & (1ULL << 19) ? 19 : ((8 * 1024) - 1) & (1ULL << 18) ? 18 : ((8 * 1024) - 1) & (1ULL << 17) ? 17 : ((8 * 1024) - 1) & (1ULL << 16) ? 16 : ((8 * 1024) - 1) & (1ULL << 15) ? 15 : ((8 * 1024) - 1) & (1ULL << 14) ? 14 : ((8 * 1024) - 1) & (1ULL << 13) ? 13 : ((8 * 1024) - 1) & (1ULL << 12) ? 12 : ((8 * 1024) - 1) & (1ULL << 11) ? 11 : ((8 * 1024) - 1) & (1ULL << 10) ? 10 : ((8 * 1024) - 1) & (1ULL << 9) ? 9 : ((8 * 1024) - 1) & (1ULL << 8) ? 8 : ((8 * 1024) - 1) & (1ULL << 7) ? 7 : ((8 * 1024) - 1) & (1ULL << 6) ? 6 : ((8 * 1024) - 1) & (1ULL << 5) ? 5 : ((8 * 1024) - 1) & (1ULL << 4) ? 4 : ((8 * 1024) - 1) & (1ULL << 3) ? 3 : ((8 * 1024) - 1) & (1ULL << 2) ? 2 : 1) : -1) : (sizeof((8 * 1024) - 1) <= 4) ? __ilog2_u32((8 * 1024) - 1) : __ilog2_u64((8 * 1024) - 1) ) - 12 + 1) ) : __get_order(8 * 1024) ); case IWL_AMSDU_12K: return ( __builtin_constant_p(12 * 1024) ? ( ((12 * 1024) == 0UL) ? 64 - 12 : (((12 * 1024) < (1UL << 12)) ? 0 : ( __builtin_constant_p((12 * 1024) - 1) ? ( __builtin_constant_p((12 * 1024) - 1) ? ( ((12 * 1024) - 1) < 2 ? 0 : ((12 * 1024) - 1) & (1ULL << 63) ? 63 : ((12 * 1024) - 1) & (1ULL << 62) ? 62 : ((12 * 1024) - 1) & (1ULL << 61) ? 61 : ((12 * 1024) - 1) & (1ULL << 60) ? 60 : ((12 * 1024) - 1) & (1ULL << 59) ? 59 : ((12 * 1024) - 1) & (1ULL << 58) ? 58 : ((12 * 1024) - 1) & (1ULL << 57) ? 57 : ((12 * 1024) - 1) & (1ULL << 56) ? 56 : ((12 * 1024) - 1) & (1ULL << 55) ? 55 : ((12 * 1024) - 1) & (1ULL << 54) ? 54 : ((12 * 1024) - 1) & (1ULL << 53) ? 53 : ((12 * 1024) - 1) & (1ULL << 52) ? 52 : ((12 * 1024) - 1) & (1ULL << 51) ? 51 : ((12 * 1024) - 1) & (1ULL << 50) ? 50 : ((12 * 1024) - 1) & (1ULL << 49) ? 49 : ((12 * 1024) - 1) & (1ULL << 48) ? 48 : ((12 * 1024) - 1) & (1ULL << 47) ? 47 : ((12 * 1024) - 1) & (1ULL << 46) ? 46 : ((12 * 1024) - 1) & (1ULL << 45) ? 45 : ((12 * 1024) - 1) & (1ULL << 44) ? 44 : ((12 * 1024) - 1) & (1ULL << 43) ? 43 : ((12 * 1024) - 1) & (1ULL << 42) ? 42 : ((12 * 1024) - 1) & (1ULL << 41) ? 41 : ((12 * 1024) - 1) & (1ULL << 40) ? 40 : ((12 * 1024) - 1) & (1ULL << 39) ? 39 : ((12 * 1024) - 1) & (1ULL << 38) ? 38 : ((12 * 1024) - 1) & (1ULL << 37) ? 37 : ((12 * 1024) - 1) & (1ULL << 36) ? 36 : ((12 * 1024) - 1) & (1ULL << 35) ? 35 : ((12 * 1024) - 1) & (1ULL << 34) ? 34 : ((12 * 1024) - 1) & (1ULL << 33) ? 33 : ((12 * 1024) - 1) & (1ULL << 32) ? 32 : ((12 * 1024) - 1) & (1ULL << 31) ? 31 : ((12 * 1024) - 1) & (1ULL << 30) ? 30 : ((12 * 1024) - 1) & (1ULL << 29) ? 29 : ((12 * 1024) - 1) & (1ULL << 28) ? 28 : ((12 * 1024) - 1) & (1ULL << 27) ? 27 : ((12 * 1024) - 1) & (1ULL << 26) ? 26 : ((12 * 1024) - 1) & (1ULL << 25) ? 25 : ((12 * 1024) - 1) & (1ULL << 24) ? 24 : ((12 * 1024) - 1) & (1ULL << 23) ? 23 : ((12 * 1024) - 1) & (1ULL << 22) ? 22 : ((12 * 1024) - 1) & (1ULL << 21) ? 21 : ((12 * 1024) - 1) & (1ULL << 20) ? 20 : ((12 * 1024) - 1) & (1ULL << 19) ? 19 : ((12 * 1024) - 1) & (1ULL << 18) ? 18 : ((12 * 1024) - 1) & (1ULL << 17) ? 17 : ((12 * 1024) - 1) & (1ULL << 16) ? 16 : ((12 * 1024) - 1) & (1ULL << 15) ? 15 : ((12 * 1024) - 1) & (1ULL << 14) ? 14 : ((12 * 1024) - 1) & (1ULL << 13) ? 13 : ((12 * 1024) - 1) & (1ULL << 12) ? 12 : ((12 * 1024) - 1) & (1ULL << 11) ? 11 : ((12 * 1024) - 1) & (1ULL << 10) ? 10 : ((12 * 1024) - 1) & (1ULL << 9) ? 9 : ((12 * 1024) - 1) & (1ULL << 8) ? 8 : ((12 * 1024) - 1) & (1ULL << 7) ? 7 : ((12 * 1024) - 1) & (1ULL << 6) ? 6 : ((12 * 1024) - 1) & (1ULL << 5) ? 5 : ((12 * 1024) - 1) & (1ULL << 4) ? 4 : ((12 * 1024) - 1) & (1ULL << 3) ? 3 : ((12 * 1024) - 1) & (1ULL << 2) ? 2 : 1) : -1) : (sizeof((12 * 1024) - 1) <= 4) ? __ilog2_u32((12 * 1024) - 1) : __ilog2_u64((12 * 1024) - 1) ) - 12 + 1) ) : __get_order(12 * 1024) ); default: ({ int __ret_warn_on = !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (367), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (425)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); return -1; } } struct iwl_hcmd_names { u8 cmd_id; const char *const cmd_name; }; struct iwl_hcmd_arr { const struct iwl_hcmd_names *arr; int size; }; # 413 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" struct iwl_trans_config { struct iwl_op_mode *op_mode; u8 cmd_queue; u8 cmd_fifo; unsigned int cmd_q_wdg_timeout; const u8 *no_reclaim_cmds; unsigned int n_no_reclaim_cmds; enum iwl_amsdu_size rx_buf_size; bool bc_table_dword; bool scd_set_active; bool sw_csum_tx; const struct iwl_hcmd_arr *command_groups; int command_groups_size; u8 cb_data_offs; }; struct iwl_trans_dump_data { u32 len; u8 data[]; }; struct iwl_trans; struct iwl_trans_txq_scd_cfg { u8 fifo; u8 sta_id; u8 tid; bool aggregate; int frame_limit; }; # 454 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" struct iwl_trans_rxq_dma_data { u64 fr_bd_cb; u32 fr_bd_wid; u64 urbd_stts_wrptr; u64 ur_bd_cb; }; # 549 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" struct iwl_trans_ops { int (*start_hw)(struct iwl_trans *iwl_trans, bool low_power); void (*op_mode_leave)(struct iwl_trans *iwl_trans); int (*start_fw)(struct iwl_trans *trans, const struct fw_img *fw, bool run_in_rfkill); void (*fw_alive)(struct iwl_trans *trans, u32 scd_addr); void (*stop_device)(struct iwl_trans *trans, bool low_power); void (*d3_suspend)(struct iwl_trans *trans, bool test, bool reset); int (*d3_resume)(struct iwl_trans *trans, enum iwl_d3_status *status, bool test, bool reset); int (*send_cmd)(struct iwl_trans *trans, struct iwl_host_cmd *cmd); int (*tx)(struct iwl_trans *trans, struct sk_buff *skb, struct iwl_device_cmd *dev_cmd, int queue); void (*reclaim)(struct iwl_trans *trans, int queue, int ssn, struct sk_buff_head *skbs); bool (*txq_enable)(struct iwl_trans *trans, int queue, u16 ssn, const struct iwl_trans_txq_scd_cfg *cfg, unsigned int queue_wdg_timeout); void (*txq_disable)(struct iwl_trans *trans, int queue, bool configure_scd); int (*txq_alloc)(struct iwl_trans *trans, __le16 flags, u8 sta_id, u8 tid, int cmd_id, int size, unsigned int queue_wdg_timeout); void (*txq_free)(struct iwl_trans *trans, int queue); int (*rxq_dma_data)(struct iwl_trans *trans, int queue, struct iwl_trans_rxq_dma_data *data); void (*txq_set_shared_mode)(struct iwl_trans *trans, u32 txq_id, bool shared); int (*wait_tx_queues_empty)(struct iwl_trans *trans, u32 txq_bm); int (*wait_txq_empty)(struct iwl_trans *trans, int queue); void (*freeze_txq_timer)(struct iwl_trans *trans, unsigned long txqs, bool freeze); void (*block_txq_ptrs)(struct iwl_trans *trans, bool block); void (*write8)(struct iwl_trans *trans, u32 ofs, u8 val); void (*write32)(struct iwl_trans *trans, u32 ofs, u32 val); u32 (*read32)(struct iwl_trans *trans, u32 ofs); u32 (*read_prph)(struct iwl_trans *trans, u32 ofs); void (*write_prph)(struct iwl_trans *trans, u32 ofs, u32 val); int (*read_mem)(struct iwl_trans *trans, u32 addr, void *buf, int dwords); int (*write_mem)(struct iwl_trans *trans, u32 addr, const void *buf, int dwords); void (*configure)(struct iwl_trans *trans, const struct iwl_trans_config *trans_cfg); void (*set_pmi)(struct iwl_trans *trans, bool state); void (*sw_reset)(struct iwl_trans *trans); bool (*grab_nic_access)(struct iwl_trans *trans, unsigned long *flags); void (*release_nic_access)(struct iwl_trans *trans, unsigned long *flags); void (*set_bits_mask)(struct iwl_trans *trans, u32 reg, u32 mask, u32 value); void (*ref)(struct iwl_trans *trans); void (*unref)(struct iwl_trans *trans); int (*suspend)(struct iwl_trans *trans); void (*resume)(struct iwl_trans *trans); struct iwl_trans_dump_data *(*dump_data)(struct iwl_trans *trans, u32 dump_mask); void (*debugfs_cleanup)(struct iwl_trans *trans); void (*sync_nmi)(struct iwl_trans *trans); }; enum iwl_trans_state { IWL_TRANS_NO_FW = 0, IWL_TRANS_FW_ALIVE = 1, }; # 684 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" enum iwl_plat_pm_mode { IWL_PLAT_PM_MODE_DISABLED, IWL_PLAT_PM_MODE_D3, IWL_PLAT_PM_MODE_D0I3, }; # 704 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" struct iwl_dram_data { dma_addr_t physical; void *block; int size; }; # 717 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" struct iwl_self_init_dram { struct iwl_dram_data *fw; int fw_cnt; struct iwl_dram_data *paging; int paging_cnt; }; # 743 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" struct iwl_trans_debug { u8 n_dest_reg; bool rec_on; const struct iwl_fw_dbg_dest_tlv_v1 *dest_tlv; const struct iwl_fw_dbg_conf_tlv *conf_tlv[32]; struct iwl_fw_dbg_trigger_tlv * const *trigger_tlv; u32 lmac_error_event_table[2]; u32 umac_error_event_table; unsigned int error_event_table_tlv_status; bool external_ini_loaded; bool ini_valid; struct iwl_apply_point_data apply_points[IWL_FW_INI_APPLY_NUM]; struct iwl_apply_point_data apply_points_ext[IWL_FW_INI_APPLY_NUM]; int num_blocks; struct iwl_dram_data fw_mon[IWL_FW_INI_APPLY_NUM]; bool hw_error; enum iwl_fw_ini_buffer_location ini_dest; }; # 804 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" struct iwl_trans { const struct iwl_trans_ops *ops; struct iwl_op_mode *op_mode; const struct iwl_cfg *cfg; struct iwl_drv *drv; enum iwl_trans_state state; unsigned long status; struct device *dev; u32 max_skb_frags; u32 hw_rev; u32 hw_rf_id; u32 hw_id; char hw_id_str[52]; u8 rx_mpdu_cmd, rx_mpdu_cmd_hdr_size; bool pm_support; bool ltr_enabled; const struct iwl_hcmd_arr *command_groups; int command_groups_size; bool wide_cmd_header; u8 num_rx_queues; size_t iml_len; u8 *iml; struct kmem_cache *dev_cmd_pool; char dev_cmd_pool_name[50]; struct dentry *dbgfs_dir; struct lockdep_map sync_cmd_lockdep_map; struct iwl_trans_debug dbg; struct iwl_self_init_dram init_dram; enum iwl_plat_pm_mode system_pm_mode; enum iwl_plat_pm_mode runtime_pm_mode; bool suspending; char trans_specific[0] __attribute__((__aligned__(sizeof(void *)))); }; const char *iwl_get_cmd_string(struct iwl_trans *trans, u32 id); int iwl_cmd_groups_verify_sorted(const struct iwl_trans_config *trans); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_configure(struct iwl_trans *trans, const struct iwl_trans_config *trans_cfg) { trans->op_mode = trans_cfg->op_mode; trans->ops->configure(trans, trans_cfg); ({ int __ret_warn_on = !!(iwl_cmd_groups_verify_sorted(trans_cfg)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (864), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (426)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int _iwl_trans_start_hw(struct iwl_trans *trans, bool low_power) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h", 869, 0); do { } while (0); } while (0); return trans->ops->start_hw(trans, low_power); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_trans_start_hw(struct iwl_trans *trans) { return trans->ops->start_hw(trans, true); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_op_mode_leave(struct iwl_trans *trans) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h", 881, 0); do { } while (0); } while (0); if (trans->ops->op_mode_leave) trans->ops->op_mode_leave(trans); trans->op_mode = ((void *)0); trans->state = IWL_TRANS_NO_FW; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_fw_alive(struct iwl_trans *trans, u32 scd_addr) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h", 893, 0); do { } while (0); } while (0); trans->state = IWL_TRANS_FW_ALIVE; trans->ops->fw_alive(trans, scd_addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_trans_start_fw(struct iwl_trans *trans, const struct fw_img *fw, bool run_in_rfkill) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h", 904, 0); do { } while (0); } while (0); ({ int __ret_warn_on = !!(!trans->rx_mpdu_cmd); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (906), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (427)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); clear_bit(STATUS_FW_ERROR, &trans->status); return trans->ops->start_fw(trans, fw, run_in_rfkill); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void _iwl_trans_stop_device(struct iwl_trans *trans, bool low_power) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h", 915, 0); do { } while (0); } while (0); trans->ops->stop_device(trans, low_power); trans->state = IWL_TRANS_NO_FW; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_stop_device(struct iwl_trans *trans) { _iwl_trans_stop_device(trans, true); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_d3_suspend(struct iwl_trans *trans, bool test, bool reset) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h", 930, 0); do { } while (0); } while (0); if (trans->ops->d3_suspend) trans->ops->d3_suspend(trans, test, reset); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_trans_d3_resume(struct iwl_trans *trans, enum iwl_d3_status *status, bool test, bool reset) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h", 939, 0); do { } while (0); } while (0); if (!trans->ops->d3_resume) return 0; return trans->ops->d3_resume(trans, status, test, reset); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_trans_suspend(struct iwl_trans *trans) { if (!trans->ops->suspend) return 0; return trans->ops->suspend(trans); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_resume(struct iwl_trans *trans) { if (trans->ops->resume) trans->ops->resume(trans); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct iwl_trans_dump_data * iwl_trans_dump_data(struct iwl_trans *trans, u32 dump_mask) { if (!trans->ops->dump_data) return ((void *)0); return trans->ops->dump_data(trans, dump_mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct iwl_device_cmd * iwl_trans_alloc_tx_cmd(struct iwl_trans *trans) { return kmem_cache_alloc(trans->dev_cmd_pool, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u))); } int iwl_trans_send_cmd(struct iwl_trans *trans, struct iwl_host_cmd *cmd); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_free_tx_cmd(struct iwl_trans *trans, struct iwl_device_cmd *dev_cmd) { kmem_cache_free(trans->dev_cmd_pool, dev_cmd); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_trans_tx(struct iwl_trans *trans, struct sk_buff *skb, struct iwl_device_cmd *dev_cmd, int queue) { if (__builtin_expect(!!(test_bit(STATUS_FW_ERROR, &trans->status)), 0)) return -5; if (({ int __ret_warn_on = !!(trans->state != IWL_TRANS_FW_ALIVE); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (988), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (428)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) { do { do { extern void __compiletime_assert_989(void) ; if (!(!("%s bad state = %d\n"[sizeof("%s bad state = %d\n") - 2] != '\n'))) __compiletime_assert_989(); } while (0); __iwl_err(((trans)->dev), false, false, "%s bad state = %d\n", __func__, trans->state); } while (0); return -5; } return trans->ops->tx(trans, skb, dev_cmd, queue); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_reclaim(struct iwl_trans *trans, int queue, int ssn, struct sk_buff_head *skbs) { if (({ int __ret_warn_on = !!(trans->state != IWL_TRANS_FW_ALIVE); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (999), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (429)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) { do { do { extern void __compiletime_assert_1000(void) ; if (!(!("%s bad state = %d\n"[sizeof("%s bad state = %d\n") - 2] != '\n'))) __compiletime_assert_1000(); } while (0); __iwl_err(((trans)->dev), false, false, "%s bad state = %d\n", __func__, trans->state); } while (0); return; } trans->ops->reclaim(trans, queue, ssn, skbs); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_txq_disable(struct iwl_trans *trans, int queue, bool configure_scd) { trans->ops->txq_disable(trans, queue, configure_scd); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_trans_txq_enable_cfg(struct iwl_trans *trans, int queue, u16 ssn, const struct iwl_trans_txq_scd_cfg *cfg, unsigned int queue_wdg_timeout) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h", 1018, 0); do { } while (0); } while (0); if (({ int __ret_warn_on = !!(trans->state != IWL_TRANS_FW_ALIVE); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (1020), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (430)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) { do { do { extern void __compiletime_assert_1021(void) ; if (!(!("%s bad state = %d\n"[sizeof("%s bad state = %d\n") - 2] != '\n'))) __compiletime_assert_1021(); } while (0); __iwl_err(((trans)->dev), false, false, "%s bad state = %d\n", __func__, trans->state); } while (0); return false; } return trans->ops->txq_enable(trans, queue, ssn, cfg, queue_wdg_timeout); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_trans_get_rxq_dma_data(struct iwl_trans *trans, int queue, struct iwl_trans_rxq_dma_data *data) { if (({ int __ret_warn_on = !!(!trans->ops->rxq_dma_data); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (1033), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (431)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return -524; return trans->ops->rxq_dma_data(trans, queue, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_txq_free(struct iwl_trans *trans, int queue) { if (({ int __ret_warn_on = !!(!trans->ops->txq_free); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (1042), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (432)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return; trans->ops->txq_free(trans, queue); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_trans_txq_alloc(struct iwl_trans *trans, __le16 flags, u8 sta_id, u8 tid, int cmd_id, int size, unsigned int wdg_timeout) { do { __might_sleep("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h", 1054, 0); do { } while (0); } while (0); if (({ int __ret_warn_on = !!(!trans->ops->txq_alloc); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (1056), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (433)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return -524; if (({ int __ret_warn_on = !!(trans->state != IWL_TRANS_FW_ALIVE); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (1059), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (434)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) { do { do { extern void __compiletime_assert_1060(void) ; if (!(!("%s bad state = %d\n"[sizeof("%s bad state = %d\n") - 2] != '\n'))) __compiletime_assert_1060(); } while (0); __iwl_err(((trans)->dev), false, false, "%s bad state = %d\n", __func__, trans->state); } while (0); return -5; } return trans->ops->txq_alloc(trans, flags, sta_id, tid, cmd_id, size, wdg_timeout); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_txq_set_shared_mode(struct iwl_trans *trans, int queue, bool shared_mode) { if (trans->ops->txq_set_shared_mode) trans->ops->txq_set_shared_mode(trans, queue, shared_mode); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_txq_enable(struct iwl_trans *trans, int queue, int fifo, int sta_id, int tid, int frame_limit, u16 ssn, unsigned int queue_wdg_timeout) { struct iwl_trans_txq_scd_cfg cfg = { .fifo = fifo, .sta_id = sta_id, .tid = tid, .frame_limit = frame_limit, .aggregate = sta_id >= 0, }; iwl_trans_txq_enable_cfg(trans, queue, ssn, &cfg, queue_wdg_timeout); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_ac_txq_enable(struct iwl_trans *trans, int queue, int fifo, unsigned int queue_wdg_timeout) { struct iwl_trans_txq_scd_cfg cfg = { .fifo = fifo, .sta_id = -1, .tid = 8, .frame_limit = 64, .aggregate = false, }; iwl_trans_txq_enable_cfg(trans, queue, 0, &cfg, queue_wdg_timeout); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_freeze_txq_timer(struct iwl_trans *trans, unsigned long txqs, bool freeze) { if (({ int __ret_warn_on = !!(trans->state != IWL_TRANS_FW_ALIVE); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (1110), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (435)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) { do { do { extern void __compiletime_assert_1111(void) ; if (!(!("%s bad state = %d\n"[sizeof("%s bad state = %d\n") - 2] != '\n'))) __compiletime_assert_1111(); } while (0); __iwl_err(((trans)->dev), false, false, "%s bad state = %d\n", __func__, trans->state); } while (0); return; } if (trans->ops->freeze_txq_timer) trans->ops->freeze_txq_timer(trans, txqs, freeze); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_block_txq_ptrs(struct iwl_trans *trans, bool block) { if (({ int __ret_warn_on = !!(trans->state != IWL_TRANS_FW_ALIVE); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (1122), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (436)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) { do { do { extern void __compiletime_assert_1123(void) ; if (!(!("%s bad state = %d\n"[sizeof("%s bad state = %d\n") - 2] != '\n'))) __compiletime_assert_1123(); } while (0); __iwl_err(((trans)->dev), false, false, "%s bad state = %d\n", __func__, trans->state); } while (0); return; } if (trans->ops->block_txq_ptrs) trans->ops->block_txq_ptrs(trans, block); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_trans_wait_tx_queues_empty(struct iwl_trans *trans, u32 txqs) { if (({ int __ret_warn_on = !!(!trans->ops->wait_tx_queues_empty); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (1134), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (437)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return -524; if (({ int __ret_warn_on = !!(trans->state != IWL_TRANS_FW_ALIVE); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (1137), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (438)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) { do { do { extern void __compiletime_assert_1138(void) ; if (!(!("%s bad state = %d\n"[sizeof("%s bad state = %d\n") - 2] != '\n'))) __compiletime_assert_1138(); } while (0); __iwl_err(((trans)->dev), false, false, "%s bad state = %d\n", __func__, trans->state); } while (0); return -5; } return trans->ops->wait_tx_queues_empty(trans, txqs); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_trans_wait_txq_empty(struct iwl_trans *trans, int queue) { if (({ int __ret_warn_on = !!(!trans->ops->wait_txq_empty); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (1147), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (439)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return -524; if (({ int __ret_warn_on = !!(trans->state != IWL_TRANS_FW_ALIVE); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (1150), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (440)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) { do { do { extern void __compiletime_assert_1151(void) ; if (!(!("%s bad state = %d\n"[sizeof("%s bad state = %d\n") - 2] != '\n'))) __compiletime_assert_1151(); } while (0); __iwl_err(((trans)->dev), false, false, "%s bad state = %d\n", __func__, trans->state); } while (0); return -5; } return trans->ops->wait_txq_empty(trans, queue); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_write8(struct iwl_trans *trans, u32 ofs, u8 val) { trans->ops->write8(trans, ofs, val); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_write32(struct iwl_trans *trans, u32 ofs, u32 val) { trans->ops->write32(trans, ofs, val); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 iwl_trans_read32(struct iwl_trans *trans, u32 ofs) { return trans->ops->read32(trans, ofs); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 iwl_trans_read_prph(struct iwl_trans *trans, u32 ofs) { return trans->ops->read_prph(trans, ofs); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_write_prph(struct iwl_trans *trans, u32 ofs, u32 val) { return trans->ops->write_prph(trans, ofs, val); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_trans_read_mem(struct iwl_trans *trans, u32 addr, void *buf, int dwords) { return trans->ops->read_mem(trans, addr, buf, dwords); } # 1197 "../drivers/net/wireless/intel/iwlwifi/iwl-trans.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 iwl_trans_read_mem32(struct iwl_trans *trans, u32 addr) { u32 value; if (({ int __ret_warn_on = !!(iwl_trans_read_mem(trans, addr, &value, 1)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (1201), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (441)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return 0xa5a5a5a5; return value; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_trans_write_mem(struct iwl_trans *trans, u32 addr, const void *buf, int dwords) { return trans->ops->write_mem(trans, addr, buf, dwords); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 iwl_trans_write_mem32(struct iwl_trans *trans, u32 addr, u32 val) { return iwl_trans_write_mem(trans, addr, &val, 1); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_set_pmi(struct iwl_trans *trans, bool state) { if (trans->ops->set_pmi) trans->ops->set_pmi(trans, state); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_sw_reset(struct iwl_trans *trans) { if (trans->ops->sw_reset) trans->ops->sw_reset(trans); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_set_bits_mask(struct iwl_trans *trans, u32 reg, u32 mask, u32 value) { trans->ops->set_bits_mask(trans, reg, mask, value); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_release_nic_access(struct iwl_trans *trans, unsigned long *flags) { trans->ops->release_nic_access(trans, flags); (void)0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_fw_error(struct iwl_trans *trans) { if (({ int __ret_warn_on = !!(!trans->op_mode); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-trans.h"), "i" (1250), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (442)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return; if (!test_and_set_bit(STATUS_FW_ERROR, &trans->status)) iwl_op_mode_nic_error(trans->op_mode); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_trans_sync_nmi(struct iwl_trans *trans) { if (trans->ops->sync_nmi) trans->ops->sync_nmi(trans); } struct iwl_trans *iwl_trans_alloc(unsigned int priv_size, struct device *dev, const struct iwl_cfg *cfg, const struct iwl_trans_ops *ops); void iwl_trans_free(struct iwl_trans *trans); void iwl_trans_ref(struct iwl_trans *trans); void iwl_trans_unref(struct iwl_trans *trans); int __attribute__((__warn_unused_result__)) iwl_pci_register_driver(void); void iwl_pci_unregister_driver(void); # 65 "../drivers/net/wireless/intel/iwlwifi/fw/runtime.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/fw/api/debug.h" 1 # 70 "../drivers/net/wireless/intel/iwlwifi/fw/api/debug.h" enum iwl_debug_cmds { LMAC_RD_WR = 0x0, UMAC_RD_WR = 0x1, MFU_ASSERT_DUMP_NTF = 0xFE, }; enum { FW_ERR_UNKNOWN_CMD = 0x0, FW_ERR_INVALID_CMD_PARAM = 0x1, FW_ERR_SERVICE = 0x2, FW_ERR_ARC_MEMORY = 0x3, FW_ERR_ARC_CODE = 0x4, FW_ERR_WATCH_DOG = 0x5, FW_ERR_WEP_GRP_KEY_INDX = 0x10, FW_ERR_WEP_KEY_SIZE = 0x11, FW_ERR_OBSOLETE_FUNC = 0x12, FW_ERR_UNEXPECTED = 0xFE, FW_ERR_FATAL = 0xFF }; # 116 "../drivers/net/wireless/intel/iwlwifi/fw/api/debug.h" struct iwl_error_resp { __le32 error_type; u8 cmd_id; u8 reserved1; __le16 bad_cmd_seq_num; __le32 error_service; __le64 timestamp; } __attribute__((__packed__)); # 153 "../drivers/net/wireless/intel/iwlwifi/fw/api/debug.h" struct iwl_shared_mem_cfg_v2 { __le32 shared_mem_addr; __le32 shared_mem_size; __le32 sample_buff_addr; __le32 sample_buff_size; __le32 txfifo_addr; __le32 txfifo_size[8]; __le32 rxfifo_size[2]; __le32 page_buff_addr; __le32 page_buff_size; __le32 rxfifo_addr; __le32 internal_txfifo_addr; __le32 internal_txfifo_size[6]; } __attribute__((__packed__)); # 176 "../drivers/net/wireless/intel/iwlwifi/fw/api/debug.h" struct iwl_shared_mem_lmac_cfg { __le32 txfifo_addr; __le32 txfifo_size[15]; __le32 rxfifo1_addr; __le32 rxfifo1_size; } __attribute__((__packed__)); # 199 "../drivers/net/wireless/intel/iwlwifi/fw/api/debug.h" struct iwl_shared_mem_cfg { __le32 shared_mem_addr; __le32 shared_mem_size; __le32 sample_buff_addr; __le32 sample_buff_size; __le32 rxfifo2_addr; __le32 rxfifo2_size; __le32 page_buff_addr; __le32 page_buff_size; __le32 lmac_num; struct iwl_shared_mem_lmac_cfg lmac_smem[2]; } __attribute__((__packed__)); # 221 "../drivers/net/wireless/intel/iwlwifi/fw/api/debug.h" struct iwl_mfuart_load_notif { __le32 installed_ver; __le32 external_ver; __le32 status; __le32 duration; __le32 image_size; } __attribute__((__packed__)); # 240 "../drivers/net/wireless/intel/iwlwifi/fw/api/debug.h" struct iwl_mfu_assert_dump_notif { __le32 assert_id; __le32 curr_reset_num; __le16 index_num; __le16 parts_num; __le32 data_size; __le32 data[0]; } __attribute__((__packed__)); # 257 "../drivers/net/wireless/intel/iwlwifi/fw/api/debug.h" enum iwl_mvm_marker_id { MARKER_ID_TX_FRAME_LATENCY = 1, MARKER_ID_SYNC_CLOCK = 2, }; # 277 "../drivers/net/wireless/intel/iwlwifi/fw/api/debug.h" struct iwl_mvm_marker { u8 dw_len; u8 marker_id; __le16 reserved; __le64 timestamp; __le32 metadata[0]; } __attribute__((__packed__)); struct iwl_mvm_marker_rsp { __le32 gp2; } __attribute__((__packed__)); enum { DEBUG_MEM_OP_READ = 0, DEBUG_MEM_OP_WRITE = 1, DEBUG_MEM_OP_WRITE_BYTES = 2, }; # 310 "../drivers/net/wireless/intel/iwlwifi/fw/api/debug.h" struct iwl_dbg_mem_access_cmd { __le32 op; __le32 addr; __le32 len; __le32 data[]; } __attribute__((__packed__)); enum { DEBUG_MEM_STATUS_SUCCESS = 0x0, DEBUG_MEM_STATUS_FAILED = 0x1, DEBUG_MEM_STATUS_LOCKED = 0x2, DEBUG_MEM_STATUS_HIDDEN = 0x3, DEBUG_MEM_STATUS_LENGTH = 0x4, }; struct iwl_dbg_mem_access_rsp { __le32 status; __le32 len; __le32 data[]; } __attribute__((__packed__)); # 351 "../drivers/net/wireless/intel/iwlwifi/fw/api/debug.h" struct iwl_fragment_data { __le64 address; __le32 size; } __attribute__((__packed__)); # 363 "../drivers/net/wireless/intel/iwlwifi/fw/api/debug.h" struct iwl_buffer_allocation_cmd { __le32 allocation_id; __le32 buffer_location; __le32 num_frags; struct iwl_fragment_data fragments[2]; } __attribute__((__packed__)); struct iwl_ldbg_config_cmd { __le32 type; union { u8 pad[80 - sizeof(__le32)]; struct iwl_buffer_allocation_cmd buffer_allocation; }; } __attribute__((__packed__)); # 67 "../drivers/net/wireless/intel/iwlwifi/fw/runtime.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/fw/api/paging.h" 1 # 77 "../drivers/net/wireless/intel/iwlwifi/fw/api/paging.h" struct iwl_fw_paging_cmd { __le32 flags; __le32 block_size; __le32 block_num; __le32 device_phy_addr[33]; } __attribute__((__packed__)); # 69 "../drivers/net/wireless/intel/iwlwifi/fw/runtime.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.h" 1 # 66 "../drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.h" # 1 "../include/net/cfg80211.h" 1 # 23 "../include/net/cfg80211.h" # 1 "../include/net/regulatory.h" 1 # 31 "../include/net/regulatory.h" enum environment_cap { ENVIRON_ANY, ENVIRON_INDOOR, ENVIRON_OUTDOOR, }; # 77 "../include/net/regulatory.h" struct regulatory_request { struct callback_head callback_head; int wiphy_idx; enum nl80211_reg_initiator initiator; enum nl80211_user_reg_hint_type user_reg_hint_type; char alpha2[3]; enum nl80211_dfs_regions dfs_region; bool intersect; bool processed; enum environment_cap country_ie_env; struct list_head list; }; # 170 "../include/net/regulatory.h" enum ieee80211_regulatory_flags { REGULATORY_CUSTOM_REG = ((((1UL))) << (0)), REGULATORY_STRICT_REG = ((((1UL))) << (1)), REGULATORY_DISABLE_BEACON_HINTS = ((((1UL))) << (2)), REGULATORY_COUNTRY_IE_FOLLOW_POWER = ((((1UL))) << (3)), REGULATORY_COUNTRY_IE_IGNORE = ((((1UL))) << (4)), REGULATORY_ENABLE_RELAX_NO_IR = ((((1UL))) << (5)), REGULATORY_IGNORE_STALE_KICKOFF = ((((1UL))) << (6)), REGULATORY_WIPHY_SELF_MANAGED = ((((1UL))) << (7)), }; struct ieee80211_freq_range { u32 start_freq_khz; u32 end_freq_khz; u32 max_bandwidth_khz; }; struct ieee80211_power_rule { u32 max_antenna_gain; u32 max_eirp; }; # 205 "../include/net/regulatory.h" struct ieee80211_wmm_ac { u16 cw_min; u16 cw_max; u16 cot; u8 aifsn; }; struct ieee80211_wmm_rule { struct ieee80211_wmm_ac client[4]; struct ieee80211_wmm_ac ap[4]; }; struct ieee80211_reg_rule { struct ieee80211_freq_range freq_range; struct ieee80211_power_rule power_rule; struct ieee80211_wmm_rule wmm_rule; u32 flags; u32 dfs_cac_ms; bool has_wmm; }; struct ieee80211_regdomain { struct callback_head callback_head; u32 n_reg_rules; char alpha2[3]; enum nl80211_dfs_regions dfs_region; struct ieee80211_reg_rule reg_rules[]; }; # 24 "../include/net/cfg80211.h" 2 # 62 "../include/net/cfg80211.h" struct wiphy; # 100 "../include/net/cfg80211.h" enum ieee80211_channel_flags { IEEE80211_CHAN_DISABLED = 1<<0, IEEE80211_CHAN_NO_IR = 1<<1, IEEE80211_CHAN_RADAR = 1<<3, IEEE80211_CHAN_NO_HT40PLUS = 1<<4, IEEE80211_CHAN_NO_HT40MINUS = 1<<5, IEEE80211_CHAN_NO_OFDM = 1<<6, IEEE80211_CHAN_NO_80MHZ = 1<<7, IEEE80211_CHAN_NO_160MHZ = 1<<8, IEEE80211_CHAN_INDOOR_ONLY = 1<<9, IEEE80211_CHAN_IR_CONCURRENT = 1<<10, IEEE80211_CHAN_NO_20MHZ = 1<<11, IEEE80211_CHAN_NO_10MHZ = 1<<12, }; # 147 "../include/net/cfg80211.h" struct ieee80211_channel { enum nl80211_band band; u32 center_freq; u16 hw_value; u32 flags; int max_antenna_gain; int max_power; int max_reg_power; bool beacon_found; u32 orig_flags; int orig_mag, orig_mpwr; enum nl80211_dfs_state dfs_state; unsigned long dfs_state_entered; unsigned int dfs_cac_ms; }; # 186 "../include/net/cfg80211.h" enum ieee80211_rate_flags { IEEE80211_RATE_SHORT_PREAMBLE = 1<<0, IEEE80211_RATE_MANDATORY_A = 1<<1, IEEE80211_RATE_MANDATORY_B = 1<<2, IEEE80211_RATE_MANDATORY_G = 1<<3, IEEE80211_RATE_ERP_G = 1<<4, IEEE80211_RATE_SUPPORTS_5MHZ = 1<<5, IEEE80211_RATE_SUPPORTS_10MHZ = 1<<6, }; # 205 "../include/net/cfg80211.h" enum ieee80211_bss_type { IEEE80211_BSS_TYPE_ESS, IEEE80211_BSS_TYPE_PBSS, IEEE80211_BSS_TYPE_IBSS, IEEE80211_BSS_TYPE_MBSS, IEEE80211_BSS_TYPE_ANY }; # 220 "../include/net/cfg80211.h" enum ieee80211_privacy { IEEE80211_PRIVACY_ON, IEEE80211_PRIVACY_OFF, IEEE80211_PRIVACY_ANY }; # 243 "../include/net/cfg80211.h" struct ieee80211_rate { u32 flags; u16 bitrate; u16 hw_value, hw_value_short; }; # 261 "../include/net/cfg80211.h" struct ieee80211_sta_ht_cap { u16 cap; bool ht_supported; u8 ampdu_factor; u8 ampdu_density; struct ieee80211_mcs_info mcs; }; # 279 "../include/net/cfg80211.h" struct ieee80211_sta_vht_cap { bool vht_supported; u32 cap; struct ieee80211_vht_mcs_info vht_mcs; }; # 298 "../include/net/cfg80211.h" struct ieee80211_sta_he_cap { bool has_he; struct ieee80211_he_cap_elem he_cap_elem; struct ieee80211_he_mcs_nss_supp he_mcs_nss_supp; u8 ppe_thres[25]; }; # 315 "../include/net/cfg80211.h" struct ieee80211_sband_iftype_data { u16 types_mask; struct ieee80211_sta_he_cap he_cap; }; # 342 "../include/net/cfg80211.h" struct ieee80211_supported_band { struct ieee80211_channel *channels; struct ieee80211_rate *bitrates; enum nl80211_band band; int n_channels; int n_bitrates; struct ieee80211_sta_ht_cap ht_cap; struct ieee80211_sta_vht_cap vht_cap; u16 n_iftype_data; const struct ieee80211_sband_iftype_data *iftype_data; }; # 361 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct ieee80211_sband_iftype_data * ieee80211_get_sband_iftype_data(const struct ieee80211_supported_band *sband, u8 iftype) { int i; if (({ int __ret_warn_on = !!(iftype >= NL80211_IFTYPE_MAX); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/net/cfg80211.h"), "i" (367), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (443)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return ((void *)0); for (i = 0; i < sband->n_iftype_data; i++) { const struct ieee80211_sband_iftype_data *data = &sband->iftype_data[i]; if (data->types_mask & ((((1UL))) << (iftype))) return data; } return ((void *)0); } # 388 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct ieee80211_sta_he_cap * ieee80211_get_he_iftype_cap(const struct ieee80211_supported_band *sband, u8 iftype) { const struct ieee80211_sband_iftype_data *data = ieee80211_get_sband_iftype_data(sband, iftype); if (data && data->he_cap.has_he) return &data->he_cap; return ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct ieee80211_sta_he_cap * ieee80211_get_he_sta_cap(const struct ieee80211_supported_band *sband) { return ieee80211_get_he_iftype_cap(sband, NL80211_IFTYPE_STATION); } # 433 "../include/net/cfg80211.h" void wiphy_read_of_freq_limits(struct wiphy *wiphy); # 479 "../include/net/cfg80211.h" struct vif_params { u32 flags; int use_4addr; u8 macaddr[6]; const u8 *vht_mumimo_groups; const u8 *vht_mumimo_follow_addr; }; # 501 "../include/net/cfg80211.h" struct key_params { const u8 *key; const u8 *seq; int key_len; int seq_len; u32 cipher; enum nl80211_key_mode mode; }; # 518 "../include/net/cfg80211.h" struct cfg80211_chan_def { struct ieee80211_channel *chan; enum nl80211_chan_width width; u32 center_freq1; u32 center_freq2; }; # 532 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) enum nl80211_channel_type cfg80211_get_chandef_type(const struct cfg80211_chan_def *chandef) { switch (chandef->width) { case NL80211_CHAN_WIDTH_20_NOHT: return NL80211_CHAN_NO_HT; case NL80211_CHAN_WIDTH_20: return NL80211_CHAN_HT20; case NL80211_CHAN_WIDTH_40: if (chandef->center_freq1 > chandef->chan->center_freq) return NL80211_CHAN_HT40PLUS; return NL80211_CHAN_HT40MINUS; default: ({ int __ret_warn_on = !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/net/cfg80211.h"), "i" (545), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (444)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); return NL80211_CHAN_NO_HT; } } # 558 "../include/net/cfg80211.h" void cfg80211_chandef_create(struct cfg80211_chan_def *chandef, struct ieee80211_channel *channel, enum nl80211_channel_type chantype); # 570 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool cfg80211_chandef_identical(const struct cfg80211_chan_def *chandef1, const struct cfg80211_chan_def *chandef2) { return (chandef1->chan == chandef2->chan && chandef1->width == chandef2->width && chandef1->center_freq1 == chandef2->center_freq1 && chandef1->center_freq2 == chandef2->center_freq2); } # 588 "../include/net/cfg80211.h" const struct cfg80211_chan_def * cfg80211_chandef_compatible(const struct cfg80211_chan_def *chandef1, const struct cfg80211_chan_def *chandef2); bool cfg80211_chandef_valid(const struct cfg80211_chan_def *chandef); # 606 "../include/net/cfg80211.h" bool cfg80211_chandef_usable(struct wiphy *wiphy, const struct cfg80211_chan_def *chandef, u32 prohibited_flags); # 618 "../include/net/cfg80211.h" int cfg80211_chandef_dfs_required(struct wiphy *wiphy, const struct cfg80211_chan_def *chandef, enum nl80211_iftype iftype); # 632 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) enum ieee80211_rate_flags ieee80211_chandef_rate_flags(struct cfg80211_chan_def *chandef) { switch (chandef->width) { case NL80211_CHAN_WIDTH_5: return IEEE80211_RATE_SUPPORTS_5MHZ; case NL80211_CHAN_WIDTH_10: return IEEE80211_RATE_SUPPORTS_10MHZ; default: break; } return 0; } # 657 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int ieee80211_chandef_max_power(struct cfg80211_chan_def *chandef) { switch (chandef->width) { case NL80211_CHAN_WIDTH_5: return __builtin_choose_expr(((!!(sizeof((typeof(chandef->chan->max_reg_power - 6) *)1 == (typeof(chandef->chan->max_power) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)(chandef->chan->max_reg_power - 6) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)(chandef->chan->max_power) * 0l)) : (int *)8))))), ((chandef->chan->max_reg_power - 6) < (chandef->chan->max_power) ? (chandef->chan->max_reg_power - 6) : (chandef->chan->max_power)), ({ typeof(chandef->chan->max_reg_power - 6) __UNIQUE_ID___x445 = (chandef->chan->max_reg_power - 6); typeof(chandef->chan->max_power) __UNIQUE_ID___y446 = (chandef->chan->max_power); ((__UNIQUE_ID___x445) < (__UNIQUE_ID___y446) ? (__UNIQUE_ID___x445) : (__UNIQUE_ID___y446)); })); case NL80211_CHAN_WIDTH_10: return __builtin_choose_expr(((!!(sizeof((typeof(chandef->chan->max_reg_power - 3) *)1 == (typeof(chandef->chan->max_power) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)(chandef->chan->max_reg_power - 3) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)(chandef->chan->max_power) * 0l)) : (int *)8))))), ((chandef->chan->max_reg_power - 3) < (chandef->chan->max_power) ? (chandef->chan->max_reg_power - 3) : (chandef->chan->max_power)), ({ typeof(chandef->chan->max_reg_power - 3) __UNIQUE_ID___x447 = (chandef->chan->max_reg_power - 3); typeof(chandef->chan->max_power) __UNIQUE_ID___y448 = (chandef->chan->max_power); ((__UNIQUE_ID___x447) < (__UNIQUE_ID___y448) ? (__UNIQUE_ID___x447) : (__UNIQUE_ID___y448)); })); default: break; } return chandef->chan->max_power; } # 688 "../include/net/cfg80211.h" enum survey_info_flags { SURVEY_INFO_NOISE_DBM = ((((1UL))) << (0)), SURVEY_INFO_IN_USE = ((((1UL))) << (1)), SURVEY_INFO_TIME = ((((1UL))) << (2)), SURVEY_INFO_TIME_BUSY = ((((1UL))) << (3)), SURVEY_INFO_TIME_EXT_BUSY = ((((1UL))) << (4)), SURVEY_INFO_TIME_RX = ((((1UL))) << (5)), SURVEY_INFO_TIME_TX = ((((1UL))) << (6)), SURVEY_INFO_TIME_SCAN = ((((1UL))) << (7)), }; # 719 "../include/net/cfg80211.h" struct survey_info { struct ieee80211_channel *channel; u64 time; u64 time_busy; u64 time_ext_busy; u64 time_rx; u64 time_tx; u64 time_scan; u32 filled; s8 noise; }; # 760 "../include/net/cfg80211.h" struct cfg80211_crypto_settings { u32 wpa_versions; u32 cipher_group; int n_ciphers_pairwise; u32 ciphers_pairwise[5]; int n_akm_suites; u32 akm_suites[2]; bool control_port; __be16 control_port_ethertype; bool control_port_no_encrypt; bool control_port_over_nl80211; struct key_params *wep_keys; int wep_tx_key; const u8 *psk; const u8 *sae_pwd; u8 sae_pwd_len; }; # 805 "../include/net/cfg80211.h" struct cfg80211_beacon_data { const u8 *head, *tail; const u8 *beacon_ies; const u8 *proberesp_ies; const u8 *assocresp_ies; const u8 *probe_resp; const u8 *lci; const u8 *civicloc; s8 ftm_responder; size_t head_len, tail_len; size_t beacon_ies_len; size_t proberesp_ies_len; size_t assocresp_ies_len; size_t probe_resp_len; size_t lci_len; size_t civicloc_len; }; struct mac_address { u8 addr[6]; }; # 836 "../include/net/cfg80211.h" struct cfg80211_acl_data { enum nl80211_acl_policy acl_policy; int n_acl_entries; struct mac_address mac_addrs[]; }; struct cfg80211_bitrate_mask { struct { u32 legacy; u8 ht_mcs[10]; u16 vht_mcs[8]; enum nl80211_txrate_gi gi; } control[NUM_NL80211_BANDS]; }; # 863 "../include/net/cfg80211.h" enum cfg80211_ap_settings_flags { AP_SETTINGS_EXTERNAL_AUTH_SUPPORT = ((((1UL))) << (0)), }; # 900 "../include/net/cfg80211.h" struct cfg80211_ap_settings { struct cfg80211_chan_def chandef; struct cfg80211_beacon_data beacon; int beacon_interval, dtim_period; const u8 *ssid; size_t ssid_len; enum nl80211_hidden_ssid hidden_ssid; struct cfg80211_crypto_settings crypto; bool privacy; enum nl80211_auth_type auth_type; enum nl80211_smps_mode smps_mode; int inactivity_timeout; u8 p2p_ctwindow; bool p2p_opp_ps; const struct cfg80211_acl_data *acl; bool pbss; struct cfg80211_bitrate_mask beacon_rate; const struct ieee80211_ht_cap *ht_cap; const struct ieee80211_vht_cap *vht_cap; const struct ieee80211_he_cap_elem *he_cap; bool ht_required, vht_required; bool twt_responder; u32 flags; }; # 944 "../include/net/cfg80211.h" struct cfg80211_csa_settings { struct cfg80211_chan_def chandef; struct cfg80211_beacon_data beacon_csa; const u16 *counter_offsets_beacon; const u16 *counter_offsets_presp; unsigned int n_counter_offsets_beacon; unsigned int n_counter_offsets_presp; struct cfg80211_beacon_data beacon_after; bool radar_required; bool block_tx; u8 count; }; # 976 "../include/net/cfg80211.h" struct iface_combination_params { int num_different_channels; u8 radar_detect; int iftype_num[NUM_NL80211_IFTYPES]; u32 new_beacon_int; }; # 992 "../include/net/cfg80211.h" enum station_parameters_apply_mask { STATION_PARAM_APPLY_UAPSD = ((((1UL))) << (0)), STATION_PARAM_APPLY_CAPABILITY = ((((1UL))) << (1)), STATION_PARAM_APPLY_PLINK_STATE = ((((1UL))) << (2)), STATION_PARAM_APPLY_STA_TXPOWER = ((((1UL))) << (3)), }; # 1014 "../include/net/cfg80211.h" struct sta_txpwr { s16 power; enum nl80211_tx_power_setting type; }; # 1062 "../include/net/cfg80211.h" struct station_parameters { const u8 *supported_rates; struct net_device *vlan; u32 sta_flags_mask, sta_flags_set; u32 sta_modify_mask; int listen_interval; u16 aid; u16 peer_aid; u8 supported_rates_len; u8 plink_action; u8 plink_state; const struct ieee80211_ht_cap *ht_capa; const struct ieee80211_vht_cap *vht_capa; u8 uapsd_queues; u8 max_sp; enum nl80211_mesh_power_mode local_pm; u16 capability; const u8 *ext_capab; u8 ext_capab_len; const u8 *supported_channels; u8 supported_channels_len; const u8 *supported_oper_classes; u8 supported_oper_classes_len; u8 opmode_notif; bool opmode_notif_used; int support_p2p_ps; const struct ieee80211_he_cap_elem *he_capa; u8 he_capa_len; u16 airtime_weight; struct sta_txpwr txpwr; }; # 1104 "../include/net/cfg80211.h" struct station_del_parameters { const u8 *mac; u8 subtype; u16 reason_code; }; # 1128 "../include/net/cfg80211.h" enum cfg80211_station_type { CFG80211_STA_AP_CLIENT, CFG80211_STA_AP_CLIENT_UNASSOC, CFG80211_STA_AP_MLME_CLIENT, CFG80211_STA_AP_STA, CFG80211_STA_IBSS, CFG80211_STA_TDLS_PEER_SETUP, CFG80211_STA_TDLS_PEER_ACTIVE, CFG80211_STA_MESH_PEER_KERNEL, CFG80211_STA_MESH_PEER_USER, }; # 1152 "../include/net/cfg80211.h" int cfg80211_check_station_change(struct wiphy *wiphy, struct station_parameters *params, enum cfg80211_station_type statype); # 1168 "../include/net/cfg80211.h" enum rate_info_flags { RATE_INFO_FLAGS_MCS = ((((1UL))) << (0)), RATE_INFO_FLAGS_VHT_MCS = ((((1UL))) << (1)), RATE_INFO_FLAGS_SHORT_GI = ((((1UL))) << (2)), RATE_INFO_FLAGS_60G = ((((1UL))) << (3)), RATE_INFO_FLAGS_HE_MCS = ((((1UL))) << (4)), }; # 1189 "../include/net/cfg80211.h" enum rate_info_bw { RATE_INFO_BW_20 = 0, RATE_INFO_BW_5, RATE_INFO_BW_10, RATE_INFO_BW_40, RATE_INFO_BW_80, RATE_INFO_BW_160, RATE_INFO_BW_HE_RU, }; # 1214 "../include/net/cfg80211.h" struct rate_info { u8 flags; u8 mcs; u16 legacy; u8 nss; u8 bw; u8 he_gi; u8 he_dcm; u8 he_ru_alloc; }; # 1235 "../include/net/cfg80211.h" enum bss_param_flags { BSS_PARAM_FLAGS_CTS_PROT = 1<<0, BSS_PARAM_FLAGS_SHORT_PREAMBLE = 1<<1, BSS_PARAM_FLAGS_SHORT_SLOT_TIME = 1<<2, }; # 1250 "../include/net/cfg80211.h" struct sta_bss_parameters { u8 flags; u8 dtim_period; u16 beacon_interval; }; # 1272 "../include/net/cfg80211.h" struct cfg80211_txq_stats { u32 filled; u32 backlog_bytes; u32 backlog_packets; u32 flows; u32 drops; u32 ecn_marks; u32 overlimit; u32 overmemory; u32 collisions; u32 tx_bytes; u32 tx_packets; u32 max_flows; }; # 1298 "../include/net/cfg80211.h" struct cfg80211_tid_stats { u32 filled; u64 rx_msdu; u64 tx_msdu; u64 tx_msdu_retries; u64 tx_msdu_failed; struct cfg80211_txq_stats txq_stats; }; # 1374 "../include/net/cfg80211.h" struct station_info { u64 filled; u32 connected_time; u32 inactive_time; u64 rx_bytes; u64 tx_bytes; u16 llid; u16 plid; u8 plink_state; s8 signal; s8 signal_avg; u8 chains; s8 chain_signal[4]; s8 chain_signal_avg[4]; struct rate_info txrate; struct rate_info rxrate; u32 rx_packets; u32 tx_packets; u32 tx_retries; u32 tx_failed; u32 rx_dropped_misc; struct sta_bss_parameters bss_param; struct nl80211_sta_flag_update sta_flags; int generation; const u8 *assoc_req_ies; size_t assoc_req_ies_len; u32 beacon_loss_count; s64 t_offset; enum nl80211_mesh_power_mode local_pm; enum nl80211_mesh_power_mode peer_pm; enum nl80211_mesh_power_mode nonpeer_pm; u32 expected_throughput; u64 tx_duration; u64 rx_duration; u64 rx_beacon; u8 rx_beacon_signal_avg; u8 connected_to_gate; struct cfg80211_tid_stats *pertid; s8 ack_signal; s8 avg_ack_signal; u16 airtime_weight; u32 rx_mpdu_count; u32 fcs_err_count; u32 airtime_link_metric; }; # 1442 "../include/net/cfg80211.h" int cfg80211_get_station(struct net_device *dev, const u8 *mac_addr, struct station_info *sinfo); # 1467 "../include/net/cfg80211.h" enum monitor_flags { MONITOR_FLAG_CHANGED = 1<<__NL80211_MNTR_FLAG_INVALID, MONITOR_FLAG_FCSFAIL = 1<_net); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void wiphy_net_set(struct wiphy *wiphy, struct net *net) { write_pnet(&wiphy->_net, net); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *wiphy_priv(struct wiphy *wiphy) { do { if (__builtin_expect(!!(!wiphy), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/net/cfg80211.h"), "i" (4597), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (449)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); return &wiphy->priv; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct wiphy *priv_to_wiphy(void *priv) { do { if (__builtin_expect(!!(!priv), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/net/cfg80211.h"), "i" (4609), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (450)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); return ({ void *__mptr = (void *)(priv); do { extern void __compiletime_assert_4610(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(priv)), typeof(((struct wiphy *)0)->priv)) && !__builtin_types_compatible_p(typeof(*(priv)), typeof(void))))) __compiletime_assert_4610(); } while (0); ((struct wiphy *)(__mptr - __builtin_offsetof(struct wiphy, priv))); }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_wiphy_dev(struct wiphy *wiphy, struct device *dev) { wiphy->dev.parent = dev; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct device *wiphy_dev(struct wiphy *wiphy) { return wiphy->dev.parent; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *wiphy_name(const struct wiphy *wiphy) { return dev_name(&wiphy->dev); } # 4660 "../include/net/cfg80211.h" struct wiphy *wiphy_new_nm(const struct cfg80211_ops *ops, int sizeof_priv, const char *requested_name); # 4675 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct wiphy *wiphy_new(const struct cfg80211_ops *ops, int sizeof_priv) { return wiphy_new_nm(ops, sizeof_priv, ((void *)0)); } # 4688 "../include/net/cfg80211.h" int wiphy_register(struct wiphy *wiphy); # 4699 "../include/net/cfg80211.h" void wiphy_unregister(struct wiphy *wiphy); void wiphy_free(struct wiphy *wiphy); struct cfg80211_conn; struct cfg80211_internal_bss; struct cfg80211_cached_keys; struct cfg80211_cqm_config; # 4793 "../include/net/cfg80211.h" struct wireless_dev { struct wiphy *wiphy; enum nl80211_iftype iftype; struct list_head list; struct net_device *netdev; u32 identifier; struct list_head mgmt_registrations; spinlock_t mgmt_registrations_lock; struct mutex mtx; bool use_4addr, is_running; u8 address[6] __attribute__((__aligned__(sizeof(u16)))); u8 ssid[32]; u8 ssid_len, mesh_id_len, mesh_id_up_len; struct cfg80211_conn *conn; struct cfg80211_cached_keys *connect_keys; enum ieee80211_bss_type conn_bss_type; u32 conn_owner_nlportid; struct work_struct disconnect_wk; u8 disconnect_bssid[6]; struct list_head event_list; spinlock_t event_lock; struct cfg80211_internal_bss *current_bss; struct cfg80211_chan_def preset_chandef; struct cfg80211_chan_def chandef; bool ibss_fixed; bool ibss_dfs_possible; bool ps; int ps_timeout; int beacon_interval; u32 ap_unexpected_nlportid; u32 owner_nlportid; bool nl_owner_dead; bool cac_started; unsigned long cac_start_time; unsigned int cac_time_ms; struct { struct cfg80211_ibss_params ibss; struct cfg80211_connect_params connect; struct cfg80211_cached_keys *keys; const u8 *ie; size_t ie_len; u8 bssid[6]; u8 prev_bssid[6]; u8 ssid[32]; s8 default_key, default_mgmt_key; bool prev_bssid_valid; } wext; struct cfg80211_cqm_config *cqm_config; struct list_head pmsr_list; spinlock_t pmsr_lock; struct work_struct pmsr_free_wk; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 *wdev_address(struct wireless_dev *wdev) { if (wdev->netdev) return wdev->netdev->dev_addr; return wdev->address; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool wdev_running(struct wireless_dev *wdev) { if (wdev->netdev) return netif_running(wdev->netdev); return wdev->is_running; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *wdev_priv(struct wireless_dev *wdev) { do { if (__builtin_expect(!!(!wdev), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/net/cfg80211.h"), "i" (4892), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ({ asm volatile("%c0:\n\t" ".pushsection .discard.unreachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (451)); }); __builtin_unreachable(); } while (0); } while (0); } while (0); return wiphy_priv(wdev->wiphy); } # 4908 "../include/net/cfg80211.h" int ieee80211_channel_to_frequency(int chan, enum nl80211_band band); int ieee80211_frequency_to_channel(int freq); # 4925 "../include/net/cfg80211.h" struct ieee80211_channel *ieee80211_get_channel(struct wiphy *wiphy, int freq); # 4939 "../include/net/cfg80211.h" struct ieee80211_rate * ieee80211_get_response_rate(struct ieee80211_supported_band *sband, u32 basic_rates, int bitrate); # 4951 "../include/net/cfg80211.h" u32 ieee80211_mandatory_rates(struct ieee80211_supported_band *sband, enum nl80211_bss_scan_width scan_width); # 4961 "../include/net/cfg80211.h" struct radiotap_align_size { uint8_t align:4, size:4; }; struct ieee80211_radiotap_namespace { const struct radiotap_align_size *align_size; int n_bits; uint32_t oui; uint8_t subns; }; struct ieee80211_radiotap_vendor_namespaces { const struct ieee80211_radiotap_namespace *ns; int n_ns; }; # 5006 "../include/net/cfg80211.h" struct ieee80211_radiotap_iterator { struct ieee80211_radiotap_header *_rtheader; const struct ieee80211_radiotap_vendor_namespaces *_vns; const struct ieee80211_radiotap_namespace *current_namespace; unsigned char *_arg, *_next_ns_data; __le32 *_next_bitmap; unsigned char *this_arg; int this_arg_index; int this_arg_size; int is_radiotap_ns; int _max_length; int _arg_index; uint32_t _bitmap_shifter; int _reset_on_ext; }; int ieee80211_radiotap_iterator_init(struct ieee80211_radiotap_iterator *iterator, struct ieee80211_radiotap_header *radiotap_header, int max_length, const struct ieee80211_radiotap_vendor_namespaces *vns); int ieee80211_radiotap_iterator_next(struct ieee80211_radiotap_iterator *iterator); extern const unsigned char rfc1042_header[6]; extern const unsigned char bridge_tunnel_header[6]; # 5051 "../include/net/cfg80211.h" unsigned int ieee80211_get_hdrlen_from_skb(const struct sk_buff *skb); unsigned int __attribute__((__const__)) ieee80211_hdrlen(__le16 fc); # 5067 "../include/net/cfg80211.h" unsigned int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr); # 5087 "../include/net/cfg80211.h" int ieee80211_data_to_8023_exthdr(struct sk_buff *skb, struct ethhdr *ehdr, const u8 *addr, enum nl80211_iftype iftype, u8 data_offset); # 5098 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr, enum nl80211_iftype iftype) { return ieee80211_data_to_8023_exthdr(skb, ((void *)0), addr, iftype, 0); } # 5120 "../include/net/cfg80211.h" void ieee80211_amsdu_to_8023s(struct sk_buff *skb, struct sk_buff_head *list, const u8 *addr, enum nl80211_iftype iftype, const unsigned int extra_headroom, const u8 *check_da, const u8 *check_sa); unsigned int cfg80211_classify8021d(struct sk_buff *skb, struct cfg80211_qos_map *qos_map); # 5156 "../include/net/cfg80211.h" const struct element * cfg80211_find_elem_match(u8 eid, const u8 *ies, unsigned int len, const u8 *match, unsigned int match_len, unsigned int match_offset); # 5185 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const u8 * cfg80211_find_ie_match(u8 eid, const u8 *ies, unsigned int len, const u8 *match, unsigned int match_len, unsigned int match_offset) { if (({ int __ret_warn_on = !!((match_len && match_offset < 2) || (!match_len && match_offset)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../include/net/cfg80211.h"), "i" (5194), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (452)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return ((void *)0); return (void *)cfg80211_find_elem_match(eid, ies, len, match, match_len, match_offset ? match_offset - 2 : 0); } # 5218 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct element * cfg80211_find_elem(u8 eid, const u8 *ies, int len) { return cfg80211_find_elem_match(eid, ies, len, ((void *)0), 0, 0); } # 5239 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const u8 *cfg80211_find_ie(u8 eid, const u8 *ies, int len) { return cfg80211_find_ie_match(eid, ies, len, ((void *)0), 0, 0); } # 5259 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct element * cfg80211_find_ext_elem(u8 ext_eid, const u8 *ies, int len) { return cfg80211_find_elem_match(WLAN_EID_EXTENSION, ies, len, &ext_eid, 1, 0); } # 5281 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const u8 *cfg80211_find_ext_ie(u8 ext_eid, const u8 *ies, int len) { return cfg80211_find_ie_match(WLAN_EID_EXTENSION, ies, len, &ext_eid, 1, 2); } # 5302 "../include/net/cfg80211.h" const struct element *cfg80211_find_vendor_elem(unsigned int oui, int oui_type, const u8 *ies, unsigned int len); # 5322 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const u8 * cfg80211_find_vendor_ie(unsigned int oui, int oui_type, const u8 *ies, unsigned int len) { return (void *)cfg80211_find_vendor_elem(oui, oui_type, ies, len); } # 5338 "../include/net/cfg80211.h" void cfg80211_send_layer2_update(struct net_device *dev, const u8 *addr); # 5371 "../include/net/cfg80211.h" int regulatory_hint(struct wiphy *wiphy, const char *alpha2); # 5384 "../include/net/cfg80211.h" int regulatory_set_wiphy_regd(struct wiphy *wiphy, struct ieee80211_regdomain *rd); # 5398 "../include/net/cfg80211.h" int regulatory_set_wiphy_regd_sync_rtnl(struct wiphy *wiphy, struct ieee80211_regdomain *rd); # 5416 "../include/net/cfg80211.h" void wiphy_apply_custom_regulatory(struct wiphy *wiphy, const struct ieee80211_regdomain *regd); # 5437 "../include/net/cfg80211.h" const struct ieee80211_reg_rule *freq_reg_info(struct wiphy *wiphy, u32 center_freq); # 5447 "../include/net/cfg80211.h" const char *reg_initiator_name(enum nl80211_reg_initiator initiator); # 5471 "../include/net/cfg80211.h" int reg_query_regdb_wmm(char *alpha2, int freq, struct ieee80211_reg_rule *rule); # 5485 "../include/net/cfg80211.h" void cfg80211_scan_done(struct cfg80211_scan_request *request, struct cfg80211_scan_info *info); void cfg80211_sched_scan_results(struct wiphy *wiphy, u64 reqid); # 5506 "../include/net/cfg80211.h" void cfg80211_sched_scan_stopped(struct wiphy *wiphy, u64 reqid); # 5519 "../include/net/cfg80211.h" void cfg80211_sched_scan_stopped_rtnl(struct wiphy *wiphy, u64 reqid); # 5535 "../include/net/cfg80211.h" struct cfg80211_bss * __attribute__((__warn_unused_result__)) cfg80211_inform_bss_frame_data(struct wiphy *wiphy, struct cfg80211_inform_bss *data, struct ieee80211_mgmt *mgmt, size_t len, gfp_t gfp); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cfg80211_bss * __attribute__((__warn_unused_result__)) cfg80211_inform_bss_width_frame(struct wiphy *wiphy, struct ieee80211_channel *rx_channel, enum nl80211_bss_scan_width scan_width, struct ieee80211_mgmt *mgmt, size_t len, s32 signal, gfp_t gfp) { struct cfg80211_inform_bss data = { .chan = rx_channel, .scan_width = scan_width, .signal = signal, }; return cfg80211_inform_bss_frame_data(wiphy, &data, mgmt, len, gfp); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cfg80211_bss * __attribute__((__warn_unused_result__)) cfg80211_inform_bss_frame(struct wiphy *wiphy, struct ieee80211_channel *rx_channel, struct ieee80211_mgmt *mgmt, size_t len, s32 signal, gfp_t gfp) { struct cfg80211_inform_bss data = { .chan = rx_channel, .scan_width = NL80211_BSS_CHAN_WIDTH_20, .signal = signal, }; return cfg80211_inform_bss_frame_data(wiphy, &data, mgmt, len, gfp); } # 5579 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cfg80211_gen_new_bssid(const u8 *bssid, u8 max_bssid, u8 mbssid_index, u8 *new_bssid) { u64 bssid_u64 = ether_addr_to_u64(bssid); u64 mask = (((~(((0ULL)))) - ((((1ULL))) << (0)) + 1) & (~(((0ULL))) >> (64 - 1 - (max_bssid - 1)))); u64 new_bssid_u64; new_bssid_u64 = bssid_u64 & ~mask; new_bssid_u64 |= ((bssid_u64 & mask) + mbssid_index) & mask; u64_to_ether_addr(new_bssid_u64, new_bssid); } bool cfg80211_is_element_inherited(const struct element *element, const struct element *non_inherit_element); # 5610 "../include/net/cfg80211.h" size_t cfg80211_merge_profile(const u8 *ie, size_t ielen, const struct element *mbssid_elem, const struct element *sub_elem, u8 *merged_ie, size_t max_copy_len); # 5622 "../include/net/cfg80211.h" enum cfg80211_bss_frame_type { CFG80211_BSS_FTYPE_UNKNOWN, CFG80211_BSS_FTYPE_BEACON, CFG80211_BSS_FTYPE_PRESP, }; # 5648 "../include/net/cfg80211.h" struct cfg80211_bss * __attribute__((__warn_unused_result__)) cfg80211_inform_bss_data(struct wiphy *wiphy, struct cfg80211_inform_bss *data, enum cfg80211_bss_frame_type ftype, const u8 *bssid, u64 tsf, u16 capability, u16 beacon_interval, const u8 *ie, size_t ielen, gfp_t gfp); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cfg80211_bss * __attribute__((__warn_unused_result__)) cfg80211_inform_bss_width(struct wiphy *wiphy, struct ieee80211_channel *rx_channel, enum nl80211_bss_scan_width scan_width, enum cfg80211_bss_frame_type ftype, const u8 *bssid, u64 tsf, u16 capability, u16 beacon_interval, const u8 *ie, size_t ielen, s32 signal, gfp_t gfp) { struct cfg80211_inform_bss data = { .chan = rx_channel, .scan_width = scan_width, .signal = signal, }; return cfg80211_inform_bss_data(wiphy, &data, ftype, bssid, tsf, capability, beacon_interval, ie, ielen, gfp); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cfg80211_bss * __attribute__((__warn_unused_result__)) cfg80211_inform_bss(struct wiphy *wiphy, struct ieee80211_channel *rx_channel, enum cfg80211_bss_frame_type ftype, const u8 *bssid, u64 tsf, u16 capability, u16 beacon_interval, const u8 *ie, size_t ielen, s32 signal, gfp_t gfp) { struct cfg80211_inform_bss data = { .chan = rx_channel, .scan_width = NL80211_BSS_CHAN_WIDTH_20, .signal = signal, }; return cfg80211_inform_bss_data(wiphy, &data, ftype, bssid, tsf, capability, beacon_interval, ie, ielen, gfp); } # 5705 "../include/net/cfg80211.h" struct cfg80211_bss *cfg80211_get_bss(struct wiphy *wiphy, struct ieee80211_channel *channel, const u8 *bssid, const u8 *ssid, size_t ssid_len, enum ieee80211_bss_type bss_type, enum ieee80211_privacy privacy); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct cfg80211_bss * cfg80211_get_ibss(struct wiphy *wiphy, struct ieee80211_channel *channel, const u8 *ssid, size_t ssid_len) { return cfg80211_get_bss(wiphy, channel, ((void *)0), ssid, ssid_len, IEEE80211_BSS_TYPE_IBSS, IEEE80211_PRIVACY_ANY); } # 5728 "../include/net/cfg80211.h" void cfg80211_ref_bss(struct wiphy *wiphy, struct cfg80211_bss *bss); # 5737 "../include/net/cfg80211.h" void cfg80211_put_bss(struct wiphy *wiphy, struct cfg80211_bss *bss); # 5749 "../include/net/cfg80211.h" void cfg80211_unlink_bss(struct wiphy *wiphy, struct cfg80211_bss *bss); # 5764 "../include/net/cfg80211.h" void cfg80211_bss_iter(struct wiphy *wiphy, struct cfg80211_chan_def *chandef, void (*iter)(struct wiphy *wiphy, struct cfg80211_bss *bss, void *data), void *iter_data); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) enum nl80211_bss_scan_width cfg80211_chandef_to_scan_width(const struct cfg80211_chan_def *chandef) { switch (chandef->width) { case NL80211_CHAN_WIDTH_5: return NL80211_BSS_CHAN_WIDTH_5; case NL80211_CHAN_WIDTH_10: return NL80211_BSS_CHAN_WIDTH_10; default: return NL80211_BSS_CHAN_WIDTH_20; } } # 5803 "../include/net/cfg80211.h" void cfg80211_rx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len); # 5813 "../include/net/cfg80211.h" void cfg80211_auth_timeout(struct net_device *dev, const u8 *addr); # 5832 "../include/net/cfg80211.h" void cfg80211_rx_assoc_resp(struct net_device *dev, struct cfg80211_bss *bss, const u8 *buf, size_t len, int uapsd_queues, const u8 *req_ies, size_t req_ies_len); # 5845 "../include/net/cfg80211.h" void cfg80211_assoc_timeout(struct net_device *dev, struct cfg80211_bss *bss); # 5856 "../include/net/cfg80211.h" void cfg80211_abandon_assoc(struct net_device *dev, struct cfg80211_bss *bss); # 5869 "../include/net/cfg80211.h" void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len); # 5881 "../include/net/cfg80211.h" void cfg80211_rx_unprot_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len); # 5897 "../include/net/cfg80211.h" void cfg80211_michael_mic_failure(struct net_device *dev, const u8 *addr, enum nl80211_key_type key_type, int key_id, const u8 *tsc, gfp_t gfp); # 5916 "../include/net/cfg80211.h" void cfg80211_ibss_joined(struct net_device *dev, const u8 *bssid, struct ieee80211_channel *channel, gfp_t gfp); # 5932 "../include/net/cfg80211.h" void cfg80211_notify_new_peer_candidate(struct net_device *dev, const u8 *macaddr, const u8 *ie, u8 ie_len, int sig_dbm, gfp_t gfp); # 5955 "../include/net/cfg80211.h" void wiphy_rfkill_set_hw_state(struct wiphy *wiphy, bool blocked); void wiphy_rfkill_start_polling(struct wiphy *wiphy); void wiphy_rfkill_stop_polling(struct wiphy *wiphy); # 5989 "../include/net/cfg80211.h" struct sk_buff *__cfg80211_alloc_reply_skb(struct wiphy *wiphy, enum nl80211_commands cmd, enum nl80211_attrs attr, int approxlen); struct sk_buff *__cfg80211_alloc_event_skb(struct wiphy *wiphy, struct wireless_dev *wdev, enum nl80211_commands cmd, enum nl80211_attrs attr, unsigned int portid, int vendor_event_idx, int approxlen, gfp_t gfp); void __cfg80211_send_event_skb(struct sk_buff *skb, gfp_t gfp); # 6027 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff * cfg80211_vendor_cmd_alloc_reply_skb(struct wiphy *wiphy, int approxlen) { return __cfg80211_alloc_reply_skb(wiphy, NL80211_CMD_VENDOR, NL80211_ATTR_VENDOR_DATA, approxlen); } # 6046 "../include/net/cfg80211.h" int cfg80211_vendor_cmd_reply(struct sk_buff *skb); # 6055 "../include/net/cfg80211.h" unsigned int cfg80211_vendor_cmd_get_sender(struct wiphy *wiphy); # 6078 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff * cfg80211_vendor_event_alloc(struct wiphy *wiphy, struct wireless_dev *wdev, int approxlen, int event_idx, gfp_t gfp) { return __cfg80211_alloc_event_skb(wiphy, wdev, NL80211_CMD_VENDOR, NL80211_ATTR_VENDOR_DATA, 0, event_idx, approxlen, gfp); } # 6111 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff * cfg80211_vendor_event_alloc_ucast(struct wiphy *wiphy, struct wireless_dev *wdev, unsigned int portid, int approxlen, int event_idx, gfp_t gfp) { return __cfg80211_alloc_event_skb(wiphy, wdev, NL80211_CMD_VENDOR, NL80211_ATTR_VENDOR_DATA, portid, event_idx, approxlen, gfp); } # 6130 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cfg80211_vendor_event(struct sk_buff *skb, gfp_t gfp) { __cfg80211_send_event_skb(skb, gfp); } # 6170 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff * cfg80211_testmode_alloc_reply_skb(struct wiphy *wiphy, int approxlen) { return __cfg80211_alloc_reply_skb(wiphy, NL80211_CMD_TESTMODE, NL80211_ATTR_TESTDATA, approxlen); } # 6189 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int cfg80211_testmode_reply(struct sk_buff *skb) { return cfg80211_vendor_cmd_reply(skb); } # 6215 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct sk_buff * cfg80211_testmode_alloc_event_skb(struct wiphy *wiphy, int approxlen, gfp_t gfp) { return __cfg80211_alloc_event_skb(wiphy, ((void *)0), NL80211_CMD_TESTMODE, NL80211_ATTR_TESTDATA, 0, -1, approxlen, gfp); } # 6233 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cfg80211_testmode_event(struct sk_buff *skb, gfp_t gfp) { __cfg80211_send_event_skb(skb, gfp); } # 6259 "../include/net/cfg80211.h" struct cfg80211_fils_resp_params { const u8 *kek; size_t kek_len; bool update_erp_next_seq_num; u16 erp_next_seq_num; const u8 *pmk; size_t pmk_len; const u8 *pmkid; }; # 6298 "../include/net/cfg80211.h" struct cfg80211_connect_resp_params { int status; const u8 *bssid; struct cfg80211_bss *bss; const u8 *req_ie; size_t req_ie_len; const u8 *resp_ie; size_t resp_ie_len; struct cfg80211_fils_resp_params fils; enum nl80211_timeout_reason timeout_reason; }; # 6324 "../include/net/cfg80211.h" void cfg80211_connect_done(struct net_device *dev, struct cfg80211_connect_resp_params *params, gfp_t gfp); # 6366 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cfg80211_connect_bss(struct net_device *dev, const u8 *bssid, struct cfg80211_bss *bss, const u8 *req_ie, size_t req_ie_len, const u8 *resp_ie, size_t resp_ie_len, int status, gfp_t gfp, enum nl80211_timeout_reason timeout_reason) { struct cfg80211_connect_resp_params params; __memset(¶ms, 0, sizeof(params)); params.status = status; params.bssid = bssid; params.bss = bss; params.req_ie = req_ie; params.req_ie_len = req_ie_len; params.resp_ie = resp_ie; params.resp_ie_len = resp_ie_len; params.timeout_reason = timeout_reason; cfg80211_connect_done(dev, ¶ms, gfp); } # 6408 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cfg80211_connect_result(struct net_device *dev, const u8 *bssid, const u8 *req_ie, size_t req_ie_len, const u8 *resp_ie, size_t resp_ie_len, u16 status, gfp_t gfp) { cfg80211_connect_bss(dev, bssid, ((void *)0), req_ie, req_ie_len, resp_ie, resp_ie_len, status, gfp, NL80211_TIMEOUT_UNSPECIFIED); } # 6437 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cfg80211_connect_timeout(struct net_device *dev, const u8 *bssid, const u8 *req_ie, size_t req_ie_len, gfp_t gfp, enum nl80211_timeout_reason timeout_reason) { cfg80211_connect_bss(dev, bssid, ((void *)0), req_ie, req_ie_len, ((void *)0), 0, -1, gfp, timeout_reason); } # 6458 "../include/net/cfg80211.h" struct cfg80211_roam_info { struct ieee80211_channel *channel; struct cfg80211_bss *bss; const u8 *bssid; const u8 *req_ie; size_t req_ie_len; const u8 *resp_ie; size_t resp_ie_len; struct cfg80211_fils_resp_params fils; }; # 6487 "../include/net/cfg80211.h" void cfg80211_roamed(struct net_device *dev, struct cfg80211_roam_info *info, gfp_t gfp); # 6504 "../include/net/cfg80211.h" void cfg80211_port_authorized(struct net_device *dev, const u8 *bssid, gfp_t gfp); # 6520 "../include/net/cfg80211.h" void cfg80211_disconnected(struct net_device *dev, u16 reason, const u8 *ie, size_t ie_len, bool locally_generated, gfp_t gfp); # 6533 "../include/net/cfg80211.h" void cfg80211_ready_on_channel(struct wireless_dev *wdev, u64 cookie, struct ieee80211_channel *chan, unsigned int duration, gfp_t gfp); # 6544 "../include/net/cfg80211.h" void cfg80211_remain_on_channel_expired(struct wireless_dev *wdev, u64 cookie, struct ieee80211_channel *chan, gfp_t gfp); # 6555 "../include/net/cfg80211.h" void cfg80211_tx_mgmt_expired(struct wireless_dev *wdev, u64 cookie, struct ieee80211_channel *chan, gfp_t gfp); int cfg80211_sinfo_alloc_tid_stats(struct station_info *sinfo, gfp_t gfp); # 6574 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cfg80211_sinfo_release_content(struct station_info *sinfo) { kfree(sinfo->pertid); } # 6587 "../include/net/cfg80211.h" void cfg80211_new_sta(struct net_device *dev, const u8 *mac_addr, struct station_info *sinfo, gfp_t gfp); # 6597 "../include/net/cfg80211.h" void cfg80211_del_sta_sinfo(struct net_device *dev, const u8 *mac_addr, struct station_info *sinfo, gfp_t gfp); # 6607 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void cfg80211_del_sta(struct net_device *dev, const u8 *mac_addr, gfp_t gfp) { cfg80211_del_sta_sinfo(dev, mac_addr, ((void *)0), gfp); } # 6628 "../include/net/cfg80211.h" void cfg80211_conn_failed(struct net_device *dev, const u8 *mac_addr, enum nl80211_connect_failed_reason reason, gfp_t gfp); # 6649 "../include/net/cfg80211.h" bool cfg80211_rx_mgmt(struct wireless_dev *wdev, int freq, int sig_dbm, const u8 *buf, size_t len, u32 flags); # 6665 "../include/net/cfg80211.h" void cfg80211_mgmt_tx_status(struct wireless_dev *wdev, u64 cookie, const u8 *buf, size_t len, bool ack, gfp_t gfp); # 6688 "../include/net/cfg80211.h" bool cfg80211_rx_control_port(struct net_device *dev, struct sk_buff *skb, bool unencrypted); # 6701 "../include/net/cfg80211.h" void cfg80211_cqm_rssi_notify(struct net_device *dev, enum nl80211_cqm_rssi_threshold_event rssi_event, s32 rssi_level, gfp_t gfp); # 6714 "../include/net/cfg80211.h" void cfg80211_cqm_pktloss_notify(struct net_device *dev, const u8 *peer, u32 num_packets, gfp_t gfp); # 6729 "../include/net/cfg80211.h" void cfg80211_cqm_txe_notify(struct net_device *dev, const u8 *peer, u32 num_packets, u32 rate, u32 intvl, gfp_t gfp); # 6739 "../include/net/cfg80211.h" void cfg80211_cqm_beacon_loss_notify(struct net_device *dev, gfp_t gfp); # 6749 "../include/net/cfg80211.h" void cfg80211_radar_event(struct wiphy *wiphy, struct cfg80211_chan_def *chandef, gfp_t gfp); # 6762 "../include/net/cfg80211.h" void cfg80211_sta_opmode_change_notify(struct net_device *dev, const u8 *mac, struct sta_opmode_info *sta_opmode, gfp_t gfp); # 6777 "../include/net/cfg80211.h" void cfg80211_cac_event(struct net_device *netdev, const struct cfg80211_chan_def *chandef, enum nl80211_radar_event event, gfp_t gfp); # 6789 "../include/net/cfg80211.h" void cfg80211_gtk_rekey_notify(struct net_device *dev, const u8 *bssid, const u8 *replay_ctr, gfp_t gfp); # 6800 "../include/net/cfg80211.h" void cfg80211_pmksa_candidate_notify(struct net_device *dev, int index, const u8 *bssid, bool preauth, gfp_t gfp); # 6815 "../include/net/cfg80211.h" bool cfg80211_rx_spurious_frame(struct net_device *dev, const u8 *addr, gfp_t gfp); # 6831 "../include/net/cfg80211.h" bool cfg80211_rx_unexpected_4addr_frame(struct net_device *dev, const u8 *addr, gfp_t gfp); # 6844 "../include/net/cfg80211.h" void cfg80211_probe_status(struct net_device *dev, const u8 *addr, u64 cookie, bool acked, s32 ack_signal, bool is_valid_ack_signal, gfp_t gfp); # 6860 "../include/net/cfg80211.h" void cfg80211_report_obss_beacon(struct wiphy *wiphy, const u8 *frame, size_t len, int freq, int sig_dbm); # 6873 "../include/net/cfg80211.h" bool cfg80211_reg_can_beacon(struct wiphy *wiphy, struct cfg80211_chan_def *chandef, enum nl80211_iftype iftype); # 6890 "../include/net/cfg80211.h" bool cfg80211_reg_can_beacon_relax(struct wiphy *wiphy, struct cfg80211_chan_def *chandef, enum nl80211_iftype iftype); # 6902 "../include/net/cfg80211.h" void cfg80211_ch_switch_notify(struct net_device *dev, struct cfg80211_chan_def *chandef); # 6915 "../include/net/cfg80211.h" void cfg80211_ch_switch_started_notify(struct net_device *dev, struct cfg80211_chan_def *chandef, u8 count); # 6927 "../include/net/cfg80211.h" bool ieee80211_operating_class_to_band(u8 operating_class, enum nl80211_band *band); # 6938 "../include/net/cfg80211.h" bool ieee80211_chandef_to_operating_class(struct cfg80211_chan_def *chandef, u8 *op_class); # 6956 "../include/net/cfg80211.h" void cfg80211_tdls_oper_request(struct net_device *dev, const u8 *peer, enum nl80211_tdls_operation oper, u16 reason_code, gfp_t gfp); u32 cfg80211_calculate_bitrate(struct rate_info *rate); # 6982 "../include/net/cfg80211.h" void cfg80211_unregister_wdev(struct wireless_dev *wdev); # 6992 "../include/net/cfg80211.h" struct cfg80211_ft_event_params { const u8 *ies; size_t ies_len; const u8 *target_ap; const u8 *ric_ies; size_t ric_ies_len; }; void cfg80211_ft_event(struct net_device *netdev, struct cfg80211_ft_event_params *ft_event); # 7024 "../include/net/cfg80211.h" int cfg80211_get_p2p_attr(const u8 *ies, unsigned int len, enum ieee80211_p2p_attr_id attr, u8 *buf, unsigned int bufsize); # 7055 "../include/net/cfg80211.h" size_t ieee80211_ie_split_ric(const u8 *ies, size_t ielen, const u8 *ids, int n_ids, const u8 *after_ric, int n_after_ric, size_t offset); # 7085 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) size_t ieee80211_ie_split(const u8 *ies, size_t ielen, const u8 *ids, int n_ids, size_t offset) { return ieee80211_ie_split_ric(ies, ielen, ids, n_ids, ((void *)0), 0, offset); } # 7102 "../include/net/cfg80211.h" void cfg80211_report_wowlan_wakeup(struct wireless_dev *wdev, struct cfg80211_wowlan_wakeup *wakeup, gfp_t gfp); # 7116 "../include/net/cfg80211.h" void cfg80211_crit_proto_stopped(struct wireless_dev *wdev, gfp_t gfp); unsigned int ieee80211_get_num_supported_channels(struct wiphy *wiphy); # 7136 "../include/net/cfg80211.h" int cfg80211_check_combinations(struct wiphy *wiphy, struct iface_combination_params *params); # 7151 "../include/net/cfg80211.h" int cfg80211_iter_combinations(struct wiphy *wiphy, struct iface_combination_params *params, void (*iter)(const struct ieee80211_iface_combination *c, void *data), void *data); # 7169 "../include/net/cfg80211.h" void cfg80211_stop_iface(struct wiphy *wiphy, struct wireless_dev *wdev, gfp_t gfp); # 7184 "../include/net/cfg80211.h" void cfg80211_shutdown_all_interfaces(struct wiphy *wiphy); # 7195 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void wiphy_ext_feature_set(struct wiphy *wiphy, enum nl80211_ext_feature_index ftidx) { u8 *ft_byte; ft_byte = &wiphy->ext_features[ftidx / 8]; *ft_byte |= ((((1UL))) << (ftidx % 8)); } # 7213 "../include/net/cfg80211.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool wiphy_ext_feature_isset(struct wiphy *wiphy, enum nl80211_ext_feature_index ftidx) { u8 ft_byte; ft_byte = wiphy->ext_features[ftidx / 8]; return (ft_byte & ((((1UL))) << (ftidx % 8))) != 0; } void cfg80211_free_nan_func(struct cfg80211_nan_func *f); # 7245 "../include/net/cfg80211.h" struct cfg80211_nan_match_params { enum nl80211_nan_function_type type; u8 inst_id; u8 peer_inst_id; const u8 *addr; u8 info_len; const u8 *info; u64 cookie; }; # 7265 "../include/net/cfg80211.h" void cfg80211_nan_match(struct wireless_dev *wdev, struct cfg80211_nan_match_params *match, gfp_t gfp); # 7279 "../include/net/cfg80211.h" void cfg80211_nan_func_terminated(struct wireless_dev *wdev, u8 inst_id, enum nl80211_nan_func_term_reason reason, u64 cookie, gfp_t gfp); void cfg80211_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info); # 7294 "../include/net/cfg80211.h" int cfg80211_external_auth_request(struct net_device *netdev, struct cfg80211_external_auth_params *params, gfp_t gfp); # 7305 "../include/net/cfg80211.h" void cfg80211_pmsr_report(struct wireless_dev *wdev, struct cfg80211_pmsr_request *req, struct cfg80211_pmsr_result *result, gfp_t gfp); # 7319 "../include/net/cfg80211.h" void cfg80211_pmsr_complete(struct wireless_dev *wdev, struct cfg80211_pmsr_request *req, gfp_t gfp); # 7380 "../include/net/cfg80211.h" void cfg80211_update_owe_info_event(struct net_device *netdev, struct cfg80211_update_owe_info *owe_info, gfp_t gfp); # 67 "../drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.h" 2 struct iwl_nvm_data { int n_hw_addrs; u8 hw_addr[6]; u8 calib_version; __le16 calib_voltage; __le16 raw_temperature; __le16 kelvin_temperature; __le16 kelvin_voltage; __le16 xtal_calib[2]; bool sku_cap_band_24ghz_enable; bool sku_cap_band_52ghz_enable; bool sku_cap_11n_enable; bool sku_cap_11ac_enable; bool sku_cap_11ax_enable; bool sku_cap_amt_enable; bool sku_cap_ipan_enable; bool sku_cap_mimo_disabled; u16 radio_cfg_type; u8 radio_cfg_step; u8 radio_cfg_dash; u8 radio_cfg_pnum; u8 valid_tx_ant, valid_rx_ant; u32 nvm_version; s8 max_tx_pwr_half_dbm; bool lar_enabled; bool vht160_supported; struct ieee80211_supported_band bands[NUM_NL80211_BANDS]; struct ieee80211_channel channels[]; }; # 118 "../drivers/net/wireless/intel/iwlwifi/iwl-eeprom-parse.h" struct iwl_nvm_data * iwl_parse_eeprom_data(struct device *dev, const struct iwl_cfg *cfg, const u8 *eeprom, size_t eeprom_size); int iwl_init_sband_channels(struct iwl_nvm_data *data, struct ieee80211_supported_band *sband, int n_channels, enum nl80211_band band); void iwl_init_ht_hw_capab(const struct iwl_cfg *cfg, struct iwl_nvm_data *data, struct ieee80211_sta_ht_cap *ht_info, enum nl80211_band band, u8 tx_chains, u8 rx_chains); # 70 "../drivers/net/wireless/intel/iwlwifi/fw/runtime.h" 2 struct iwl_fw_runtime_ops { int (*dump_start)(void *ctx); void (*dump_end)(void *ctx); bool (*fw_running)(void *ctx); int (*send_hcmd)(void *ctx, struct iwl_host_cmd *host_cmd); bool (*d3_debug_enable)(void *ctx); }; struct iwl_fwrt_shared_mem_cfg { int num_lmacs; int num_txfifo_entries; struct { u32 txfifo_size[15]; u32 rxfifo1_size; } lmac[2]; u32 rxfifo2_size; u32 internal_txfifo_addr; u32 internal_txfifo_size[6]; }; # 109 "../drivers/net/wireless/intel/iwlwifi/fw/runtime.h" struct iwl_fw_runtime { struct iwl_trans *trans; const struct iwl_fw *fw; struct device *dev; const struct iwl_fw_runtime_ops *ops; void *ops_ctx; struct iwl_fw_paging fw_paging_db[33]; u16 num_of_paging_blk; u16 num_of_pages_in_last_blk; enum iwl_ucode_type cur_fw_img; struct iwl_fwrt_shared_mem_cfg smem_cfg; struct { const struct iwl_fw_dump_desc *desc; bool monitor_only; struct { u8 idx; enum iwl_fw_ini_trigger_id ini_trig_id; struct delayed_work wk; } wks[5]; unsigned long active_wks; u8 conf; unsigned long non_collect_ts_start[IWL_FW_TRIGGER_ID_NUM]; u32 *d3_debug_data; struct iwl_fw_ini_region_cfg *active_regs[64]; struct iwl_fw_ini_active_triggers active_trigs[IWL_FW_TRIGGER_ID_NUM]; u32 lmac_err_id[2]; u32 umac_err_id; void *fifo_iter; struct timer_list periodic_trig; u8 img_name[32]; u8 internal_dbg_cfg_name[64]; u8 external_dbg_cfg_name[64]; struct { u8 type; u8 subtype; u32 lmac_major; u32 lmac_minor; u32 umac_major; u32 umac_minor; } fw_ver; } dump; struct { struct delayed_work wk; u32 delay; u64 seq; } timestamp; }; void iwl_fw_runtime_init(struct iwl_fw_runtime *fwrt, struct iwl_trans *trans, const struct iwl_fw *fw, const struct iwl_fw_runtime_ops *ops, void *ops_ctx, struct dentry *dbgfs_dir); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_runtime_free(struct iwl_fw_runtime *fwrt) { int i; kfree(fwrt->dump.d3_debug_data); fwrt->dump.d3_debug_data = ((void *)0); for (i = 0; i < IWL_FW_TRIGGER_ID_NUM; i++) { struct iwl_fw_ini_active_triggers *active = &fwrt->dump.active_trigs[i]; active->active = false; active->size = 0; kfree(active->trig); active->trig = ((void *)0); } } void iwl_fw_runtime_suspend(struct iwl_fw_runtime *fwrt); void iwl_fw_runtime_resume(struct iwl_fw_runtime *fwrt); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_set_current_image(struct iwl_fw_runtime *fwrt, enum iwl_ucode_type cur_fw_img) { fwrt->cur_fw_img = cur_fw_img; } int iwl_init_paging(struct iwl_fw_runtime *fwrt, enum iwl_ucode_type type); void iwl_free_fw_paging(struct iwl_fw_runtime *fwrt); void iwl_get_shared_mem_conf(struct iwl_fw_runtime *fwrt); # 67 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.c" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.h" 1 # 70 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.h" # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-prph.h" 1 # 66 "../drivers/net/wireless/intel/iwlwifi/iwl-prph.h" # 1 "../include/linux/bitfield.h" 1 # 99 "../include/linux/bitfield.h" extern void __field_overflow(void); extern void __bad_mask(void); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u64 field_multiplier(u64 field) { if ((field | (field - 1)) & ((field | (field - 1)) + 1)) __bad_mask(); return field & -field; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u64 field_mask(u64 field) { return field / field_multiplier(field); } # 138 "../include/linux/bitfield.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u8 u8_encode_bits(u8 v, u8 field) { if (__builtin_constant_p(v) && (v & ~field_mask(field))) __field_overflow(); return ((v & field_mask(field)) * field_multiplier(field)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u8 u8_replace_bits(__u8 old, u8 val, u8 field) { return (old & ~(field)) | u8_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void u8p_replace_bits(__u8 *p, u8 val, u8 field) { *p = (*p & ~(field)) | u8_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u8 u8_get_bits(__u8 v, u8 field) { return ((v) & field)/field_multiplier(field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __le16 le16_encode_bits(u16 v, u16 field) { if (__builtin_constant_p(v) && (v & ~field_mask(field))) __field_overflow(); return (( __le16)(__u16)((v & field_mask(field)) * field_multiplier(field))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __le16 le16_replace_bits(__le16 old, u16 val, u16 field) { return (old & ~(( __le16)(__u16)(field))) | le16_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void le16p_replace_bits(__le16 *p, u16 val, u16 field) { *p = (*p & ~(( __le16)(__u16)(field))) | le16_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u16 le16_get_bits(__le16 v, u16 field) { return ((( __u16)(__le16)(v)) & field)/field_multiplier(field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __be16 be16_encode_bits(u16 v, u16 field) { if (__builtin_constant_p(v) && (v & ~field_mask(field))) __field_overflow(); return (( __be16)(__builtin_constant_p((__u16)(((v & field_mask(field)) * field_multiplier(field)))) ? ((__u16)( (((__u16)(((v & field_mask(field)) * field_multiplier(field))) & (__u16)0x00ffU) << 8) | (((__u16)(((v & field_mask(field)) * field_multiplier(field))) & (__u16)0xff00U) >> 8))) : __fswab16(((v & field_mask(field)) * field_multiplier(field))))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __be16 be16_replace_bits(__be16 old, u16 val, u16 field) { return (old & ~(( __be16)(__builtin_constant_p((__u16)((field))) ? ((__u16)( (((__u16)((field)) & (__u16)0x00ffU) << 8) | (((__u16)((field)) & (__u16)0xff00U) >> 8))) : __fswab16((field))))) | be16_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void be16p_replace_bits(__be16 *p, u16 val, u16 field) { *p = (*p & ~(( __be16)(__builtin_constant_p((__u16)((field))) ? ((__u16)( (((__u16)((field)) & (__u16)0x00ffU) << 8) | (((__u16)((field)) & (__u16)0xff00U) >> 8))) : __fswab16((field))))) | be16_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u16 be16_get_bits(__be16 v, u16 field) { return ((__builtin_constant_p((__u16)(( __u16)(__be16)(v))) ? ((__u16)( (((__u16)(( __u16)(__be16)(v)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(v)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(v))) & field)/field_multiplier(field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u16 u16_encode_bits(u16 v, u16 field) { if (__builtin_constant_p(v) && (v & ~field_mask(field))) __field_overflow(); return ((v & field_mask(field)) * field_multiplier(field)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u16 u16_replace_bits(__u16 old, u16 val, u16 field) { return (old & ~(field)) | u16_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void u16p_replace_bits(__u16 *p, u16 val, u16 field) { *p = (*p & ~(field)) | u16_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u16 u16_get_bits(__u16 v, u16 field) { return ((v) & field)/field_multiplier(field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __le32 le32_encode_bits(u32 v, u32 field) { if (__builtin_constant_p(v) && (v & ~field_mask(field))) __field_overflow(); return (( __le32)(__u32)((v & field_mask(field)) * field_multiplier(field))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __le32 le32_replace_bits(__le32 old, u32 val, u32 field) { return (old & ~(( __le32)(__u32)(field))) | le32_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void le32p_replace_bits(__le32 *p, u32 val, u32 field) { *p = (*p & ~(( __le32)(__u32)(field))) | le32_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u32 le32_get_bits(__le32 v, u32 field) { return ((( __u32)(__le32)(v)) & field)/field_multiplier(field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __be32 be32_encode_bits(u32 v, u32 field) { if (__builtin_constant_p(v) && (v & ~field_mask(field))) __field_overflow(); return (( __be32)(__builtin_constant_p((__u32)(((v & field_mask(field)) * field_multiplier(field)))) ? ((__u32)( (((__u32)(((v & field_mask(field)) * field_multiplier(field))) & (__u32)0x000000ffUL) << 24) | (((__u32)(((v & field_mask(field)) * field_multiplier(field))) & (__u32)0x0000ff00UL) << 8) | (((__u32)(((v & field_mask(field)) * field_multiplier(field))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(((v & field_mask(field)) * field_multiplier(field))) & (__u32)0xff000000UL) >> 24))) : __fswab32(((v & field_mask(field)) * field_multiplier(field))))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __be32 be32_replace_bits(__be32 old, u32 val, u32 field) { return (old & ~(( __be32)(__builtin_constant_p((__u32)((field))) ? ((__u32)( (((__u32)((field)) & (__u32)0x000000ffUL) << 24) | (((__u32)((field)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((field)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((field)) & (__u32)0xff000000UL) >> 24))) : __fswab32((field))))) | be32_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void be32p_replace_bits(__be32 *p, u32 val, u32 field) { *p = (*p & ~(( __be32)(__builtin_constant_p((__u32)((field))) ? ((__u32)( (((__u32)((field)) & (__u32)0x000000ffUL) << 24) | (((__u32)((field)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((field)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((field)) & (__u32)0xff000000UL) >> 24))) : __fswab32((field))))) | be32_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u32 be32_get_bits(__be32 v, u32 field) { return ((__builtin_constant_p((__u32)(( __u32)(__be32)(v))) ? ((__u32)( (((__u32)(( __u32)(__be32)(v)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(v)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(v)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(v)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(v))) & field)/field_multiplier(field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u32 u32_encode_bits(u32 v, u32 field) { if (__builtin_constant_p(v) && (v & ~field_mask(field))) __field_overflow(); return ((v & field_mask(field)) * field_multiplier(field)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u32 u32_replace_bits(__u32 old, u32 val, u32 field) { return (old & ~(field)) | u32_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void u32p_replace_bits(__u32 *p, u32 val, u32 field) { *p = (*p & ~(field)) | u32_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u32 u32_get_bits(__u32 v, u32 field) { return ((v) & field)/field_multiplier(field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __le64 le64_encode_bits(u64 v, u64 field) { if (__builtin_constant_p(v) && (v & ~field_mask(field))) __field_overflow(); return (( __le64)(__u64)((v & field_mask(field)) * field_multiplier(field))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __le64 le64_replace_bits(__le64 old, u64 val, u64 field) { return (old & ~(( __le64)(__u64)(field))) | le64_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void le64p_replace_bits(__le64 *p, u64 val, u64 field) { *p = (*p & ~(( __le64)(__u64)(field))) | le64_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u64 le64_get_bits(__le64 v, u64 field) { return ((( __u64)(__le64)(v)) & field)/field_multiplier(field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __be64 be64_encode_bits(u64 v, u64 field) { if (__builtin_constant_p(v) && (v & ~field_mask(field))) __field_overflow(); return (( __be64)(__builtin_constant_p((__u64)(((v & field_mask(field)) * field_multiplier(field)))) ? ((__u64)( (((__u64)(((v & field_mask(field)) * field_multiplier(field))) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(((v & field_mask(field)) * field_multiplier(field))) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(((v & field_mask(field)) * field_multiplier(field))) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(((v & field_mask(field)) * field_multiplier(field))) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(((v & field_mask(field)) * field_multiplier(field))) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(((v & field_mask(field)) * field_multiplier(field))) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(((v & field_mask(field)) * field_multiplier(field))) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(((v & field_mask(field)) * field_multiplier(field))) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(((v & field_mask(field)) * field_multiplier(field))))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __be64 be64_replace_bits(__be64 old, u64 val, u64 field) { return (old & ~(( __be64)(__builtin_constant_p((__u64)((field))) ? ((__u64)( (((__u64)((field)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((field)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((field)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((field)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((field)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((field)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((field)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((field)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((field))))) | be64_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void be64p_replace_bits(__be64 *p, u64 val, u64 field) { *p = (*p & ~(( __be64)(__builtin_constant_p((__u64)((field))) ? ((__u64)( (((__u64)((field)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)((field)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((field)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)((field)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)((field)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)((field)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((field)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((field)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64((field))))) | be64_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u64 be64_get_bits(__be64 v, u64 field) { return ((__builtin_constant_p((__u64)(( __u64)(__be64)(v))) ? ((__u64)( (((__u64)(( __u64)(__be64)(v)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(v)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(v)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(v)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(v)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(v)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(v)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(v)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(v))) & field)/field_multiplier(field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u64 u64_encode_bits(u64 v, u64 field) { if (__builtin_constant_p(v) && (v & ~field_mask(field))) __field_overflow(); return ((v & field_mask(field)) * field_multiplier(field)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) __u64 u64_replace_bits(__u64 old, u64 val, u64 field) { return (old & ~(field)) | u64_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) void u64p_replace_bits(__u64 *p, u64 val, u64 field) { *p = (*p & ~(field)) | u64_encode_bits(val, field); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) __attribute__((__always_inline__)) u64 u64_get_bits(__u64 v, u64 field) { return ((v) & field)/field_multiplier(field); } # 67 "../drivers/net/wireless/intel/iwlwifi/iwl-prph.h" 2 # 393 "../drivers/net/wireless/intel/iwlwifi/iwl-prph.h" enum { ENABLE_WFPM = ((((1UL))) << (31)), WFPM_AUX_CTL_AUX_IF_MAC_OWNER_MSK = 0x80000000, }; enum { HW_STEP_LOCATION_BITS = 24, }; enum aux_misc_master1_en { AUX_MISC_MASTER1_EN_SBE_MSK = 0x1, }; # 428 "../drivers/net/wireless/intel/iwlwifi/iwl-prph.h" enum { UMAG_GEN_HW_IS_FPGA = ((((1UL))) << (1)), }; enum { LMPM_CHICK_EXTENDED_ADDR_SPACE = ((((1UL))) << (0)), }; enum { LMPM_PAGE_PASS_NOTIF_POS = ((((1UL))) << (20)), }; # 71 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-io.h" 1 # 61 "../drivers/net/wireless/intel/iwlwifi/iwl-io.h" # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h" 1 # 20 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_trace_data(struct sk_buff *skb) { struct ieee80211_hdr *hdr = (void *)skb->data; __le16 fc = hdr->frame_control; int offs = 24; if (!ieee80211_is_data(fc)) return false; if (ieee80211_has_a4(fc)) offs += 6; if (ieee80211_is_data_qos(fc)) offs += 2; offs += 6; return skb->len <= offs + 2 || *(__be16 *)(skb->data + offs) != (( __be16)(__builtin_constant_p((__u16)((0x888E))) ? ((__u16)( (((__u16)((0x888E)) & (__u16)0x00ffU) << 8) | (((__u16)((0x888E)) & (__u16)0xff00U) >> 8))) : __fswab16((0x888E)))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) size_t iwl_rx_trace_len(const struct iwl_trans *trans, void *rxbuf, size_t len, size_t *out_hdr_offset) { struct iwl_cmd_header *cmd = (void *)((u8 *)rxbuf + sizeof(__le32)); struct ieee80211_hdr *hdr = ((void *)0); size_t hdr_offset; if (cmd->cmd != trans->rx_mpdu_cmd) return len; hdr_offset = sizeof(struct iwl_cmd_header) + trans->rx_mpdu_cmd_hdr_size; if (out_hdr_offset) *out_hdr_offset = hdr_offset; hdr = (void *)((u8 *)cmd + hdr_offset); if (!ieee80211_is_data(hdr->frame_control)) return len; return sizeof(__le32) + sizeof(*cmd) + trans->rx_mpdu_cmd_hdr_size + ieee80211_hdrlen(hdr->frame_control); } # 1 "../include/linux/tracepoint.h" 1 # 23 "../include/linux/tracepoint.h" struct module; struct tracepoint; struct notifier_block; struct trace_eval_map { const char *system; const char *eval_string; unsigned long eval_value; }; extern struct srcu_struct tracepoint_srcu; extern int tracepoint_probe_register(struct tracepoint *tp, void *probe, void *data); extern int tracepoint_probe_register_prio(struct tracepoint *tp, void *probe, void *data, int prio); extern int tracepoint_probe_unregister(struct tracepoint *tp, void *probe, void *data); extern void for_each_kernel_tracepoint(void (*fct)(struct tracepoint *tp, void *priv), void *priv); struct tp_module { struct list_head list; struct module *mod; }; bool trace_module_has_bad_taint(struct module *mod); extern int register_tracepoint_module_notifier(struct notifier_block *nb); extern int unregister_tracepoint_module_notifier(struct notifier_block *nb); # 80 "../include/linux/tracepoint.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void tracepoint_synchronize_unregister(void) { synchronize_srcu(&tracepoint_srcu); synchronize_rcu(); } extern int syscall_regfunc(void); extern void syscall_unregfunc(void); # 101 "../include/linux/tracepoint.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p) { return offset_to_ptr(p); } # 77 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h" 2 # 95 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h" # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" 1 # 16 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" # 1 "../include/linux/tracepoint.h" 1 # 17 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" 2 # 1 "../include/linux/pci.h" 1 # 21 "../include/linux/pci.h" # 1 "../include/linux/mod_devicetable.h" 1 # 14 "../include/linux/mod_devicetable.h" typedef unsigned long kernel_ulong_t; # 38 "../include/linux/mod_devicetable.h" struct pci_device_id { __u32 vendor, device; __u32 subvendor, subdevice; __u32 class, class_mask; kernel_ulong_t driver_data; }; struct ieee1394_device_id { __u32 match_flags; __u32 vendor_id; __u32 model_id; __u32 specifier_id; __u32 version; kernel_ulong_t driver_data; }; # 121 "../include/linux/mod_devicetable.h" struct usb_device_id { __u16 match_flags; __u16 idVendor; __u16 idProduct; __u16 bcdDevice_lo; __u16 bcdDevice_hi; __u8 bDeviceClass; __u8 bDeviceSubClass; __u8 bDeviceProtocol; __u8 bInterfaceClass; __u8 bInterfaceSubClass; __u8 bInterfaceProtocol; __u8 bInterfaceNumber; kernel_ulong_t driver_info __attribute__((aligned(sizeof(kernel_ulong_t)))); }; # 166 "../include/linux/mod_devicetable.h" struct hid_device_id { __u16 bus; __u16 group; __u32 vendor; __u32 product; kernel_ulong_t driver_data; }; struct ccw_device_id { __u16 match_flags; __u16 cu_type; __u16 dev_type; __u8 cu_model; __u8 dev_model; kernel_ulong_t driver_info; }; struct ap_device_id { __u16 match_flags; __u8 dev_type; kernel_ulong_t driver_info; }; struct css_device_id { __u8 match_flags; __u8 type; kernel_ulong_t driver_data; }; struct acpi_device_id { __u8 id[9]; kernel_ulong_t driver_data; __u32 cls; __u32 cls_msk; }; struct pnp_device_id { __u8 id[8]; kernel_ulong_t driver_data; }; struct pnp_card_device_id { __u8 id[8]; kernel_ulong_t driver_data; struct { __u8 id[8]; } devs[8]; }; struct serio_device_id { __u8 type; __u8 extra; __u8 id; __u8 proto; }; struct hda_device_id { __u32 vendor_id; __u32 rev_id; __u8 api_version; const char *name; unsigned long driver_data; }; struct sdw_device_id { __u16 mfg_id; __u16 part_id; kernel_ulong_t driver_data; }; struct of_device_id { char name[32]; char type[32]; char compatible[128]; const void *data; }; struct vio_device_id { char type[32]; char compat[32]; }; struct pcmcia_device_id { __u16 match_flags; __u16 manf_id; __u16 card_id; __u8 func_id; __u8 function; __u8 device_no; __u32 prod_id_hash[4]; const char * prod_id[4]; kernel_ulong_t driver_info; char * cisfile; }; # 340 "../include/linux/mod_devicetable.h" struct input_device_id { kernel_ulong_t flags; __u16 bustype; __u16 vendor; __u16 product; __u16 version; kernel_ulong_t evbit[0x1f / 64 + 1]; kernel_ulong_t keybit[0x2ff / 64 + 1]; kernel_ulong_t relbit[0x0f / 64 + 1]; kernel_ulong_t absbit[0x3f / 64 + 1]; kernel_ulong_t mscbit[0x07 / 64 + 1]; kernel_ulong_t ledbit[0x0f / 64 + 1]; kernel_ulong_t sndbit[0x07 / 64 + 1]; kernel_ulong_t ffbit[0x7f / 64 + 1]; kernel_ulong_t swbit[0x0f / 64 + 1]; kernel_ulong_t propbit[0x1f / 64 + 1]; kernel_ulong_t driver_info; }; struct eisa_device_id { char sig[8]; kernel_ulong_t driver_data; }; struct parisc_device_id { __u8 hw_type; __u8 hversion_rev; __u16 hversion; __u32 sversion; }; # 391 "../include/linux/mod_devicetable.h" struct sdio_device_id { __u8 class; __u16 vendor; __u16 device; kernel_ulong_t driver_data; }; struct ssb_device_id { __u16 vendor; __u16 coreid; __u8 revision; __u8 __pad; } __attribute__((packed, aligned(2))); # 413 "../include/linux/mod_devicetable.h" struct bcma_device_id { __u16 manuf; __u16 id; __u8 rev; __u8 class; } __attribute__((packed,aligned(2))); # 427 "../include/linux/mod_devicetable.h" struct virtio_device_id { __u32 device; __u32 vendor; }; struct hv_vmbus_device_id { uuid_le guid; kernel_ulong_t driver_data; }; struct rpmsg_device_id { char name[32]; }; struct i2c_device_id { char name[20]; kernel_ulong_t driver_data; }; struct pci_epf_device_id { char name[20]; kernel_ulong_t driver_data; }; # 477 "../include/linux/mod_devicetable.h" struct i3c_device_id { __u8 match_flags; __u8 dcr; __u16 manuf_id; __u16 part_id; __u16 extra_info; const void *data; }; struct spi_device_id { char name[32]; kernel_ulong_t driver_data; }; struct slim_device_id { __u16 manf_id, prod_code; __u16 dev_index, instance; kernel_ulong_t driver_data; }; struct apr_device_id { char name[32]; __u32 domain_id; __u32 svc_id; __u32 svc_version; kernel_ulong_t driver_data; }; struct spmi_device_id { char name[32]; kernel_ulong_t driver_data; }; enum dmi_field { DMI_NONE, DMI_BIOS_VENDOR, DMI_BIOS_VERSION, DMI_BIOS_DATE, DMI_SYS_VENDOR, DMI_PRODUCT_NAME, DMI_PRODUCT_VERSION, DMI_PRODUCT_SERIAL, DMI_PRODUCT_UUID, DMI_PRODUCT_SKU, DMI_PRODUCT_FAMILY, DMI_BOARD_VENDOR, DMI_BOARD_NAME, DMI_BOARD_VERSION, DMI_BOARD_SERIAL, DMI_BOARD_ASSET_TAG, DMI_CHASSIS_VENDOR, DMI_CHASSIS_TYPE, DMI_CHASSIS_VERSION, DMI_CHASSIS_SERIAL, DMI_CHASSIS_ASSET_TAG, DMI_STRING_MAX, DMI_OEM_STRING, }; struct dmi_strmatch { unsigned char slot:7; unsigned char exact_match:1; char substr[79]; }; struct dmi_system_id { int (*callback)(const struct dmi_system_id *); const char *ident; struct dmi_strmatch matches[4]; void *driver_data; }; # 582 "../include/linux/mod_devicetable.h" struct platform_device_id { char name[20]; kernel_ulong_t driver_data; }; # 609 "../include/linux/mod_devicetable.h" struct mdio_device_id { __u32 phy_id; __u32 phy_id_mask; }; struct zorro_device_id { __u32 id; kernel_ulong_t driver_data; }; struct isapnp_device_id { unsigned short card_vendor, card_device; unsigned short vendor, function; kernel_ulong_t driver_data; }; # 638 "../include/linux/mod_devicetable.h" struct amba_id { unsigned int id; unsigned int mask; void *data; }; struct mips_cdmm_device_id { __u8 type; }; # 662 "../include/linux/mod_devicetable.h" struct x86_cpu_id { __u16 vendor; __u16 family; __u16 model; __u16 feature; kernel_ulong_t driver_data; }; # 683 "../include/linux/mod_devicetable.h" struct cpu_feature { __u16 feature; }; struct ipack_device_id { __u8 format; __u32 vendor; __u32 device; }; # 708 "../include/linux/mod_devicetable.h" struct mei_cl_device_id { char name[32]; uuid_le uuid; __u8 version; kernel_ulong_t driver_info; }; # 729 "../include/linux/mod_devicetable.h" struct rio_device_id { __u16 did, vid; __u16 asm_did, asm_vid; }; struct mcb_device_id { __u16 device; kernel_ulong_t driver_data; }; struct ulpi_device_id { __u16 vendor; __u16 product; kernel_ulong_t driver_data; }; # 753 "../include/linux/mod_devicetable.h" struct fsl_mc_device_id { __u16 vendor; const char obj_type[16]; }; # 771 "../include/linux/mod_devicetable.h" struct tb_service_id { __u32 match_flags; char protocol_key[8 + 1]; __u32 protocol_id; __u32 protocol_version; __u32 protocol_revision; kernel_ulong_t driver_data; }; # 795 "../include/linux/mod_devicetable.h" struct typec_device_id { __u16 svid; __u8 mode; kernel_ulong_t driver_data; }; struct tee_client_device_id { uuid_t uuid; }; # 818 "../include/linux/mod_devicetable.h" struct wmi_device_id { const char guid_string[36 +1]; const void *context; }; # 22 "../include/linux/pci.h" 2 # 33 "../include/linux/pci.h" # 1 "../include/linux/io.h" 1 # 16 "../include/linux/io.h" struct device; struct resource; void __iowrite32_copy(void *to, const void *from, size_t count); void __ioread32_copy(void *to, const void *from, size_t count); void __iowrite64_copy(void *to, const void *from, size_t count); int ioremap_page_range(unsigned long addr, unsigned long end, phys_addr_t phys_addr, pgprot_t prot); # 35 "../include/linux/io.h" void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) ioremap_huge_init(void); int arch_ioremap_p4d_supported(void); int arch_ioremap_pud_supported(void); int arch_ioremap_pmd_supported(void); # 47 "../include/linux/io.h" void * devm_ioport_map(struct device *dev, unsigned long port, unsigned int nr); void devm_ioport_unmap(struct device *dev, void *addr); # 65 "../include/linux/io.h" void *devm_ioremap(struct device *dev, resource_size_t offset, resource_size_t size); void *devm_ioremap_nocache(struct device *dev, resource_size_t offset, resource_size_t size); void *devm_ioremap_wc(struct device *dev, resource_size_t offset, resource_size_t size); void devm_iounmap(struct device *dev, void *addr); int check_signature(const volatile void *io_addr, const unsigned char *signature, int length); void devm_ioremap_release(struct device *dev, void *res); void *devm_memremap(struct device *dev, resource_size_t offset, size_t size, unsigned long flags); void devm_memunmap(struct device *dev, void *addr); void *__devm_memremap_pages(struct device *dev, struct resource *res); # 95 "../include/linux/io.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *pci_remap_cfgspace(phys_addr_t offset, size_t size) { return ioremap_nocache(offset, size); } # 144 "../include/linux/io.h" enum { MEMREMAP_WB = 1 << 0, MEMREMAP_WT = 1 << 1, MEMREMAP_WC = 1 << 2, MEMREMAP_ENC = 1 << 3, MEMREMAP_DEC = 1 << 4, }; void *memremap(resource_size_t offset, size_t size, unsigned long flags); void memunmap(void *addr); # 34 "../include/linux/pci.h" 2 # 1 "../include/linux/resource_ext.h" 1 # 14 "../include/linux/resource_ext.h" struct resource_win { struct resource res; resource_size_t offset; }; struct resource_entry { struct list_head node; struct resource *res; resource_size_t offset; struct resource __res; }; extern struct resource_entry * resource_list_create_entry(struct resource *res, size_t extra_size); extern void resource_list_free(struct list_head *head); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void resource_list_add(struct resource_entry *entry, struct list_head *head) { list_add(&entry->node, head); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void resource_list_add_tail(struct resource_entry *entry, struct list_head *head) { list_add_tail(&entry->node, head); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void resource_list_del(struct resource_entry *entry) { list_del(&entry->node); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void resource_list_free_entry(struct resource_entry *entry) { kfree(entry); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void resource_list_destroy_entry(struct resource_entry *entry) { resource_list_del(entry); resource_list_free_entry(entry); } # 35 "../include/linux/pci.h" 2 # 1 "../include/uapi/linux/pci.h" 1 # 21 "../include/uapi/linux/pci.h" # 1 "../include/uapi/linux/pci_regs.h" 1 # 22 "../include/uapi/linux/pci.h" 2 # 36 "../include/linux/pci.h" 2 # 1 "../include/linux/pci_ids.h" 1 # 38 "../include/linux/pci.h" 2 # 56 "../include/linux/pci.h" struct pci_slot { struct pci_bus *bus; struct list_head list; struct hotplug_slot *hotplug; unsigned char number; struct kobject kobj; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *pci_slot_name(const struct pci_slot *slot) { return kobject_name(&slot->kobj); } enum pci_mmap_state { pci_mmap_io, pci_mmap_mem }; enum { PCI_STD_RESOURCES, PCI_STD_RESOURCE_END = 5, PCI_ROM_RESOURCE, PCI_IOV_RESOURCES, PCI_IOV_RESOURCE_END = PCI_IOV_RESOURCES + 6 - 1, PCI_BRIDGE_RESOURCES, PCI_BRIDGE_RESOURCE_END = PCI_BRIDGE_RESOURCES + 4 - 1, PCI_NUM_RESOURCES, DEVICE_COUNT_RESOURCE = PCI_NUM_RESOURCES, }; # 115 "../include/linux/pci.h" enum pci_interrupt_pin { PCI_INTERRUPT_UNKNOWN, PCI_INTERRUPT_INTA, PCI_INTERRUPT_INTB, PCI_INTERRUPT_INTC, PCI_INTERRUPT_INTD, }; # 130 "../include/linux/pci.h" typedef int pci_power_t; # 141 "../include/linux/pci.h" extern const char *pci_power_names[]; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *pci_power_name(pci_power_t state) { return pci_power_names[1 + ( int) state]; } # 160 "../include/linux/pci.h" typedef unsigned int pci_channel_state_t; enum pci_channel_state { pci_channel_io_normal = ( pci_channel_state_t) 1, pci_channel_io_frozen = ( pci_channel_state_t) 2, pci_channel_io_perm_failure = ( pci_channel_state_t) 3, }; typedef unsigned int pcie_reset_state_t; enum pcie_reset_state { pcie_deassert_reset = ( pcie_reset_state_t) 1, pcie_warm_reset = ( pcie_reset_state_t) 2, pcie_hot_reset = ( pcie_reset_state_t) 3 }; typedef unsigned short pci_dev_flags_t; enum pci_dev_flags { PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = ( pci_dev_flags_t) (1 << 0), PCI_DEV_FLAGS_NO_D3 = ( pci_dev_flags_t) (1 << 1), PCI_DEV_FLAGS_ASSIGNED = ( pci_dev_flags_t) (1 << 2), PCI_DEV_FLAGS_ACS_ENABLED_QUIRK = ( pci_dev_flags_t) (1 << 3), PCI_DEV_FLAG_PCIE_BRIDGE_ALIAS = ( pci_dev_flags_t) (1 << 5), PCI_DEV_FLAGS_NO_BUS_RESET = ( pci_dev_flags_t) (1 << 6), PCI_DEV_FLAGS_NO_PM_RESET = ( pci_dev_flags_t) (1 << 7), PCI_DEV_FLAGS_VPD_REF_F0 = ( pci_dev_flags_t) (1 << 8), PCI_DEV_FLAGS_BRIDGE_XLATE_ROOT = ( pci_dev_flags_t) (1 << 9), PCI_DEV_FLAGS_NO_FLR_RESET = ( pci_dev_flags_t) (1 << 10), PCI_DEV_FLAGS_NO_RELAXED_ORDERING = ( pci_dev_flags_t) (1 << 11), }; enum pci_irq_reroute_variant { INTEL_IRQ_REROUTE_VARIANT = 1, MAX_IRQ_REROUTE_VARIANTS = 3 }; typedef unsigned short pci_bus_flags_t; enum pci_bus_flags { PCI_BUS_FLAGS_NO_MSI = ( pci_bus_flags_t) 1, PCI_BUS_FLAGS_NO_MMRBC = ( pci_bus_flags_t) 2, PCI_BUS_FLAGS_NO_AERSID = ( pci_bus_flags_t) 4, PCI_BUS_FLAGS_NO_EXTCFG = ( pci_bus_flags_t) 8, }; enum pcie_link_width { PCIE_LNK_WIDTH_RESRV = 0x00, PCIE_LNK_X1 = 0x01, PCIE_LNK_X2 = 0x02, PCIE_LNK_X4 = 0x04, PCIE_LNK_X8 = 0x08, PCIE_LNK_X12 = 0x0c, PCIE_LNK_X16 = 0x10, PCIE_LNK_X32 = 0x20, PCIE_LNK_WIDTH_UNKNOWN = 0xff, }; enum pci_bus_speed { PCI_SPEED_33MHz = 0x00, PCI_SPEED_66MHz = 0x01, PCI_SPEED_66MHz_PCIX = 0x02, PCI_SPEED_100MHz_PCIX = 0x03, PCI_SPEED_133MHz_PCIX = 0x04, PCI_SPEED_66MHz_PCIX_ECC = 0x05, PCI_SPEED_100MHz_PCIX_ECC = 0x06, PCI_SPEED_133MHz_PCIX_ECC = 0x07, PCI_SPEED_66MHz_PCIX_266 = 0x09, PCI_SPEED_100MHz_PCIX_266 = 0x0a, PCI_SPEED_133MHz_PCIX_266 = 0x0b, AGP_UNKNOWN = 0x0c, AGP_1X = 0x0d, AGP_2X = 0x0e, AGP_4X = 0x0f, AGP_8X = 0x10, PCI_SPEED_66MHz_PCIX_533 = 0x11, PCI_SPEED_100MHz_PCIX_533 = 0x12, PCI_SPEED_133MHz_PCIX_533 = 0x13, PCIE_SPEED_2_5GT = 0x14, PCIE_SPEED_5_0GT = 0x15, PCIE_SPEED_8_0GT = 0x16, PCIE_SPEED_16_0GT = 0x17, PCIE_SPEED_32_0GT = 0x18, PCI_SPEED_UNKNOWN = 0xff, }; enum pci_bus_speed pcie_get_speed_cap(struct pci_dev *dev); enum pcie_link_width pcie_get_width_cap(struct pci_dev *dev); struct pci_cap_saved_data { u16 cap_nr; bool cap_extended; unsigned int size; u32 data[0]; }; struct pci_cap_saved_state { struct hlist_node next; struct pci_cap_saved_data cap; }; struct irq_affinity; struct pcie_link_state; struct pci_vpd; struct pci_sriov; struct pci_ats; struct pci_p2pdma; struct pci_dev { struct list_head bus_list; struct pci_bus *bus; struct pci_bus *subordinate; void *sysdata; struct proc_dir_entry *procent; struct pci_slot *slot; unsigned int devfn; unsigned short vendor; unsigned short device; unsigned short subsystem_vendor; unsigned short subsystem_device; unsigned int class; u8 revision; u8 hdr_type; u16 aer_cap; struct aer_stats *aer_stats; u8 pcie_cap; u8 msi_cap; u8 msix_cap; u8 pcie_mpss:3; u8 rom_base_reg; u8 pin; u16 pcie_flags_reg; unsigned long *dma_alias_mask; struct pci_driver *driver; u64 dma_mask; struct device_dma_parameters dma_parms; pci_power_t current_state; unsigned int imm_ready:1; u8 pm_cap; unsigned int pme_support:5; unsigned int pme_poll:1; unsigned int d1_support:1; unsigned int d2_support:1; unsigned int no_d1d2:1; unsigned int no_d3cold:1; unsigned int bridge_d3:1; unsigned int d3cold_allowed:1; unsigned int mmio_always_on:1; unsigned int wakeup_prepared:1; unsigned int runtime_d3cold:1; unsigned int skip_bus_pm:1; unsigned int ignore_hotplug:1; unsigned int hotplug_user_indicators:1; unsigned int clear_retrain_link:1; unsigned int d3_delay; unsigned int d3cold_delay; struct pcie_link_state *link_state; unsigned int ltr_path:1; unsigned int eetlp_prefix_path:1; pci_channel_state_t error_state; struct device dev; int cfg_size; unsigned int irq; struct resource resource[DEVICE_COUNT_RESOURCE]; bool match_driver; unsigned int transparent:1; unsigned int io_window:1; unsigned int pref_window:1; unsigned int pref_64_window:1; unsigned int multifunction:1; unsigned int is_busmaster:1; unsigned int no_msi:1; unsigned int no_64bit_msi:1; unsigned int block_cfg_access:1; unsigned int broken_parity_status:1; unsigned int irq_reroute_variant:2; unsigned int msi_enabled:1; unsigned int msix_enabled:1; unsigned int ari_enabled:1; unsigned int ats_enabled:1; unsigned int pasid_enabled:1; unsigned int pri_enabled:1; unsigned int is_managed:1; unsigned int needs_freset:1; unsigned int state_saved:1; unsigned int is_physfn:1; unsigned int is_virtfn:1; unsigned int reset_fn:1; unsigned int is_hotplug_bridge:1; unsigned int shpc_managed:1; unsigned int is_thunderbolt:1; unsigned int untrusted:1; unsigned int __aer_firmware_first_valid:1; unsigned int __aer_firmware_first:1; unsigned int broken_intx_masking:1; unsigned int io_window_1k:1; unsigned int irq_managed:1; unsigned int has_secondary_link:1; unsigned int non_compliant_bars:1; unsigned int is_probed:1; unsigned int link_active_reporting:1; unsigned int no_vf_scan:1; pci_dev_flags_t dev_flags; atomic_t enable_cnt; u32 saved_config_space[16]; struct hlist_head saved_cap_space; struct bin_attribute *rom_attr; int rom_attr_enabled; struct bin_attribute *res_attr[DEVICE_COUNT_RESOURCE]; struct bin_attribute *res_attr_wc[DEVICE_COUNT_RESOURCE]; unsigned int broken_cmd_compl:1; unsigned int ptm_root:1; unsigned int ptm_enabled:1; u8 ptm_granularity; const struct attribute_group **msi_irq_groups; struct pci_vpd *vpd; union { struct pci_sriov *sriov; struct pci_dev *physfn; }; u16 ats_cap; u8 ats_stu; atomic_t ats_ref_cnt; u32 pri_reqs_alloc; u16 pasid_features; struct pci_p2pdma *p2pdma; phys_addr_t rom; size_t romlen; char *driver_override; unsigned long priv_flags; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct pci_dev *pci_physfn(struct pci_dev *dev) { if (dev->is_virtfn) dev = dev->physfn; return dev; } struct pci_dev *pci_alloc_dev(struct pci_bus *bus); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_channel_offline(struct pci_dev *pdev) { return (pdev->error_state != pci_channel_io_normal); } struct pci_host_bridge { struct device dev; struct pci_bus *bus; struct pci_ops *ops; void *sysdata; int busnr; struct list_head windows; struct list_head dma_ranges; u8 (*swizzle_irq)(struct pci_dev *, u8 *); int (*map_irq)(const struct pci_dev *, u8, u8); void (*release_fn)(struct pci_host_bridge *); void *release_data; struct msi_controller *msi; unsigned int ignore_reset_delay:1; unsigned int no_ext_tags:1; unsigned int native_aer:1; unsigned int native_pcie_hotplug:1; unsigned int native_shpc_hotplug:1; unsigned int native_pme:1; unsigned int native_ltr:1; unsigned int preserve_config:1; resource_size_t (*align_resource)(struct pci_dev *dev, const struct resource *res, resource_size_t start, resource_size_t size, resource_size_t align); unsigned long private[0] __attribute__((__aligned__((1 << (6))))); }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *pci_host_bridge_priv(struct pci_host_bridge *bridge) { return (void *)bridge->private; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct pci_host_bridge *pci_host_bridge_from_priv(void *priv) { return ({ void *__mptr = (void *)(priv); do { extern void __compiletime_assert_532(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(priv)), typeof(((struct pci_host_bridge *)0)->private)) && !__builtin_types_compatible_p(typeof(*(priv)), typeof(void))))) __compiletime_assert_532(); } while (0); ((struct pci_host_bridge *)(__mptr - __builtin_offsetof(struct pci_host_bridge, private))); }); } struct pci_host_bridge *pci_alloc_host_bridge(size_t priv); struct pci_host_bridge *devm_pci_alloc_host_bridge(struct device *dev, size_t priv); void pci_free_host_bridge(struct pci_host_bridge *bridge); struct pci_host_bridge *pci_find_host_bridge(struct pci_bus *bus); void pci_set_host_bridge_release(struct pci_host_bridge *bridge, void (*release_fn)(struct pci_host_bridge *), void *release_data); int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge); # 562 "../include/linux/pci.h" struct pci_bus_resource { struct list_head list; struct resource *res; unsigned int flags; }; struct pci_bus { struct list_head node; struct pci_bus *parent; struct list_head children; struct list_head devices; struct pci_dev *self; struct list_head slots; struct resource *resource[4]; struct list_head resources; struct resource busn_res; struct pci_ops *ops; struct msi_controller *msi; void *sysdata; struct proc_dir_entry *procdir; unsigned char number; unsigned char primary; unsigned char max_bus_speed; unsigned char cur_bus_speed; char name[48]; unsigned short bridge_ctl; pci_bus_flags_t bus_flags; struct device *bridge; struct device dev; struct bin_attribute *legacy_io; struct bin_attribute *legacy_mem; unsigned int is_added:1; }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 pci_dev_id(struct pci_dev *dev) { return ((((u16)(dev->bus->number)) << 8) | (dev->devfn)); } # 621 "../include/linux/pci.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pci_is_root_bus(struct pci_bus *pbus) { return !(pbus->parent); } # 633 "../include/linux/pci.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pci_is_bridge(struct pci_dev *dev) { return dev->hdr_type == 1 || dev->hdr_type == 2; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct pci_dev *pci_upstream_bridge(struct pci_dev *dev) { dev = pci_physfn(dev); if (pci_is_root_bus(dev->bus)) return ((void *)0); return dev->bus->self; } struct device *pci_get_host_bridge_device(struct pci_dev *dev); void pci_put_host_bridge_device(struct device *dev); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pci_dev_msi_enabled(struct pci_dev *pci_dev) { return pci_dev->msi_enabled || pci_dev->msix_enabled; } # 674 "../include/linux/pci.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pcibios_err_to_errno(int err) { if (err <= 0x00) return err; switch (err) { case 0x81: return -2; case 0x83: return -25; case 0x86: return -19; case 0x87: return -14; case 0x88: return -5; case 0x89: return -28; } return -34; } struct pci_ops { int (*add_bus)(struct pci_bus *bus); void (*remove_bus)(struct pci_bus *bus); void *(*map_bus)(struct pci_bus *bus, unsigned int devfn, int where); int (*read)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *val); int (*write)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val); }; int raw_pci_read(unsigned int domain, unsigned int bus, unsigned int devfn, int reg, int len, u32 *val); int raw_pci_write(unsigned int domain, unsigned int bus, unsigned int devfn, int reg, int len, u32 val); typedef u64 pci_bus_addr_t; struct pci_bus_region { pci_bus_addr_t start; pci_bus_addr_t end; }; struct pci_dynids { spinlock_t lock; struct list_head list; }; # 740 "../include/linux/pci.h" typedef unsigned int pci_ers_result_t; enum pci_ers_result { PCI_ERS_RESULT_NONE = ( pci_ers_result_t) 1, PCI_ERS_RESULT_CAN_RECOVER = ( pci_ers_result_t) 2, PCI_ERS_RESULT_NEED_RESET = ( pci_ers_result_t) 3, PCI_ERS_RESULT_DISCONNECT = ( pci_ers_result_t) 4, PCI_ERS_RESULT_RECOVERED = ( pci_ers_result_t) 5, PCI_ERS_RESULT_NO_AER_DRIVER = ( pci_ers_result_t) 6, }; struct pci_error_handlers { pci_ers_result_t (*error_detected)(struct pci_dev *dev, enum pci_channel_state error); pci_ers_result_t (*mmio_enabled)(struct pci_dev *dev); pci_ers_result_t (*slot_reset)(struct pci_dev *dev); void (*reset_prepare)(struct pci_dev *dev); void (*reset_done)(struct pci_dev *dev); void (*resume)(struct pci_dev *dev); }; struct module; # 828 "../include/linux/pci.h" struct pci_driver { struct list_head node; const char *name; const struct pci_device_id *id_table; int (*probe)(struct pci_dev *dev, const struct pci_device_id *id); void (*remove)(struct pci_dev *dev); int (*suspend)(struct pci_dev *dev, pm_message_t state); int (*suspend_late)(struct pci_dev *dev, pm_message_t state); int (*resume_early)(struct pci_dev *dev); int (*resume)(struct pci_dev *dev); void (*shutdown)(struct pci_dev *dev); int (*sriov_configure)(struct pci_dev *dev, int num_vfs); const struct pci_error_handlers *err_handler; const struct attribute_group **groups; struct device_driver driver; struct pci_dynids dynids; }; # 918 "../include/linux/pci.h" enum { PCI_REASSIGN_ALL_RSRC = 0x00000001, PCI_REASSIGN_ALL_BUS = 0x00000002, PCI_PROBE_ONLY = 0x00000004, PCI_CAN_SKIP_ISA_ALIGN = 0x00000008, PCI_ENABLE_PROC_DOMAINS = 0x00000010, PCI_COMPAT_DOMAIN_0 = 0x00000020, PCI_SCAN_ALL_PCIE_DEVS = 0x00000040, }; extern unsigned int pci_flags; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_set_flags(int flags) { pci_flags = flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_add_flags(int flags) { pci_flags |= flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_clear_flags(int flags) { pci_flags &= ~flags; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_has_flag(int flag) { return pci_flags & flag; } void pcie_bus_configure_settings(struct pci_bus *bus); enum pcie_bus_config_types { PCIE_BUS_TUNE_OFF, PCIE_BUS_DEFAULT, PCIE_BUS_SAFE, PCIE_BUS_PERFORMANCE, PCIE_BUS_PEER2PEER, }; extern enum pcie_bus_config_types pcie_bus_config; extern struct bus_type pci_bus_type; extern struct list_head pci_root_buses; int no_pci_devices(void); void pcibios_resource_survey_bus(struct pci_bus *bus); void pcibios_bus_add_device(struct pci_dev *pdev); void pcibios_add_bus(struct pci_bus *bus); void pcibios_remove_bus(struct pci_bus *bus); void pcibios_fixup_bus(struct pci_bus *); int __attribute__((__warn_unused_result__)) pcibios_enable_device(struct pci_dev *, int mask); char *pcibios_setup(char *str); resource_size_t pcibios_align_resource(void *, const struct resource *, resource_size_t, resource_size_t); void pci_fixup_cardbus(struct pci_bus *); void pcibios_resource_to_bus(struct pci_bus *bus, struct pci_bus_region *region, struct resource *res); void pcibios_bus_to_resource(struct pci_bus *bus, struct resource *res, struct pci_bus_region *region); void pcibios_scan_specific_bus(int busn); struct pci_bus *pci_find_bus(int domain, int busnr); void pci_bus_add_devices(const struct pci_bus *bus); struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata); struct pci_bus *pci_create_root_bus(struct device *parent, int bus, struct pci_ops *ops, void *sysdata, struct list_head *resources); int pci_host_probe(struct pci_host_bridge *bridge); int pci_bus_insert_busn_res(struct pci_bus *b, int bus, int busmax); int pci_bus_update_busn_res_end(struct pci_bus *b, int busmax); void pci_bus_release_busn_res(struct pci_bus *b); struct pci_bus *pci_scan_root_bus(struct device *parent, int bus, struct pci_ops *ops, void *sysdata, struct list_head *resources); int pci_scan_root_bus_bridge(struct pci_host_bridge *bridge); struct pci_bus *pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr); void pcie_update_link_speed(struct pci_bus *bus, u16 link_status); struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr, const char *name, struct hotplug_slot *hotplug); void pci_destroy_slot(struct pci_slot *slot); void pci_dev_assign_slot(struct pci_dev *dev); int pci_scan_slot(struct pci_bus *bus, int devfn); struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn); void pci_device_add(struct pci_dev *dev, struct pci_bus *bus); unsigned int pci_scan_child_bus(struct pci_bus *bus); void pci_bus_add_device(struct pci_dev *dev); void pci_read_bridge_bases(struct pci_bus *child); struct resource *pci_find_parent_resource(const struct pci_dev *dev, struct resource *res); struct pci_dev *pci_find_pcie_root_port(struct pci_dev *dev); u8 pci_swizzle_interrupt_pin(const struct pci_dev *dev, u8 pin); int pci_get_interrupt_pin(struct pci_dev *dev, struct pci_dev **bridge); u8 pci_common_swizzle(struct pci_dev *dev, u8 *pinp); struct pci_dev *pci_dev_get(struct pci_dev *dev); void pci_dev_put(struct pci_dev *dev); void pci_remove_bus(struct pci_bus *b); void pci_stop_and_remove_bus_device(struct pci_dev *dev); void pci_stop_and_remove_bus_device_locked(struct pci_dev *dev); void pci_stop_root_bus(struct pci_bus *bus); void pci_remove_root_bus(struct pci_bus *bus); void pci_setup_cardbus(struct pci_bus *bus); void pcibios_setup_bridge(struct pci_bus *bus, unsigned long type); void pci_sort_breadthfirst(void); enum pci_lost_interrupt_reason { PCI_LOST_IRQ_NO_INFORMATION = 0, PCI_LOST_IRQ_DISABLE_MSI, PCI_LOST_IRQ_DISABLE_MSIX, PCI_LOST_IRQ_DISABLE_ACPI, }; enum pci_lost_interrupt_reason pci_lost_interrupt(struct pci_dev *dev); int pci_find_capability(struct pci_dev *dev, int cap); int pci_find_next_capability(struct pci_dev *dev, u8 pos, int cap); int pci_find_ext_capability(struct pci_dev *dev, int cap); int pci_find_next_ext_capability(struct pci_dev *dev, int pos, int cap); int pci_find_ht_capability(struct pci_dev *dev, int ht_cap); int pci_find_next_ht_capability(struct pci_dev *dev, int pos, int ht_cap); struct pci_bus *pci_find_next_bus(const struct pci_bus *from); struct pci_dev *pci_get_device(unsigned int vendor, unsigned int device, struct pci_dev *from); struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device, unsigned int ss_vendor, unsigned int ss_device, struct pci_dev *from); struct pci_dev *pci_get_slot(struct pci_bus *bus, unsigned int devfn); struct pci_dev *pci_get_domain_bus_and_slot(int domain, unsigned int bus, unsigned int devfn); struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from); int pci_dev_present(const struct pci_device_id *ids); int pci_bus_read_config_byte(struct pci_bus *bus, unsigned int devfn, int where, u8 *val); int pci_bus_read_config_word(struct pci_bus *bus, unsigned int devfn, int where, u16 *val); int pci_bus_read_config_dword(struct pci_bus *bus, unsigned int devfn, int where, u32 *val); int pci_bus_write_config_byte(struct pci_bus *bus, unsigned int devfn, int where, u8 val); int pci_bus_write_config_word(struct pci_bus *bus, unsigned int devfn, int where, u16 val); int pci_bus_write_config_dword(struct pci_bus *bus, unsigned int devfn, int where, u32 val); int pci_generic_config_read(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *val); int pci_generic_config_write(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val); int pci_generic_config_read32(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *val); int pci_generic_config_write32(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val); struct pci_ops *pci_bus_set_ops(struct pci_bus *bus, struct pci_ops *ops); int pci_read_config_byte(const struct pci_dev *dev, int where, u8 *val); int pci_read_config_word(const struct pci_dev *dev, int where, u16 *val); int pci_read_config_dword(const struct pci_dev *dev, int where, u32 *val); int pci_write_config_byte(const struct pci_dev *dev, int where, u8 val); int pci_write_config_word(const struct pci_dev *dev, int where, u16 val); int pci_write_config_dword(const struct pci_dev *dev, int where, u32 val); int pcie_capability_read_word(struct pci_dev *dev, int pos, u16 *val); int pcie_capability_read_dword(struct pci_dev *dev, int pos, u32 *val); int pcie_capability_write_word(struct pci_dev *dev, int pos, u16 val); int pcie_capability_write_dword(struct pci_dev *dev, int pos, u32 val); int pcie_capability_clear_and_set_word(struct pci_dev *dev, int pos, u16 clear, u16 set); int pcie_capability_clear_and_set_dword(struct pci_dev *dev, int pos, u32 clear, u32 set); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pcie_capability_set_word(struct pci_dev *dev, int pos, u16 set) { return pcie_capability_clear_and_set_word(dev, pos, 0, set); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pcie_capability_set_dword(struct pci_dev *dev, int pos, u32 set) { return pcie_capability_clear_and_set_dword(dev, pos, 0, set); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pcie_capability_clear_word(struct pci_dev *dev, int pos, u16 clear) { return pcie_capability_clear_and_set_word(dev, pos, clear, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pcie_capability_clear_dword(struct pci_dev *dev, int pos, u32 clear) { return pcie_capability_clear_and_set_dword(dev, pos, clear, 0); } int pci_user_read_config_byte(struct pci_dev *dev, int where, u8 *val); int pci_user_read_config_word(struct pci_dev *dev, int where, u16 *val); int pci_user_read_config_dword(struct pci_dev *dev, int where, u32 *val); int pci_user_write_config_byte(struct pci_dev *dev, int where, u8 val); int pci_user_write_config_word(struct pci_dev *dev, int where, u16 val); int pci_user_write_config_dword(struct pci_dev *dev, int where, u32 val); int __attribute__((__warn_unused_result__)) pci_enable_device(struct pci_dev *dev); int __attribute__((__warn_unused_result__)) pci_enable_device_io(struct pci_dev *dev); int __attribute__((__warn_unused_result__)) pci_enable_device_mem(struct pci_dev *dev); int __attribute__((__warn_unused_result__)) pci_reenable_device(struct pci_dev *); int __attribute__((__warn_unused_result__)) pcim_enable_device(struct pci_dev *pdev); void pcim_pin_device(struct pci_dev *pdev); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pci_intx_mask_supported(struct pci_dev *pdev) { return !pdev->broken_intx_masking; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_is_enabled(struct pci_dev *pdev) { return (atomic_read(&pdev->enable_cnt) > 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_is_managed(struct pci_dev *pdev) { return pdev->is_managed; } void pci_disable_device(struct pci_dev *dev); extern unsigned int pcibios_max_latency; void pci_set_master(struct pci_dev *dev); void pci_clear_master(struct pci_dev *dev); int pci_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state); int pci_set_cacheline_size(struct pci_dev *dev); int __attribute__((__warn_unused_result__)) pci_set_mwi(struct pci_dev *dev); int __attribute__((__warn_unused_result__)) pcim_set_mwi(struct pci_dev *dev); int pci_try_set_mwi(struct pci_dev *dev); void pci_clear_mwi(struct pci_dev *dev); void pci_intx(struct pci_dev *dev, int enable); bool pci_check_and_mask_intx(struct pci_dev *dev); bool pci_check_and_unmask_intx(struct pci_dev *dev); int pci_wait_for_pending(struct pci_dev *dev, int pos, u16 mask); int pci_wait_for_pending_transaction(struct pci_dev *dev); int pcix_get_max_mmrbc(struct pci_dev *dev); int pcix_get_mmrbc(struct pci_dev *dev); int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc); int pcie_get_readrq(struct pci_dev *dev); int pcie_set_readrq(struct pci_dev *dev, int rq); int pcie_get_mps(struct pci_dev *dev); int pcie_set_mps(struct pci_dev *dev, int mps); u32 pcie_bandwidth_available(struct pci_dev *dev, struct pci_dev **limiting_dev, enum pci_bus_speed *speed, enum pcie_link_width *width); void pcie_print_link_status(struct pci_dev *dev); bool pcie_has_flr(struct pci_dev *dev); int pcie_flr(struct pci_dev *dev); int __pci_reset_function_locked(struct pci_dev *dev); int pci_reset_function(struct pci_dev *dev); int pci_reset_function_locked(struct pci_dev *dev); int pci_try_reset_function(struct pci_dev *dev); int pci_probe_reset_slot(struct pci_slot *slot); int pci_probe_reset_bus(struct pci_bus *bus); int pci_reset_bus(struct pci_dev *dev); void pci_reset_secondary_bus(struct pci_dev *dev); void pcibios_reset_secondary_bus(struct pci_dev *dev); void pci_update_resource(struct pci_dev *dev, int resno); int __attribute__((__warn_unused_result__)) pci_assign_resource(struct pci_dev *dev, int i); int __attribute__((__warn_unused_result__)) pci_reassign_resource(struct pci_dev *dev, int i, resource_size_t add_size, resource_size_t align); void pci_release_resource(struct pci_dev *dev, int resno); int __attribute__((__warn_unused_result__)) pci_resize_resource(struct pci_dev *dev, int i, int size); int pci_select_bars(struct pci_dev *dev, unsigned long flags); bool pci_device_is_present(struct pci_dev *pdev); void pci_ignore_hotplug(struct pci_dev *dev); int __attribute__((__format__(printf, 6, 7))) pci_request_irq(struct pci_dev *dev, unsigned int nr, irq_handler_t handler, irq_handler_t thread_fn, void *dev_id, const char *fmt, ...); void pci_free_irq(struct pci_dev *dev, unsigned int nr, void *dev_id); int pci_enable_rom(struct pci_dev *pdev); void pci_disable_rom(struct pci_dev *pdev); void __attribute__((__warn_unused_result__)) *pci_map_rom(struct pci_dev *pdev, size_t *size); void pci_unmap_rom(struct pci_dev *pdev, void *rom); void __attribute__((__warn_unused_result__)) *pci_platform_rom(struct pci_dev *pdev, size_t *size); int pci_save_state(struct pci_dev *dev); void pci_restore_state(struct pci_dev *dev); struct pci_saved_state *pci_store_saved_state(struct pci_dev *dev); int pci_load_saved_state(struct pci_dev *dev, struct pci_saved_state *state); int pci_load_and_free_saved_state(struct pci_dev *dev, struct pci_saved_state **state); struct pci_cap_saved_state *pci_find_saved_cap(struct pci_dev *dev, char cap); struct pci_cap_saved_state *pci_find_saved_ext_cap(struct pci_dev *dev, u16 cap); int pci_add_cap_save_buffer(struct pci_dev *dev, char cap, unsigned int size); int pci_add_ext_cap_save_buffer(struct pci_dev *dev, u16 cap, unsigned int size); int __pci_complete_power_transition(struct pci_dev *dev, pci_power_t state); int pci_set_power_state(struct pci_dev *dev, pci_power_t state); pci_power_t pci_choose_state(struct pci_dev *dev, pm_message_t state); bool pci_pme_capable(struct pci_dev *dev, pci_power_t state); void pci_pme_active(struct pci_dev *dev, bool enable); int pci_enable_wake(struct pci_dev *dev, pci_power_t state, bool enable); int pci_wake_from_d3(struct pci_dev *dev, bool enable); int pci_prepare_to_sleep(struct pci_dev *dev); int pci_back_from_sleep(struct pci_dev *dev); bool pci_dev_run_wake(struct pci_dev *dev); bool pci_check_pme_status(struct pci_dev *dev); void pci_pme_wakeup_bus(struct pci_bus *bus); void pci_d3cold_enable(struct pci_dev *dev); void pci_d3cold_disable(struct pci_dev *dev); bool pcie_relaxed_ordering_enabled(struct pci_dev *dev); void pci_wakeup_bus(struct pci_bus *bus); void pci_bus_set_current_state(struct pci_bus *bus, pci_power_t state); int pci_save_vc_state(struct pci_dev *dev); void pci_restore_vc_state(struct pci_dev *dev); void pci_allocate_vc_save_buffers(struct pci_dev *dev); void set_pcie_port_type(struct pci_dev *pdev); void set_pcie_hotplug_bridge(struct pci_dev *pdev); int pci_bus_find_capability(struct pci_bus *bus, unsigned int devfn, int cap); unsigned int pci_rescan_bus_bridge_resize(struct pci_dev *bridge); unsigned int pci_rescan_bus(struct pci_bus *bus); void pci_lock_rescan_remove(void); void pci_unlock_rescan_remove(void); ssize_t pci_read_vpd(struct pci_dev *dev, loff_t pos, size_t count, void *buf); ssize_t pci_write_vpd(struct pci_dev *dev, loff_t pos, size_t count, const void *buf); int pci_set_vpd_size(struct pci_dev *dev, size_t len); resource_size_t pcibios_retrieve_fw_addr(struct pci_dev *dev, int idx); void pci_bus_assign_resources(const struct pci_bus *bus); void pci_bus_claim_resources(struct pci_bus *bus); void pci_bus_size_bridges(struct pci_bus *bus); int pci_claim_resource(struct pci_dev *, int); int pci_claim_bridge_resource(struct pci_dev *bridge, int i); void pci_assign_unassigned_resources(void); void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge); void pci_assign_unassigned_bus_resources(struct pci_bus *bus); void pci_assign_unassigned_root_bus_resources(struct pci_bus *bus); int pci_reassign_bridge_resources(struct pci_dev *bridge, unsigned long type); void pdev_enable_device(struct pci_dev *); int pci_enable_resources(struct pci_dev *, int mask); void pci_assign_irq(struct pci_dev *dev); struct resource *pci_find_resource(struct pci_dev *dev, struct resource *res); int __attribute__((__warn_unused_result__)) pci_request_regions(struct pci_dev *, const char *); int __attribute__((__warn_unused_result__)) pci_request_regions_exclusive(struct pci_dev *, const char *); void pci_release_regions(struct pci_dev *); int __attribute__((__warn_unused_result__)) pci_request_region(struct pci_dev *, int, const char *); void pci_release_region(struct pci_dev *, int); int pci_request_selected_regions(struct pci_dev *, int, const char *); int pci_request_selected_regions_exclusive(struct pci_dev *, int, const char *); void pci_release_selected_regions(struct pci_dev *, int); struct pci_bus *pci_bus_get(struct pci_bus *bus); void pci_bus_put(struct pci_bus *bus); void pci_add_resource(struct list_head *resources, struct resource *res); void pci_add_resource_offset(struct list_head *resources, struct resource *res, resource_size_t offset); void pci_free_resource_list(struct list_head *resources); void pci_bus_add_resource(struct pci_bus *bus, struct resource *res, unsigned int flags); struct resource *pci_bus_resource_n(const struct pci_bus *bus, int n); void pci_bus_remove_resources(struct pci_bus *bus); int devm_request_pci_bus_resources(struct device *dev, struct list_head *resources); int pci_bridge_secondary_bus_reset(struct pci_dev *dev); int __attribute__((__warn_unused_result__)) pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res, resource_size_t size, resource_size_t align, resource_size_t min, unsigned long type_mask, resource_size_t (*alignf)(void *, const struct resource *, resource_size_t, resource_size_t), void *alignf_data); int pci_register_io_range(struct fwnode_handle *fwnode, phys_addr_t addr, resource_size_t size); unsigned long pci_address_to_pio(phys_addr_t addr); phys_addr_t pci_pio_to_address(unsigned long pio); int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr); int devm_pci_remap_iospace(struct device *dev, const struct resource *res, phys_addr_t phys_addr); void pci_unmap_iospace(struct resource *res); void *devm_pci_remap_cfgspace(struct device *dev, resource_size_t offset, resource_size_t size); void *devm_pci_remap_cfg_resource(struct device *dev, struct resource *res); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) pci_bus_addr_t pci_bus_address(struct pci_dev *pdev, int bar) { struct pci_bus_region region; pcibios_resource_to_bus(pdev->bus, ®ion, &pdev->resource[bar]); return region.start; } int __attribute__((__warn_unused_result__)) __pci_register_driver(struct pci_driver *, struct module *, const char *mod_name); void pci_unregister_driver(struct pci_driver *dev); # 1386 "../include/linux/pci.h" struct pci_driver *pci_dev_driver(const struct pci_dev *dev); int pci_add_dynid(struct pci_driver *drv, unsigned int vendor, unsigned int device, unsigned int subvendor, unsigned int subdevice, unsigned int class, unsigned int class_mask, unsigned long driver_data); const struct pci_device_id *pci_match_id(const struct pci_device_id *ids, struct pci_dev *dev); int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass); void pci_walk_bus(struct pci_bus *top, int (*cb)(struct pci_dev *, void *), void *userdata); int pci_cfg_space_size(struct pci_dev *dev); unsigned char pci_bus_max_busnr(struct pci_bus *bus); void pci_setup_bridge(struct pci_bus *bus); resource_size_t pcibios_window_alignment(struct pci_bus *bus, unsigned long type); int pci_set_vga_state(struct pci_dev *pdev, bool decode, unsigned int command_bits, u32 flags); # 1429 "../include/linux/pci.h" # 1 "../include/linux/dmapool.h" 1 # 17 "../include/linux/dmapool.h" struct device; struct dma_pool *dma_pool_create(const char *name, struct device *dev, size_t size, size_t align, size_t allocation); void dma_pool_destroy(struct dma_pool *pool); void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags, dma_addr_t *handle); void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t addr); struct dma_pool *dmam_pool_create(const char *name, struct device *dev, size_t size, size_t align, size_t allocation); void dmam_pool_destroy(struct dma_pool *pool); # 52 "../include/linux/dmapool.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *dma_pool_zalloc(struct dma_pool *pool, gfp_t mem_flags, dma_addr_t *handle) { return dma_pool_alloc(pool, mem_flags | (( gfp_t)0x100u), handle); } # 1430 "../include/linux/pci.h" 2 # 1440 "../include/linux/pci.h" struct msix_entry { u32 vector; u16 entry; }; int pci_msi_vec_count(struct pci_dev *dev); void pci_disable_msi(struct pci_dev *dev); int pci_msix_vec_count(struct pci_dev *dev); void pci_disable_msix(struct pci_dev *dev); void pci_restore_msi_state(struct pci_dev *dev); int pci_msi_enabled(void); int pci_enable_msi(struct pci_dev *dev); int pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries, int minvec, int maxvec); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_enable_msix_exact(struct pci_dev *dev, struct msix_entry *entries, int nvec) { int rc = pci_enable_msix_range(dev, entries, nvec, nvec); if (rc < 0) return rc; return 0; } int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs, unsigned int max_vecs, unsigned int flags, struct irq_affinity *affd); void pci_free_irq_vectors(struct pci_dev *dev); int pci_irq_vector(struct pci_dev *dev, unsigned int nr); const struct cpumask *pci_irq_get_affinity(struct pci_dev *pdev, int vec); int pci_irq_get_node(struct pci_dev *pdev, int vec); # 1520 "../include/linux/pci.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs, unsigned int max_vecs, unsigned int flags) { return pci_alloc_irq_vectors_affinity(dev, min_vecs, max_vecs, flags, ((void *)0)); } # 1544 "../include/linux/pci.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_irqd_intx_xlate(struct irq_domain *d, struct device_node *node, const u32 *intspec, unsigned int intsize, unsigned long *out_hwirq, unsigned int *out_type) { const u32 intx = intspec[0]; if (intx < PCI_INTERRUPT_INTA || intx > PCI_INTERRUPT_INTD) return -22; *out_hwirq = intx - PCI_INTERRUPT_INTA; return 0; } extern bool pcie_ports_disabled; extern bool pcie_ports_native; bool pcie_aspm_support_enabled(void); bool pci_aer_available(void); void pcie_set_ecrc_checking(struct pci_dev *dev); void pcie_ecrc_get_policy(char *str); bool pci_ats_disabled(void); int pci_enable_ptm(struct pci_dev *dev, u8 *granularity); void pci_cfg_access_lock(struct pci_dev *dev); bool pci_cfg_access_trylock(struct pci_dev *dev); void pci_cfg_access_unlock(struct pci_dev *dev); extern int pci_domains_supported; # 1634 "../include/linux/pci.h" typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode, unsigned int command_bits, u32 flags); void pci_register_set_vga_state(arch_set_vga_state_t func); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_request_io_regions(struct pci_dev *pdev, const char *name) { return pci_request_selected_regions(pdev, pci_select_bars(pdev, 0x00000100), name); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_release_io_regions(struct pci_dev *pdev) { return pci_release_selected_regions(pdev, pci_select_bars(pdev, 0x00000100)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_request_mem_regions(struct pci_dev *pdev, const char *name) { return pci_request_selected_regions(pdev, pci_select_bars(pdev, 0x00000200), name); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_release_mem_regions(struct pci_dev *pdev) { return pci_release_selected_regions(pdev, pci_select_bars(pdev, 0x00000200)); } # 1787 "../include/linux/pci.h" void pci_ats_init(struct pci_dev *dev); int pci_enable_ats(struct pci_dev *dev, int ps); void pci_disable_ats(struct pci_dev *dev); int pci_ats_queue_depth(struct pci_dev *dev); int pci_ats_page_aligned(struct pci_dev *dev); # 1802 "../include/linux/pci.h" # 1 "../arch/x86/include/asm/pci.h" 1 # 12 "../arch/x86/include/asm/pci.h" # 1 "../arch/x86/include/asm/pat.h" 1 bool pat_enabled(void); void pat_disable(const char *reason); extern void pat_init(void); extern void init_cache_modes(void); extern int reserve_memtype(u64 start, u64 end, enum page_cache_mode req_pcm, enum page_cache_mode *ret_pcm); extern int free_memtype(u64 start, u64 end); extern int kernel_map_sync_memtype(u64 base, unsigned long size, enum page_cache_mode pcm); int io_reserve_memtype(resource_size_t start, resource_size_t end, enum page_cache_mode *pcm); void io_free_memtype(resource_size_t start, resource_size_t end); bool pat_pfn_immune_to_uc_mtrr(unsigned long pfn); # 13 "../arch/x86/include/asm/pci.h" 2 struct pci_sysdata { int domain; int node; struct acpi_device *companion; void *iommu; void *fwnode; bool vmd_domain; }; extern int pci_routeirq; extern int noioapicquirk; extern int noioapicreroute; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_domain_nr(struct pci_bus *bus) { struct pci_sysdata *sd = bus->sysdata; return sd->domain; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_proc_domain(struct pci_bus *bus) { return pci_domain_nr(bus); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *_pci_root_bus_fwnode(struct pci_bus *bus) { struct pci_sysdata *sd = bus->sysdata; return sd->fwnode; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool is_vmd(struct pci_bus *bus) { struct pci_sysdata *sd = bus->sysdata; return sd->vmd_domain; } extern unsigned int pcibios_assign_all_busses(void); extern int pci_legacy_init(void); extern unsigned long pci_mem_start; extern int pcibios_enabled; void pcibios_scan_root(int bus); struct irq_routing_table *pcibios_get_irq_routing_table(void); int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq); extern void early_quirks(void); extern void pci_iommu_alloc(void); struct msi_desc; int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); void native_teardown_msi_irq(unsigned int irq); void native_restore_msi_irqs(struct pci_dev *dev); # 1 "../arch/x86/include/asm/pci_64.h" 1 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *pci_iommu(struct pci_bus *bus) { struct pci_sysdata *sd = bus->sysdata; return sd->iommu; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void set_pci_iommu(struct pci_bus *bus, void *val) { struct pci_sysdata *sd = bus->sysdata; sd->iommu = val; } extern int (*pci_config_read)(int seg, int bus, int dev, int fn, int reg, int len, u32 *value); extern int (*pci_config_write)(int seg, int bus, int dev, int fn, int reg, int len, u32 value); # 125 "../arch/x86/include/asm/pci.h" 2 # 1 "../include/asm-generic/pci.h" 1 # 11 "../include/asm-generic/pci.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) { return channel ? 15 : 14; } # 129 "../arch/x86/include/asm/pci.h" 2 static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int __pcibus_to_node(const struct pci_bus *bus) { const struct pci_sysdata *sd = bus->sysdata; return sd->node; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const struct cpumask * cpumask_of_pcibus(const struct pci_bus *bus) { int node; node = __pcibus_to_node(bus); return (node == (-1)) ? ((const struct cpumask *)&__cpu_online_mask) : cpumask_of_node(node); } struct pci_setup_rom { struct setup_data data; uint16_t vendor; uint16_t devid; uint64_t pcilen; unsigned long segment; unsigned long bus; unsigned long device; unsigned long function; uint8_t romdata[0]; }; # 1803 "../include/linux/pci.h" 2 # 1816 "../include/linux/pci.h" int pci_mmap_resource_range(struct pci_dev *dev, int bar, struct vm_area_struct *vma, enum pci_mmap_state mmap_state, int write_combine); int pci_mmap_page_range(struct pci_dev *pdev, int bar, struct vm_area_struct *vma, enum pci_mmap_state mmap_state, int write_combine); # 1858 "../include/linux/pci.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *pci_get_drvdata(struct pci_dev *pdev) { return dev_get_drvdata(&pdev->dev); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_set_drvdata(struct pci_dev *pdev, void *data) { dev_set_drvdata(&pdev->dev, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) const char *pci_name(const struct pci_dev *pdev) { return dev_name(&pdev->dev); } # 1883 "../include/linux/pci.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_resource_to_user(const struct pci_dev *dev, int bar, const struct resource *rsrc, resource_size_t *start, resource_size_t *end) { *start = rsrc->start; *end = rsrc->end; } # 1900 "../include/linux/pci.h" struct pci_fixup { u16 vendor; u16 device; u32 class; unsigned int class_shift; int hook_offset; }; enum pci_fixup_pass { pci_fixup_early, pci_fixup_header, pci_fixup_final, pci_fixup_enable, pci_fixup_resume, pci_fixup_suspend, pci_fixup_resume_early, pci_fixup_suspend_late, }; # 2005 "../include/linux/pci.h" void pci_fixup_device(enum pci_fixup_pass pass, struct pci_dev *dev); void *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen); void pcim_iounmap(struct pci_dev *pdev, void *addr); void * const *pcim_iomap_table(struct pci_dev *pdev); int pcim_iomap_regions(struct pci_dev *pdev, int mask, const char *name); int pcim_iomap_regions_request_all(struct pci_dev *pdev, int mask, const char *name); void pcim_iounmap_regions(struct pci_dev *pdev, int mask); extern int pci_pci_problems; # 2028 "../include/linux/pci.h" extern unsigned long pci_cardbus_io_size; extern unsigned long pci_cardbus_mem_size; extern u8 pci_dfl_cache_line_size; extern u8 pci_cache_line_size; extern unsigned long pci_hotplug_io_size; extern unsigned long pci_hotplug_mem_size; extern unsigned long pci_hotplug_bus_size; void pcibios_disable_device(struct pci_dev *dev); void pcibios_set_master(struct pci_dev *dev); int pcibios_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state); int pcibios_add_device(struct pci_dev *dev); void pcibios_release_device(struct pci_dev *dev); void pcibios_penalize_isa_irq(int irq, int active); int pcibios_alloc_irq(struct pci_dev *dev); void pcibios_free_irq(struct pci_dev *dev); resource_size_t pcibios_default_alignment(void); extern struct dev_pm_ops pcibios_pm_ops; void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) pci_mmcfg_early_init(void); void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) pci_mmcfg_late_init(void); int pci_ext_cfg_avail(void); void *pci_ioremap_bar(struct pci_dev *pdev, int bar); void *pci_ioremap_wc_bar(struct pci_dev *pdev, int bar); int pci_iov_virtfn_bus(struct pci_dev *dev, int id); int pci_iov_virtfn_devfn(struct pci_dev *dev, int id); int pci_enable_sriov(struct pci_dev *dev, int nr_virtfn); void pci_disable_sriov(struct pci_dev *dev); int pci_iov_add_virtfn(struct pci_dev *dev, int id); void pci_iov_remove_virtfn(struct pci_dev *dev, int id); int pci_num_vf(struct pci_dev *dev); int pci_vfs_assigned(struct pci_dev *dev); int pci_sriov_set_totalvfs(struct pci_dev *dev, u16 numvfs); int pci_sriov_get_totalvfs(struct pci_dev *dev); int pci_sriov_configure_simple(struct pci_dev *dev, int nr_virtfn); resource_size_t pci_iov_resource_size(struct pci_dev *dev, int resno); void pci_vf_drivers_autoprobe(struct pci_dev *dev, bool probe); int pcibios_sriov_enable(struct pci_dev *pdev, u16 num_vfs); int pcibios_sriov_disable(struct pci_dev *pdev); resource_size_t pcibios_iov_resource_alignment(struct pci_dev *dev, int resno); # 2122 "../include/linux/pci.h" void pci_hp_create_module_link(struct pci_slot *pci_slot); void pci_hp_remove_module_link(struct pci_slot *pci_slot); # 2137 "../include/linux/pci.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_pcie_cap(struct pci_dev *dev) { return dev->pcie_cap; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pci_is_pcie(struct pci_dev *dev) { return pci_pcie_cap(dev); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 pcie_caps_reg(const struct pci_dev *dev) { return dev->pcie_flags_reg; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_pcie_type(const struct pci_dev *dev) { return (pcie_caps_reg(dev) & 0x00f0) >> 4; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct pci_dev *pcie_find_root_port(struct pci_dev *dev) { while (1) { if (!pci_is_pcie(dev)) break; if (pci_pcie_type(dev) == 0x4) return dev; if (!dev->bus->self) break; dev = dev->bus->self; } return ((void *)0); } void pci_request_acs(void); bool pci_acs_enabled(struct pci_dev *pdev, u16 acs_flags); bool pci_acs_path_enabled(struct pci_dev *start, struct pci_dev *end, u16 acs_flags); int pci_enable_atomic_ops_to_root(struct pci_dev *dev, u32 cap_mask); # 2228 "../include/linux/pci.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 pci_vpd_lrdt_size(const u8 *lrdt) { return (u16)lrdt[1] + ((u16)lrdt[2] << 8); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u16 pci_vpd_lrdt_tag(const u8 *lrdt) { return (u16)(lrdt[0] & 0x7f); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 pci_vpd_srdt_size(const u8 *srdt) { return (*srdt) & 0x07; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 pci_vpd_srdt_tag(const u8 *srdt) { return ((*srdt) & 0x78) >> 3; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u8 pci_vpd_info_field_size(const u8 *info_field) { return info_field[2]; } # 2287 "../include/linux/pci.h" int pci_vpd_find_tag(const u8 *buf, unsigned int off, unsigned int len, u8 rdt); # 2299 "../include/linux/pci.h" int pci_vpd_find_info_keyword(const u8 *buf, unsigned int off, unsigned int len, const char *kw); struct device_node; struct irq_domain; void pci_set_of_node(struct pci_dev *dev); void pci_release_of_node(struct pci_dev *dev); void pci_set_bus_of_node(struct pci_bus *bus); void pci_release_bus_of_node(struct pci_bus *bus); struct irq_domain *pci_host_bridge_of_msi_domain(struct pci_bus *bus); int pci_parse_request_of_pci_ranges(struct device *dev, struct list_head *resources, struct resource **bus_range); struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus); # 2333 "../include/linux/pci.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct device_node * pci_device_to_OF_node(const struct pci_dev *pdev) { return pdev ? pdev->dev.of_node : ((void *)0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct device_node *pci_bus_to_OF_node(struct pci_bus *bus) { return bus ? bus->dev.of_node : ((void *)0); } struct irq_domain *pci_host_bridge_acpi_msi_domain(struct pci_bus *bus); void pci_msi_register_fwnode_provider(struct fwnode_handle *(*fn)(struct device *)); # 2361 "../include/linux/pci.h" void pci_add_dma_alias(struct pci_dev *dev, u8 devfn); bool pci_devs_are_dma_aliases(struct pci_dev *dev1, struct pci_dev *dev2); int pci_for_each_dma_alias(struct pci_dev *pdev, int (*fn)(struct pci_dev *pdev, u16 alias, void *data), void *data); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_set_dev_assigned(struct pci_dev *pdev) { pdev->dev_flags |= PCI_DEV_FLAGS_ASSIGNED; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_clear_dev_assigned(struct pci_dev *pdev) { pdev->dev_flags &= ~PCI_DEV_FLAGS_ASSIGNED; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pci_is_dev_assigned(struct pci_dev *pdev) { return (pdev->dev_flags & PCI_DEV_FLAGS_ASSIGNED) == PCI_DEV_FLAGS_ASSIGNED; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pci_ari_enabled(struct pci_bus *bus) { return bus->self && bus->self->ari_enabled; } # 2400 "../include/linux/pci.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool pci_is_thunderbolt_attached(struct pci_dev *pdev) { struct pci_dev *parent = pdev; if (pdev->is_thunderbolt) return true; while ((parent = pci_upstream_bridge(parent))) if (parent->is_thunderbolt) return true; return false; } void pci_uevent_ers(struct pci_dev *pdev, enum pci_ers_result err_type); # 1 "../include/linux/pci-dma-compat.h" 1 # 16 "../include/linux/pci-dma-compat.h" static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void * pci_alloc_consistent(struct pci_dev *hwdev, size_t size, dma_addr_t *dma_handle) { return dma_alloc_coherent(&hwdev->dev, size, dma_handle, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void * pci_zalloc_consistent(struct pci_dev *hwdev, size_t size, dma_addr_t *dma_handle) { return dma_alloc_coherent(&hwdev->dev, size, dma_handle, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_free_consistent(struct pci_dev *hwdev, size_t size, void *vaddr, dma_addr_t dma_handle) { dma_free_coherent(&hwdev->dev, size, vaddr, dma_handle); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) dma_addr_t pci_map_single(struct pci_dev *hwdev, void *ptr, size_t size, int direction) { return dma_map_single_attrs(&hwdev->dev, ptr, size, (enum dma_data_direction)direction, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr, size_t size, int direction) { dma_unmap_single_attrs(&hwdev->dev, dma_addr, size, (enum dma_data_direction)direction, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) dma_addr_t pci_map_page(struct pci_dev *hwdev, struct page *page, unsigned long offset, size_t size, int direction) { return dma_map_page_attrs(&hwdev->dev, page, offset, size, (enum dma_data_direction)direction, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_unmap_page(struct pci_dev *hwdev, dma_addr_t dma_address, size_t size, int direction) { dma_unmap_page_attrs(&hwdev->dev, dma_address, size, (enum dma_data_direction)direction, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nents, int direction) { return dma_map_sg_attrs(&hwdev->dev, sg, nents, (enum dma_data_direction)direction, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg, int nents, int direction) { dma_unmap_sg_attrs(&hwdev->dev, sg, nents, (enum dma_data_direction)direction, 0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_dma_sync_single_for_cpu(struct pci_dev *hwdev, dma_addr_t dma_handle, size_t size, int direction) { dma_sync_single_for_cpu(&hwdev->dev, dma_handle, size, (enum dma_data_direction)direction); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_dma_sync_single_for_device(struct pci_dev *hwdev, dma_addr_t dma_handle, size_t size, int direction) { dma_sync_single_for_device(&hwdev->dev, dma_handle, size, (enum dma_data_direction)direction); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_dma_sync_sg_for_cpu(struct pci_dev *hwdev, struct scatterlist *sg, int nelems, int direction) { dma_sync_sg_for_cpu(&hwdev->dev, sg, nelems, (enum dma_data_direction)direction); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void pci_dma_sync_sg_for_device(struct pci_dev *hwdev, struct scatterlist *sg, int nelems, int direction) { dma_sync_sg_for_device(&hwdev->dev, sg, nelems, (enum dma_data_direction)direction); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_dma_mapping_error(struct pci_dev *pdev, dma_addr_t dma_addr) { return dma_mapping_error(&pdev->dev, dma_addr); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_set_dma_mask(struct pci_dev *dev, u64 mask) { return dma_set_mask(&dev->dev, mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) { return dma_set_coherent_mask(&dev->dev, mask); } # 2420 "../include/linux/pci.h" 2 # 18 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" 2 extern struct tracepoint __tracepoint_iwlwifi_dev_ioread32; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_ioread32(const struct device *dev, u32 offs, u32 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_ioread32.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (37), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (453)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_ioread32)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_ioread32)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_ioread32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ioread32)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_ioread32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ioread32)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_ioread32)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 offs, u32 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_ioread32.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_ioread32.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_ioread32.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_ioread32.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_ioread32.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_ioread32.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_ioread32.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h", 37, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_ioread32.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_ioread32_rcuidle(const struct device *dev, u32 offs, u32 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_ioread32.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (37), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (454)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_ioread32)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_ioread32)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_ioread32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ioread32)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_ioread32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ioread32)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_ioread32)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 offs, u32 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_ioread32(void (*probe)(void *__data, const struct device *dev, u32 offs, u32 val), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_ioread32, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_ioread32(void (*probe)(void *__data, const struct device *dev, u32 offs, u32 val), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_ioread32, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_ioread32(void (*probe)(void *__data, const struct device *dev, u32 offs, u32 val), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_ioread32, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_ioread32(void (*cb)(void *__data, const struct device *dev, u32 offs, u32 val)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_ioread32_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_ioread32.key); }; # 39 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" extern struct tracepoint __tracepoint_iwlwifi_dev_iowrite8; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_iowrite8(const struct device *dev, u32 offs, u8 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_iowrite8.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (54), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (455)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_iowrite8)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_iowrite8)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_iowrite8)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite8)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_iowrite8)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite8)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_iowrite8)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 offs, u8 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_iowrite8.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_iowrite8.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_iowrite8.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_iowrite8.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_iowrite8.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_iowrite8.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_iowrite8.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h", 54, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_iowrite8.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_iowrite8_rcuidle(const struct device *dev, u32 offs, u8 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_iowrite8.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (54), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (456)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_iowrite8)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_iowrite8)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_iowrite8)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite8)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_iowrite8)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite8)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_iowrite8)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 offs, u8 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_iowrite8(void (*probe)(void *__data, const struct device *dev, u32 offs, u8 val), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_iowrite8, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_iowrite8(void (*probe)(void *__data, const struct device *dev, u32 offs, u8 val), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_iowrite8, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_iowrite8(void (*probe)(void *__data, const struct device *dev, u32 offs, u8 val), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_iowrite8, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_iowrite8(void (*cb)(void *__data, const struct device *dev, u32 offs, u8 val)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_iowrite8_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_iowrite8.key); }; # 56 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" extern struct tracepoint __tracepoint_iwlwifi_dev_iowrite32; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_iowrite32(const struct device *dev, u32 offs, u32 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_iowrite32.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (71), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (457)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_iowrite32)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_iowrite32)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_iowrite32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite32)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_iowrite32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite32)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_iowrite32)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 offs, u32 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_iowrite32.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_iowrite32.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_iowrite32.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_iowrite32.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_iowrite32.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_iowrite32.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_iowrite32.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h", 71, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_iowrite32.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_iowrite32_rcuidle(const struct device *dev, u32 offs, u32 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_iowrite32.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (71), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (458)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_iowrite32)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_iowrite32)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_iowrite32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite32)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_iowrite32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite32)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_iowrite32)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 offs, u32 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_iowrite32(void (*probe)(void *__data, const struct device *dev, u32 offs, u32 val), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_iowrite32, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_iowrite32(void (*probe)(void *__data, const struct device *dev, u32 offs, u32 val), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_iowrite32, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_iowrite32(void (*probe)(void *__data, const struct device *dev, u32 offs, u32 val), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_iowrite32, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_iowrite32(void (*cb)(void *__data, const struct device *dev, u32 offs, u32 val)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_iowrite32_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_iowrite32.key); }; # 73 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" extern struct tracepoint __tracepoint_iwlwifi_dev_iowrite64; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_iowrite64(const struct device *dev, u64 offs, u64 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_iowrite64.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (88), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (459)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_iowrite64)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_iowrite64)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_iowrite64)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite64)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_iowrite64)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite64)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_iowrite64)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u64 offs, u64 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_iowrite64.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_iowrite64.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_iowrite64.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_iowrite64.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_iowrite64.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_iowrite64.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_iowrite64.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h", 88, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_iowrite64.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_iowrite64_rcuidle(const struct device *dev, u64 offs, u64 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_iowrite64.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (88), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (460)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_iowrite64)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_iowrite64)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_iowrite64)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite64)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_iowrite64)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite64)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_iowrite64)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u64 offs, u64 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_iowrite64(void (*probe)(void *__data, const struct device *dev, u64 offs, u64 val), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_iowrite64, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_iowrite64(void (*probe)(void *__data, const struct device *dev, u64 offs, u64 val), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_iowrite64, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_iowrite64(void (*probe)(void *__data, const struct device *dev, u64 offs, u64 val), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_iowrite64, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_iowrite64(void (*cb)(void *__data, const struct device *dev, u64 offs, u64 val)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_iowrite64_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_iowrite64.key); }; # 90 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" extern struct tracepoint __tracepoint_iwlwifi_dev_iowrite_prph32; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_iowrite_prph32(const struct device *dev, u32 offs, u32 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_iowrite_prph32.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (105), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (461)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 offs, u32 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_iowrite_prph32.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_iowrite_prph32.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_iowrite_prph32.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_iowrite_prph32.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_iowrite_prph32.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_iowrite_prph32.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_iowrite_prph32.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h", 105, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_iowrite_prph32.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_iowrite_prph32_rcuidle(const struct device *dev, u32 offs, u32 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_iowrite_prph32.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (105), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (462)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_iowrite_prph32)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 offs, u32 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_iowrite_prph32(void (*probe)(void *__data, const struct device *dev, u32 offs, u32 val), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_iowrite_prph32, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_iowrite_prph32(void (*probe)(void *__data, const struct device *dev, u32 offs, u32 val), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_iowrite_prph32, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_iowrite_prph32(void (*probe)(void *__data, const struct device *dev, u32 offs, u32 val), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_iowrite_prph32, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_iowrite_prph32(void (*cb)(void *__data, const struct device *dev, u32 offs, u32 val)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_iowrite_prph32_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_iowrite_prph32.key); }; # 107 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" extern struct tracepoint __tracepoint_iwlwifi_dev_iowrite_prph64; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_iowrite_prph64(const struct device *dev, u64 offs, u64 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_iowrite_prph64.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (122), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (463)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u64 offs, u64 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_iowrite_prph64.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_iowrite_prph64.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_iowrite_prph64.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_iowrite_prph64.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_iowrite_prph64.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_iowrite_prph64.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_iowrite_prph64.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h", 122, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_iowrite_prph64.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_iowrite_prph64_rcuidle(const struct device *dev, u64 offs, u64 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_iowrite_prph64.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (122), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (464)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_iowrite_prph64)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u64 offs, u64 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_iowrite_prph64(void (*probe)(void *__data, const struct device *dev, u64 offs, u64 val), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_iowrite_prph64, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_iowrite_prph64(void (*probe)(void *__data, const struct device *dev, u64 offs, u64 val), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_iowrite_prph64, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_iowrite_prph64(void (*probe)(void *__data, const struct device *dev, u64 offs, u64 val), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_iowrite_prph64, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_iowrite_prph64(void (*cb)(void *__data, const struct device *dev, u64 offs, u64 val)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_iowrite_prph64_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_iowrite_prph64.key); }; # 124 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" extern struct tracepoint __tracepoint_iwlwifi_dev_ioread_prph32; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_ioread_prph32(const struct device *dev, u32 offs, u32 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_ioread_prph32.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (139), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (465)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 offs, u32 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_ioread_prph32.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_ioread_prph32.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_ioread_prph32.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_ioread_prph32.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_ioread_prph32.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_ioread_prph32.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_ioread_prph32.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h", 139, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_ioread_prph32.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_ioread_prph32_rcuidle(const struct device *dev, u32 offs, u32 val) { if (static_key_false(&__tracepoint_iwlwifi_dev_ioread_prph32.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (139), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (466)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_ioread_prph32)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 offs, u32 val))(it_func))(__data, dev, offs, val); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_ioread_prph32(void (*probe)(void *__data, const struct device *dev, u32 offs, u32 val), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_ioread_prph32, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_ioread_prph32(void (*probe)(void *__data, const struct device *dev, u32 offs, u32 val), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_ioread_prph32, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_ioread_prph32(void (*probe)(void *__data, const struct device *dev, u32 offs, u32 val), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_ioread_prph32, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_ioread_prph32(void (*cb)(void *__data, const struct device *dev, u32 offs, u32 val)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_ioread_prph32_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_ioread_prph32.key); }; # 141 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" extern struct tracepoint __tracepoint_iwlwifi_dev_irq; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_irq(const struct device *dev) { if (static_key_false(&__tracepoint_iwlwifi_dev_irq.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (152), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (467)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_irq)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_irq)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_irq)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_irq)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_irq)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_irq)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_irq)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev))(it_func))(__data, dev); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_irq.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_irq.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_irq.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_irq.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_irq.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_irq.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_irq.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h", 152, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_irq.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_irq_rcuidle(const struct device *dev) { if (static_key_false(&__tracepoint_iwlwifi_dev_irq.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (152), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (468)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_irq)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_irq)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_irq)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_irq)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_irq)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_irq)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_irq)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev))(it_func))(__data, dev); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_irq(void (*probe)(void *__data, const struct device *dev), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_irq, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_irq(void (*probe)(void *__data, const struct device *dev), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_irq, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_irq(void (*probe)(void *__data, const struct device *dev), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_irq, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_irq(void (*cb)(void *__data, const struct device *dev)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_irq_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_irq.key); }; # 154 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" extern struct tracepoint __tracepoint_iwlwifi_dev_irq_msix; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_irq_msix(const struct device *dev, struct msix_entry *msix_entry, bool defirq, u32 inta_fh, u32 inta_hw) { if (static_key_false(&__tracepoint_iwlwifi_dev_irq_msix.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (175), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (469)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_irq_msix)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_irq_msix)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_irq_msix)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_irq_msix)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_irq_msix)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_irq_msix)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_irq_msix)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, struct msix_entry *msix_entry, bool defirq, u32 inta_fh, u32 inta_hw))(it_func))(__data, dev, msix_entry, defirq, inta_fh, inta_hw); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_irq_msix.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_irq_msix.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_irq_msix.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_irq_msix.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_irq_msix.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_irq_msix.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_irq_msix.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h", 175, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_irq_msix.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_irq_msix_rcuidle(const struct device *dev, struct msix_entry *msix_entry, bool defirq, u32 inta_fh, u32 inta_hw) { if (static_key_false(&__tracepoint_iwlwifi_dev_irq_msix.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (175), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (470)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_irq_msix)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_irq_msix)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_irq_msix)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_irq_msix)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_irq_msix)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_irq_msix)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_irq_msix)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, struct msix_entry *msix_entry, bool defirq, u32 inta_fh, u32 inta_hw))(it_func))(__data, dev, msix_entry, defirq, inta_fh, inta_hw); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_irq_msix(void (*probe)(void *__data, const struct device *dev, struct msix_entry *msix_entry, bool defirq, u32 inta_fh, u32 inta_hw), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_irq_msix, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_irq_msix(void (*probe)(void *__data, const struct device *dev, struct msix_entry *msix_entry, bool defirq, u32 inta_fh, u32 inta_hw), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_irq_msix, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_irq_msix(void (*probe)(void *__data, const struct device *dev, struct msix_entry *msix_entry, bool defirq, u32 inta_fh, u32 inta_hw), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_irq_msix, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_irq_msix(void (*cb)(void *__data, const struct device *dev, struct msix_entry *msix_entry, bool defirq, u32 inta_fh, u32 inta_hw)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_irq_msix_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_irq_msix.key); }; # 177 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" extern struct tracepoint __tracepoint_iwlwifi_dev_ict_read; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_ict_read(const struct device *dev, u32 index, u32 value) { if (static_key_false(&__tracepoint_iwlwifi_dev_ict_read.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (192), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (471)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_ict_read)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_ict_read)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_ict_read)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ict_read)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_ict_read)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ict_read)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_ict_read)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 index, u32 value))(it_func))(__data, dev, index, value); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_ict_read.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_ict_read.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_ict_read.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_ict_read.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_ict_read.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_ict_read.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_ict_read.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h", 192, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_ict_read.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_ict_read_rcuidle(const struct device *dev, u32 index, u32 value) { if (static_key_false(&__tracepoint_iwlwifi_dev_ict_read.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h"), "i" (192), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (472)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_ict_read)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_ict_read)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_ict_read)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ict_read)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_ict_read)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ict_read)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_ict_read)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 index, u32 value))(it_func))(__data, dev, index, value); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_ict_read(void (*probe)(void *__data, const struct device *dev, u32 index, u32 value), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_ict_read, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_ict_read(void (*probe)(void *__data, const struct device *dev, u32 index, u32 value), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_ict_read, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_ict_read(void (*probe)(void *__data, const struct device *dev, u32 index, u32 value), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_ict_read, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_ict_read(void (*cb)(void *__data, const struct device *dev, u32 index, u32 value)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_ict_read_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_ict_read.key); }; # 199 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" # 1 "../include/trace/define_trace.h" 1 # 200 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-io.h" 2 # 96 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-ucode.h" 1 # 15 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-ucode.h" # 1 "../include/linux/tracepoint.h" 1 # 16 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-ucode.h" 2 extern struct tracepoint __tracepoint_iwlwifi_dev_ucode_cont_event; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_ucode_cont_event(const struct device *dev, u32 time, u32 data, u32 ev) { if (static_key_false(&__tracepoint_iwlwifi_dev_ucode_cont_event.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-ucode.h"), "i" (38), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (473)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 time, u32 data, u32 ev))(it_func))(__data, dev, time, data, ev); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_ucode_cont_event.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_ucode_cont_event.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_ucode_cont_event.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_ucode_cont_event.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_ucode_cont_event.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_ucode_cont_event.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_ucode_cont_event.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-ucode.h", 38, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_ucode_cont_event.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_ucode_cont_event_rcuidle(const struct device *dev, u32 time, u32 data, u32 ev) { if (static_key_false(&__tracepoint_iwlwifi_dev_ucode_cont_event.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-ucode.h"), "i" (38), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (474)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_ucode_cont_event)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 time, u32 data, u32 ev))(it_func))(__data, dev, time, data, ev); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_ucode_cont_event(void (*probe)(void *__data, const struct device *dev, u32 time, u32 data, u32 ev), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_ucode_cont_event, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_ucode_cont_event(void (*probe)(void *__data, const struct device *dev, u32 time, u32 data, u32 ev), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_ucode_cont_event, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_ucode_cont_event(void (*probe)(void *__data, const struct device *dev, u32 time, u32 data, u32 ev), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_ucode_cont_event, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_ucode_cont_event(void (*cb)(void *__data, const struct device *dev, u32 time, u32 data, u32 ev)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_ucode_cont_event_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_ucode_cont_event.key); }; # 40 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-ucode.h" extern struct tracepoint __tracepoint_iwlwifi_dev_ucode_wrap_event; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_ucode_wrap_event(const struct device *dev, u32 wraps, u32 n_entry, u32 p_entry) { if (static_key_false(&__tracepoint_iwlwifi_dev_ucode_wrap_event.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-ucode.h"), "i" (59), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (475)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 wraps, u32 n_entry, u32 p_entry))(it_func))(__data, dev, wraps, n_entry, p_entry); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_ucode_wrap_event.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_ucode_wrap_event.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_ucode_wrap_event.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_ucode_wrap_event.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_ucode_wrap_event.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_ucode_wrap_event.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_ucode_wrap_event.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-ucode.h", 59, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_ucode_wrap_event.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_ucode_wrap_event_rcuidle(const struct device *dev, u32 wraps, u32 n_entry, u32 p_entry) { if (static_key_false(&__tracepoint_iwlwifi_dev_ucode_wrap_event.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-ucode.h"), "i" (59), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (476)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_ucode_wrap_event)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 wraps, u32 n_entry, u32 p_entry))(it_func))(__data, dev, wraps, n_entry, p_entry); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_ucode_wrap_event(void (*probe)(void *__data, const struct device *dev, u32 wraps, u32 n_entry, u32 p_entry), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_ucode_wrap_event, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_ucode_wrap_event(void (*probe)(void *__data, const struct device *dev, u32 wraps, u32 n_entry, u32 p_entry), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_ucode_wrap_event, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_ucode_wrap_event(void (*probe)(void *__data, const struct device *dev, u32 wraps, u32 n_entry, u32 p_entry), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_ucode_wrap_event, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_ucode_wrap_event(void (*cb)(void *__data, const struct device *dev, u32 wraps, u32 n_entry, u32 p_entry)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_ucode_wrap_event_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_ucode_wrap_event.key); }; # 66 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-ucode.h" # 1 "../include/trace/define_trace.h" 1 # 67 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-ucode.h" 2 # 97 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h" 1 # 15 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h" # 1 "../include/linux/tracepoint.h" 1 # 16 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h" 2 # 34 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h" ; extern struct tracepoint __tracepoint_iwlwifi_err; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_err(struct va_format *vaf) { if (static_key_false(&__tracepoint_iwlwifi_err.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h"), "i" (39), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (477)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_err)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_err)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_err)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_err)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_err)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_err)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_err)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, struct va_format *vaf))(it_func))(__data, vaf); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_err.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_err.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_err.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_err.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_err.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_err.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_err.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h", 39, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_err.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_err_rcuidle(struct va_format *vaf) { if (static_key_false(&__tracepoint_iwlwifi_err.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h"), "i" (39), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (478)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_err)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_err)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_err)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_err)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_err)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_err)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_err)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, struct va_format *vaf))(it_func))(__data, vaf); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_err(void (*probe)(void *__data, struct va_format *vaf), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_err, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_err(void (*probe)(void *__data, struct va_format *vaf), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_err, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_err(void (*probe)(void *__data, struct va_format *vaf), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_err, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_err(void (*cb)(void *__data, struct va_format *vaf)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_err_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_err.key); }; extern struct tracepoint __tracepoint_iwlwifi_warn; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_warn(struct va_format *vaf) { if (static_key_false(&__tracepoint_iwlwifi_warn.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h"), "i" (44), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (479)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_warn)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_warn)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_warn)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_warn)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_warn)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_warn)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_warn)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, struct va_format *vaf))(it_func))(__data, vaf); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_warn.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_warn.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_warn.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_warn.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_warn.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_warn.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_warn.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h", 44, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_warn.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_warn_rcuidle(struct va_format *vaf) { if (static_key_false(&__tracepoint_iwlwifi_warn.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h"), "i" (44), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (480)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_warn)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_warn)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_warn)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_warn)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_warn)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_warn)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_warn)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, struct va_format *vaf))(it_func))(__data, vaf); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_warn(void (*probe)(void *__data, struct va_format *vaf), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_warn, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_warn(void (*probe)(void *__data, struct va_format *vaf), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_warn, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_warn(void (*probe)(void *__data, struct va_format *vaf), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_warn, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_warn(void (*cb)(void *__data, struct va_format *vaf)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_warn_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_warn.key); }; extern struct tracepoint __tracepoint_iwlwifi_info; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_info(struct va_format *vaf) { if (static_key_false(&__tracepoint_iwlwifi_info.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h"), "i" (49), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (481)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_info)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_info)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_info)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_info)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_info)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_info)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_info)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, struct va_format *vaf))(it_func))(__data, vaf); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_info.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_info.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_info.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_info.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_info.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_info.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_info.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h", 49, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_info.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_info_rcuidle(struct va_format *vaf) { if (static_key_false(&__tracepoint_iwlwifi_info.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h"), "i" (49), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (482)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_info)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_info)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_info)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_info)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_info)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_info)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_info)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, struct va_format *vaf))(it_func))(__data, vaf); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_info(void (*probe)(void *__data, struct va_format *vaf), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_info, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_info(void (*probe)(void *__data, struct va_format *vaf), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_info, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_info(void (*probe)(void *__data, struct va_format *vaf), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_info, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_info(void (*cb)(void *__data, struct va_format *vaf)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_info_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_info.key); }; extern struct tracepoint __tracepoint_iwlwifi_crit; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_crit(struct va_format *vaf) { if (static_key_false(&__tracepoint_iwlwifi_crit.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h"), "i" (54), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (483)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_crit)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_crit)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_crit)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_crit)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_crit)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_crit)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_crit)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, struct va_format *vaf))(it_func))(__data, vaf); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_crit.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_crit.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_crit.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_crit.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_crit.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_crit.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_crit.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h", 54, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_crit.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_crit_rcuidle(struct va_format *vaf) { if (static_key_false(&__tracepoint_iwlwifi_crit.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h"), "i" (54), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (484)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_crit)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_crit)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_crit)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_crit)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_crit)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_crit)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_crit)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, struct va_format *vaf))(it_func))(__data, vaf); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_crit(void (*probe)(void *__data, struct va_format *vaf), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_crit, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_crit(void (*probe)(void *__data, struct va_format *vaf), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_crit, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_crit(void (*probe)(void *__data, struct va_format *vaf), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_crit, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_crit(void (*cb)(void *__data, struct va_format *vaf)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_crit_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_crit.key); }; extern struct tracepoint __tracepoint_iwlwifi_dbg; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dbg(u32 level, bool in_interrupt, const char *function, struct va_format *vaf) { if (static_key_false(&__tracepoint_iwlwifi_dbg.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h"), "i" (75), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (485)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dbg)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dbg)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dbg)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dbg)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dbg)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dbg)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dbg)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, u32 level, bool in_interrupt, const char *function, struct va_format *vaf))(it_func))(__data, level, in_interrupt, function, vaf); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dbg.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dbg.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dbg.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dbg.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dbg.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dbg.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dbg.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h", 75, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dbg.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dbg_rcuidle(u32 level, bool in_interrupt, const char *function, struct va_format *vaf) { if (static_key_false(&__tracepoint_iwlwifi_dbg.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h"), "i" (75), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (486)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dbg)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dbg)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dbg)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dbg)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dbg)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dbg)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dbg)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, u32 level, bool in_interrupt, const char *function, struct va_format *vaf))(it_func))(__data, level, in_interrupt, function, vaf); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dbg(void (*probe)(void *__data, u32 level, bool in_interrupt, const char *function, struct va_format *vaf), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dbg, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dbg(void (*probe)(void *__data, u32 level, bool in_interrupt, const char *function, struct va_format *vaf), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dbg, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dbg(void (*probe)(void *__data, u32 level, bool in_interrupt, const char *function, struct va_format *vaf), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dbg, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dbg(void (*cb)(void *__data, u32 level, bool in_interrupt, const char *function, struct va_format *vaf)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dbg_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dbg.key); }; # 82 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h" # 1 "../include/trace/define_trace.h" 1 # 83 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-msg.h" 2 # 98 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h" 1 # 17 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h" # 1 "../include/linux/tracepoint.h" 1 # 18 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h" 2 extern struct tracepoint __tracepoint_iwlwifi_dev_tx_tb; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_tx_tb(const struct device *dev, struct sk_buff *skb, u8 *data_src, size_t data_len) { if (static_key_false(&__tracepoint_iwlwifi_dev_tx_tb.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h"), "i" (38), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (487)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_tx_tb)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_tx_tb)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_tx_tb)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_tx_tb)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_tx_tb)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_tx_tb)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_tx_tb)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, struct sk_buff *skb, u8 *data_src, size_t data_len))(it_func))(__data, dev, skb, data_src, data_len); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_tx_tb.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_tx_tb.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_tx_tb.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_tx_tb.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_tx_tb.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_tx_tb.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_tx_tb.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h", 38, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_tx_tb.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_tx_tb_rcuidle(const struct device *dev, struct sk_buff *skb, u8 *data_src, size_t data_len) { if (static_key_false(&__tracepoint_iwlwifi_dev_tx_tb.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h"), "i" (38), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (488)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_tx_tb)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_tx_tb)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_tx_tb)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_tx_tb)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_tx_tb)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_tx_tb)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_tx_tb)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, struct sk_buff *skb, u8 *data_src, size_t data_len))(it_func))(__data, dev, skb, data_src, data_len); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_tx_tb(void (*probe)(void *__data, const struct device *dev, struct sk_buff *skb, u8 *data_src, size_t data_len), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_tx_tb, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_tx_tb(void (*probe)(void *__data, const struct device *dev, struct sk_buff *skb, u8 *data_src, size_t data_len), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_tx_tb, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_tx_tb(void (*probe)(void *__data, const struct device *dev, struct sk_buff *skb, u8 *data_src, size_t data_len), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_tx_tb, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_tx_tb(void (*cb)(void *__data, const struct device *dev, struct sk_buff *skb, u8 *data_src, size_t data_len)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_tx_tb_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_tx_tb.key); }; # 40 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h" extern struct tracepoint __tracepoint_iwlwifi_dev_rx_data; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_rx_data(const struct device *dev, const struct iwl_trans *trans, void *rxbuf, size_t len) { if (static_key_false(&__tracepoint_iwlwifi_dev_rx_data.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h"), "i" (58), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (489)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_rx_data)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_rx_data)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_rx_data)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_rx_data)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_rx_data)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_rx_data)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_rx_data)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, const struct iwl_trans *trans, void *rxbuf, size_t len))(it_func))(__data, dev, trans, rxbuf, len); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_rx_data.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_rx_data.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_rx_data.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_rx_data.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_rx_data.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_rx_data.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_rx_data.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h", 58, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_rx_data.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_rx_data_rcuidle(const struct device *dev, const struct iwl_trans *trans, void *rxbuf, size_t len) { if (static_key_false(&__tracepoint_iwlwifi_dev_rx_data.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h"), "i" (58), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (490)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_rx_data)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_rx_data)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_rx_data)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_rx_data)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_rx_data)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_rx_data)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_rx_data)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, const struct iwl_trans *trans, void *rxbuf, size_t len))(it_func))(__data, dev, trans, rxbuf, len); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_rx_data(void (*probe)(void *__data, const struct device *dev, const struct iwl_trans *trans, void *rxbuf, size_t len), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_rx_data, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_rx_data(void (*probe)(void *__data, const struct device *dev, const struct iwl_trans *trans, void *rxbuf, size_t len), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_rx_data, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_rx_data(void (*probe)(void *__data, const struct device *dev, const struct iwl_trans *trans, void *rxbuf, size_t len), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_rx_data, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_rx_data(void (*cb)(void *__data, const struct device *dev, const struct iwl_trans *trans, void *rxbuf, size_t len)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_rx_data_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_rx_data.key); }; # 65 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h" # 1 "../include/trace/define_trace.h" 1 # 66 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-data.h" 2 # 99 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h" 1 # 18 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h" # 1 "../include/linux/tracepoint.h" 1 # 19 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h" 2 extern struct tracepoint __tracepoint_iwlwifi_dev_hcmd; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_hcmd(const struct device *dev, struct iwl_host_cmd *cmd, u16 total_size, struct iwl_cmd_header_wide *hdr) { if (static_key_false(&__tracepoint_iwlwifi_dev_hcmd.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h"), "i" (55), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (491)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_hcmd)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_hcmd)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_hcmd)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_hcmd)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_hcmd)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_hcmd)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_hcmd)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, struct iwl_host_cmd *cmd, u16 total_size, struct iwl_cmd_header_wide *hdr))(it_func))(__data, dev, cmd, total_size, hdr); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_hcmd.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_hcmd.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_hcmd.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_hcmd.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_hcmd.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_hcmd.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_hcmd.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h", 55, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_hcmd.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_hcmd_rcuidle(const struct device *dev, struct iwl_host_cmd *cmd, u16 total_size, struct iwl_cmd_header_wide *hdr) { if (static_key_false(&__tracepoint_iwlwifi_dev_hcmd.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h"), "i" (55), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (492)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_hcmd)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_hcmd)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_hcmd)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_hcmd)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_hcmd)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_hcmd)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_hcmd)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, struct iwl_host_cmd *cmd, u16 total_size, struct iwl_cmd_header_wide *hdr))(it_func))(__data, dev, cmd, total_size, hdr); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_hcmd(void (*probe)(void *__data, const struct device *dev, struct iwl_host_cmd *cmd, u16 total_size, struct iwl_cmd_header_wide *hdr), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_hcmd, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_hcmd(void (*probe)(void *__data, const struct device *dev, struct iwl_host_cmd *cmd, u16 total_size, struct iwl_cmd_header_wide *hdr), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_hcmd, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_hcmd(void (*probe)(void *__data, const struct device *dev, struct iwl_host_cmd *cmd, u16 total_size, struct iwl_cmd_header_wide *hdr), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_hcmd, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_hcmd(void (*cb)(void *__data, const struct device *dev, struct iwl_host_cmd *cmd, u16 total_size, struct iwl_cmd_header_wide *hdr)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_hcmd_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_hcmd.key); }; # 57 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h" extern struct tracepoint __tracepoint_iwlwifi_dev_rx; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_rx(const struct device *dev, const struct iwl_trans *trans, struct iwl_rx_packet *pkt, size_t len) { if (static_key_false(&__tracepoint_iwlwifi_dev_rx.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h"), "i" (79), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (493)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_rx)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_rx)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_rx)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_rx)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_rx)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_rx)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_rx)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, const struct iwl_trans *trans, struct iwl_rx_packet *pkt, size_t len))(it_func))(__data, dev, trans, pkt, len); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_rx.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_rx.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_rx.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_rx.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_rx.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_rx.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_rx.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h", 79, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_rx.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_rx_rcuidle(const struct device *dev, const struct iwl_trans *trans, struct iwl_rx_packet *pkt, size_t len) { if (static_key_false(&__tracepoint_iwlwifi_dev_rx.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h"), "i" (79), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (494)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_rx)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_rx)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_rx)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_rx)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_rx)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_rx)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_rx)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, const struct iwl_trans *trans, struct iwl_rx_packet *pkt, size_t len))(it_func))(__data, dev, trans, pkt, len); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_rx(void (*probe)(void *__data, const struct device *dev, const struct iwl_trans *trans, struct iwl_rx_packet *pkt, size_t len), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_rx, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_rx(void (*probe)(void *__data, const struct device *dev, const struct iwl_trans *trans, struct iwl_rx_packet *pkt, size_t len), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_rx, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_rx(void (*probe)(void *__data, const struct device *dev, const struct iwl_trans *trans, struct iwl_rx_packet *pkt, size_t len), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_rx, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_rx(void (*cb)(void *__data, const struct device *dev, const struct iwl_trans *trans, struct iwl_rx_packet *pkt, size_t len)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_rx_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_rx.key); }; # 81 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h" extern struct tracepoint __tracepoint_iwlwifi_dev_tx; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_tx(const struct device *dev, struct sk_buff *skb, void *tfd, size_t tfdlen, void *buf0, size_t buf0_len, int hdr_len) { if (static_key_false(&__tracepoint_iwlwifi_dev_tx.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h"), "i" (118), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (495)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_tx)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_tx)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_tx)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_tx)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_tx)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_tx)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_tx)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, struct sk_buff *skb, void *tfd, size_t tfdlen, void *buf0, size_t buf0_len, int hdr_len))(it_func))(__data, dev, skb, tfd, tfdlen, buf0, buf0_len, hdr_len); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_tx.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_tx.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_tx.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_tx.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_tx.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_tx.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_tx.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h", 118, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_tx.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_tx_rcuidle(const struct device *dev, struct sk_buff *skb, void *tfd, size_t tfdlen, void *buf0, size_t buf0_len, int hdr_len) { if (static_key_false(&__tracepoint_iwlwifi_dev_tx.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h"), "i" (118), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (496)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_tx)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_tx)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_tx)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_tx)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_tx)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_tx)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_tx)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, struct sk_buff *skb, void *tfd, size_t tfdlen, void *buf0, size_t buf0_len, int hdr_len))(it_func))(__data, dev, skb, tfd, tfdlen, buf0, buf0_len, hdr_len); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_tx(void (*probe)(void *__data, const struct device *dev, struct sk_buff *skb, void *tfd, size_t tfdlen, void *buf0, size_t buf0_len, int hdr_len), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_tx, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_tx(void (*probe)(void *__data, const struct device *dev, struct sk_buff *skb, void *tfd, size_t tfdlen, void *buf0, size_t buf0_len, int hdr_len), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_tx, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_tx(void (*probe)(void *__data, const struct device *dev, struct sk_buff *skb, void *tfd, size_t tfdlen, void *buf0, size_t buf0_len, int hdr_len), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_tx, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_tx(void (*cb)(void *__data, const struct device *dev, struct sk_buff *skb, void *tfd, size_t tfdlen, void *buf0, size_t buf0_len, int hdr_len)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_tx_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_tx.key); }; # 120 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h" extern struct tracepoint __tracepoint_iwlwifi_dev_ucode_event; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_ucode_event(const struct device *dev, u32 time, u32 data, u32 ev) { if (static_key_false(&__tracepoint_iwlwifi_dev_ucode_event.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(0 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h"), "i" (138), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (497)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (0) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_ucode_event)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_ucode_event)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_ucode_event)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ucode_event)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_ucode_event)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ucode_event)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_ucode_event)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 time, u32 data, u32 ev))(it_func))(__data, dev, time, data, ev); } while ((++it_func_ptr)->func); } if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); if (1 && (cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(__tracepoint_iwlwifi_dev_ucode_event.funcs)) *________p1 = (typeof(*(__tracepoint_iwlwifi_dev_ucode_event.funcs)) *)({ union { typeof((__tracepoint_iwlwifi_dev_ucode_event.funcs)) __val; char __c[1]; } __u; if (1) __read_once_size(&((__tracepoint_iwlwifi_dev_ucode_event.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_ucode_event.funcs))); else __read_once_size_nocheck(&((__tracepoint_iwlwifi_dev_ucode_event.funcs)), __u.__c, sizeof((__tracepoint_iwlwifi_dev_ucode_event.funcs))); do { } while (0); __u.__val; }); do { static bool __attribute__((__section__(".data.unlikely"))) __warned; if (debug_lockdep_rcu_enabled() && !__warned && (!((0) || rcu_read_lock_sched_held()))) { __warned = true; lockdep_rcu_suspicious("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h", 138, "suspicious rcu_dereference_check() usage"); } } while (0); ; ((typeof(*(__tracepoint_iwlwifi_dev_ucode_event.funcs)) *)(________p1)); }); rcu_read_unlock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void trace_iwlwifi_dev_ucode_event_rcuidle(const struct device *dev, u32 time, u32 data, u32 ev) { if (static_key_false(&__tracepoint_iwlwifi_dev_ucode_event.key)) do { struct tracepoint_func *it_func_ptr; void *it_func; void *__data; int __attribute__((__unused__)) __idx = 0; if (!(cpumask_test_cpu((({ typeof(cpu_number) pscr_ret__; do { const void *__vpp_verify = (typeof((&(cpu_number)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(cpu_number)) { case 1: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 2: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 4: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; case 8: pscr_ret__ = ({ typeof(cpu_number) pfo_ret__; switch (sizeof(cpu_number)) { case 1: asm volatile ("mov" "b ""%%""gs"":" "%" "1"",%0" : "=q" (pfo_ret__) : "m" (cpu_number)); break; case 2: asm volatile ("mov" "w ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 4: asm volatile ("mov" "l ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; case 8: asm volatile ("mov" "q ""%%""gs"":" "%" "1"",%0" : "=r" (pfo_ret__) : "m" (cpu_number)); break; default: __bad_percpu_size(); } pfo_ret__; }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })), ((const struct cpumask *)&__cpu_online_mask)))) return; ({ int __ret_warn_on = !!(1 && (preempt_count() & (((1UL << (1))-1) << (((0 + 8) + 8) + 4)))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h"), "i" (138), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (498)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __asm__ __volatile__("" : : : "memory"); } while (0); if (1) { __idx = srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } it_func_ptr = ({ typeof((&__tracepoint_iwlwifi_dev_ucode_event)->funcs) ________p1 = ({ union { typeof((&__tracepoint_iwlwifi_dev_ucode_event)->funcs) __val; char __c[1]; } __u; if (1) __read_once_size(&((&__tracepoint_iwlwifi_dev_ucode_event)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ucode_event)->funcs)); else __read_once_size_nocheck(&((&__tracepoint_iwlwifi_dev_ucode_event)->funcs), __u.__c, sizeof((&__tracepoint_iwlwifi_dev_ucode_event)->funcs)); do { } while (0); __u.__val; }); ((typeof(*(&__tracepoint_iwlwifi_dev_ucode_event)->funcs) *)(________p1)); }); if (it_func_ptr) { do { it_func = (it_func_ptr)->func; __data = (it_func_ptr)->data; ((void(*)(void *__data, const struct device *dev, u32 time, u32 data, u32 ev))(it_func))(__data, dev, time, data, ev); } while ((++it_func_ptr)->func); } if (1) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ __volatile__("" : : : "memory"); __preempt_count_sub(1); } while (0); } while (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_iwlwifi_dev_ucode_event(void (*probe)(void *__data, const struct device *dev, u32 time, u32 data, u32 ev), void *data) { return tracepoint_probe_register(&__tracepoint_iwlwifi_dev_ucode_event, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int register_trace_prio_iwlwifi_dev_ucode_event(void (*probe)(void *__data, const struct device *dev, u32 time, u32 data, u32 ev), void *data, int prio) { return tracepoint_probe_register_prio(&__tracepoint_iwlwifi_dev_ucode_event, (void *)probe, data, prio); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int unregister_trace_iwlwifi_dev_ucode_event(void (*probe)(void *__data, const struct device *dev, u32 time, u32 data, u32 ev), void *data) { return tracepoint_probe_unregister(&__tracepoint_iwlwifi_dev_ucode_event, (void *)probe, data); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void check_trace_callback_type_iwlwifi_dev_ucode_event(void (*cb)(void *__data, const struct device *dev, u32 time, u32 data, u32 ev)) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool trace_iwlwifi_dev_ucode_event_enabled(void) { return static_key_false(&__tracepoint_iwlwifi_dev_ucode_event.key); }; # 145 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h" # 1 "../include/trace/define_trace.h" 1 # 146 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace-iwlwifi.h" 2 # 100 "../drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h" 2 # 62 "../drivers/net/wireless/intel/iwlwifi/iwl-io.h" 2 void iwl_write8(struct iwl_trans *trans, u32 ofs, u8 val); void iwl_write32(struct iwl_trans *trans, u32 ofs, u32 val); void iwl_write64(struct iwl_trans *trans, u64 ofs, u64 val); u32 iwl_read32(struct iwl_trans *trans, u32 ofs); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_set_bit(struct iwl_trans *trans, u32 reg, u32 mask) { iwl_trans_set_bits_mask(trans, reg, mask, mask); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_clear_bit(struct iwl_trans *trans, u32 reg, u32 mask) { iwl_trans_set_bits_mask(trans, reg, mask, 0); } int iwl_poll_bit(struct iwl_trans *trans, u32 addr, u32 bits, u32 mask, int timeout); int iwl_poll_direct_bit(struct iwl_trans *trans, u32 addr, u32 mask, int timeout); u32 iwl_read_direct32(struct iwl_trans *trans, u32 reg); void iwl_write_direct32(struct iwl_trans *trans, u32 reg, u32 value); void iwl_write_direct64(struct iwl_trans *trans, u64 reg, u64 value); u32 iwl_read_prph_no_grab(struct iwl_trans *trans, u32 ofs); u32 iwl_read_prph(struct iwl_trans *trans, u32 ofs); void iwl_write_prph_no_grab(struct iwl_trans *trans, u32 ofs, u32 val); void iwl_write_prph64_no_grab(struct iwl_trans *trans, u64 ofs, u64 val); void iwl_write_prph(struct iwl_trans *trans, u32 ofs, u32 val); int iwl_poll_prph_bit(struct iwl_trans *trans, u32 addr, u32 bits, u32 mask, int timeout); void iwl_set_bits_prph(struct iwl_trans *trans, u32 ofs, u32 mask); void iwl_set_bits_mask_prph(struct iwl_trans *trans, u32 ofs, u32 bits, u32 mask); void iwl_clear_bits_prph(struct iwl_trans *trans, u32 ofs, u32 mask); void iwl_force_nmi(struct iwl_trans *trans); int iwl_finish_nic_init(struct iwl_trans *trans); int iwl_dump_fh(struct iwl_trans *trans, char **buf); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 iwl_umac_prph(struct iwl_trans *trans, u32 ofs) { return ofs + trans->cfg->umac_prph_offset; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 iwl_read_umac_prph_no_grab(struct iwl_trans *trans, u32 ofs) { return iwl_read_prph_no_grab(trans, ofs + trans->cfg->umac_prph_offset); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) u32 iwl_read_umac_prph(struct iwl_trans *trans, u32 ofs) { return iwl_read_prph(trans, ofs + trans->cfg->umac_prph_offset); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_write_umac_prph_no_grab(struct iwl_trans *trans, u32 ofs, u32 val) { iwl_write_prph_no_grab(trans, ofs + trans->cfg->umac_prph_offset, val); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_write_umac_prph(struct iwl_trans *trans, u32 ofs, u32 val) { iwl_write_prph(trans, ofs + trans->cfg->umac_prph_offset, val); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) int iwl_poll_umac_prph_bit(struct iwl_trans *trans, u32 addr, u32 bits, u32 mask, int timeout) { return iwl_poll_prph_bit(trans, addr + trans->cfg->umac_prph_offset, bits, mask, timeout); } # 72 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/fw/api/commands.h" 1 # 88 "../drivers/net/wireless/intel/iwlwifi/fw/api/commands.h" enum iwl_mvm_command_groups { LEGACY_GROUP = 0x0, LONG_GROUP = 0x1, SYSTEM_GROUP = 0x2, MAC_CONF_GROUP = 0x3, PHY_OPS_GROUP = 0x4, DATA_PATH_GROUP = 0x5, NAN_GROUP = 0x7, LOCATION_GROUP = 0x8, PROT_OFFLOAD_GROUP = 0xb, REGULATORY_AND_NVM_GROUP = 0xc, DEBUG_GROUP = 0xf, }; enum iwl_legacy_cmds { MVM_ALIVE = 0x1, REPLY_ERROR = 0x2, ECHO_CMD = 0x3, INIT_COMPLETE_NOTIF = 0x4, PHY_CONTEXT_CMD = 0x8, DBG_CFG = 0x9, SCAN_ITERATION_COMPLETE_UMAC = 0xb5, SCAN_CFG_CMD = 0xc, SCAN_REQ_UMAC = 0xd, SCAN_ABORT_UMAC = 0xe, SCAN_COMPLETE_UMAC = 0xf, BA_WINDOW_STATUS_NOTIFICATION_ID = 0x13, ADD_STA_KEY = 0x17, ADD_STA = 0x18, REMOVE_STA = 0x19, FW_GET_ITEM_CMD = 0x1a, TX_CMD = 0x1c, TXPATH_FLUSH = 0x1e, MGMT_MCAST_KEY = 0x1f, SCD_QUEUE_CFG = 0x1d, WEP_KEY = 0x20, SHARED_MEM_CFG = 0x25, TDLS_CHANNEL_SWITCH_CMD = 0x27, TDLS_CHANNEL_SWITCH_NOTIFICATION = 0xaa, TDLS_CONFIG_CMD = 0xa7, MAC_CONTEXT_CMD = 0x28, TIME_EVENT_CMD = 0x29, TIME_EVENT_NOTIFICATION = 0x2a, BINDING_CONTEXT_CMD = 0x2b, TIME_QUOTA_CMD = 0x2c, NON_QOS_TX_COUNTER_CMD = 0x2d, LEDS_CMD = 0x48, LQ_CMD = 0x4e, FW_PAGING_BLOCK_CMD = 0x4f, SCAN_OFFLOAD_REQUEST_CMD = 0x51, SCAN_OFFLOAD_ABORT_CMD = 0x52, HOT_SPOT_CMD = 0x53, SCAN_OFFLOAD_COMPLETE = 0x6D, SCAN_OFFLOAD_UPDATE_PROFILES_CMD = 0x6E, MATCH_FOUND_NOTIFICATION = 0xd9, SCAN_ITERATION_COMPLETE = 0xe7, PHY_CONFIGURATION_CMD = 0x6a, CALIB_RES_NOTIF_PHY_DB = 0x6b, PHY_DB_CMD = 0x6c, POWER_TABLE_CMD = 0x77, PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION = 0x78, LTR_CONFIG = 0xee, REPLY_THERMAL_MNG_BACKOFF = 0x7e, DC2DC_CONFIG_CMD = 0x83, NVM_ACCESS_CMD = 0x88, BEACON_NOTIFICATION = 0x90, BEACON_TEMPLATE_CMD = 0x91, TX_ANT_CONFIGURATION_CMD = 0x98, # 415 "../drivers/net/wireless/intel/iwlwifi/fw/api/commands.h" STATISTICS_CMD = 0x9c, STATISTICS_NOTIFICATION = 0x9d, EOSP_NOTIFICATION = 0x9e, REDUCE_TX_POWER_CMD = 0x9f, CARD_STATE_NOTIFICATION = 0xa1, MISSED_BEACONS_NOTIFICATION = 0xa2, MAC_PM_POWER_TABLE = 0xa9, MFUART_LOAD_NOTIFICATION = 0xb1, RSS_CONFIG_CMD = 0xb3, REPLY_RX_PHY_CMD = 0xc0, REPLY_RX_MPDU_CMD = 0xc1, FRAME_RELEASE = 0xc3, BA_NOTIF = 0xc5, MCC_UPDATE_CMD = 0xc8, MCC_CHUB_UPDATE_CMD = 0xc9, MARKER_CMD = 0xcb, BT_PROFILE_NOTIFICATION = 0xce, BT_CONFIG = 0x9b, BT_COEX_UPDATE_REDUCED_TXP = 0x5c, BT_COEX_CI = 0x5d, REPLY_SF_CFG_CMD = 0xd1, REPLY_BEACON_FILTERING_CMD = 0xd2, DTS_MEASUREMENT_NOTIFICATION = 0xdd, LDBG_CONFIG_CMD = 0xf6, DEBUG_LOG_MSG = 0xf7, BCAST_FILTER_CMD = 0xcf, MCAST_FILTER_CMD = 0xd0, D3_CONFIG_CMD = 0xd3, PROT_OFFLOAD_CONFIG_CMD = 0xd4, OFFLOADS_QUERY_CMD = 0xd5, REMOTE_WAKE_CONFIG_CMD = 0xd6, D0I3_END_CMD = 0xed, WOWLAN_PATTERNS = 0xe0, WOWLAN_CONFIGURATION = 0xe1, WOWLAN_TSC_RSC_PARAM = 0xe2, WOWLAN_TKIP_PARAM = 0xe3, WOWLAN_KEK_KCK_MATERIAL = 0xe4, WOWLAN_GET_STATUSES = 0xe5, SCAN_OFFLOAD_PROFILES_QUERY_CMD = 0x56, }; enum iwl_system_subcmd_ids { SHARED_MEM_CFG_CMD = 0x0, INIT_EXTENDED_CFG_CMD = 0x03, FW_ERROR_RECOVERY_CMD = 0x7, }; # 75 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.h" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/fw/api/alive.h" 1 # 73 "../drivers/net/wireless/intel/iwlwifi/fw/api/alive.h" enum { FW_TYPE_HW = 0, FW_TYPE_PROT = 1, FW_TYPE_AP = 2, FW_TYPE_WOWLAN = 3, FW_TYPE_TIMING = 4, FW_TYPE_WIPAN = 5 }; enum { FW_SUBTYPE_FULL_FEATURE = 0, FW_SUBTYPE_BOOTSRAP = 1, FW_SUBTYPE_REDUCED = 2, FW_SUBTYPE_ALIVE_ONLY = 3, FW_SUBTYPE_WOWLAN = 4, FW_SUBTYPE_AP_SUBTYPE = 5, FW_SUBTYPE_WIPAN = 6, FW_SUBTYPE_INITIALIZE = 9 }; struct iwl_lmac_debug_addrs { __le32 error_event_table_ptr; __le32 log_event_table_ptr; __le32 cpu_register_ptr; __le32 dbgm_config_ptr; __le32 alive_counter_ptr; __le32 scd_base_ptr; __le32 st_fwrd_addr; __le32 st_fwrd_size; } __attribute__((__packed__)); struct iwl_lmac_alive { __le32 ucode_major; __le32 ucode_minor; u8 ver_subtype; u8 ver_type; u8 mac; u8 opt; __le32 timestamp; struct iwl_lmac_debug_addrs dbg_ptrs; } __attribute__((__packed__)); struct iwl_umac_debug_addrs { __le32 error_info_addr; __le32 dbg_print_buff_addr; } __attribute__((__packed__)); struct iwl_umac_alive { __le32 umac_major; __le32 umac_minor; struct iwl_umac_debug_addrs dbg_ptrs; } __attribute__((__packed__)); struct mvm_alive_resp_v3 { __le16 status; __le16 flags; struct iwl_lmac_alive lmac_data; struct iwl_umac_alive umac_data; } __attribute__((__packed__)); struct mvm_alive_resp { __le16 status; __le16 flags; struct iwl_lmac_alive lmac_data[2]; struct iwl_umac_alive umac_data; } __attribute__((__packed__)); # 153 "../drivers/net/wireless/intel/iwlwifi/fw/api/alive.h" enum iwl_extended_cfg_flags { IWL_INIT_DEBUG_CFG, IWL_INIT_NVM, IWL_INIT_PHY, }; struct iwl_init_extended_cfg_cmd { __le32 init_flags; } __attribute__((__packed__)); # 175 "../drivers/net/wireless/intel/iwlwifi/fw/api/alive.h" struct iwl_radio_version_notif { __le32 radio_flavor; __le32 radio_step; __le32 radio_dash; } __attribute__((__packed__)); enum iwl_card_state_flags { CARD_ENABLED = 0x00, HW_CARD_DISABLED = 0x01, SW_CARD_DISABLED = 0x02, CT_KILL_CARD_DISABLED = 0x04, HALT_CARD_DISABLED = 0x08, CARD_DISABLED_MSK = 0x0f, CARD_IS_RX_ON = 0x10, }; struct iwl_card_state_notif { __le32 flags; } __attribute__((__packed__)); enum iwl_error_recovery_flags { ERROR_RECOVERY_UPDATE_DB = ((((1UL))) << (0)), ERROR_RECOVERY_END_OF_RECOVERY = ((((1UL))) << (1)), }; struct iwl_fw_error_recovery_cmd { __le32 flags; __le32 buf_size; } __attribute__((__packed__)); # 77 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.h" 2 struct iwl_fw_dump_desc { size_t len; struct iwl_fw_error_dump_trigger_desc trig_desc; }; struct iwl_fw_dbg_params { u32 in_sample; u32 out_ctrl; }; extern const struct iwl_fw_dump_desc iwl_dump_desc_assert; static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_free_dump_desc(struct iwl_fw_runtime *fwrt) { if (fwrt->dump.desc != &iwl_dump_desc_assert) kfree(fwrt->dump.desc); fwrt->dump.desc = ((void *)0); fwrt->dump.lmac_err_id[0] = 0; if (fwrt->smem_cfg.num_lmacs > 1) fwrt->dump.lmac_err_id[1] = 0; fwrt->dump.umac_err_id = 0; } int iwl_fw_dbg_collect_desc(struct iwl_fw_runtime *fwrt, const struct iwl_fw_dump_desc *desc, bool monitor_only, unsigned int delay); int iwl_fw_dbg_error_collect(struct iwl_fw_runtime *fwrt, enum iwl_fw_dbg_trigger trig_type); int _iwl_fw_dbg_ini_collect(struct iwl_fw_runtime *fwrt, enum iwl_fw_ini_trigger_id id); int iwl_fw_dbg_ini_collect(struct iwl_fw_runtime *fwrt, u32 legacy_trigger_id); int iwl_fw_dbg_collect(struct iwl_fw_runtime *fwrt, enum iwl_fw_dbg_trigger trig, const char *str, size_t len, struct iwl_fw_dbg_trigger_tlv *trigger); int iwl_fw_dbg_collect_trig(struct iwl_fw_runtime *fwrt, struct iwl_fw_dbg_trigger_tlv *trigger, const char *fmt, ...) __attribute__((__format__(printf, 3, 4))); int iwl_fw_start_dbg_conf(struct iwl_fw_runtime *fwrt, u8 id); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct iwl_fw_dbg_trigger_tlv* _iwl_fw_dbg_get_trigger(const struct iwl_fw *fw, enum iwl_fw_dbg_trigger id) { return fw->dbg.trigger_tlv[id]; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_fw_dbg_trigger_vif_match(struct iwl_fw_dbg_trigger_tlv *trig, struct wireless_dev *wdev) { u32 trig_vif = (( __u32)(__le32)(trig->vif_type)); return trig_vif == IWL_FW_DBG_CONF_VIF_ANY || wdev->iftype == trig_vif; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_fw_dbg_trigger_stop_conf_match(struct iwl_fw_runtime *fwrt, struct iwl_fw_dbg_trigger_tlv *trig) { return ((trig->mode & IWL_FW_DBG_TRIGGER_STOP) && (fwrt->dump.conf == 0xff || (((((1UL))) << (fwrt->dump.conf)) & (( __u32)(__le32)(trig->stop_conf_ids))))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_fw_dbg_no_trig_window(struct iwl_fw_runtime *fwrt, u32 id, u32 dis_usec) { unsigned long wind_jiff = usecs_to_jiffies(dis_usec); if (fwrt->dump.non_collect_ts_start[id] && ((({ unsigned long __dummy; typeof(fwrt->dump.non_collect_ts_start[id] + wind_jiff) __dummy2; (void)(&__dummy == &__dummy2); 1; }) && ({ unsigned long __dummy; typeof(jiffies) __dummy2; (void)(&__dummy == &__dummy2); 1; }) && ((long)((jiffies) - (fwrt->dump.non_collect_ts_start[id] + wind_jiff)) < 0)))) return true; fwrt->dump.non_collect_ts_start[id] = jiffies; return false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_fw_dbg_trigger_check_stop(struct iwl_fw_runtime *fwrt, struct wireless_dev *wdev, struct iwl_fw_dbg_trigger_tlv *trig) { u32 usec = (( __u16)(__le16)(trig->trig_dis_ms)) * 1000L; if (wdev && !iwl_fw_dbg_trigger_vif_match(trig, wdev)) return false; if (iwl_fw_dbg_no_trig_window(fwrt, (( __u32)(__le32)(trig->id)), usec)) { do { do { extern void __compiletime_assert_191(void) ; if (!(!("Trigger %d occurred while no-collect window.\n"[sizeof("Trigger %d occurred while no-collect window.\n") - 2] != '\n'))) __compiletime_assert_191(); } while (0); __iwl_warn((fwrt)->dev, "Trigger %d occurred while no-collect window.\n", trig->id); } while (0); return false; } return iwl_fw_dbg_trigger_stop_conf_match(fwrt, trig); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct iwl_fw_dbg_trigger_tlv* _iwl_fw_dbg_trigger_on(struct iwl_fw_runtime *fwrt, struct wireless_dev *wdev, const enum iwl_fw_dbg_trigger id) { struct iwl_fw_dbg_trigger_tlv *trig; if (fwrt->trans->dbg.ini_valid) return ((void *)0); if (!({ void *__dbg_trigger = (fwrt->fw)->dbg.trigger_tlv[(id)]; __builtin_expect(!!(__dbg_trigger), 0); })) return ((void *)0); trig = _iwl_fw_dbg_get_trigger(fwrt->fw, id); if (!iwl_fw_dbg_trigger_check_stop(fwrt, wdev, trig)) return ((void *)0); return trig; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_fw_ini_trigger_on(struct iwl_fw_runtime *fwrt, enum iwl_fw_ini_trigger_id id) { struct iwl_fw_ini_trigger *trig; u32 usec; if (!fwrt->trans->dbg.ini_valid || id == IWL_FW_TRIGGER_ID_INVALID || id >= IWL_FW_TRIGGER_ID_NUM || !fwrt->dump.active_trigs[id].active) return false; trig = fwrt->dump.active_trigs[id].trig; usec = (( __u32)(__le32)(trig->ignore_consec)); if (iwl_fw_dbg_no_trig_window(fwrt, id, usec)) { do { do { extern void __compiletime_assert_240(void) ; if (!(!("Trigger %d fired in no-collect window\n"[sizeof("Trigger %d fired in no-collect window\n") - 2] != '\n'))) __compiletime_assert_240(); } while (0); __iwl_warn((fwrt)->dev, "Trigger %d fired in no-collect window\n", id); } while (0); return false; } return true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void _iwl_fw_dbg_trigger_simple_stop(struct iwl_fw_runtime *fwrt, struct wireless_dev *wdev, struct iwl_fw_dbg_trigger_tlv *trigger) { if (!trigger) return; if (!iwl_fw_dbg_trigger_check_stop(fwrt, wdev, trigger)) return; iwl_fw_dbg_collect_trig(fwrt, trigger, ((void *)0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void _iwl_fw_dbg_stop_recording(struct iwl_trans *trans, struct iwl_fw_dbg_params *params) { if (trans->cfg->device_family == IWL_DEVICE_FAMILY_7000) { iwl_set_bits_prph(trans, (0xa03c00), 0x100); return; } if (params) { params->in_sample = iwl_read_umac_prph(trans, (0xa03c00)); params->out_ctrl = iwl_read_umac_prph(trans, (0xa03c0c)); } iwl_write_umac_prph(trans, (0xa03c00), 0); usleep_range(700, 1000); iwl_write_umac_prph(trans, (0xa03c0c), 0); trans->dbg.rec_on = false; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_dbg_stop_recording(struct iwl_trans *trans, struct iwl_fw_dbg_params *params) { if (test_bit(STATUS_FW_ERROR, &trans->status) || (!trans->dbg.dest_tlv && trans->dbg.ini_dest == IWL_FW_INI_LOCATION_INVALID)) return; if (trans->cfg->device_family >= IWL_DEVICE_FAMILY_22560) { do { do { extern void __compiletime_assert_306(void) ; if (!(!("WRT: unsupported device family %d for debug stop recording\n"[sizeof("WRT: unsupported device family %d for debug stop recording\n") - 2] != '\n'))) __compiletime_assert_306(); } while (0); __iwl_err(((trans)->dev), false, false, "WRT: unsupported device family %d for debug stop recording\n", trans->cfg->device_family); } while (0); return; } _iwl_fw_dbg_stop_recording(trans, params); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void _iwl_fw_dbg_restart_recording(struct iwl_trans *trans, struct iwl_fw_dbg_params *params) { if (({ int __ret_warn_on = !!(!params); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.h"), "i" (316), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (499)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return; if (trans->cfg->device_family == IWL_DEVICE_FAMILY_7000) { iwl_clear_bits_prph(trans, (0xa03c00), 0x100); iwl_clear_bits_prph(trans, (0xa03c00), 0x1); iwl_set_bits_prph(trans, (0xa03c00), 0x1); } else { iwl_write_umac_prph(trans, (0xa03c00), params->in_sample); iwl_write_umac_prph(trans, (0xa03c0c), params->out_ctrl); } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_set_dbg_rec_on(struct iwl_fw_runtime *fwrt) { if (fwrt->cur_fw_img == IWL_UCODE_REGULAR && (fwrt->fw->dbg.dest_tlv || fwrt->trans->dbg.ini_dest != IWL_FW_INI_LOCATION_INVALID)) fwrt->trans->dbg.rec_on = true; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_dbg_restart_recording(struct iwl_fw_runtime *fwrt, struct iwl_fw_dbg_params *params) { if (test_bit(STATUS_FW_ERROR, &fwrt->trans->status) || (!fwrt->trans->dbg.dest_tlv && fwrt->trans->dbg.ini_dest == IWL_FW_INI_LOCATION_INVALID)) return; if (fwrt->trans->cfg->device_family >= IWL_DEVICE_FAMILY_22560) { do { do { extern void __compiletime_assert_354(void) ; if (!(!("WRT: unsupported device family %d for debug restart recording\n"[sizeof("WRT: unsupported device family %d for debug restart recording\n") - 2] != '\n'))) __compiletime_assert_354(); } while (0); __iwl_err(((fwrt)->dev), false, false, "WRT: unsupported device family %d for debug restart recording\n", fwrt->trans->cfg->device_family); } while (0); return; } _iwl_fw_dbg_restart_recording(fwrt->trans, params); iwl_fw_set_dbg_rec_on(fwrt); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_dump_conf_clear(struct iwl_fw_runtime *fwrt) { fwrt->dump.conf = 0xff; } void iwl_fw_error_dump_wk(struct work_struct *work); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_fw_dbg_type_on(struct iwl_fw_runtime *fwrt, u32 type) { return (fwrt->fw->dbg.dump_mask & ((((1UL))) << (type))); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_fw_dbg_is_d3_debug_enabled(struct iwl_fw_runtime *fwrt) { return fw_has_capa(&fwrt->fw->ucode_capa, IWL_UCODE_TLV_CAPA_D3_DEBUG) && fwrt->trans->cfg->d3_debug_data_length && fwrt->ops && fwrt->ops->d3_debug_enable && fwrt->ops->d3_debug_enable(fwrt->ops_ctx) && iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_D3_DEBUG_DATA); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool iwl_fw_dbg_is_paging_enabled(struct iwl_fw_runtime *fwrt) { return iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_PAGING) && !fwrt->trans->cfg->gen2 && fwrt->cur_fw_img < IWL_UCODE_TYPE_MAX && fwrt->fw->img[fwrt->cur_fw_img].paging_mem_size && fwrt->fw_paging_db[0].fw_paging_block; } void iwl_fw_dbg_read_d3_debug_data(struct iwl_fw_runtime *fwrt); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_flush_dumps(struct iwl_fw_runtime *fwrt) { int i; del_timer(&fwrt->dump.periodic_trig); for (i = 0; i < 5; i++) { flush_delayed_work(&fwrt->dump.wks[i].wk); fwrt->dump.wks[i].ini_trig_id = IWL_FW_TRIGGER_ID_INVALID; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_cancel_dumps(struct iwl_fw_runtime *fwrt) { int i; del_timer(&fwrt->dump.periodic_trig); for (i = 0; i < 5; i++) { cancel_delayed_work_sync(&fwrt->dump.wks[i].wk); fwrt->dump.wks[i].ini_trig_id = IWL_FW_TRIGGER_ID_INVALID; } } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_cancel_timestamp(struct iwl_fw_runtime *fwrt) { fwrt->timestamp.delay = 0; cancel_delayed_work_sync(&fwrt->timestamp.wk); } void iwl_fw_trigger_timestamp(struct iwl_fw_runtime *fwrt, u32 delay); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_suspend_timestamp(struct iwl_fw_runtime *fwrt) { cancel_delayed_work_sync(&fwrt->timestamp.wk); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_resume_timestamp(struct iwl_fw_runtime *fwrt) { if (!fwrt->timestamp.delay) return; schedule_delayed_work(&fwrt->timestamp.wk, round_jiffies_relative(fwrt->timestamp.delay)); } # 454 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.h" void iwl_fw_dbg_apply_point(struct iwl_fw_runtime *fwrt, enum iwl_fw_ini_apply_point apply_point); void iwl_fwrt_stop_device(struct iwl_fw_runtime *fwrt); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_lmac1_set_alive_err_table(struct iwl_trans *trans, u32 lmac_error_event_table) { if (!(trans->dbg.error_event_table_tlv_status & IWL_ERROR_EVENT_TABLE_LMAC1) || ({ int __ret_warn_on = !!(trans->dbg.lmac_error_event_table[0] != lmac_error_event_table); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.h"), "i" (465), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (500)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) trans->dbg.lmac_error_event_table[0] = lmac_error_event_table; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_umac_set_alive_err_table(struct iwl_trans *trans, u32 umac_error_event_table) { if (!(trans->dbg.error_event_table_tlv_status & IWL_ERROR_EVENT_TABLE_UMAC) || ({ int __ret_warn_on = !!(trans->dbg.umac_error_event_table != umac_error_event_table); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.h"), "i" (475), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (501)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) trans->dbg.umac_error_event_table = umac_error_event_table; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fw_error_collect(struct iwl_fw_runtime *fwrt) { if (fwrt->trans->dbg.ini_valid && fwrt->trans->dbg.hw_error) { _iwl_fw_dbg_ini_collect(fwrt, IWL_FW_TRIGGER_ID_FW_HW_ERROR); fwrt->trans->dbg.hw_error = false; } else { iwl_fw_dbg_collect_desc(fwrt, &iwl_dump_desc_assert, false, 0); } } void iwl_fw_dbg_periodic_trig_handler(struct timer_list *t); void iwl_fw_error_print_fseq_regs(struct iwl_fw_runtime *fwrt); static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void iwl_fwrt_update_fw_versions(struct iwl_fw_runtime *fwrt, struct iwl_lmac_alive *lmac, struct iwl_umac_alive *umac) { if (lmac) { fwrt->dump.fw_ver.type = lmac->ver_type; fwrt->dump.fw_ver.subtype = lmac->ver_subtype; fwrt->dump.fw_ver.lmac_major = (( __u32)(__le32)(lmac->ucode_major)); fwrt->dump.fw_ver.lmac_minor = (( __u32)(__le32)(lmac->ucode_minor)); } if (umac) { fwrt->dump.fw_ver.umac_major = (( __u32)(__le32)(umac->umac_major)); fwrt->dump.fw_ver.umac_minor = (( __u32)(__le32)(umac->umac_minor)); } } # 68 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.c" 2 # 1 "../drivers/net/wireless/intel/iwlwifi/fw/debugfs.h" 1 # 66 "../drivers/net/wireless/intel/iwlwifi/fw/debugfs.h" void iwl_fwrt_dbgfs_register(struct iwl_fw_runtime *fwrt, struct dentry *dbgfs_dir); # 69 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.c" 2 # 82 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.c" struct iwl_fw_dump_ptrs { struct iwl_trans_dump_data *trans_ptr; void *fwrt_ptr; u32 fwrt_len; }; static void iwl_read_radio_regs(struct iwl_fw_runtime *fwrt, struct iwl_fw_error_dump_data **dump_data) { u8 *pos = (void *)(*dump_data)->data; unsigned long flags; int i; do { do { extern void __compiletime_assert_96(void) ; if (!(!("WRT radio registers dump\n"[sizeof("WRT radio registers dump\n") - 2] != '\n'))) __compiletime_assert_96(); } while (0); __iwl_dbg((fwrt)->dev, 0x00000001, false, __func__, "WRT radio registers dump\n"); } while (0); if (!(__builtin_expect(!!((fwrt->trans)->ops->grab_nic_access(fwrt->trans, &flags)), 1))) return; (*dump_data)->type = (( __le32)(__u32)(IWL_FW_ERROR_DUMP_RADIO_REG)); (*dump_data)->len = (( __le32)(__u32)(0x2ad)); for (i = 0; i < 0x2ad; i++) { u32 rd_cmd = (3); rd_cmd |= i << (6); iwl_write_prph_no_grab(fwrt->trans, (0xa02804), rd_cmd); *pos = (u8)iwl_read_prph_no_grab(fwrt->trans, (0xa02814)); pos++; } *dump_data = iwl_fw_error_next_data(*dump_data); iwl_trans_release_nic_access(fwrt->trans, &flags); } static void iwl_fwrt_dump_rxf(struct iwl_fw_runtime *fwrt, struct iwl_fw_error_dump_data **dump_data, int size, u32 offset, int fifo_num) { struct iwl_fw_error_dump_fifo *fifo_hdr; u32 *fifo_data; u32 fifo_len; int i; fifo_hdr = (void *)(*dump_data)->data; fifo_data = (void *)fifo_hdr->data; fifo_len = size; if (fifo_len == 0) return; (*dump_data)->type = (( __le32)(__u32)(IWL_FW_ERROR_DUMP_RXF)); (*dump_data)->len = (( __le32)(__u32)(fifo_len + sizeof(*fifo_hdr))); fifo_hdr->fifo_num = (( __le32)(__u32)(fifo_num)); fifo_hdr->available_bytes = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xa00c40) + offset))); fifo_hdr->wr_ptr = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xa00c50) + offset))); fifo_hdr->rd_ptr = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xa00c54) + offset))); fifo_hdr->fence_ptr = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xa00c4c) + offset))); fifo_hdr->fence_mode = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xa00c14) + offset))); iwl_trans_write_prph(fwrt->trans, (0xa00c14) + offset, 0x1); iwl_trans_write_prph(fwrt->trans, (0xa00c1c) + offset, 0x1); iwl_trans_write_prph(fwrt->trans, (0xa00c10) + offset, 0x0); fifo_len /= sizeof(u32); for (i = 0; i < fifo_len; i++) fifo_data[i] = iwl_trans_read_prph(fwrt->trans, (0xa00c68) + offset); *dump_data = iwl_fw_error_next_data(*dump_data); } static void iwl_fwrt_dump_txf(struct iwl_fw_runtime *fwrt, struct iwl_fw_error_dump_data **dump_data, int size, u32 offset, int fifo_num) { struct iwl_fw_error_dump_fifo *fifo_hdr; u32 *fifo_data; u32 fifo_len; int i; fifo_hdr = (void *)(*dump_data)->data; fifo_data = (void *)fifo_hdr->data; fifo_len = size; if (fifo_len == 0) return; (*dump_data)->type = (( __le32)(__u32)(IWL_FW_ERROR_DUMP_TXF)); (*dump_data)->len = (( __le32)(__u32)(fifo_len + sizeof(*fifo_hdr))); fifo_hdr->fifo_num = (( __le32)(__u32)(fifo_num)); fifo_hdr->available_bytes = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xa00438) + offset))); fifo_hdr->wr_ptr = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xa00414) + offset))); fifo_hdr->rd_ptr = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xa00410) + offset))); fifo_hdr->fence_ptr = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xa00418) + offset))); fifo_hdr->fence_mode = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xa00424) + offset))); iwl_trans_write_prph(fwrt->trans, (0xa0044c) + offset, (0xa00414) + offset); iwl_trans_read_prph(fwrt->trans, (0xa00448) + offset); fifo_len /= sizeof(u32); for (i = 0; i < fifo_len; i++) fifo_data[i] = iwl_trans_read_prph(fwrt->trans, (0xa00448) + offset); *dump_data = iwl_fw_error_next_data(*dump_data); } static void iwl_fw_dump_rxf(struct iwl_fw_runtime *fwrt, struct iwl_fw_error_dump_data **dump_data) { struct iwl_fwrt_shared_mem_cfg *cfg = &fwrt->smem_cfg; unsigned long flags; do { do { extern void __compiletime_assert_234(void) ; if (!(!("WRT RX FIFO dump\n"[sizeof("WRT RX FIFO dump\n") - 2] != '\n'))) __compiletime_assert_234(); } while (0); __iwl_dbg((fwrt)->dev, 0x00000001, false, __func__, "WRT RX FIFO dump\n"); } while (0); if (!(__builtin_expect(!!((fwrt->trans)->ops->grab_nic_access(fwrt->trans, &flags)), 1))) return; if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_RXF)) { iwl_fwrt_dump_rxf(fwrt, dump_data, cfg->lmac[0].rxfifo1_size, 0, 0); iwl_fwrt_dump_rxf(fwrt, dump_data, cfg->rxfifo2_size, (0x200) + fwrt->trans->cfg->umac_prph_offset, 1); if (fwrt->smem_cfg.num_lmacs > 1) iwl_fwrt_dump_rxf(fwrt, dump_data, cfg->lmac[1].rxfifo1_size, (0x100000), 2); } iwl_trans_release_nic_access(fwrt->trans, &flags); } static void iwl_fw_dump_txf(struct iwl_fw_runtime *fwrt, struct iwl_fw_error_dump_data **dump_data) { struct iwl_fw_error_dump_fifo *fifo_hdr; struct iwl_fwrt_shared_mem_cfg *cfg = &fwrt->smem_cfg; u32 *fifo_data; u32 fifo_len; unsigned long flags; int i, j; do { do { extern void __compiletime_assert_267(void) ; if (!(!("WRT TX FIFO dump\n"[sizeof("WRT TX FIFO dump\n") - 2] != '\n'))) __compiletime_assert_267(); } while (0); __iwl_dbg((fwrt)->dev, 0x00000001, false, __func__, "WRT TX FIFO dump\n"); } while (0); if (!(__builtin_expect(!!((fwrt->trans)->ops->grab_nic_access(fwrt->trans, &flags)), 1))) return; if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_TXF)) { for (i = 0; i < fwrt->smem_cfg.num_txfifo_entries; i++) { iwl_trans_write_prph(fwrt->trans, (0xa0043c), i); iwl_fwrt_dump_txf(fwrt, dump_data, cfg->lmac[0].txfifo_size[i], 0, i); } if (fwrt->smem_cfg.num_lmacs > 1) { for (i = 0; i < fwrt->smem_cfg.num_txfifo_entries; i++) { iwl_trans_write_prph(fwrt->trans, (0xa0043c) + (0x100000), i); iwl_fwrt_dump_txf(fwrt, dump_data, cfg->lmac[1].txfifo_size[i], (0x100000), i + cfg->num_txfifo_entries); } } } if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_INTERNAL_TXF) && fw_has_capa(&fwrt->fw->ucode_capa, IWL_UCODE_TLV_CAPA_EXTEND_SHARED_MEM_CFG)) { for (i = 0; i < (sizeof(fwrt->smem_cfg.internal_txfifo_size) / sizeof((fwrt->smem_cfg.internal_txfifo_size)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((fwrt->smem_cfg.internal_txfifo_size)), typeof(&(fwrt->smem_cfg.internal_txfifo_size)[0])))); }))); i++) { fifo_hdr = (void *)(*dump_data)->data; fifo_data = (void *)fifo_hdr->data; fifo_len = fwrt->smem_cfg.internal_txfifo_size[i]; if (fifo_len == 0) continue; (*dump_data)->type = (( __le32)(__u32)(IWL_FW_ERROR_DUMP_INTERNAL_TXF)); (*dump_data)->len = (( __le32)(__u32)(fifo_len + sizeof(*fifo_hdr))); fifo_hdr->fifo_num = (( __le32)(__u32)(i)); iwl_trans_write_prph(fwrt->trans, (0xA0053C), i + fwrt->smem_cfg.num_txfifo_entries); fifo_hdr->available_bytes = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xA00538)))); fifo_hdr->wr_ptr = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xA00514)))); fifo_hdr->rd_ptr = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xA00510)))); fifo_hdr->fence_ptr = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xA00518)))); fifo_hdr->fence_mode = (( __le32)(__u32)(iwl_trans_read_prph(fwrt->trans, (0xA00524)))); iwl_trans_write_prph(fwrt->trans, (0xA0054C), (0xA00514)); iwl_trans_read_prph(fwrt->trans, (0xA00548)); fifo_len /= sizeof(u32); for (j = 0; j < fifo_len; j++) fifo_data[j] = iwl_trans_read_prph(fwrt->trans, (0xA00548)); *dump_data = iwl_fw_error_next_data(*dump_data); } } iwl_trans_release_nic_access(fwrt->trans, &flags); } struct iwl_prph_range { u32 start, end; }; static const struct iwl_prph_range iwl_prph_dump_addr_comm[] = { { .start = 0x00a00000, .end = 0x00a00000 }, { .start = 0x00a0000c, .end = 0x00a00024 }, { .start = 0x00a0002c, .end = 0x00a0003c }, { .start = 0x00a00410, .end = 0x00a00418 }, { .start = 0x00a00420, .end = 0x00a00420 }, { .start = 0x00a00428, .end = 0x00a00428 }, { .start = 0x00a00430, .end = 0x00a0043c }, { .start = 0x00a00444, .end = 0x00a00444 }, { .start = 0x00a004c0, .end = 0x00a004cc }, { .start = 0x00a004d8, .end = 0x00a004d8 }, { .start = 0x00a004e0, .end = 0x00a004f0 }, { .start = 0x00a00840, .end = 0x00a00840 }, { .start = 0x00a00850, .end = 0x00a00858 }, { .start = 0x00a01004, .end = 0x00a01008 }, { .start = 0x00a01010, .end = 0x00a01010 }, { .start = 0x00a01018, .end = 0x00a01018 }, { .start = 0x00a01024, .end = 0x00a01024 }, { .start = 0x00a0102c, .end = 0x00a01034 }, { .start = 0x00a0103c, .end = 0x00a01040 }, { .start = 0x00a01048, .end = 0x00a01094 }, { .start = 0x00a01c00, .end = 0x00a01c20 }, { .start = 0x00a01c58, .end = 0x00a01c58 }, { .start = 0x00a01c7c, .end = 0x00a01c7c }, { .start = 0x00a01c28, .end = 0x00a01c54 }, { .start = 0x00a01c5c, .end = 0x00a01c5c }, { .start = 0x00a01c60, .end = 0x00a01cdc }, { .start = 0x00a01ce0, .end = 0x00a01d0c }, { .start = 0x00a01d18, .end = 0x00a01d20 }, { .start = 0x00a01d2c, .end = 0x00a01d30 }, { .start = 0x00a01d40, .end = 0x00a01d5c }, { .start = 0x00a01d80, .end = 0x00a01d80 }, { .start = 0x00a01d98, .end = 0x00a01d9c }, { .start = 0x00a01da8, .end = 0x00a01da8 }, { .start = 0x00a01db8, .end = 0x00a01df4 }, { .start = 0x00a01dc0, .end = 0x00a01dfc }, { .start = 0x00a01e00, .end = 0x00a01e2c }, { .start = 0x00a01e40, .end = 0x00a01e60 }, { .start = 0x00a01e68, .end = 0x00a01e6c }, { .start = 0x00a01e74, .end = 0x00a01e74 }, { .start = 0x00a01e84, .end = 0x00a01e90 }, { .start = 0x00a01e9c, .end = 0x00a01ec4 }, { .start = 0x00a01ed0, .end = 0x00a01ee0 }, { .start = 0x00a01f00, .end = 0x00a01f1c }, { .start = 0x00a01f44, .end = 0x00a01ffc }, { .start = 0x00a02000, .end = 0x00a02048 }, { .start = 0x00a02068, .end = 0x00a020f0 }, { .start = 0x00a02100, .end = 0x00a02118 }, { .start = 0x00a02140, .end = 0x00a0214c }, { .start = 0x00a02168, .end = 0x00a0218c }, { .start = 0x00a021c0, .end = 0x00a021c0 }, { .start = 0x00a02400, .end = 0x00a02410 }, { .start = 0x00a02418, .end = 0x00a02420 }, { .start = 0x00a02428, .end = 0x00a0242c }, { .start = 0x00a02434, .end = 0x00a02434 }, { .start = 0x00a02440, .end = 0x00a02460 }, { .start = 0x00a02468, .end = 0x00a024b0 }, { .start = 0x00a024c8, .end = 0x00a024cc }, { .start = 0x00a02500, .end = 0x00a02504 }, { .start = 0x00a0250c, .end = 0x00a02510 }, { .start = 0x00a02540, .end = 0x00a02554 }, { .start = 0x00a02580, .end = 0x00a025f4 }, { .start = 0x00a02600, .end = 0x00a0260c }, { .start = 0x00a02648, .end = 0x00a02650 }, { .start = 0x00a02680, .end = 0x00a02680 }, { .start = 0x00a026c0, .end = 0x00a026d0 }, { .start = 0x00a02700, .end = 0x00a0270c }, { .start = 0x00a02804, .end = 0x00a02804 }, { .start = 0x00a02818, .end = 0x00a0281c }, { .start = 0x00a02c00, .end = 0x00a02db4 }, { .start = 0x00a02df4, .end = 0x00a02fb0 }, { .start = 0x00a03000, .end = 0x00a03014 }, { .start = 0x00a0301c, .end = 0x00a0302c }, { .start = 0x00a03034, .end = 0x00a03038 }, { .start = 0x00a03040, .end = 0x00a03048 }, { .start = 0x00a03060, .end = 0x00a03068 }, { .start = 0x00a03070, .end = 0x00a03074 }, { .start = 0x00a0307c, .end = 0x00a0307c }, { .start = 0x00a03080, .end = 0x00a03084 }, { .start = 0x00a0308c, .end = 0x00a03090 }, { .start = 0x00a03098, .end = 0x00a03098 }, { .start = 0x00a030a0, .end = 0x00a030a0 }, { .start = 0x00a030a8, .end = 0x00a030b4 }, { .start = 0x00a030bc, .end = 0x00a030bc }, { .start = 0x00a030c0, .end = 0x00a0312c }, { .start = 0x00a03c00, .end = 0x00a03c5c }, { .start = 0x00a04400, .end = 0x00a04454 }, { .start = 0x00a04460, .end = 0x00a04474 }, { .start = 0x00a044c0, .end = 0x00a044ec }, { .start = 0x00a04500, .end = 0x00a04504 }, { .start = 0x00a04510, .end = 0x00a04538 }, { .start = 0x00a04540, .end = 0x00a04548 }, { .start = 0x00a04560, .end = 0x00a0457c }, { .start = 0x00a04590, .end = 0x00a04598 }, { .start = 0x00a045c0, .end = 0x00a045f4 }, }; static const struct iwl_prph_range iwl_prph_dump_addr_9000[] = { { .start = 0x00a05c00, .end = 0x00a05c18 }, { .start = 0x00a05400, .end = 0x00a056e8 }, { .start = 0x00a08000, .end = 0x00a098bc }, { .start = 0x00a02400, .end = 0x00a02758 }, }; static const struct iwl_prph_range iwl_prph_dump_addr_22000[] = { { .start = 0x00a00000, .end = 0x00a00000 }, { .start = 0x00a0000c, .end = 0x00a00024 }, { .start = 0x00a0002c, .end = 0x00a00034 }, { .start = 0x00a0003c, .end = 0x00a0003c }, { .start = 0x00a00410, .end = 0x00a00418 }, { .start = 0x00a00420, .end = 0x00a00420 }, { .start = 0x00a00428, .end = 0x00a00428 }, { .start = 0x00a00430, .end = 0x00a0043c }, { .start = 0x00a00444, .end = 0x00a00444 }, { .start = 0x00a00840, .end = 0x00a00840 }, { .start = 0x00a00850, .end = 0x00a00858 }, { .start = 0x00a01004, .end = 0x00a01008 }, { .start = 0x00a01010, .end = 0x00a01010 }, { .start = 0x00a01018, .end = 0x00a01018 }, { .start = 0x00a01024, .end = 0x00a01024 }, { .start = 0x00a0102c, .end = 0x00a01034 }, { .start = 0x00a0103c, .end = 0x00a01040 }, { .start = 0x00a01048, .end = 0x00a01050 }, { .start = 0x00a01058, .end = 0x00a01058 }, { .start = 0x00a01060, .end = 0x00a01070 }, { .start = 0x00a0108c, .end = 0x00a0108c }, { .start = 0x00a01c20, .end = 0x00a01c28 }, { .start = 0x00a01d10, .end = 0x00a01d10 }, { .start = 0x00a01e28, .end = 0x00a01e2c }, { .start = 0x00a01e60, .end = 0x00a01e60 }, { .start = 0x00a01e80, .end = 0x00a01e80 }, { .start = 0x00a01ea0, .end = 0x00a01ea0 }, { .start = 0x00a02000, .end = 0x00a0201c }, { .start = 0x00a02024, .end = 0x00a02024 }, { .start = 0x00a02040, .end = 0x00a02048 }, { .start = 0x00a020c0, .end = 0x00a020e0 }, { .start = 0x00a02400, .end = 0x00a02404 }, { .start = 0x00a0240c, .end = 0x00a02414 }, { .start = 0x00a0241c, .end = 0x00a0243c }, { .start = 0x00a02448, .end = 0x00a024bc }, { .start = 0x00a024c4, .end = 0x00a024cc }, { .start = 0x00a02508, .end = 0x00a02508 }, { .start = 0x00a02510, .end = 0x00a02514 }, { .start = 0x00a0251c, .end = 0x00a0251c }, { .start = 0x00a0252c, .end = 0x00a0255c }, { .start = 0x00a02564, .end = 0x00a025a0 }, { .start = 0x00a025a8, .end = 0x00a025b4 }, { .start = 0x00a025c0, .end = 0x00a025c0 }, { .start = 0x00a025e8, .end = 0x00a025f4 }, { .start = 0x00a02c08, .end = 0x00a02c18 }, { .start = 0x00a02c2c, .end = 0x00a02c38 }, { .start = 0x00a02c68, .end = 0x00a02c78 }, { .start = 0x00a03000, .end = 0x00a03000 }, { .start = 0x00a03010, .end = 0x00a03014 }, { .start = 0x00a0301c, .end = 0x00a0302c }, { .start = 0x00a03034, .end = 0x00a03038 }, { .start = 0x00a03040, .end = 0x00a03044 }, { .start = 0x00a03060, .end = 0x00a03068 }, { .start = 0x00a03070, .end = 0x00a03070 }, { .start = 0x00a0307c, .end = 0x00a03084 }, { .start = 0x00a0308c, .end = 0x00a03090 }, { .start = 0x00a03098, .end = 0x00a03098 }, { .start = 0x00a030a0, .end = 0x00a030a0 }, { .start = 0x00a030a8, .end = 0x00a030b4 }, { .start = 0x00a030bc, .end = 0x00a030c0 }, { .start = 0x00a030c8, .end = 0x00a030f4 }, { .start = 0x00a03100, .end = 0x00a0312c }, { .start = 0x00a03c00, .end = 0x00a03c5c }, { .start = 0x00a04400, .end = 0x00a04454 }, { .start = 0x00a04460, .end = 0x00a04474 }, { .start = 0x00a044c0, .end = 0x00a044ec }, { .start = 0x00a04500, .end = 0x00a04504 }, { .start = 0x00a04510, .end = 0x00a04538 }, { .start = 0x00a04540, .end = 0x00a04548 }, { .start = 0x00a04560, .end = 0x00a04560 }, { .start = 0x00a04570, .end = 0x00a0457c }, { .start = 0x00a04590, .end = 0x00a04590 }, { .start = 0x00a04598, .end = 0x00a04598 }, { .start = 0x00a045c0, .end = 0x00a045f4 }, { .start = 0x00a05c18, .end = 0x00a05c1c }, { .start = 0x00a0c000, .end = 0x00a0c018 }, { .start = 0x00a0c020, .end = 0x00a0c028 }, { .start = 0x00a0c038, .end = 0x00a0c094 }, { .start = 0x00a0c0c0, .end = 0x00a0c104 }, { .start = 0x00a0c10c, .end = 0x00a0c118 }, { .start = 0x00a0c150, .end = 0x00a0c174 }, { .start = 0x00a0c17c, .end = 0x00a0c188 }, { .start = 0x00a0c190, .end = 0x00a0c198 }, { .start = 0x00a0c1a0, .end = 0x00a0c1a8 }, { .start = 0x00a0c1b0, .end = 0x00a0c1b8 }, }; static const struct iwl_prph_range iwl_prph_dump_addr_ax210[] = { { .start = 0x00d03c00, .end = 0x00d03c64 }, { .start = 0x00d05c18, .end = 0x00d05c1c }, { .start = 0x00d0c000, .end = 0x00d0c174 }, }; static void iwl_read_prph_block(struct iwl_trans *trans, u32 start, u32 len_bytes, __le32 *data) { u32 i; for (i = 0; i < len_bytes; i += 4) *data++ = (( __le32)(__u32)(iwl_read_prph_no_grab(trans, start + i))); } static void iwl_dump_prph(struct iwl_fw_runtime *fwrt, const struct iwl_prph_range *iwl_prph_dump_addr, u32 range_len, void *ptr) { struct iwl_fw_error_dump_prph *prph; struct iwl_trans *trans = fwrt->trans; struct iwl_fw_error_dump_data **data = (struct iwl_fw_error_dump_data **)ptr; unsigned long flags; u32 i; if (!data) return; do { do { extern void __compiletime_assert_590(void) ; if (!(!("WRT PRPH dump\n"[sizeof("WRT PRPH dump\n") - 2] != '\n'))) __compiletime_assert_590(); } while (0); __iwl_dbg((trans)->dev, 0x00000001, false, __func__, "WRT PRPH dump\n"); } while (0); if (!(__builtin_expect(!!((trans)->ops->grab_nic_access(trans, &flags)), 1))) return; for (i = 0; i < range_len; i++) { int num_bytes_in_chunk = iwl_prph_dump_addr[i].end - iwl_prph_dump_addr[i].start + 4; (*data)->type = (( __le32)(__u32)(IWL_FW_ERROR_DUMP_PRPH)); (*data)->len = (( __le32)(__u32)(sizeof(*prph) + num_bytes_in_chunk)); prph = (void *)(*data)->data; prph->prph_start = (( __le32)(__u32)(iwl_prph_dump_addr[i].start)); iwl_read_prph_block(trans, iwl_prph_dump_addr[i].start, iwl_prph_dump_addr[i].end - iwl_prph_dump_addr[i].start + 4, (void *)prph->data); *data = iwl_fw_error_next_data(*data); } iwl_trans_release_nic_access(trans, &flags); } static struct scatterlist *alloc_sgtable(int size) { int alloc_size, nents, i; struct page *new_page; struct scatterlist *iter; struct scatterlist *table; nents = (((size) + (((1UL) << 12)) - 1) / (((1UL) << 12))); table = kcalloc(nents, sizeof(*table), ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u))); if (!table) return ((void *)0); sg_init_table(table, nents); iter = table; for (i = 0, iter = (table); i < (sg_nents(table)); i++, iter = sg_next(iter)) { new_page = alloc_pages(((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u)), 0); if (!new_page) { iter = table; for (i = 0, iter = (table); i < (sg_nents(table)); i++, iter = sg_next(iter)) { new_page = sg_page(iter); if (new_page) __free_pages((new_page), 0); } return ((void *)0); } alloc_size = __builtin_choose_expr(((!!(sizeof((typeof((int)(size)) *)1 == (typeof((int)(((1UL) << 12))) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)((int)(size)) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)((int)(((1UL) << 12))) * 0l)) : (int *)8))))), (((int)(size)) < ((int)(((1UL) << 12))) ? ((int)(size)) : ((int)(((1UL) << 12)))), ({ typeof((int)(size)) __UNIQUE_ID___x502 = ((int)(size)); typeof((int)(((1UL) << 12))) __UNIQUE_ID___y503 = ((int)(((1UL) << 12))); ((__UNIQUE_ID___x502) < (__UNIQUE_ID___y503) ? (__UNIQUE_ID___x502) : (__UNIQUE_ID___y503)); })); size -= ((1UL) << 12); sg_set_page(iter, new_page, alloc_size, 0); } return table; } static void iwl_fw_get_prph_len(struct iwl_fw_runtime *fwrt, const struct iwl_prph_range *iwl_prph_dump_addr, u32 range_len, void *ptr) { u32 *prph_len = (u32 *)ptr; int i, num_bytes_in_chunk; if (!prph_len) return; for (i = 0; i < range_len; i++) { num_bytes_in_chunk = iwl_prph_dump_addr[i].end - iwl_prph_dump_addr[i].start + 4; *prph_len += sizeof(struct iwl_fw_error_dump_data) + sizeof(struct iwl_fw_error_dump_prph) + num_bytes_in_chunk; } } static void iwl_fw_prph_handler(struct iwl_fw_runtime *fwrt, void *ptr, void (*handler)(struct iwl_fw_runtime *, const struct iwl_prph_range *, u32, void *)) { u32 range_len; if (fwrt->trans->cfg->device_family >= IWL_DEVICE_FAMILY_AX210) { range_len = (sizeof(iwl_prph_dump_addr_ax210) / sizeof((iwl_prph_dump_addr_ax210)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((iwl_prph_dump_addr_ax210)), typeof(&(iwl_prph_dump_addr_ax210)[0])))); }))); handler(fwrt, iwl_prph_dump_addr_ax210, range_len, ptr); } else if (fwrt->trans->cfg->device_family >= IWL_DEVICE_FAMILY_22000) { range_len = (sizeof(iwl_prph_dump_addr_22000) / sizeof((iwl_prph_dump_addr_22000)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((iwl_prph_dump_addr_22000)), typeof(&(iwl_prph_dump_addr_22000)[0])))); }))); handler(fwrt, iwl_prph_dump_addr_22000, range_len, ptr); } else { range_len = (sizeof(iwl_prph_dump_addr_comm) / sizeof((iwl_prph_dump_addr_comm)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((iwl_prph_dump_addr_comm)), typeof(&(iwl_prph_dump_addr_comm)[0])))); }))); handler(fwrt, iwl_prph_dump_addr_comm, range_len, ptr); if (fwrt->trans->cfg->mq_rx_supported) { range_len = (sizeof(iwl_prph_dump_addr_9000) / sizeof((iwl_prph_dump_addr_9000)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((iwl_prph_dump_addr_9000)), typeof(&(iwl_prph_dump_addr_9000)[0])))); }))); handler(fwrt, iwl_prph_dump_addr_9000, range_len, ptr); } } } static void iwl_fw_dump_mem(struct iwl_fw_runtime *fwrt, struct iwl_fw_error_dump_data **dump_data, u32 len, u32 ofs, u32 type) { struct iwl_fw_error_dump_mem *dump_mem; if (!len) return; (*dump_data)->type = (( __le32)(__u32)(IWL_FW_ERROR_DUMP_MEM)); (*dump_data)->len = (( __le32)(__u32)(len + sizeof(*dump_mem))); dump_mem = (void *)(*dump_data)->data; dump_mem->type = (( __le32)(__u32)(type)); dump_mem->offset = (( __le32)(__u32)(ofs)); do { if (__builtin_constant_p(len)) do { extern void __compiletime_assert_715(void) ; if (!(!((len) % sizeof(u32)))) __compiletime_assert_715(); } while (0); iwl_trans_read_mem(fwrt->trans, ofs, dump_mem->data, (len) / sizeof(u32)); } while (0); *dump_data = iwl_fw_error_next_data(*dump_data); do { do { extern void __compiletime_assert_718(void) ; if (!(!("WRT memory dump. Type=%u\n"[sizeof("WRT memory dump. Type=%u\n") - 2] != '\n'))) __compiletime_assert_718(); } while (0); __iwl_dbg((fwrt)->dev, 0x00000001, false, __func__, "WRT memory dump. Type=%u\n", dump_mem->type); } while (0); } static int iwl_fw_rxf_len(struct iwl_fw_runtime *fwrt, struct iwl_fwrt_shared_mem_cfg *mem_cfg) { size_t hdr_len = sizeof(struct iwl_fw_error_dump_data) + sizeof(struct iwl_fw_error_dump_fifo); u32 fifo_len = 0; int i; if (!iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_RXF)) return 0; do {size_t item = mem_cfg->rxfifo2_size; fifo_len += (!!item) * hdr_len + item; } while (0); if (({ int __ret_warn_on = !!(mem_cfg->num_lmacs > 2); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (740), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (504)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) mem_cfg->num_lmacs = 2; for (i = 0; i < mem_cfg->num_lmacs; i++) do {size_t item = mem_cfg->lmac[i].rxfifo1_size; fifo_len += (!!item) * hdr_len + item; } while (0); return fifo_len; } static int iwl_fw_txf_len(struct iwl_fw_runtime *fwrt, struct iwl_fwrt_shared_mem_cfg *mem_cfg) { size_t hdr_len = sizeof(struct iwl_fw_error_dump_data) + sizeof(struct iwl_fw_error_dump_fifo); u32 fifo_len = 0; int i; if (!iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_TXF)) goto dump_internal_txf; if (({ int __ret_warn_on = !!(mem_cfg->num_lmacs > 2); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (761), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (505)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) mem_cfg->num_lmacs = 2; for (i = 0; i < mem_cfg->num_lmacs; i++) { int j; for (j = 0; j < mem_cfg->num_txfifo_entries; j++) do {size_t item = mem_cfg->lmac[i].txfifo_size[j]; fifo_len += (!!item) * hdr_len + item; } while (0); } dump_internal_txf: if (!(iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_INTERNAL_TXF) && fw_has_capa(&fwrt->fw->ucode_capa, IWL_UCODE_TLV_CAPA_EXTEND_SHARED_MEM_CFG))) goto out; for (i = 0; i < (sizeof(mem_cfg->internal_txfifo_size) / sizeof((mem_cfg->internal_txfifo_size)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((mem_cfg->internal_txfifo_size)), typeof(&(mem_cfg->internal_txfifo_size)[0])))); }))); i++) do {size_t item = mem_cfg->internal_txfifo_size[i]; fifo_len += (!!item) * hdr_len + item; } while (0); out: return fifo_len; } static void iwl_dump_paging(struct iwl_fw_runtime *fwrt, struct iwl_fw_error_dump_data **data) { int i; do { do { extern void __compiletime_assert_790(void) ; if (!(!("WRT paging dump\n"[sizeof("WRT paging dump\n") - 2] != '\n'))) __compiletime_assert_790(); } while (0); __iwl_dbg((fwrt)->dev, 0x00000001, false, __func__, "WRT paging dump\n"); } while (0); for (i = 1; i < fwrt->num_of_paging_blk + 1; i++) { struct iwl_fw_error_dump_paging *paging; struct page *pages = fwrt->fw_paging_db[i].fw_paging_block; dma_addr_t addr = fwrt->fw_paging_db[i].fw_paging_phys; (*data)->type = (( __le32)(__u32)(IWL_FW_ERROR_DUMP_PAGING)); (*data)->len = (( __le32)(__u32)(sizeof(*paging) + (((((1UL))) << (3)) * ((((1UL))) << (12))))); paging = (void *)(*data)->data; paging->index = (( __le32)(__u32)(i)); dma_sync_single_for_cpu(fwrt->trans->dev, addr, (((((1UL))) << (3)) * ((((1UL))) << (12))), DMA_BIDIRECTIONAL); __memcpy(paging->data, lowmem_page_address(pages), (((((1UL))) << (3)) * ((((1UL))) << (12)))); dma_sync_single_for_device(fwrt->trans->dev, addr, (((((1UL))) << (3)) * ((((1UL))) << (12))), DMA_BIDIRECTIONAL); (*data) = iwl_fw_error_next_data(*data); } } static struct iwl_fw_error_dump_file * iwl_fw_error_dump_file(struct iwl_fw_runtime *fwrt, struct iwl_fw_dump_ptrs *fw_error_dump) { struct iwl_fw_error_dump_file *dump_file; struct iwl_fw_error_dump_data *dump_data; struct iwl_fw_error_dump_info *dump_info; struct iwl_fw_error_dump_smem_cfg *dump_smem_cfg; struct iwl_fw_error_dump_trigger_desc *dump_trig; u32 sram_len, sram_ofs; const struct iwl_fw_dbg_mem_seg_tlv *fw_mem = fwrt->fw->dbg.mem_tlv; struct iwl_fwrt_shared_mem_cfg *mem_cfg = &fwrt->smem_cfg; u32 file_len, fifo_len = 0, prph_len = 0, radio_len = 0; u32 smem_len = fwrt->fw->dbg.n_mem_tlv ? 0 : fwrt->trans->cfg->smem_len; u32 sram2_len = fwrt->fw->dbg.n_mem_tlv ? 0 : fwrt->trans->cfg->dccm2_len; int i; if (!fwrt->trans->cfg->dccm_offset || !fwrt->trans->cfg->dccm_len) { const struct fw_img *img; if (fwrt->cur_fw_img >= IWL_UCODE_TYPE_MAX) return ((void *)0); img = &fwrt->fw->img[fwrt->cur_fw_img]; sram_ofs = img->sec[IWL_UCODE_SECTION_DATA].offset; sram_len = img->sec[IWL_UCODE_SECTION_DATA].len; } else { sram_ofs = fwrt->trans->cfg->dccm_offset; sram_len = fwrt->trans->cfg->dccm_len; } if (test_bit(STATUS_FW_ERROR, &fwrt->trans->status)) { fifo_len = iwl_fw_rxf_len(fwrt, mem_cfg); fifo_len += iwl_fw_txf_len(fwrt, mem_cfg); if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_PRPH)) iwl_fw_prph_handler(fwrt, &prph_len, iwl_fw_get_prph_len); if (fwrt->trans->cfg->device_family == IWL_DEVICE_FAMILY_7000 && iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_RADIO_REG)) radio_len = sizeof(*dump_data) + 0x2ad; } file_len = sizeof(*dump_file) + fifo_len + prph_len + radio_len; if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_DEV_FW_INFO)) file_len += sizeof(*dump_data) + sizeof(*dump_info); if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_MEM_CFG)) file_len += sizeof(*dump_data) + sizeof(*dump_smem_cfg); if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_MEM)) { size_t hdr_len = sizeof(*dump_data) + sizeof(struct iwl_fw_error_dump_mem); if (!fwrt->fw->dbg.n_mem_tlv) do {size_t item = sram_len; file_len += (!!item) * hdr_len + item; } while (0); do {size_t item = smem_len; file_len += (!!item) * hdr_len + item; } while (0); do {size_t item = sram2_len; file_len += (!!item) * hdr_len + item; } while (0); for (i = 0; i < fwrt->fw->dbg.n_mem_tlv; i++) do {size_t item = (( __u32)(__le32)(fw_mem[i].len)); file_len += (!!item) * hdr_len + item; } while (0); } if (iwl_fw_dbg_is_paging_enabled(fwrt)) file_len += fwrt->num_of_paging_blk * (sizeof(*dump_data) + sizeof(struct iwl_fw_error_dump_paging) + (((((1UL))) << (3)) * ((((1UL))) << (12)))); if (iwl_fw_dbg_is_d3_debug_enabled(fwrt) && fwrt->dump.d3_debug_data) { file_len += sizeof(*dump_data) + fwrt->trans->cfg->d3_debug_data_length * 2; } if (fwrt->dump.monitor_only) { file_len = sizeof(*dump_file) + sizeof(*dump_data) * 2 + sizeof(*dump_info) + sizeof(*dump_smem_cfg); } if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_ERROR_INFO) && fwrt->dump.desc) file_len += sizeof(*dump_data) + sizeof(*dump_trig) + fwrt->dump.desc->len; dump_file = vzalloc(file_len); if (!dump_file) return ((void *)0); fw_error_dump->fwrt_ptr = dump_file; dump_file->barker = (( __le32)(__u32)(0x14789632)); dump_data = (void *)dump_file->data; if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_DEV_FW_INFO)) { dump_data->type = (( __le32)(__u32)(IWL_FW_ERROR_DUMP_DEV_FW_INFO)); dump_data->len = (( __le32)(__u32)(sizeof(*dump_info))); dump_info = (void *)dump_data->data; dump_info->hw_type = (( __le32)(__u32)((((fwrt->trans->hw_rev) & 0x000FFF0) >> 4))); dump_info->hw_step = (( __le32)(__u32)((((fwrt->trans->hw_rev) & 0x000000C) >> 2))); __memcpy(dump_info->fw_human_readable, fwrt->fw->human_readable, sizeof(dump_info->fw_human_readable)); strncpy(dump_info->dev_human_readable, fwrt->trans->cfg->name, sizeof(dump_info->dev_human_readable) - 1); strncpy(dump_info->bus_human_readable, fwrt->dev->bus->name, sizeof(dump_info->bus_human_readable) - 1); dump_info->num_of_lmacs = fwrt->smem_cfg.num_lmacs; dump_info->lmac_err_id[0] = (( __le32)(__u32)(fwrt->dump.lmac_err_id[0])); if (fwrt->smem_cfg.num_lmacs > 1) dump_info->lmac_err_id[1] = (( __le32)(__u32)(fwrt->dump.lmac_err_id[1])); dump_info->umac_err_id = (( __le32)(__u32)(fwrt->dump.umac_err_id)); dump_data = iwl_fw_error_next_data(dump_data); } if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_MEM_CFG)) { dump_data->type = (( __le32)(__u32)(IWL_FW_ERROR_DUMP_MEM_CFG)); dump_data->len = (( __le32)(__u32)(sizeof(*dump_smem_cfg))); dump_smem_cfg = (void *)dump_data->data; dump_smem_cfg->num_lmacs = (( __le32)(__u32)(mem_cfg->num_lmacs)); dump_smem_cfg->num_txfifo_entries = (( __le32)(__u32)(mem_cfg->num_txfifo_entries)); for (i = 0; i < 2; i++) { int j; u32 *txf_size = mem_cfg->lmac[i].txfifo_size; for (j = 0; j < 15; j++) dump_smem_cfg->lmac[i].txfifo_size[j] = (( __le32)(__u32)(txf_size[j])); dump_smem_cfg->lmac[i].rxfifo1_size = (( __le32)(__u32)(mem_cfg->lmac[i].rxfifo1_size)); } dump_smem_cfg->rxfifo2_size = (( __le32)(__u32)(mem_cfg->rxfifo2_size)); dump_smem_cfg->internal_txfifo_addr = (( __le32)(__u32)(mem_cfg->internal_txfifo_addr)); for (i = 0; i < 6; i++) { dump_smem_cfg->internal_txfifo_size[i] = (( __le32)(__u32)(mem_cfg->internal_txfifo_size[i])); } dump_data = iwl_fw_error_next_data(dump_data); } if (fifo_len) { iwl_fw_dump_rxf(fwrt, &dump_data); iwl_fw_dump_txf(fwrt, &dump_data); } if (radio_len) iwl_read_radio_regs(fwrt, &dump_data); if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_ERROR_INFO) && fwrt->dump.desc) { dump_data->type = (( __le32)(__u32)(IWL_FW_ERROR_DUMP_ERROR_INFO)); dump_data->len = (( __le32)(__u32)(sizeof(*dump_trig) + fwrt->dump.desc->len)); dump_trig = (void *)dump_data->data; __memcpy(dump_trig, &fwrt->dump.desc->trig_desc, sizeof(*dump_trig) + fwrt->dump.desc->len); dump_data = iwl_fw_error_next_data(dump_data); } if (fwrt->dump.monitor_only) goto out; if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_MEM)) { const struct iwl_fw_dbg_mem_seg_tlv *fw_dbg_mem = fwrt->fw->dbg.mem_tlv; if (!fwrt->fw->dbg.n_mem_tlv) iwl_fw_dump_mem(fwrt, &dump_data, sram_len, sram_ofs, IWL_FW_ERROR_DUMP_MEM_SRAM); for (i = 0; i < fwrt->fw->dbg.n_mem_tlv; i++) { u32 len = (( __u32)(__le32)(fw_dbg_mem[i].len)); u32 ofs = (( __u32)(__le32)(fw_dbg_mem[i].ofs)); iwl_fw_dump_mem(fwrt, &dump_data, len, ofs, (( __u32)(__le32)(fw_dbg_mem[i].data_type))); } iwl_fw_dump_mem(fwrt, &dump_data, smem_len, fwrt->trans->cfg->smem_offset, IWL_FW_ERROR_DUMP_MEM_SMEM); iwl_fw_dump_mem(fwrt, &dump_data, sram2_len, fwrt->trans->cfg->dccm2_offset, IWL_FW_ERROR_DUMP_MEM_SRAM); } if (iwl_fw_dbg_is_d3_debug_enabled(fwrt) && fwrt->dump.d3_debug_data) { u32 addr = fwrt->trans->cfg->d3_debug_data_base_addr; size_t data_size = fwrt->trans->cfg->d3_debug_data_length; dump_data->type = (( __le32)(__u32)(IWL_FW_ERROR_DUMP_D3_DEBUG_DATA)); dump_data->len = (( __le32)(__u32)(data_size * 2)); __memcpy(dump_data->data, fwrt->dump.d3_debug_data, data_size); kfree(fwrt->dump.d3_debug_data); fwrt->dump.d3_debug_data = ((void *)0); do { if (__builtin_constant_p(data_size)) do { extern void __compiletime_assert_1035(void) ; if (!(!((data_size) % sizeof(u32)))) __compiletime_assert_1035(); } while (0); iwl_trans_read_mem(fwrt->trans, addr, dump_data->data + data_size, (data_size) / sizeof(u32)); } while (0); dump_data = iwl_fw_error_next_data(dump_data); } if (iwl_fw_dbg_is_paging_enabled(fwrt)) iwl_dump_paging(fwrt, &dump_data); if (prph_len) iwl_fw_prph_handler(fwrt, &dump_data, iwl_dump_prph); out: dump_file->file_len = (( __le32)(__u32)(file_len)); return dump_file; } static int iwl_dump_ini_prph_iter(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, void *range_ptr, int idx) { struct iwl_fw_ini_error_dump_range *range = range_ptr; __le32 *val = range->data; u32 prph_val; u32 addr = (( __u32)(__le32)(reg->start_addr[idx])) + (( __u32)(__le32)(reg->offset)); int i; range->internal_base_addr = (( __le32)(__u32)(addr)); range->range_data_size = reg->internal.range_data_size; for (i = 0; i < (( __u32)(__le32)(reg->internal.range_data_size)); i += 4) { prph_val = iwl_read_prph(fwrt->trans, addr + i); if (prph_val == 0x5a5a5a5a) return -16; *val++ = (( __le32)(__u32)(prph_val)); } return sizeof(*range) + (( __u32)(__le32)(range->range_data_size)); } static int iwl_dump_ini_csr_iter(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, void *range_ptr, int idx) { struct iwl_fw_ini_error_dump_range *range = range_ptr; __le32 *val = range->data; u32 addr = (( __u32)(__le32)(reg->start_addr[idx])) + (( __u32)(__le32)(reg->offset)); int i; range->internal_base_addr = (( __le32)(__u32)(addr)); range->range_data_size = reg->internal.range_data_size; for (i = 0; i < (( __u32)(__le32)(reg->internal.range_data_size)); i += 4) *val++ = (( __le32)(__u32)(iwl_trans_read32(fwrt->trans, addr + i))); return sizeof(*range) + (( __u32)(__le32)(range->range_data_size)); } static int iwl_dump_ini_dev_mem_iter(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, void *range_ptr, int idx) { struct iwl_fw_ini_error_dump_range *range = range_ptr; u32 addr = (( __u32)(__le32)(reg->start_addr[idx])) + (( __u32)(__le32)(reg->offset)); range->internal_base_addr = (( __le32)(__u32)(addr)); range->range_data_size = reg->internal.range_data_size; do { if (__builtin_constant_p((( __u32)(__le32)(reg->internal.range_data_size)))) do { extern void __compiletime_assert_1101(void) ; if (!(!(((( __u32)(__le32)(reg->internal.range_data_size))) % sizeof(u32)))) __compiletime_assert_1101(); } while (0); iwl_trans_read_mem(fwrt->trans, addr, range->data, ((( __u32)(__le32)(reg->internal.range_data_size))) / sizeof(u32)); } while (0); return sizeof(*range) + (( __u32)(__le32)(range->range_data_size)); } static int iwl_dump_ini_paging_gen2_iter(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, void *range_ptr, int idx) { struct iwl_fw_ini_error_dump_range *range = range_ptr; u32 page_size = fwrt->trans->init_dram.paging[idx].size; range->page_num = (( __le32)(__u32)(idx)); range->range_data_size = (( __le32)(__u32)(page_size)); __memcpy(range->data, fwrt->trans->init_dram.paging[idx].block, page_size); return sizeof(*range) + (( __u32)(__le32)(range->range_data_size)); } static int iwl_dump_ini_paging_iter(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, void *range_ptr, int idx) { struct page *page = fwrt->fw_paging_db[++idx].fw_paging_block; struct iwl_fw_ini_error_dump_range *range = range_ptr; dma_addr_t addr = fwrt->fw_paging_db[idx].fw_paging_phys; u32 page_size = fwrt->fw_paging_db[idx].fw_paging_size; range->page_num = (( __le32)(__u32)(idx)); range->range_data_size = (( __le32)(__u32)(page_size)); dma_sync_single_for_cpu(fwrt->trans->dev, addr, page_size, DMA_BIDIRECTIONAL); __memcpy(range->data, lowmem_page_address(page), page_size); dma_sync_single_for_device(fwrt->trans->dev, addr, page_size, DMA_BIDIRECTIONAL); return sizeof(*range) + (( __u32)(__le32)(range->range_data_size)); } static int iwl_dump_ini_mon_dram_iter(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, void *range_ptr, int idx) { struct iwl_fw_ini_error_dump_range *range = range_ptr; u32 start_addr = iwl_read_umac_prph(fwrt->trans, (0xa03c1c)); if (start_addr == 0x5a5a5a5a) return -16; range->dram_base_addr = (( __le64)(__u64)(start_addr)); range->range_data_size = (( __le32)(__u32)(fwrt->trans->dbg.fw_mon[idx].size)); __memcpy(range->data, fwrt->trans->dbg.fw_mon[idx].block, fwrt->trans->dbg.fw_mon[idx].size); return sizeof(*range) + (( __u32)(__le32)(range->range_data_size)); } struct iwl_ini_txf_iter_data { int fifo; int lmac; u32 fifo_size; bool internal_txf; bool init; }; static bool iwl_ini_txf_iter(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { struct iwl_ini_txf_iter_data *iter = fwrt->dump.fifo_iter; struct iwl_fwrt_shared_mem_cfg *cfg = &fwrt->smem_cfg; int txf_num = cfg->num_txfifo_entries; int int_txf_num = (sizeof(cfg->internal_txfifo_size) / sizeof((cfg->internal_txfifo_size)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((cfg->internal_txfifo_size)), typeof(&(cfg->internal_txfifo_size)[0])))); }))); u32 lmac_bitmap = (( __u32)(__le32)(reg->fifos.fid1)); if (!iter) return false; if (iter->init) { if ((( __u32)(__le32)(reg->offset)) && ({ static bool __attribute__((__section__(".data.once"))) __warned; int __ret_warn_once = !!(cfg->num_lmacs == 1); if (__builtin_expect(!!(__ret_warn_once && !__warned), 0)) { __warned = true; ({ int __ret_warn_on = !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __warn_printk("Invalid lmac offset: 0x%x\n", (( __u32)(__le32)(reg->offset))); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (1190), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (506)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } __builtin_expect(!!(__ret_warn_once), 0); })) return false; iter->init = false; iter->internal_txf = false; iter->fifo_size = 0; iter->fifo = -1; if ((( __u32)(__le32)(reg->offset))) iter->lmac = 1; else iter->lmac = 0; } if (!iter->internal_txf) for (iter->fifo++; iter->fifo < txf_num; iter->fifo++) { iter->fifo_size = cfg->lmac[iter->lmac].txfifo_size[iter->fifo]; if (iter->fifo_size && (lmac_bitmap & ((((1UL))) << (iter->fifo)))) return true; } iter->internal_txf = true; if (!fw_has_capa(&fwrt->fw->ucode_capa, IWL_UCODE_TLV_CAPA_EXTEND_SHARED_MEM_CFG)) return false; for (iter->fifo++; iter->fifo < int_txf_num + txf_num; iter->fifo++) { iter->fifo_size = cfg->internal_txfifo_size[iter->fifo - txf_num]; if (iter->fifo_size && (lmac_bitmap & ((((1UL))) << (iter->fifo)))) return true; } return false; } static int iwl_dump_ini_txf_iter(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, void *range_ptr, int idx) { struct iwl_fw_ini_error_dump_range *range = range_ptr; struct iwl_ini_txf_iter_data *iter; struct iwl_fw_ini_error_dump_register *reg_dump = (void *)range->data; u32 offs = (( __u32)(__le32)(reg->offset)), addr; u32 registers_size = (( __u32)(__le32)(reg->fifos.num_of_registers)) * sizeof(*reg_dump); __le32 *data; unsigned long flags; int i; if (!iwl_ini_txf_iter(fwrt, reg)) return -5; if (!(__builtin_expect(!!((fwrt->trans)->ops->grab_nic_access(fwrt->trans, &flags)), 1))) return -16; iter = fwrt->dump.fifo_iter; range->fifo_hdr.fifo_num = (( __le32)(__u32)(iter->fifo)); range->fifo_hdr.num_of_registers = reg->fifos.num_of_registers; range->range_data_size = (( __le32)(__u32)(iter->fifo_size + registers_size)); iwl_write_prph_no_grab(fwrt->trans, (0xa0043c) + offs, iter->fifo); for (i = 0; i < (( __u32)(__le32)(reg->fifos.num_of_registers)); i++) { addr = (( __u32)(__le32)(reg->start_addr[i])) + offs; reg_dump->addr = (( __le32)(__u32)(addr)); reg_dump->data = (( __le32)(__u32)(iwl_read_prph_no_grab(fwrt->trans, addr))); reg_dump++; } if (reg->fifos.header_only) { range->range_data_size = (( __le32)(__u32)(registers_size)); goto out; } iwl_write_prph_no_grab(fwrt->trans, (0xa0044c) + offs, (0xa00414) + offs); iwl_read_prph_no_grab(fwrt->trans, (0xa00448) + offs); addr = (0xa00448) + offs; data = (void *)reg_dump; for (i = 0; i < iter->fifo_size; i += sizeof(*data)) *data++ = (( __le32)(__u32)(iwl_read_prph_no_grab(fwrt->trans, addr))); out: iwl_trans_release_nic_access(fwrt->trans, &flags); return sizeof(*range) + (( __u32)(__le32)(range->range_data_size)); } struct iwl_ini_rxf_data { u32 fifo_num; u32 size; u32 offset; }; static void iwl_ini_get_rxf_data(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, struct iwl_ini_rxf_data *data) { u32 fid1 = (( __u32)(__le32)(reg->fifos.fid1)); u32 fid2 = (( __u32)(__le32)(reg->fifos.fid2)); u32 fifo_idx; if (!data) return; __memset(data, 0, sizeof(*data)); if (({ int __ret_warn_on = !!((fid1 && fid2) || (!fid1 && !fid2)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (1312), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (507)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return; fifo_idx = ffs(fid1) - 1; if (fid1 && !({ int __ret_warn_on = !!((~((((1UL))) << (fifo_idx)) & fid1) || fifo_idx >= 2); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (1317), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (508)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) { data->size = fwrt->smem_cfg.lmac[fifo_idx].rxfifo1_size; data->fifo_num = fifo_idx; return; } fifo_idx = ffs(fid2) - 1; if (fid2 && !({ int __ret_warn_on = !!(fifo_idx != 0); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (1324), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (509)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) { data->size = fwrt->smem_cfg.rxfifo2_size; data->offset = (0x200); data->fifo_num = fifo_idx | ((((1UL))) << (31)); return; } } static int iwl_dump_ini_rxf_iter(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, void *range_ptr, int idx) { struct iwl_fw_ini_error_dump_range *range = range_ptr; struct iwl_ini_rxf_data rxf_data; struct iwl_fw_ini_error_dump_register *reg_dump = (void *)range->data; u32 offs = (( __u32)(__le32)(reg->offset)), addr; u32 registers_size = (( __u32)(__le32)(reg->fifos.num_of_registers)) * sizeof(*reg_dump); __le32 *data; unsigned long flags; int i; iwl_ini_get_rxf_data(fwrt, reg, &rxf_data); if (!rxf_data.size) return -5; if (!(__builtin_expect(!!((fwrt->trans)->ops->grab_nic_access(fwrt->trans, &flags)), 1))) return -16; range->fifo_hdr.fifo_num = (( __le32)(__u32)(rxf_data.fifo_num)); range->fifo_hdr.num_of_registers = reg->fifos.num_of_registers; range->range_data_size = (( __le32)(__u32)(rxf_data.size + registers_size)); for (i = 0; i < (( __u32)(__le32)(reg->fifos.num_of_registers)); i++) { addr = (( __u32)(__le32)(reg->start_addr[i])) + offs; reg_dump->addr = (( __le32)(__u32)(addr)); reg_dump->data = (( __le32)(__u32)(iwl_read_prph_no_grab(fwrt->trans, addr))); reg_dump++; } if (reg->fifos.header_only) { range->range_data_size = (( __le32)(__u32)(registers_size)); goto out; } offs += rxf_data.offset; iwl_write_prph_no_grab(fwrt->trans, (0xa00c14) + offs, 0x1); iwl_write_prph_no_grab(fwrt->trans, (0xa00c1c) + offs, 0x1); iwl_write_prph_no_grab(fwrt->trans, (0xa00c10) + offs, 0x0); addr = (0xa00c68) + offs; data = (void *)reg_dump; for (i = 0; i < rxf_data.size; i += sizeof(*data)) *data++ = (( __le32)(__u32)(iwl_read_prph_no_grab(fwrt->trans, addr))); out: iwl_trans_release_nic_access(fwrt->trans, &flags); return sizeof(*range) + (( __u32)(__le32)(range->range_data_size)); } static void *iwl_dump_ini_mem_fill_header(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, void *data) { struct iwl_fw_ini_error_dump *dump = data; dump->header.version = (( __le32)(__u32)(1)); return dump->ranges; } static void *iwl_dump_ini_mon_fill_header(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, struct iwl_fw_ini_monitor_dump *data, u32 write_ptr_addr, u32 write_ptr_msk, u32 cycle_cnt_addr, u32 cycle_cnt_msk) { u32 write_ptr, cycle_cnt; unsigned long flags; if (!(__builtin_expect(!!((fwrt->trans)->ops->grab_nic_access(fwrt->trans, &flags)), 1))) { do { do { extern void __compiletime_assert_1427(void) ; if (!(!("Failed to get monitor header\n"[sizeof("Failed to get monitor header\n") - 2] != '\n'))) __compiletime_assert_1427(); } while (0); __iwl_err(((fwrt)->dev), false, false, "Failed to get monitor header\n"); } while (0); return ((void *)0); } write_ptr = iwl_read_prph_no_grab(fwrt->trans, write_ptr_addr); cycle_cnt = iwl_read_prph_no_grab(fwrt->trans, cycle_cnt_addr); iwl_trans_release_nic_access(fwrt->trans, &flags); data->header.version = (( __le32)(__u32)(1)); data->write_ptr = (( __le32)(__u32)(write_ptr & write_ptr_msk)); data->cycle_cnt = (( __le32)(__u32)(cycle_cnt & cycle_cnt_msk)); return data->ranges; } static void *iwl_dump_ini_mon_dram_fill_header(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, void *data) { struct iwl_fw_ini_monitor_dump *mon_dump = (void *)data; u32 write_ptr_addr, write_ptr_msk, cycle_cnt_addr, cycle_cnt_msk; switch (fwrt->trans->cfg->device_family) { case IWL_DEVICE_FAMILY_9000: case IWL_DEVICE_FAMILY_22000: write_ptr_addr = (0xa03c24); write_ptr_msk = -1; cycle_cnt_addr = (0xa03c28); cycle_cnt_msk = -1; break; default: do { do { extern void __compiletime_assert_1461(void) ; if (!(!("Unsupported device family %d\n"[sizeof("Unsupported device family %d\n") - 2] != '\n'))) __compiletime_assert_1461(); } while (0); __iwl_err(((fwrt)->dev), false, false, "Unsupported device family %d\n", fwrt->trans->cfg->device_family); } while (0); return ((void *)0); } return iwl_dump_ini_mon_fill_header(fwrt, reg, mon_dump, write_ptr_addr, write_ptr_msk, cycle_cnt_addr, cycle_cnt_msk); } static void *iwl_dump_ini_mon_smem_fill_header(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, void *data) { struct iwl_fw_ini_monitor_dump *mon_dump = (void *)data; const struct iwl_cfg *cfg = fwrt->trans->cfg; if (fwrt->trans->cfg->device_family != IWL_DEVICE_FAMILY_9000 && fwrt->trans->cfg->device_family != IWL_DEVICE_FAMILY_22000) { do { do { extern void __compiletime_assert_1481(void) ; if (!(!("Unsupported device family %d\n"[sizeof("Unsupported device family %d\n") - 2] != '\n'))) __compiletime_assert_1481(); } while (0); __iwl_err(((fwrt)->dev), false, false, "Unsupported device family %d\n", fwrt->trans->cfg->device_family); } while (0); return ((void *)0); } return iwl_dump_ini_mon_fill_header(fwrt, reg, mon_dump, cfg->fw_mon_smem_write_ptr_addr, cfg->fw_mon_smem_write_ptr_msk, cfg->fw_mon_smem_cycle_cnt_ptr_addr, cfg->fw_mon_smem_cycle_cnt_ptr_msk); } static u32 iwl_dump_ini_mem_ranges(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { return (( __u32)(__le32)(reg->internal.num_of_ranges)); } static u32 iwl_dump_ini_paging_gen2_ranges(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { return fwrt->trans->init_dram.paging_cnt; } static u32 iwl_dump_ini_paging_ranges(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { return fwrt->num_of_paging_blk; } static u32 iwl_dump_ini_mon_dram_ranges(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { return 1; } static u32 iwl_dump_ini_txf_ranges(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { struct iwl_ini_txf_iter_data iter = { .init = true }; void *fifo_iter = fwrt->dump.fifo_iter; u32 num_of_fifos = 0; fwrt->dump.fifo_iter = &iter; while (iwl_ini_txf_iter(fwrt, reg)) num_of_fifos++; fwrt->dump.fifo_iter = fifo_iter; return num_of_fifos; } static u32 iwl_dump_ini_rxf_ranges(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { return 1; } static u32 iwl_dump_ini_mem_get_size(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { return sizeof(struct iwl_fw_ini_error_dump) + iwl_dump_ini_mem_ranges(fwrt, reg) * (sizeof(struct iwl_fw_ini_error_dump_range) + (( __u32)(__le32)(reg->internal.range_data_size))); } static u32 iwl_dump_ini_paging_gen2_get_size(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { int i; u32 range_header_len = sizeof(struct iwl_fw_ini_error_dump_range); u32 size = sizeof(struct iwl_fw_ini_error_dump); for (i = 0; i < iwl_dump_ini_paging_gen2_ranges(fwrt, reg); i++) size += range_header_len + fwrt->trans->init_dram.paging[i].size; return size; } static u32 iwl_dump_ini_paging_get_size(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { int i; u32 range_header_len = sizeof(struct iwl_fw_ini_error_dump_range); u32 size = sizeof(struct iwl_fw_ini_error_dump); for (i = 1; i <= iwl_dump_ini_paging_ranges(fwrt, reg); i++) size += range_header_len + fwrt->fw_paging_db[i].fw_paging_size; return size; } static u32 iwl_dump_ini_mon_dram_get_size(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { u32 size = sizeof(struct iwl_fw_ini_monitor_dump) + sizeof(struct iwl_fw_ini_error_dump_range); if (fwrt->trans->dbg.num_blocks) size += fwrt->trans->dbg.fw_mon[0].size; return size; } static u32 iwl_dump_ini_mon_smem_get_size(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { return sizeof(struct iwl_fw_ini_monitor_dump) + iwl_dump_ini_mem_ranges(fwrt, reg) * (sizeof(struct iwl_fw_ini_error_dump_range) + (( __u32)(__le32)(reg->internal.range_data_size))); } static u32 iwl_dump_ini_txf_get_size(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { struct iwl_ini_txf_iter_data iter = { .init = true }; void *fifo_iter = fwrt->dump.fifo_iter; u32 size = 0; u32 fifo_hdr = sizeof(struct iwl_fw_ini_error_dump_range) + (( __u32)(__le32)(reg->fifos.num_of_registers)) * sizeof(struct iwl_fw_ini_error_dump_register); fwrt->dump.fifo_iter = &iter; while (iwl_ini_txf_iter(fwrt, reg)) { size += fifo_hdr; if (!reg->fifos.header_only) size += iter.fifo_size; } if (size) size += sizeof(struct iwl_fw_ini_error_dump); fwrt->dump.fifo_iter = fifo_iter; return size; } static u32 iwl_dump_ini_rxf_get_size(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg) { struct iwl_ini_rxf_data rx_data; u32 size = sizeof(struct iwl_fw_ini_error_dump) + sizeof(struct iwl_fw_ini_error_dump_range) + (( __u32)(__le32)(reg->fifos.num_of_registers)) * sizeof(struct iwl_fw_ini_error_dump_register); if (reg->fifos.header_only) return size; iwl_ini_get_rxf_data(fwrt, reg, &rx_data); size += rx_data.size; return size; } # 1651 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.c" struct iwl_dump_ini_mem_ops { u32 (*get_num_of_ranges)(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg); u32 (*get_size)(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg); void *(*fill_mem_hdr)(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, void *data); int (*fill_range)(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_cfg *reg, void *range, int idx); }; # 1670 "../drivers/net/wireless/intel/iwlwifi/fw/dbg.c" static void iwl_dump_ini_mem(struct iwl_fw_runtime *fwrt, struct iwl_fw_error_dump_data **data, struct iwl_fw_ini_region_cfg *reg, struct iwl_dump_ini_mem_ops *ops) { struct iwl_fw_ini_error_dump_header *header = (void *)(*data)->data; u32 num_of_ranges, i, type = (( __u32)(__le32)(reg->region_type)), size; void *range; if (({ int __ret_warn_on = !!(!ops || !ops->get_num_of_ranges || !ops->get_size || !ops->fill_mem_hdr || !ops->fill_range); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (1681), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (510)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return; size = ops->get_size(fwrt, reg); if (!size) return; do { do { extern void __compiletime_assert_1689(void) ; if (!(!("WRT: collecting region: id=%d, type=%d\n"[sizeof("WRT: collecting region: id=%d, type=%d\n") - 2] != '\n'))) __compiletime_assert_1689(); } while (0); __iwl_dbg((fwrt)->dev, 0x00010000, false, __func__, "WRT: collecting region: id=%d, type=%d\n", (( __u32)(__le32)(reg->region_id)), type); } while (0); num_of_ranges = ops->get_num_of_ranges(fwrt, reg); (*data)->type = (( __le32)(__u32)(type)); (*data)->len = (( __le32)(__u32)(size)); header->region_id = reg->region_id; header->num_of_ranges = (( __le32)(__u32)(num_of_ranges)); header->name_len = (( __le32)(__u32)(__builtin_choose_expr(((!!(sizeof((typeof((int)(32)) *)1 == (typeof((int)((( __u32)(__le32)(reg->name_len)))) *)1))) && ((sizeof(int) == sizeof(*(8 ? ((void *)((long)((int)(32)) * 0l)) : (int *)8))) && (sizeof(int) == sizeof(*(8 ? ((void *)((long)((int)((( __u32)(__le32)(reg->name_len)))) * 0l)) : (int *)8))))), (((int)(32)) < ((int)((( __u32)(__le32)(reg->name_len)))) ? ((int)(32)) : ((int)((( __u32)(__le32)(reg->name_len))))), ({ typeof((int)(32)) __UNIQUE_ID___x511 = ((int)(32)); typeof((int)((( __u32)(__le32)(reg->name_len)))) __UNIQUE_ID___y512 = ((int)((( __u32)(__le32)(reg->name_len)))); ((__UNIQUE_ID___x511) < (__UNIQUE_ID___y512) ? (__UNIQUE_ID___x511) : (__UNIQUE_ID___y512)); })))); __memcpy(header->name, reg->name, (( __u32)(__le32)(header->name_len))); range = ops->fill_mem_hdr(fwrt, reg, header); if (!range) { do { do { extern void __compiletime_assert_1706(void) ; if (!(!("WRT: failed to fill region header: id=%d, type=%d\n"[sizeof("WRT: failed to fill region header: id=%d, type=%d\n") - 2] != '\n'))) __compiletime_assert_1706(); } while (0); __iwl_err(((fwrt)->dev), false, false, "WRT: failed to fill region header: id=%d, type=%d\n", (( __u32)(__le32)(reg->region_id)), type); } while (0); __memset(*data, 0, size); return; } for (i = 0; i < num_of_ranges; i++) { int range_size = ops->fill_range(fwrt, reg, range, i); if (range_size < 0) { do { do { extern void __compiletime_assert_1717(void) ; if (!(!("WRT: failed to dump region: id=%d, type=%d\n"[sizeof("WRT: failed to dump region: id=%d, type=%d\n") - 2] != '\n'))) __compiletime_assert_1717(); } while (0); __iwl_err(((fwrt)->dev), false, false, "WRT: failed to dump region: id=%d, type=%d\n", (( __u32)(__le32)(reg->region_id)), type); } while (0); __memset(*data, 0, size); return; } range = range + range_size; } *data = iwl_fw_error_next_data(*data); } static void iwl_dump_ini_info(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_trigger *trigger, struct iwl_fw_error_dump_data **data) { struct iwl_fw_ini_dump_info *dump = (void *)(*data)->data; u32 reg_ids_size = (( __u32)(__le32)(trigger->num_regions)) * sizeof(__le32); (*data)->type = (( __le32)(__u32)(((((1UL))) << (31)))); (*data)->len = (( __le32)(__u32)(sizeof(*dump) + reg_ids_size)); dump->version = (( __le32)(__u32)(1)); dump->trigger_id = trigger->trigger_id; dump->is_external_cfg = (( __le32)(__u32)(fwrt->trans->dbg.external_ini_loaded)); dump->ver_type = (( __le32)(__u32)(fwrt->dump.fw_ver.type)); dump->ver_subtype = (( __le32)(__u32)(fwrt->dump.fw_ver.subtype)); dump->hw_step = (( __le32)(__u32)((((fwrt->trans->hw_rev) & 0x000000C) >> 2))); dump->hw_type = (( __le32)(__u32)((((fwrt->trans->hw_rev) & 0x000FFF0) >> 4))); dump->rf_id_flavor = (( __le32)(__u32)((((fwrt->trans->hw_rf_id) & 0x000000F) >> 0))); dump->rf_id_dash = (( __le32)(__u32)((((fwrt->trans->hw_rf_id) & 0x00000F0) >> 4))); dump->rf_id_step = (( __le32)(__u32)((((fwrt->trans->hw_rf_id) & 0x0000F00) >> 8))); dump->rf_id_type = (( __le32)(__u32)((((fwrt->trans->hw_rf_id) & 0x0FFF000) >> 12))); dump->lmac_major = (( __le32)(__u32)(fwrt->dump.fw_ver.lmac_major)); dump->lmac_minor = (( __le32)(__u32)(fwrt->dump.fw_ver.lmac_minor)); dump->umac_major = (( __le32)(__u32)(fwrt->dump.fw_ver.umac_major)); dump->umac_minor = (( __le32)(__u32)(fwrt->dump.fw_ver.umac_minor)); dump->build_tag_len = (( __le32)(__u32)(sizeof(dump->build_tag))); __memcpy(dump->build_tag, fwrt->fw->human_readable, sizeof(dump->build_tag)); dump->img_name_len = (( __le32)(__u32)(sizeof(dump->img_name))); __memcpy(dump->img_name, fwrt->dump.img_name, sizeof(dump->img_name)); dump->internal_dbg_cfg_name_len = (( __le32)(__u32)(sizeof(dump->internal_dbg_cfg_name))); __memcpy(dump->internal_dbg_cfg_name, fwrt->dump.internal_dbg_cfg_name, sizeof(dump->internal_dbg_cfg_name)); dump->external_dbg_cfg_name_len = (( __le32)(__u32)(sizeof(dump->external_dbg_cfg_name))); __memcpy(dump->external_dbg_cfg_name, fwrt->dump.external_dbg_cfg_name, sizeof(dump->external_dbg_cfg_name)); dump->regions_num = trigger->num_regions; __memcpy(dump->region_ids, trigger->data, reg_ids_size); *data = iwl_fw_error_next_data(*data); } static int iwl_fw_ini_get_trigger_len(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_trigger *trigger) { int i, ret_size = 0, hdr_len = sizeof(struct iwl_fw_error_dump_data); u32 size; if (!trigger || !trigger->num_regions) return 0; for (i = 0; i < (( __u32)(__le32)(trigger->num_regions)); i++) { u32 reg_id = (( __u32)(__le32)(trigger->data[i])); struct iwl_fw_ini_region_cfg *reg; if (({ int __ret_warn_on = !!(reg_id >= (sizeof(fwrt->dump.active_regs) / sizeof((fwrt->dump.active_regs)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((fwrt->dump.active_regs)), typeof(&(fwrt->dump.active_regs)[0])))); })))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (1799), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (513)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) continue; reg = fwrt->dump.active_regs[reg_id]; if (!reg) { do { do { extern void __compiletime_assert_1806(void) ; if (!(!("WRT: unassigned region id %d, skipping\n"[sizeof("WRT: unassigned region id %d, skipping\n") - 2] != '\n'))) __compiletime_assert_1806(); } while (0); __iwl_warn((fwrt)->dev, "WRT: unassigned region id %d, skipping\n", reg_id); } while (0); continue; } if ((( __u32)(__le32)(reg->domain)) != IWL_FW_INI_DBG_DOMAIN_ALWAYS_ON) continue; switch ((( __u32)(__le32)(reg->region_type))) { case IWL_FW_INI_REGION_DEVICE_MEMORY: case IWL_FW_INI_REGION_PERIPHERY_MAC: case IWL_FW_INI_REGION_PERIPHERY_PHY: case IWL_FW_INI_REGION_PERIPHERY_AUX: case IWL_FW_INI_REGION_CSR: case IWL_FW_INI_REGION_LMAC_ERROR_TABLE: case IWL_FW_INI_REGION_UMAC_ERROR_TABLE: size = iwl_dump_ini_mem_get_size(fwrt, reg); if (size) ret_size += hdr_len + size; break; case IWL_FW_INI_REGION_TXF: size = iwl_dump_ini_txf_get_size(fwrt, reg); if (size) ret_size += hdr_len + size; break; case IWL_FW_INI_REGION_RXF: size = iwl_dump_ini_rxf_get_size(fwrt, reg); if (size) ret_size += hdr_len + size; break; case IWL_FW_INI_REGION_PAGING: if (iwl_fw_dbg_is_paging_enabled(fwrt)) size = iwl_dump_ini_paging_get_size(fwrt, reg); else size = iwl_dump_ini_paging_gen2_get_size(fwrt, reg); if (size) ret_size += hdr_len + size; break; case IWL_FW_INI_REGION_DRAM_BUFFER: if (!fwrt->trans->dbg.num_blocks) break; size = iwl_dump_ini_mon_dram_get_size(fwrt, reg); if (size) ret_size += hdr_len + size; break; case IWL_FW_INI_REGION_INTERNAL_BUFFER: size = iwl_dump_ini_mon_smem_get_size(fwrt, reg); if (size) ret_size += hdr_len + size; break; case IWL_FW_INI_REGION_DRAM_IMR: default: break; } } if (ret_size) ret_size += hdr_len + sizeof(struct iwl_fw_ini_dump_info) + ((( __u32)(__le32)(trigger->num_regions)) * sizeof(__le32)); return ret_size; } static void iwl_fw_ini_dump_trigger(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_trigger *trigger, struct iwl_fw_error_dump_data **data) { int i, num = (( __u32)(__le32)(trigger->num_regions)); iwl_dump_ini_info(fwrt, trigger, data); for (i = 0; i < num; i++) { u32 reg_id = (( __u32)(__le32)(trigger->data[i])); struct iwl_fw_ini_region_cfg *reg; struct iwl_dump_ini_mem_ops ops; if (reg_id >= (sizeof(fwrt->dump.active_regs) / sizeof((fwrt->dump.active_regs)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((fwrt->dump.active_regs)), typeof(&(fwrt->dump.active_regs)[0])))); })))) continue; reg = fwrt->dump.active_regs[reg_id]; if (!reg) continue; if ((( __u32)(__le32)(reg->domain)) != IWL_FW_INI_DBG_DOMAIN_ALWAYS_ON) continue; switch ((( __u32)(__le32)(reg->region_type))) { case IWL_FW_INI_REGION_DEVICE_MEMORY: case IWL_FW_INI_REGION_LMAC_ERROR_TABLE: case IWL_FW_INI_REGION_UMAC_ERROR_TABLE: ops.get_num_of_ranges = iwl_dump_ini_mem_ranges; ops.get_size = iwl_dump_ini_mem_get_size; ops.fill_mem_hdr = iwl_dump_ini_mem_fill_header; ops.fill_range = iwl_dump_ini_dev_mem_iter; iwl_dump_ini_mem(fwrt, data, reg, &ops); break; case IWL_FW_INI_REGION_PERIPHERY_MAC: case IWL_FW_INI_REGION_PERIPHERY_PHY: case IWL_FW_INI_REGION_PERIPHERY_AUX: ops.get_num_of_ranges = iwl_dump_ini_mem_ranges; ops.get_size = iwl_dump_ini_mem_get_size; ops.fill_mem_hdr = iwl_dump_ini_mem_fill_header; ops.fill_range = iwl_dump_ini_prph_iter; iwl_dump_ini_mem(fwrt, data, reg, &ops); break; case IWL_FW_INI_REGION_DRAM_BUFFER: ops.get_num_of_ranges = iwl_dump_ini_mon_dram_ranges; ops.get_size = iwl_dump_ini_mon_dram_get_size; ops.fill_mem_hdr = iwl_dump_ini_mon_dram_fill_header; ops.fill_range = iwl_dump_ini_mon_dram_iter; iwl_dump_ini_mem(fwrt, data, reg, &ops); break; case IWL_FW_INI_REGION_INTERNAL_BUFFER: ops.get_num_of_ranges = iwl_dump_ini_mem_ranges; ops.get_size = iwl_dump_ini_mon_smem_get_size; ops.fill_mem_hdr = iwl_dump_ini_mon_smem_fill_header; ops.fill_range = iwl_dump_ini_dev_mem_iter; iwl_dump_ini_mem(fwrt, data, reg, &ops); break; case IWL_FW_INI_REGION_PAGING: ops.fill_mem_hdr = iwl_dump_ini_mem_fill_header; if (iwl_fw_dbg_is_paging_enabled(fwrt)) { ops.get_num_of_ranges = iwl_dump_ini_paging_ranges; ops.get_size = iwl_dump_ini_paging_get_size; ops.fill_range = iwl_dump_ini_paging_iter; } else { ops.get_num_of_ranges = iwl_dump_ini_paging_gen2_ranges; ops.get_size = iwl_dump_ini_paging_gen2_get_size; ops.fill_range = iwl_dump_ini_paging_gen2_iter; } iwl_dump_ini_mem(fwrt, data, reg, &ops); break; case IWL_FW_INI_REGION_TXF: { struct iwl_ini_txf_iter_data iter = { .init = true }; void *fifo_iter = fwrt->dump.fifo_iter; fwrt->dump.fifo_iter = &iter; ops.get_num_of_ranges = iwl_dump_ini_txf_ranges; ops.get_size = iwl_dump_ini_txf_get_size; ops.fill_mem_hdr = iwl_dump_ini_mem_fill_header; ops.fill_range = iwl_dump_ini_txf_iter; iwl_dump_ini_mem(fwrt, data, reg, &ops); fwrt->dump.fifo_iter = fifo_iter; break; } case IWL_FW_INI_REGION_RXF: ops.get_num_of_ranges = iwl_dump_ini_rxf_ranges; ops.get_size = iwl_dump_ini_rxf_get_size; ops.fill_mem_hdr = iwl_dump_ini_mem_fill_header; ops.fill_range = iwl_dump_ini_rxf_iter; iwl_dump_ini_mem(fwrt, data, reg, &ops); break; case IWL_FW_INI_REGION_CSR: ops.get_num_of_ranges = iwl_dump_ini_mem_ranges; ops.get_size = iwl_dump_ini_mem_get_size; ops.fill_mem_hdr = iwl_dump_ini_mem_fill_header; ops.fill_range = iwl_dump_ini_csr_iter; iwl_dump_ini_mem(fwrt, data, reg, &ops); break; case IWL_FW_INI_REGION_DRAM_IMR: default: break; } } } static struct iwl_fw_error_dump_file * iwl_fw_error_ini_dump_file(struct iwl_fw_runtime *fwrt, enum iwl_fw_ini_trigger_id trig_id) { int size; struct iwl_fw_error_dump_data *dump_data; struct iwl_fw_error_dump_file *dump_file; struct iwl_fw_ini_trigger *trigger; if (!iwl_fw_ini_trigger_on(fwrt, trig_id)) return ((void *)0); trigger = fwrt->dump.active_trigs[trig_id].trig; size = iwl_fw_ini_get_trigger_len(fwrt, trigger); if (!size) return ((void *)0); size += sizeof(*dump_file); dump_file = vzalloc(size); if (!dump_file) return ((void *)0); dump_file->barker = (( __le32)(__u32)(0x14789633)); dump_data = (void *)dump_file->data; dump_file->file_len = (( __le32)(__u32)(size)); iwl_fw_ini_dump_trigger(fwrt, trigger, &dump_data); return dump_file; } static void iwl_fw_error_dump(struct iwl_fw_runtime *fwrt) { struct iwl_fw_dump_ptrs fw_error_dump = {}; struct iwl_fw_error_dump_file *dump_file; struct scatterlist *sg_dump_data; u32 file_len; u32 dump_mask = fwrt->fw->dbg.dump_mask; dump_file = iwl_fw_error_dump_file(fwrt, &fw_error_dump); if (!dump_file) goto out; if (fwrt->dump.monitor_only) dump_mask &= IWL_FW_ERROR_DUMP_FW_MONITOR; fw_error_dump.trans_ptr = iwl_trans_dump_data(fwrt->trans, dump_mask); file_len = (( __u32)(__le32)(dump_file->file_len)); fw_error_dump.fwrt_len = file_len; if (fw_error_dump.trans_ptr) { file_len += fw_error_dump.trans_ptr->len; dump_file->file_len = (( __le32)(__u32)(file_len)); } sg_dump_data = alloc_sgtable(file_len); if (sg_dump_data) { sg_pcopy_from_buffer(sg_dump_data, sg_nents(sg_dump_data), fw_error_dump.fwrt_ptr, fw_error_dump.fwrt_len, 0); if (fw_error_dump.trans_ptr) sg_pcopy_from_buffer(sg_dump_data, sg_nents(sg_dump_data), fw_error_dump.trans_ptr->data, fw_error_dump.trans_ptr->len, fw_error_dump.fwrt_len); dev_coredumpsg(fwrt->trans->dev, sg_dump_data, file_len, ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u))); } vfree(fw_error_dump.fwrt_ptr); vfree(fw_error_dump.trans_ptr); out: iwl_fw_free_dump_desc(fwrt); } static void iwl_fw_error_ini_dump(struct iwl_fw_runtime *fwrt, u8 wk_idx) { enum iwl_fw_ini_trigger_id trig_id = fwrt->dump.wks[wk_idx].ini_trig_id; struct iwl_fw_error_dump_file *dump_file; struct scatterlist *sg_dump_data; u32 file_len; dump_file = iwl_fw_error_ini_dump_file(fwrt, trig_id); if (!dump_file) goto out; file_len = (( __u32)(__le32)(dump_file->file_len)); sg_dump_data = alloc_sgtable(file_len); if (sg_dump_data) { sg_pcopy_from_buffer(sg_dump_data, sg_nents(sg_dump_data), dump_file, file_len, 0); dev_coredumpsg(fwrt->trans->dev, sg_dump_data, file_len, ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u))); } vfree(dump_file); out: fwrt->dump.wks[wk_idx].ini_trig_id = IWL_FW_TRIGGER_ID_INVALID; } const struct iwl_fw_dump_desc iwl_dump_desc_assert = { .trig_desc = { .type = (( __le32)(__u32)(FW_DBG_TRIGGER_FW_ASSERT)), }, }; ; int iwl_fw_dbg_collect_desc(struct iwl_fw_runtime *fwrt, const struct iwl_fw_dump_desc *desc, bool monitor_only, unsigned int delay) { u32 trig_type = (( __u32)(__le32)(desc->trig_desc.type)); int ret; if (fwrt->trans->dbg.ini_valid) { ret = iwl_fw_dbg_ini_collect(fwrt, trig_type); if (!ret) iwl_fw_free_dump_desc(fwrt); return ret; } if (test_and_set_bit(fwrt->dump.wks[0].idx, &fwrt->dump.active_wks)) return -16; if (({ int __ret_warn_on = !!(fwrt->dump.desc); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (2115), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (514)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) iwl_fw_free_dump_desc(fwrt); do { do { extern void __compiletime_assert_2119(void) ; if (!(!("Collecting data: trigger %d fired.\n"[sizeof("Collecting data: trigger %d fired.\n") - 2] != '\n'))) __compiletime_assert_2119(); } while (0); __iwl_warn((fwrt)->dev, "Collecting data: trigger %d fired.\n", (( __u32)(__le32)(desc->trig_desc.type))); } while (0); fwrt->dump.desc = desc; fwrt->dump.monitor_only = monitor_only; schedule_delayed_work(&fwrt->dump.wks[0].wk, usecs_to_jiffies(delay)); return 0; } ; int iwl_fw_dbg_error_collect(struct iwl_fw_runtime *fwrt, enum iwl_fw_dbg_trigger trig_type) { int ret; struct iwl_fw_dump_desc *iwl_dump_error_desc; if (!test_bit(STATUS_DEVICE_ENABLED, &fwrt->trans->status)) return -5; iwl_dump_error_desc = kmalloc(sizeof(*iwl_dump_error_desc), ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u))); if (!iwl_dump_error_desc) return -12; iwl_dump_error_desc->trig_desc.type = (( __le32)(__u32)(trig_type)); iwl_dump_error_desc->len = 0; ret = iwl_fw_dbg_collect_desc(fwrt, iwl_dump_error_desc, false, 0); if (ret) kfree(iwl_dump_error_desc); else iwl_trans_sync_nmi(fwrt->trans); return ret; } ; int iwl_fw_dbg_collect(struct iwl_fw_runtime *fwrt, enum iwl_fw_dbg_trigger trig, const char *str, size_t len, struct iwl_fw_dbg_trigger_tlv *trigger) { struct iwl_fw_dump_desc *desc; unsigned int delay = 0; bool monitor_only = false; if (trigger) { u16 occurrences = (( __u16)(__le16)(trigger->occurrences)) - 1; if (!(( __u16)(__le16)(trigger->occurrences))) return 0; if (trigger->flags & IWL_FW_DBG_FORCE_RESTART) { do { do { extern void __compiletime_assert_2173(void) ; if (!(!("Force restart: trigger %d fired.\n"[sizeof("Force restart: trigger %d fired.\n") - 2] != '\n'))) __compiletime_assert_2173(); } while (0); __iwl_warn((fwrt)->dev, "Force restart: trigger %d fired.\n", trig); } while (0); iwl_force_nmi(fwrt->trans); return 0; } trigger->occurrences = (( __le16)(__u16)(occurrences)); monitor_only = trigger->mode & IWL_FW_DBG_TRIGGER_MONITOR_ONLY; delay = (( __u32)(__le32)(trigger->stop_delay)) * 1000L; } desc = kzalloc(sizeof(*desc) + len, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u))); if (!desc) return -12; desc->len = len; desc->trig_desc.type = (( __le32)(__u32)(trig)); __memcpy(desc->trig_desc.data, str, len); return iwl_fw_dbg_collect_desc(fwrt, desc, monitor_only, delay); } ; int _iwl_fw_dbg_ini_collect(struct iwl_fw_runtime *fwrt, enum iwl_fw_ini_trigger_id id) { struct iwl_fw_ini_active_triggers *active; u32 occur, delay; unsigned long idx; if (({ int __ret_warn_on = !!(!iwl_fw_ini_trigger_on(fwrt, id)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { printk("\001" "4" "------------[ cut here ]------------\n"); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (2205), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (515)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return -22; if (!iwl_fw_ini_trigger_on(fwrt, id)) { do { do { extern void __compiletime_assert_2210(void) ; if (!(!("WRT: Trigger %d is not active, aborting dump\n"[sizeof("WRT: Trigger %d is not active, aborting dump\n") - 2] != '\n'))) __compiletime_assert_2210(); } while (0); __iwl_warn((fwrt)->dev, "WRT: Trigger %d is not active, aborting dump\n", id); } while (0); return -22; } active = &fwrt->dump.active_trigs[id]; delay = (( __u32)(__le32)(active->trig->dump_delay)); occur = (( __u32)(__le32)(active->trig->occurrences)); if (!occur) return 0; active->trig->occurrences = (( __le32)(__u32)(--occur)); if ((( __u32)(__le32)(active->trig->force_restart))) { do { do { extern void __compiletime_assert_2223(void) ; if (!(!("WRT: force restart: trigger %d fired.\n"[sizeof("WRT: force restart: trigger %d fired.\n") - 2] != '\n'))) __compiletime_assert_2223(); } while (0); __iwl_warn((fwrt)->dev, "WRT: force restart: trigger %d fired.\n", id); } while (0); iwl_force_nmi(fwrt->trans); return 0; } if (fwrt->dump.active_wks == ~0UL) return -16; idx = ffz(fwrt->dump.active_wks); if (idx >= 5 || test_and_set_bit(fwrt->dump.wks[idx].idx, &fwrt->dump.active_wks)) return -16; fwrt->dump.wks[idx].ini_trig_id = id; do { do { extern void __compiletime_assert_2243(void) ; if (!(!("WRT: collecting data: ini trigger %d fired.\n"[sizeof("WRT: collecting data: ini trigger %d fired.\n") - 2] != '\n'))) __compiletime_assert_2243(); } while (0); __iwl_warn((fwrt)->dev, "WRT: collecting data: ini trigger %d fired.\n", id); } while (0); schedule_delayed_work(&fwrt->dump.wks[idx].wk, usecs_to_jiffies(delay)); return 0; } ; int iwl_fw_dbg_ini_collect(struct iwl_fw_runtime *fwrt, u32 legacy_trigger_id) { int id; switch (legacy_trigger_id) { case FW_DBG_TRIGGER_FW_ASSERT: case FW_DBG_TRIGGER_ALIVE_TIMEOUT: case FW_DBG_TRIGGER_DRIVER: id = IWL_FW_TRIGGER_ID_FW_ASSERT; break; case FW_DBG_TRIGGER_USER: id = IWL_FW_TRIGGER_ID_USER_TRIGGER; break; default: return -5; } return _iwl_fw_dbg_ini_collect(fwrt, id); } ; int iwl_fw_dbg_collect_trig(struct iwl_fw_runtime *fwrt, struct iwl_fw_dbg_trigger_tlv *trigger, const char *fmt, ...) { int ret, len = 0; char buf[64]; if (fmt) { va_list ap; buf[sizeof(buf) - 1] = '\0'; __builtin_va_start(ap, fmt); vsnprintf(buf, sizeof(buf), fmt, ap); __builtin_va_end(ap); if (({ int __ret_warn_on = !!(buf[sizeof(buf) - 1]); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (2289), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (516)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) buf[sizeof(buf) - 1] = '\0'; len = strlen(buf) + 1; } ret = iwl_fw_dbg_collect(fwrt, (( __u32)(__le32)(trigger->id)), buf, len, trigger); if (ret) return ret; return 0; } ; int iwl_fw_start_dbg_conf(struct iwl_fw_runtime *fwrt, u8 conf_id) { u8 *ptr; int ret; int i; if (({ static bool __attribute__((__section__(".data.once"))) __warned; int __ret_warn_once = !!(conf_id >= (sizeof(fwrt->fw->dbg.conf_tlv) / sizeof((fwrt->fw->dbg.conf_tlv)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((fwrt->fw->dbg.conf_tlv)), typeof(&(fwrt->fw->dbg.conf_tlv)[0])))); })))); if (__builtin_expect(!!(__ret_warn_once && !__warned), 0)) { __warned = true; ({ int __ret_warn_on = !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __warn_printk("Invalid configuration %d\n", conf_id); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (2312), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (517)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } __builtin_expect(!!(__ret_warn_once), 0); })) return -22; if ((!fwrt->fw->dbg.conf_tlv[conf_id] || !fwrt->fw->dbg.conf_tlv[conf_id]->num_of_hcmds) && conf_id == 0) return 0; if (!fwrt->fw->dbg.conf_tlv[conf_id]) return -22; if (fwrt->dump.conf != 0xff) do { do { extern void __compiletime_assert_2326(void) ; if (!(!("FW already configured (%d) - re-configuring\n"[sizeof("FW already configured (%d) - re-configuring\n") - 2] != '\n'))) __compiletime_assert_2326(); } while (0); __iwl_warn((fwrt)->dev, "FW already configured (%d) - re-configuring\n", fwrt->dump.conf); } while (0); ptr = (void *)&fwrt->fw->dbg.conf_tlv[conf_id]->hcmd; for (i = 0; i < fwrt->fw->dbg.conf_tlv[conf_id]->num_of_hcmds; i++) { struct iwl_fw_dbg_conf_hcmd *cmd = (void *)ptr; struct iwl_host_cmd hcmd = { .id = cmd->id, .len = { (( __u16)(__le16)(cmd->len)), }, .data = { cmd->data, }, }; ret = iwl_trans_send_cmd(fwrt->trans, &hcmd); if (ret) return ret; ptr += sizeof(*cmd); ptr += (( __u16)(__le16)(cmd->len)); } fwrt->dump.conf = conf_id; return 0; } ; static void iwl_fw_dbg_collect_sync(struct iwl_fw_runtime *fwrt, u8 wk_idx) { struct iwl_fw_dbg_params params = {0}; if (!test_bit(wk_idx, &fwrt->dump.active_wks)) return; if (fwrt->ops && fwrt->ops->fw_running && !fwrt->ops->fw_running(fwrt->ops_ctx)) { do { do { extern void __compiletime_assert_2364(void) ; if (!(!("Firmware not running - cannot dump error\n"[sizeof("Firmware not running - cannot dump error\n") - 2] != '\n'))) __compiletime_assert_2364(); } while (0); __iwl_err(((fwrt)->dev), false, false, "Firmware not running - cannot dump error\n"); } while (0); iwl_fw_free_dump_desc(fwrt); goto out; } if (test_bit(STATUS_TRANS_DEAD, &fwrt->trans->status)) { do { do { extern void __compiletime_assert_2371(void) ; if (!(!("Skip fw error dump since bus is dead\n"[sizeof("Skip fw error dump since bus is dead\n") - 2] != '\n'))) __compiletime_assert_2371(); } while (0); __iwl_err(((fwrt)->dev), false, false, "Skip fw error dump since bus is dead\n"); } while (0); goto out; } iwl_fw_dbg_stop_recording(fwrt->trans, ¶ms); do { do { extern void __compiletime_assert_2377(void) ; if (!(!("WRT: data collection start\n"[sizeof("WRT: data collection start\n") - 2] != '\n'))) __compiletime_assert_2377(); } while (0); __iwl_dbg((fwrt)->dev, 0x00000001 | 0x00010000, false, __func__, "WRT: data collection start\n"); } while (0); if (fwrt->trans->dbg.ini_valid) iwl_fw_error_ini_dump(fwrt, wk_idx); else iwl_fw_error_dump(fwrt); do { do { extern void __compiletime_assert_2382(void) ; if (!(!("WRT: data collection done\n"[sizeof("WRT: data collection done\n") - 2] != '\n'))) __compiletime_assert_2382(); } while (0); __iwl_dbg((fwrt)->dev, 0x00000001 | 0x00010000, false, __func__, "WRT: data collection done\n"); } while (0); iwl_fw_dbg_restart_recording(fwrt, ¶ms); out: clear_bit(wk_idx, &fwrt->dump.active_wks); } void iwl_fw_error_dump_wk(struct work_struct *work) { struct iwl_fw_runtime *fwrt; typeof(fwrt->dump.wks[0]) *wks; wks = ({ void *__mptr = (void *)(work); do { extern void __compiletime_assert_2395(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(work)), typeof(((typeof(fwrt->dump.wks[0]) *)0)->wk.work)) && !__builtin_types_compatible_p(typeof(*(work)), typeof(void))))) __compiletime_assert_2395(); } while (0); ((typeof(fwrt->dump.wks[0]) *)(__mptr - __builtin_offsetof(typeof(fwrt->dump.wks[0]), wk.work))); }); fwrt = ({ void *__mptr = (void *)(wks); do { extern void __compiletime_assert_2396(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(wks)), typeof(((struct iwl_fw_runtime *)0)->dump.wks[wks->idx])) && !__builtin_types_compatible_p(typeof(*(wks)), typeof(void))))) __compiletime_assert_2396(); } while (0); ((struct iwl_fw_runtime *)(__mptr - __builtin_offsetof(struct iwl_fw_runtime, dump.wks[wks->idx]))); }); if (fwrt->ops && fwrt->ops->dump_start && fwrt->ops->dump_start(fwrt->ops_ctx)) return; iwl_fw_dbg_collect_sync(fwrt, wks->idx); if (fwrt->ops && fwrt->ops->dump_end) fwrt->ops->dump_end(fwrt->ops_ctx); } void iwl_fw_dbg_read_d3_debug_data(struct iwl_fw_runtime *fwrt) { const struct iwl_cfg *cfg = fwrt->trans->cfg; if (!iwl_fw_dbg_is_d3_debug_enabled(fwrt)) return; if (!fwrt->dump.d3_debug_data) { fwrt->dump.d3_debug_data = kmalloc(cfg->d3_debug_data_length, ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u))); if (!fwrt->dump.d3_debug_data) { do { do { extern void __compiletime_assert_2423(void) ; if (!(!("failed to allocate memory for D3 debug data\n"[sizeof("failed to allocate memory for D3 debug data\n") - 2] != '\n'))) __compiletime_assert_2423(); } while (0); __iwl_err(((fwrt)->dev), false, false, "failed to allocate memory for D3 debug data\n"); } while (0); return; } } do { if (__builtin_constant_p(cfg->d3_debug_data_length)) do { extern void __compiletime_assert_2431(void) ; if (!(!((cfg->d3_debug_data_length) % sizeof(u32)))) __compiletime_assert_2431(); } while (0); iwl_trans_read_mem(fwrt->trans, cfg->d3_debug_data_base_addr, fwrt->dump.d3_debug_data, (cfg->d3_debug_data_length) / sizeof(u32)); } while (0); } ; void iwl_fw_dbg_info_apply(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_debug_info_tlv *dbg_info, bool ext, enum iwl_fw_ini_apply_point pnt) { u32 img_name_len = (( __u32)(__le32)(dbg_info->img_name_len)); u32 dbg_cfg_name_len = (( __u32)(__le32)(dbg_info->dbg_cfg_name_len)); const char err_str[] = "WRT: ext=%d. Invalid %s name length %d, expected %d\n"; if (img_name_len != 32) { do { do { extern void __compiletime_assert_2446(void) ; if (!(!(err_str[sizeof(err_str) - 2] != '\n'))) __compiletime_assert_2446(); } while (0); __iwl_warn((fwrt)->dev, err_str, ext, "image", img_name_len, 32); } while (0); return; } if (dbg_cfg_name_len != 64) { do { do { extern void __compiletime_assert_2452(void) ; if (!(!(err_str[sizeof(err_str) - 2] != '\n'))) __compiletime_assert_2452(); } while (0); __iwl_warn((fwrt)->dev, err_str, ext, "debug cfg", dbg_cfg_name_len, 64); } while (0); return; } if (ext) { __memcpy(fwrt->dump.external_dbg_cfg_name, dbg_info->dbg_cfg_name, sizeof(fwrt->dump.external_dbg_cfg_name)); } else { __memcpy(fwrt->dump.img_name, dbg_info->img_name, sizeof(fwrt->dump.img_name)); __memcpy(fwrt->dump.internal_dbg_cfg_name, dbg_info->dbg_cfg_name, sizeof(fwrt->dump.internal_dbg_cfg_name)); } } static void iwl_fw_dbg_buffer_allocation(struct iwl_fw_runtime *fwrt, u32 size) { struct iwl_trans *trans = fwrt->trans; void *virtual_addr = ((void *)0); dma_addr_t phys_addr; if (({ int __ret_warn_on = !!(trans->dbg.num_blocks == (sizeof(trans->dbg.fw_mon) / sizeof((trans->dbg.fw_mon)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((trans->dbg.fw_mon)), typeof(&(trans->dbg.fw_mon)[0])))); })))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (2475), "i" ((1 << 0)|((1 << 1)|((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (518)); }); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) return; virtual_addr = dma_alloc_coherent(fwrt->trans->dev, size, &phys_addr, ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u)) | (( gfp_t)0x2000u) | (( gfp_t)0x100u) | (( gfp_t)0x40000u)); if (!virtual_addr) do { do { extern void __compiletime_assert_2485(void) ; if (!(!("Failed to allocate debug memory\n"[sizeof("Failed to allocate debug memory\n") - 2] != '\n'))) __compiletime_assert_2485(); } while (0); __iwl_err(((fwrt)->dev), false, false, "Failed to allocate debug memory\n"); } while (0); do { do { extern void __compiletime_assert_2489(void) ; if (!(!("Allocated DRAM buffer[%d], size=0x%x\n"[sizeof("Allocated DRAM buffer[%d], size=0x%x\n") - 2] != '\n'))) __compiletime_assert_2489(); } while (0); __iwl_dbg((trans)->dev, 0x00010000, false, __func__, "Allocated DRAM buffer[%d], size=0x%x\n", trans->dbg.num_blocks, size); } while (0); trans->dbg.fw_mon[trans->dbg.num_blocks].block = virtual_addr; trans->dbg.fw_mon[trans->dbg.num_blocks].physical = phys_addr; trans->dbg.fw_mon[trans->dbg.num_blocks].size = size; trans->dbg.num_blocks++; } static void iwl_fw_dbg_buffer_apply(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_allocation_data *alloc, enum iwl_fw_ini_apply_point pnt) { struct iwl_trans *trans = fwrt->trans; struct iwl_ldbg_config_cmd ldbg_cmd = { .type = (( __le32)(__u32)(0x27)), }; struct iwl_buffer_allocation_cmd *cmd = &ldbg_cmd.buffer_allocation; struct iwl_host_cmd hcmd = { .id = LDBG_CONFIG_CMD, .flags = CMD_ASYNC, .data[0] = &ldbg_cmd, .len[0] = sizeof(ldbg_cmd), }; int block_idx = trans->dbg.num_blocks; u32 buf_location = (( __u32)(__le32)(alloc->tlv.buffer_location)); if (fwrt->trans->dbg.ini_dest == IWL_FW_INI_LOCATION_INVALID) fwrt->trans->dbg.ini_dest = buf_location; if (buf_location != fwrt->trans->dbg.ini_dest) { ({ int __ret_warn_on = !!(fwrt); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __warn_printk("WRT: attempt to override buffer location on apply point %d\n", pnt); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (2521), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (519)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); return; } if (buf_location == IWL_FW_INI_LOCATION_SRAM_PATH) { do { do { extern void __compiletime_assert_2527(void) ; if (!(!("WRT: applying SMEM buffer destination\n"[sizeof("WRT: applying SMEM buffer destination\n") - 2] != '\n'))) __compiletime_assert_2527(); } while (0); __iwl_dbg((trans)->dev, 0x00010000, false, __func__, "WRT: applying SMEM buffer destination\n"); } while (0); iwl_set_bit(fwrt->trans, ((0x000)+0x000), (0x00000080)); return; } if (buf_location != IWL_FW_INI_LOCATION_DRAM_PATH) return; if (!alloc->is_alloc) { iwl_fw_dbg_buffer_allocation(fwrt, (( __u32)(__le32)(alloc->tlv.size))); if (block_idx == trans->dbg.num_blocks) return; alloc->is_alloc = 1; } if (trans->dbg.num_blocks == 1) return; do { do { extern void __compiletime_assert_2551(void) ; if (!(!("WRT: applying DRAM buffer[%d] destination\n"[sizeof("WRT: applying DRAM buffer[%d] destination\n") - 2] != '\n'))) __compiletime_assert_2551(); } while (0); __iwl_dbg((trans)->dev, 0x00010000, false, __func__, "WRT: applying DRAM buffer[%d] destination\n", block_idx); } while (0); cmd->num_frags = (( __le32)(__u32)(1)); cmd->fragments[0].address = (( __le64)(__u64)(trans->dbg.fw_mon[block_idx].physical)); cmd->fragments[0].size = alloc->tlv.size; cmd->allocation_id = alloc->tlv.allocation_id; cmd->buffer_location = alloc->tlv.buffer_location; iwl_trans_send_cmd(trans, &hcmd); } static void iwl_fw_dbg_send_hcmd(struct iwl_fw_runtime *fwrt, struct iwl_ucode_tlv *tlv, bool ext) { struct iwl_fw_ini_hcmd_tlv *hcmd_tlv = (void *)&tlv->data[0]; struct iwl_fw_ini_hcmd *data = &hcmd_tlv->hcmd; u16 len = (( __u32)(__le32)(tlv->length)) - sizeof(*hcmd_tlv); struct iwl_host_cmd hcmd = { .id = (((data->group) << 8) | (data->id)), .len = { len, }, .data = { data->data, }, }; if ((( __u32)(__le32)(hcmd_tlv->domain)) != IWL_FW_INI_DBG_DOMAIN_ALWAYS_ON) return; do { do { extern void __compiletime_assert_2583(void) ; if (!(!("WRT: ext=%d. Sending host command id=0x%x, group=0x%x\n"[sizeof("WRT: ext=%d. Sending host command id=0x%x, group=0x%x\n") - 2] != '\n'))) __compiletime_assert_2583(); } while (0); __iwl_dbg((fwrt)->dev, 0x00010000, false, __func__, "WRT: ext=%d. Sending host command id=0x%x, group=0x%x\n", ext, data->id, data->group); } while (0); iwl_trans_send_cmd(fwrt->trans, &hcmd); } static void iwl_fw_dbg_update_regions(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_region_tlv *tlv, bool ext, enum iwl_fw_ini_apply_point pnt) { void *iter = (void *)tlv->region_config; int i, size = (( __u32)(__le32)(tlv->num_regions)); const char *err_st = "WRT: ext=%d. Invalid region %s %d for apply point %d\n"; for (i = 0; i < size; i++) { struct iwl_fw_ini_region_cfg *reg = iter, **active; int id = (( __u32)(__le32)(reg->region_id)); u32 type = (( __u32)(__le32)(reg->region_type)); if (({ int __ret_warn_on = !!(id >= (sizeof(fwrt->dump.active_regs) / sizeof((fwrt->dump.active_regs)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((fwrt->dump.active_regs)), typeof(&(fwrt->dump.active_regs)[0])))); })))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __warn_printk(err_st, ext, "id", id, pnt); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (2603), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (520)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) break; if (({ int __ret_warn_on = !!(type == 0 || type >= IWL_FW_INI_REGION_NUM); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __warn_printk(err_st, ext, "type", type, pnt); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (2607), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (521)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) break; active = &fwrt->dump.active_regs[id]; if (*active) do { do { extern void __compiletime_assert_2615(void) ; if (!(!("WRT: ext=%d. Region id %d override\n"[sizeof("WRT: ext=%d. Region id %d override\n") - 2] != '\n'))) __compiletime_assert_2615(); } while (0); __iwl_warn((fwrt->trans)->dev, "WRT: ext=%d. Region id %d override\n", ext, id); } while (0); do { do { extern void __compiletime_assert_2619(void) ; if (!(!("WRT: ext=%d. Activating region id %d\n"[sizeof("WRT: ext=%d. Activating region id %d\n") - 2] != '\n'))) __compiletime_assert_2619(); } while (0); __iwl_dbg((fwrt)->dev, 0x00010000, false, __func__, "WRT: ext=%d. Activating region id %d\n", ext, id); } while (0); *active = reg; if (type == IWL_FW_INI_REGION_TXF || type == IWL_FW_INI_REGION_RXF) iter += (( __u32)(__le32)(reg->fifos.num_of_registers)) * sizeof(__le32); else if (type == IWL_FW_INI_REGION_DEVICE_MEMORY || type == IWL_FW_INI_REGION_PERIPHERY_MAC || type == IWL_FW_INI_REGION_PERIPHERY_PHY || type == IWL_FW_INI_REGION_PERIPHERY_AUX || type == IWL_FW_INI_REGION_INTERNAL_BUFFER || type == IWL_FW_INI_REGION_PAGING || type == IWL_FW_INI_REGION_CSR || type == IWL_FW_INI_REGION_LMAC_ERROR_TABLE || type == IWL_FW_INI_REGION_UMAC_ERROR_TABLE) iter += (( __u32)(__le32)(reg->internal.num_of_ranges)) * sizeof(__le32); iter += sizeof(*reg); } } static int iwl_fw_dbg_trig_realloc(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_active_triggers *active, u32 id, int size) { void *ptr; if (size <= active->size) return 0; ptr = krealloc(active->trig, size, ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u))); if (!ptr) { do { do { extern void __compiletime_assert_2655(void) ; if (!(!("WRT: Failed to allocate memory for trigger %d\n"[sizeof("WRT: Failed to allocate memory for trigger %d\n") - 2] != '\n'))) __compiletime_assert_2655(); } while (0); __iwl_err(((fwrt)->dev), false, false, "WRT: Failed to allocate memory for trigger %d\n", id); } while (0); return -12; } active->trig = ptr; active->size = size; return 0; } static void iwl_fw_dbg_update_triggers(struct iwl_fw_runtime *fwrt, struct iwl_fw_ini_trigger_tlv *tlv, bool ext, enum iwl_fw_ini_apply_point apply_point) { int i, size = (( __u32)(__le32)(tlv->num_triggers)); void *iter = (void *)tlv->trigger_config; for (i = 0; i < size; i++) { struct iwl_fw_ini_trigger *trig = iter; struct iwl_fw_ini_active_triggers *active; int id = (( __u32)(__le32)(trig->trigger_id)); u32 trig_regs_size = (( __u32)(__le32)(trig->num_regions)) * sizeof(__le32); if (({ int __ret_warn_on = !!(id >= (sizeof(fwrt->dump.active_trigs) / sizeof((fwrt->dump.active_trigs)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((fwrt->dump.active_trigs)), typeof(&(fwrt->dump.active_trigs)[0])))); })))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __warn_printk("WRT: ext=%d. Invalid trigger id %d for apply point %d\n", ext, id, apply_point); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (2681), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (522)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })) break; active = &fwrt->dump.active_trigs[id]; if (!active->active) { size_t trig_size = sizeof(*trig) + trig_regs_size; do { do { extern void __compiletime_assert_2691(void) ; if (!(!("WRT: ext=%d. Activating trigger %d\n"[sizeof("WRT: ext=%d. Activating trigger %d\n") - 2] != '\n'))) __compiletime_assert_2691(); } while (0); __iwl_dbg((fwrt)->dev, 0x00010000, false, __func__, "WRT: ext=%d. Activating trigger %d\n", ext, id); } while (0); if (iwl_fw_dbg_trig_realloc(fwrt, active, id, trig_size)) goto next; __memcpy(active->trig, trig, trig_size); } else { u32 conf_override = !((( __u32)(__le32)(trig->override_trig)) & 0xff); u32 region_override = !((( __u32)(__le32)(trig->override_trig)) & 0xff00); u32 offset = 0; u32 active_regs = (( __u32)(__le32)(active->trig->num_regions)); u32 new_regs = (( __u32)(__le32)(trig->num_regions)); int mem_to_add = trig_regs_size; if (region_override) { do { do { extern void __compiletime_assert_2713(void) ; if (!(!("WRT: ext=%d. Trigger %d regions override\n"[sizeof("WRT: ext=%d. Trigger %d regions override\n") - 2] != '\n'))) __compiletime_assert_2713(); } while (0); __iwl_dbg((fwrt)->dev, 0x00010000, false, __func__, "WRT: ext=%d. Trigger %d regions override\n", ext, id); } while (0); mem_to_add -= active_regs * sizeof(__le32); } else { do { do { extern void __compiletime_assert_2719(void) ; if (!(!("WRT: ext=%d. Trigger %d regions appending\n"[sizeof("WRT: ext=%d. Trigger %d regions appending\n") - 2] != '\n'))) __compiletime_assert_2719(); } while (0); __iwl_dbg((fwrt)->dev, 0x00010000, false, __func__, "WRT: ext=%d. Trigger %d regions appending\n", ext, id); } while (0); offset += active_regs; new_regs += active_regs; } if (iwl_fw_dbg_trig_realloc(fwrt, active, id, active->size + mem_to_add)) goto next; if (conf_override) { do { do { extern void __compiletime_assert_2732(void) ; if (!(!("WRT: ext=%d. Trigger %d configuration override\n"[sizeof("WRT: ext=%d. Trigger %d configuration override\n") - 2] != '\n'))) __compiletime_assert_2732(); } while (0); __iwl_dbg((fwrt)->dev, 0x00010000, false, __func__, "WRT: ext=%d. Trigger %d configuration override\n", ext, id); } while (0); __memcpy(active->trig, trig, sizeof(*trig)); } __memcpy(active->trig->data + offset, trig->data, trig_regs_size); active->trig->num_regions = (( __le32)(__u32)(new_regs)); } if (!(( __u32)(__le32)(active->trig->occurrences))) active->trig->occurrences = (( __le32)(__u32)(-1)); active->active = true; if (id == IWL_FW_TRIGGER_ID_PERIODIC_TRIGGER) { u32 collect_interval = (( __u32)(__le32)(trig->trigger_data)); if (collect_interval < 50) { collect_interval = 50; trig->trigger_data = (( __le32)(__u32)(collect_interval)); } mod_timer(&fwrt->dump.periodic_trig, jiffies + msecs_to_jiffies(collect_interval)); } next: iter += sizeof(*trig) + trig_regs_size; } } void _iwl_fw_dbg_apply_point(struct iwl_fw_runtime *fwrt, struct iwl_apply_point_data *data, enum iwl_fw_ini_apply_point pnt, bool ext) { void *iter = data->data; while (iter && iter < data->data + data->size) { struct iwl_ucode_tlv *tlv = iter; void *ini_tlv = (void *)tlv->data; u32 type = (( __u32)(__le32)(tlv->type)); const char invalid_ap_str[] = "WRT: ext=%d. Invalid apply point %d for %s\n"; switch (type) { case IWL_UCODE_TLV_TYPE_DEBUG_INFO: iwl_fw_dbg_info_apply(fwrt, ini_tlv, ext, pnt); break; case IWL_UCODE_TLV_TYPE_BUFFER_ALLOCATION: { struct iwl_fw_ini_allocation_data *buf_alloc = ini_tlv; if (pnt != IWL_FW_INI_APPLY_EARLY) { do { do { extern void __compiletime_assert_2790(void) ; if (!(!(invalid_ap_str[sizeof(invalid_ap_str) - 2] != '\n'))) __compiletime_assert_2790(); } while (0); __iwl_err(((fwrt)->dev), false, false, invalid_ap_str, ext, pnt, "buffer allocation"); } while (0); goto next; } iwl_fw_dbg_buffer_apply(fwrt, ini_tlv, pnt); iter += sizeof(buf_alloc->is_alloc); break; } case IWL_UCODE_TLV_TYPE_HCMD: if (pnt < IWL_FW_INI_APPLY_AFTER_ALIVE) { do { do { extern void __compiletime_assert_2801(void) ; if (!(!(invalid_ap_str[sizeof(invalid_ap_str) - 2] != '\n'))) __compiletime_assert_2801(); } while (0); __iwl_err(((fwrt)->dev), false, false, invalid_ap_str, ext, pnt, "host command"); } while (0); goto next; } iwl_fw_dbg_send_hcmd(fwrt, tlv, ext); break; case IWL_UCODE_TLV_TYPE_REGIONS: iwl_fw_dbg_update_regions(fwrt, ini_tlv, ext, pnt); break; case IWL_UCODE_TLV_TYPE_TRIGGERS: iwl_fw_dbg_update_triggers(fwrt, ini_tlv, ext, pnt); break; case IWL_UCODE_TLV_TYPE_DEBUG_FLOW: break; default: ({ static bool __attribute__((__section__(".data.once"))) __warned; int __ret_warn_once = !!(1); if (__builtin_expect(!!(__ret_warn_once && !__warned), 0)) { __warned = true; ({ int __ret_warn_on = !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __warn_printk("WRT: ext=%d. Invalid TLV 0x%x for apply point\n", ext, type); do { do { asm volatile("1:\t" ".byte 0x0f, 0x0b" "\n" ".pushsection __bug_table,\"aw\"\n" "2:\t" ".long " "1b" " - 2b" "\t# bug_entry::bug_addr\n" "\t" ".long " "%c0" " - 2b" "\t# bug_entry::file\n" "\t.word %c1" "\t# bug_entry::line\n" "\t.word %c2" "\t# bug_entry::flags\n" "\t.org 2b+%c3\n" ".popsection" : : "i" ("../drivers/net/wireless/intel/iwlwifi/fw/dbg.c"), "i" (2817), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); ({ asm volatile("%c0:\n\t" ".pushsection .discard.reachable\n\t" ".long %c0b - .\n\t" ".popsection\n\t" : : "i" (523)); }); } while (0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } __builtin_expect(!!(__ret_warn_once), 0); }); break; } next: iter += sizeof(*tlv) + (( __u32)(__le32)(tlv->length)); } } static void iwl_fw_dbg_ini_reset_cfg(struct iwl_fw_runtime *fwrt) { int i; for (i = 0; i < 64; i++) fwrt->dump.active_regs[i] = ((void *)0); for (i = 0; i < IWL_FW_TRIGGER_ID_NUM; i++) fwrt->dump.active_trigs[i].active = false; __memset(fwrt->dump.img_name, 0, sizeof(fwrt->dump.img_name)); __memset(fwrt->dump.internal_dbg_cfg_name, 0, sizeof(fwrt->dump.internal_dbg_cfg_name)); __memset(fwrt->dump.external_dbg_cfg_name, 0, sizeof(fwrt->dump.external_dbg_cfg_name)); fwrt->trans->dbg.ini_dest = IWL_FW_INI_LOCATION_INVALID; } void iwl_fw_dbg_apply_point(struct iwl_fw_runtime *fwrt, enum iwl_fw_ini_apply_point apply_point) { void *data = &fwrt->trans->dbg.apply_points[apply_point]; do { do { extern void __compiletime_assert_2851(void) ; if (!(!("WRT: enabling apply point %d\n"[sizeof("WRT: enabling apply point %d\n") - 2] != '\n'))) __compiletime_assert_2851(); } while (0); __iwl_dbg((fwrt)->dev, 0x00010000, false, __func__, "WRT: enabling apply point %d\n", apply_point); } while (0); if (apply_point == IWL_FW_INI_APPLY_EARLY) iwl_fw_dbg_ini_reset_cfg(fwrt); _iwl_fw_dbg_apply_point(fwrt, data, apply_point, false); data = &fwrt->trans->dbg.apply_points_ext[apply_point]; _iwl_fw_dbg_apply_point(fwrt, data, apply_point, true); } ; void iwl_fwrt_stop_device(struct iwl_fw_runtime *fwrt) { int i; del_timer(&fwrt->dump.periodic_trig); for (i = 0; i < 5; i++) iwl_fw_dbg_collect_sync(fwrt, i); iwl_trans_stop_device(fwrt->trans); } ; void iwl_fw_dbg_periodic_trig_handler(struct timer_list *t) { struct iwl_fw_runtime *fwrt; enum iwl_fw_ini_trigger_id id = IWL_FW_TRIGGER_ID_PERIODIC_TRIGGER; int ret; typeof(fwrt->dump) *dump_ptr = ({ void *__mptr = (void *)(t); do { extern void __compiletime_assert_2881(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(t)), typeof(((typeof(fwrt->dump) *)0)->periodic_trig)) && !__builtin_types_compatible_p(typeof(*(t)), typeof(void))))) __compiletime_assert_2881(); } while (0); ((typeof(fwrt->dump) *)(__mptr - __builtin_offsetof(typeof(fwrt->dump), periodic_trig))); }); fwrt = ({ void *__mptr = (void *)(dump_ptr); do { extern void __compiletime_assert_2883(void) ; if (!(!(!__builtin_types_compatible_p(typeof(*(dump_ptr)), typeof(((typeof(*fwrt) *)0)->dump)) && !__builtin_types_compatible_p(typeof(*(dump_ptr)), typeof(void))))) __compiletime_assert_2883(); } while (0); ((typeof(*fwrt) *)(__mptr - __builtin_offsetof(typeof(*fwrt), dump))); }); ret = _iwl_fw_dbg_ini_collect(fwrt, id); if (!ret || ret == -16) { struct iwl_fw_ini_trigger *trig = fwrt->dump.active_trigs[id].trig; u32 occur = (( __u32)(__le32)(trig->occurrences)); u32 collect_interval = (( __u32)(__le32)(trig->trigger_data)); if (!occur) return; mod_timer(&fwrt->dump.periodic_trig, jiffies + msecs_to_jiffies(collect_interval)); } } void iwl_fw_error_print_fseq_regs(struct iwl_fw_runtime *fwrt) { struct iwl_trans *trans = fwrt->trans; unsigned long flags; int i; struct { u32 addr; const char *str; } fseq_regs[] = { { .addr = (0xA340C8), .str = "FSEQ_ERROR_CODE", }, { .addr = (0xA34038), .str = "FSEQ_TOP_INIT_VERSION", }, { .addr = (0xA3403C), .str = "FSEQ_CNVIO_INIT_VERSION", }, { .addr = (0xA340FC), .str = "FSEQ_OTP_VERSION", }, { .addr = (0xA340F4), .str = "FSEQ_TOP_CONTENT_VERSION", }, { .addr = (0xA340F0), .str = "FSEQ_ALIVE_TOKEN", }, { .addr = (0xA3408C), .str = "FSEQ_CNVI_ID", }, { .addr = (0xA34090), .str = "FSEQ_CNVR_ID", }, { .addr = (0xA200B0), .str = "CNVI_AUX_MISC_CHIP", }, { .addr = (0xA2B800), .str = "CNVR_AUX_MISC_CHIP", }, { .addr = (0xA29890), .str = "CNVR_SCU_SD_REGS_SD_REG_DIG_DCDC_VTRIM", }, { .addr = (0xA29938), .str = "CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR", }, }; if (!(__builtin_expect(!!((trans)->ops->grab_nic_access(trans, &flags)), 1))) return; do { do { extern void __compiletime_assert_2928(void) ; if (!(!("Fseq Registers:\n"[sizeof("Fseq Registers:\n") - 2] != '\n'))) __compiletime_assert_2928(); } while (0); __iwl_err(((fwrt)->dev), false, false, "Fseq Registers:\n"); } while (0); for (i = 0; i < (sizeof(fseq_regs) / sizeof((fseq_regs)[0]) + (sizeof(struct { int:(-!!(__builtin_types_compatible_p(typeof((fseq_regs)), typeof(&(fseq_regs)[0])))); }))); i++) do { do { extern void __compiletime_assert_2933(void) ; if (!(!("0x%08X | %s\n"[sizeof("0x%08X | %s\n") - 2] != '\n'))) __compiletime_assert_2933(); } while (0); __iwl_err(((fwrt)->dev), false, false, "0x%08X | %s\n", iwl_read_prph_no_grab(trans, fseq_regs[i].addr), fseq_regs[i].str); } while (0); iwl_trans_release_nic_access(trans, &flags); } ;