mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-29 09:12:07 +00:00
perf tools fixes for v6.12:
- Fix an assert() to handle captured and unprocessed ARM CoreSight CPU traces. - Fix static build compilation error when libdw isn't installed or is too old. - Add missing include when building with !HAVE_DWARF_GETLOCATIONS_SUPPORT. - Add missing refcount put on 32-bit DSOs. - Fix disassembly of user space binaries by setting the binary_type of DSO when loading. - Update headers with the kernel sources, including asound.h, sched.h, fcntl, msr-index.h, irq_vectors.h, socket.h, list_sort.c and arm64's cputype.h. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQR2GiIUctdOfX2qHhGyPKLppCJ+JwUCZwU2dgAKCRCyPKLppCJ+ J8uaAQDEbp0lMf1S/Y6vOGbnP6mGQCewQsXtIpSA4gcRMWlCCgD+O6ZxbnBCHOzn nQfBmbT62qUGuUA38Mg7pCyRXBd8FgU= =s4JZ -----END PGP SIGNATURE----- Merge tag 'perf-tools-fixes-for-v6.12-1-2024-10-08' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools Pull perf tools fixes from Arnaldo Carvalho de Melo: - Fix an assert() to handle captured and unprocessed ARM CoreSight CPU traces - Fix static build compilation error when libdw isn't installed or is too old - Add missing include when building with !HAVE_DWARF_GETLOCATIONS_SUPPORT - Add missing refcount put on 32-bit DSOs - Fix disassembly of user space binaries by setting the binary_type of DSO when loading - Update headers with the kernel sources, including asound.h, sched.h, fcntl, msr-index.h, irq_vectors.h, socket.h, list_sort.c and arm64's cputype.h * tag 'perf-tools-fixes-for-v6.12-1-2024-10-08' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools: perf cs-etm: Fix the assert() to handle captured and unprocessed cpu trace perf build: Fix build feature-dwarf_getlocations fail for old libdw perf build: Fix static compilation error when libdw is not installed perf dwarf-aux: Fix build with !HAVE_DWARF_GETLOCATIONS_SUPPORT tools headers arm64: Sync arm64's cputype.h with the kernel sources perf tools: Cope with differences for lib/list_sort.c copy from the kernel tools check_headers.sh: Add check variant that excludes some hunks perf beauty: Update copy of linux/socket.h with the kernel sources tools headers UAPI: Sync the linux/in.h with the kernel sources perf trace beauty: Update the arch/x86/include/asm/irq_vectors.h copy with the kernel sources tools arch x86: Sync the msr-index.h copy with the kernel sources tools include UAPI: Sync linux/fcntl.h copy with the kernel sources tools include UAPI: Sync linux/sched.h copy with the kernel sources tools include UAPI: Sync sound/asound.h copy with the kernel sources perf vdso: Missed put on 32-bit dsos perf symbol: Set binary_type of dso when loading
This commit is contained in:
commit
b2760b8390
@ -143,6 +143,7 @@
|
||||
#define APPLE_CPU_PART_M2_AVALANCHE_MAX 0x039
|
||||
|
||||
#define AMPERE_CPU_PART_AMPERE1 0xAC3
|
||||
#define AMPERE_CPU_PART_AMPERE1A 0xAC4
|
||||
|
||||
#define MICROSOFT_CPU_PART_AZURE_COBALT_100 0xD49 /* Based on r0p0 of ARM Neoverse N2 */
|
||||
|
||||
@ -212,6 +213,7 @@
|
||||
#define MIDR_APPLE_M2_BLIZZARD_MAX MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_BLIZZARD_MAX)
|
||||
#define MIDR_APPLE_M2_AVALANCHE_MAX MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE_MAX)
|
||||
#define MIDR_AMPERE1 MIDR_CPU_MODEL(ARM_CPU_IMP_AMPERE, AMPERE_CPU_PART_AMPERE1)
|
||||
#define MIDR_AMPERE1A MIDR_CPU_MODEL(ARM_CPU_IMP_AMPERE, AMPERE_CPU_PART_AMPERE1A)
|
||||
#define MIDR_MICROSOFT_AZURE_COBALT_100 MIDR_CPU_MODEL(ARM_CPU_IMP_MICROSOFT, MICROSOFT_CPU_PART_AZURE_COBALT_100)
|
||||
|
||||
/* Fujitsu Erratum 010001 affects A64FX 1.0 and 1.1, (v0r0 and v1r0) */
|
||||
|
@ -247,6 +247,8 @@
|
||||
#define MSR_INTEGRITY_CAPS_ARRAY_BIST BIT(MSR_INTEGRITY_CAPS_ARRAY_BIST_BIT)
|
||||
#define MSR_INTEGRITY_CAPS_PERIODIC_BIST_BIT 4
|
||||
#define MSR_INTEGRITY_CAPS_PERIODIC_BIST BIT(MSR_INTEGRITY_CAPS_PERIODIC_BIST_BIT)
|
||||
#define MSR_INTEGRITY_CAPS_SBAF_BIT 8
|
||||
#define MSR_INTEGRITY_CAPS_SBAF BIT(MSR_INTEGRITY_CAPS_SBAF_BIT)
|
||||
#define MSR_INTEGRITY_CAPS_SAF_GEN_MASK GENMASK_ULL(10, 9)
|
||||
|
||||
#define MSR_LBR_NHM_FROM 0x00000680
|
||||
|
@ -172,7 +172,7 @@ DWARFLIBS := -ldw
|
||||
ifeq ($(findstring -static,${LDFLAGS}),-static)
|
||||
DWARFLIBS += -lelf -lz -llzma -lbz2 -lzstd
|
||||
|
||||
LIBDW_VERSION := $(shell $(PKG_CONFIG) --modversion libdw)
|
||||
LIBDW_VERSION := $(shell $(PKG_CONFIG) --modversion libdw).0.0
|
||||
LIBDW_VERSION_1 := $(word 1, $(subst ., ,$(LIBDW_VERSION)))
|
||||
LIBDW_VERSION_2 := $(word 2, $(subst ., ,$(LIBDW_VERSION)))
|
||||
|
||||
@ -181,6 +181,9 @@ ifeq ($(findstring -static,${LDFLAGS}),-static)
|
||||
ifeq ($(shell test $(LIBDW_VERSION_2) -lt 177; echo $$?),0)
|
||||
DWARFLIBS += -lebl
|
||||
endif
|
||||
|
||||
# Must put -ldl after -lebl for dependency
|
||||
DWARFLIBS += -ldl
|
||||
endif
|
||||
|
||||
$(OUTPUT)test-dwarf.bin:
|
||||
|
@ -141,7 +141,7 @@ struct in_addr {
|
||||
*/
|
||||
#define IP_PMTUDISC_INTERFACE 4
|
||||
/* weaker version of IP_PMTUDISC_INTERFACE, which allows packets to get
|
||||
* fragmented if they exeed the interface mtu
|
||||
* fragmented if they exceed the interface mtu
|
||||
*/
|
||||
#define IP_PMTUDISC_OMIT 5
|
||||
|
||||
|
@ -147,9 +147,9 @@ ifdef LIBDW_DIR
|
||||
endif
|
||||
DWARFLIBS := -ldw
|
||||
ifeq ($(findstring -static,${LDFLAGS}),-static)
|
||||
DWARFLIBS += -lelf -ldl -lz -llzma -lbz2 -lzstd
|
||||
DWARFLIBS += -lelf -lz -llzma -lbz2 -lzstd
|
||||
|
||||
LIBDW_VERSION := $(shell $(PKG_CONFIG) --modversion libdw)
|
||||
LIBDW_VERSION := $(shell $(PKG_CONFIG) --modversion libdw).0.0
|
||||
LIBDW_VERSION_1 := $(word 1, $(subst ., ,$(LIBDW_VERSION)))
|
||||
LIBDW_VERSION_2 := $(word 2, $(subst ., ,$(LIBDW_VERSION)))
|
||||
|
||||
@ -158,6 +158,9 @@ ifeq ($(findstring -static,${LDFLAGS}),-static)
|
||||
ifeq ($(shell test $(LIBDW_VERSION_2) -lt 177; echo $$?),0)
|
||||
DWARFLIBS += -lebl
|
||||
endif
|
||||
|
||||
# Must put -ldl after -lebl for dependency
|
||||
DWARFLIBS += -ldl
|
||||
endif
|
||||
FEATURE_CHECK_CFLAGS-libdw-dwarf-unwind := $(LIBDW_CFLAGS)
|
||||
FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind := $(LIBDW_LDFLAGS) $(DWARFLIBS)
|
||||
|
31
tools/perf/check-header_ignore_hunks/lib/list_sort.c
Normal file
31
tools/perf/check-header_ignore_hunks/lib/list_sort.c
Normal file
@ -0,0 +1,31 @@
|
||||
@@ -1,5 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <linux/kernel.h>
|
||||
+#include <linux/bug.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/string.h>
|
||||
@@ -52,6 +53,7 @@
|
||||
struct list_head *a, struct list_head *b)
|
||||
{
|
||||
struct list_head *tail = head;
|
||||
+ u8 count = 0;
|
||||
|
||||
for (;;) {
|
||||
/* if equal, take 'a' -- important for sort stability */
|
||||
@@ -77,6 +79,15 @@
|
||||
/* Finish linking remainder of list b on to tail */
|
||||
tail->next = b;
|
||||
do {
|
||||
+ /*
|
||||
+ * If the merge is highly unbalanced (e.g. the input is
|
||||
+ * already sorted), this loop may run many iterations.
|
||||
+ * Continue callbacks to the client even though no
|
||||
+ * element comparison is needed, so the client's cmp()
|
||||
+ * routine can invoke cond_resched() periodically.
|
||||
+ */
|
||||
+ if (unlikely(!++count))
|
||||
+ cmp(priv, b, b);
|
||||
b->prev = tail;
|
||||
tail = b;
|
||||
b = b->next;
|
@ -136,6 +136,30 @@ beauty_check () {
|
||||
check_2 "tools/perf/trace/beauty/$file" "$file" "$@"
|
||||
}
|
||||
|
||||
check_ignore_some_hunks () {
|
||||
orig_file="$1"
|
||||
tools_file="tools/$orig_file"
|
||||
hunks_to_ignore="tools/perf/check-header_ignore_hunks/$orig_file"
|
||||
|
||||
if [ ! -f "$hunks_to_ignore" ]; then
|
||||
echo "$hunks_to_ignore not found. Skipping $orig_file check."
|
||||
FAILURES+=(
|
||||
"$tools_file $orig_file"
|
||||
)
|
||||
return
|
||||
fi
|
||||
|
||||
cmd="diff -u \"$tools_file\" \"$orig_file\" | grep -vf \"$hunks_to_ignore\" | wc -l | grep -qw 0"
|
||||
|
||||
if [ -f "$orig_file" ] && ! eval "$cmd"
|
||||
then
|
||||
FAILURES+=(
|
||||
"$tools_file $orig_file"
|
||||
)
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
# Check if we have the kernel headers (tools/perf/../../include), else
|
||||
# we're probably on a detached tarball, so no point in trying to check
|
||||
# differences.
|
||||
@ -169,7 +193,6 @@ check include/uapi/linux/mman.h '-I "^#include <\(uapi/\)*asm/mman.h>"'
|
||||
check include/linux/build_bug.h '-I "^#\(ifndef\|endif\)\( \/\/\)* static_assert$"'
|
||||
check include/linux/ctype.h '-I "isdigit("'
|
||||
check lib/ctype.c '-I "^EXPORT_SYMBOL" -I "^#include <linux/export.h>" -B'
|
||||
check lib/list_sort.c '-I "^#include <linux/bug.h>"'
|
||||
|
||||
# diff non-symmetric files
|
||||
check_2 tools/perf/arch/x86/entry/syscalls/syscall_32.tbl arch/x86/entry/syscalls/syscall_32.tbl
|
||||
@ -187,6 +210,10 @@ done
|
||||
check_2 tools/perf/util/hashmap.h tools/lib/bpf/hashmap.h
|
||||
check_2 tools/perf/util/hashmap.c tools/lib/bpf/hashmap.c
|
||||
|
||||
# Files with larger differences
|
||||
|
||||
check_ignore_some_hunks lib/list_sort.c
|
||||
|
||||
cd tools/perf || exit
|
||||
|
||||
if [ ${#FAILURES[@]} -gt 0 ]
|
||||
|
@ -18,8 +18,8 @@
|
||||
* Vectors 0 ... 31 : system traps and exceptions - hardcoded events
|
||||
* Vectors 32 ... 127 : device interrupts
|
||||
* Vector 128 : legacy int80 syscall interface
|
||||
* Vectors 129 ... LOCAL_TIMER_VECTOR-1
|
||||
* Vectors LOCAL_TIMER_VECTOR ... 255 : special interrupts
|
||||
* Vectors 129 ... FIRST_SYSTEM_VECTOR-1 : device interrupts
|
||||
* Vectors FIRST_SYSTEM_VECTOR ... 255 : special interrupts
|
||||
*
|
||||
* 64-bit x86 has per CPU IDT tables, 32-bit has one shared IDT table.
|
||||
*
|
||||
|
@ -13,9 +13,14 @@ printf "static const char *fs_at_flags[] = {\n"
|
||||
regex='^[[:space:]]*#[[:space:]]*define[[:space:]]+AT_([^_]+[[:alnum:]_]+)[[:space:]]+(0x[[:xdigit:]]+)[[:space:]]*.*'
|
||||
# AT_EACCESS is only meaningful to faccessat, so we will special case it there...
|
||||
# AT_STATX_SYNC_TYPE is not a bit, its a mask of AT_STATX_SYNC_AS_STAT, AT_STATX_FORCE_SYNC and AT_STATX_DONT_SYNC
|
||||
# AT_HANDLE_FID and AT_HANDLE_MNT_ID_UNIQUE are reusing values and are valid only for name_to_handle_at()
|
||||
# AT_RENAME_NOREPLACE reuses 0x1 and is valid only for renameat2()
|
||||
grep -E $regex ${linux_fcntl} | \
|
||||
grep -v AT_EACCESS | \
|
||||
grep -v AT_STATX_SYNC_TYPE | \
|
||||
grep -v AT_HANDLE_FID | \
|
||||
grep -v AT_HANDLE_MNT_ID_UNIQUE | \
|
||||
grep -v AT_RENAME_NOREPLACE | \
|
||||
sed -r "s/$regex/\2 \1/g" | \
|
||||
xargs printf "\t[ilog2(%s) + 1] = \"%s\",\n"
|
||||
printf "};\n"
|
||||
|
@ -327,6 +327,7 @@ struct ucred {
|
||||
* plain text and require encryption
|
||||
*/
|
||||
|
||||
#define MSG_SOCK_DEVMEM 0x2000000 /* Receive devmem skbs as cmsg */
|
||||
#define MSG_ZEROCOPY 0x4000000 /* Use user data in kernel path */
|
||||
#define MSG_SPLICE_PAGES 0x8000000 /* Splice the pages from the iterator in sendmsg() */
|
||||
#define MSG_FASTOPEN 0x20000000 /* Send data in TCP SYN */
|
||||
|
@ -16,6 +16,9 @@
|
||||
|
||||
#define F_DUPFD_QUERY (F_LINUX_SPECIFIC_BASE + 3)
|
||||
|
||||
/* Was the file just created? */
|
||||
#define F_CREATED_QUERY (F_LINUX_SPECIFIC_BASE + 4)
|
||||
|
||||
/*
|
||||
* Cancel a blocking posix lock; internal use only until we expose an
|
||||
* asynchronous lock api to userspace:
|
||||
@ -87,37 +90,70 @@
|
||||
#define DN_ATTRIB 0x00000020 /* File changed attibutes */
|
||||
#define DN_MULTISHOT 0x80000000 /* Don't remove notifier */
|
||||
|
||||
#define AT_FDCWD -100 /* Special value for dirfd used to
|
||||
indicate openat should use the
|
||||
current working directory. */
|
||||
|
||||
|
||||
/* Generic flags for the *at(2) family of syscalls. */
|
||||
|
||||
/* Reserved for per-syscall flags 0xff. */
|
||||
#define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic
|
||||
links. */
|
||||
/* Reserved for per-syscall flags 0x200 */
|
||||
#define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */
|
||||
#define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount
|
||||
traversal. */
|
||||
#define AT_EMPTY_PATH 0x1000 /* Allow empty relative
|
||||
pathname to operate on dirfd
|
||||
directly. */
|
||||
/*
|
||||
* The constants AT_REMOVEDIR and AT_EACCESS have the same value. AT_EACCESS is
|
||||
* meaningful only to faccessat, while AT_REMOVEDIR is meaningful only to
|
||||
* unlinkat. The two functions do completely different things and therefore,
|
||||
* the flags can be allowed to overlap. For example, passing AT_REMOVEDIR to
|
||||
* faccessat would be undefined behavior and thus treating it equivalent to
|
||||
* AT_EACCESS is valid undefined behavior.
|
||||
* These flags are currently statx(2)-specific, but they could be made generic
|
||||
* in the future and so they should not be used for other per-syscall flags.
|
||||
*/
|
||||
#define AT_FDCWD -100 /* Special value used to indicate
|
||||
openat should use the current
|
||||
working directory. */
|
||||
#define AT_SYMLINK_NOFOLLOW 0x100 /* Do not follow symbolic links. */
|
||||
#define AT_STATX_SYNC_TYPE 0x6000 /* Type of synchronisation required from statx() */
|
||||
#define AT_STATX_SYNC_AS_STAT 0x0000 /* - Do whatever stat() does */
|
||||
#define AT_STATX_FORCE_SYNC 0x2000 /* - Force the attributes to be sync'd with the server */
|
||||
#define AT_STATX_DONT_SYNC 0x4000 /* - Don't sync attributes with the server */
|
||||
|
||||
#define AT_RECURSIVE 0x8000 /* Apply to the entire subtree */
|
||||
|
||||
/*
|
||||
* Per-syscall flags for the *at(2) family of syscalls.
|
||||
*
|
||||
* These are flags that are so syscall-specific that a user passing these flags
|
||||
* to the wrong syscall is so "clearly wrong" that we can safely call such
|
||||
* usage "undefined behaviour".
|
||||
*
|
||||
* For example, the constants AT_REMOVEDIR and AT_EACCESS have the same value.
|
||||
* AT_EACCESS is meaningful only to faccessat, while AT_REMOVEDIR is meaningful
|
||||
* only to unlinkat. The two functions do completely different things and
|
||||
* therefore, the flags can be allowed to overlap. For example, passing
|
||||
* AT_REMOVEDIR to faccessat would be undefined behavior and thus treating it
|
||||
* equivalent to AT_EACCESS is valid undefined behavior.
|
||||
*
|
||||
* Note for implementers: When picking a new per-syscall AT_* flag, try to
|
||||
* reuse already existing flags first. This leaves us with as many unused bits
|
||||
* as possible, so we can use them for generic bits in the future if necessary.
|
||||
*/
|
||||
|
||||
/* Flags for renameat2(2) (must match legacy RENAME_* flags). */
|
||||
#define AT_RENAME_NOREPLACE 0x0001
|
||||
#define AT_RENAME_EXCHANGE 0x0002
|
||||
#define AT_RENAME_WHITEOUT 0x0004
|
||||
|
||||
/* Flag for faccessat(2). */
|
||||
#define AT_EACCESS 0x200 /* Test access permitted for
|
||||
effective IDs, not real IDs. */
|
||||
/* Flag for unlinkat(2). */
|
||||
#define AT_REMOVEDIR 0x200 /* Remove directory instead of
|
||||
unlinking file. */
|
||||
#define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic links. */
|
||||
#define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount traversal */
|
||||
#define AT_EMPTY_PATH 0x1000 /* Allow empty relative pathname */
|
||||
/* Flags for name_to_handle_at(2). */
|
||||
#define AT_HANDLE_FID 0x200 /* File handle is needed to compare
|
||||
object identity and may not be
|
||||
usable with open_by_handle_at(2). */
|
||||
#define AT_HANDLE_MNT_ID_UNIQUE 0x001 /* Return the u64 unique mount ID. */
|
||||
|
||||
#define AT_STATX_SYNC_TYPE 0x6000 /* Type of synchronisation required from statx() */
|
||||
#define AT_STATX_SYNC_AS_STAT 0x0000 /* - Do whatever stat() does */
|
||||
#define AT_STATX_FORCE_SYNC 0x2000 /* - Force the attributes to be sync'd with the server */
|
||||
#define AT_STATX_DONT_SYNC 0x4000 /* - Don't sync attributes with the server */
|
||||
|
||||
#define AT_RECURSIVE 0x8000 /* Apply to the entire subtree */
|
||||
|
||||
/* Flags for name_to_handle_at(2). We reuse AT_ flag space to save bits... */
|
||||
#define AT_HANDLE_FID AT_REMOVEDIR /* file handle is needed to
|
||||
compare object identity and may not
|
||||
be usable to open_by_handle_at(2) */
|
||||
#if defined(__KERNEL__)
|
||||
#define AT_GETATTR_NOSEC 0x80000000
|
||||
#endif
|
||||
|
@ -118,6 +118,7 @@ struct clone_args {
|
||||
/* SCHED_ISO: reserved but not implemented yet */
|
||||
#define SCHED_IDLE 5
|
||||
#define SCHED_DEADLINE 6
|
||||
#define SCHED_EXT 7
|
||||
|
||||
/* Can be ORed in to make sure the process is reverted back to SCHED_NORMAL on fork */
|
||||
#define SCHED_RESET_ON_FORK 0x40000000
|
||||
|
@ -869,7 +869,7 @@ struct snd_ump_block_info {
|
||||
* Timer section - /dev/snd/timer
|
||||
*/
|
||||
|
||||
#define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 7)
|
||||
#define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 8)
|
||||
|
||||
enum {
|
||||
SNDRV_TIMER_CLASS_NONE = -1,
|
||||
@ -894,6 +894,7 @@ enum {
|
||||
#define SNDRV_TIMER_GLOBAL_RTC 1 /* unused */
|
||||
#define SNDRV_TIMER_GLOBAL_HPET 2
|
||||
#define SNDRV_TIMER_GLOBAL_HRTIMER 3
|
||||
#define SNDRV_TIMER_GLOBAL_UDRIVEN 4
|
||||
|
||||
/* info flags */
|
||||
#define SNDRV_TIMER_FLG_SLAVE (1<<0) /* cannot be controlled */
|
||||
@ -974,6 +975,18 @@ struct snd_timer_status {
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This structure describes the userspace-driven timer. Such timers are purely virtual,
|
||||
* and can only be triggered from software (for instance, by userspace application).
|
||||
*/
|
||||
struct snd_timer_uinfo {
|
||||
/* To pretend being a normal timer, we need to know the resolution in ns. */
|
||||
__u64 resolution;
|
||||
int fd;
|
||||
unsigned int id;
|
||||
unsigned char reserved[16];
|
||||
};
|
||||
|
||||
#define SNDRV_TIMER_IOCTL_PVERSION _IOR('T', 0x00, int)
|
||||
#define SNDRV_TIMER_IOCTL_NEXT_DEVICE _IOWR('T', 0x01, struct snd_timer_id)
|
||||
#define SNDRV_TIMER_IOCTL_TREAD_OLD _IOW('T', 0x02, int)
|
||||
@ -990,6 +1003,8 @@ struct snd_timer_status {
|
||||
#define SNDRV_TIMER_IOCTL_CONTINUE _IO('T', 0xa2)
|
||||
#define SNDRV_TIMER_IOCTL_PAUSE _IO('T', 0xa3)
|
||||
#define SNDRV_TIMER_IOCTL_TREAD64 _IOW('T', 0xa4, int)
|
||||
#define SNDRV_TIMER_IOCTL_CREATE _IOWR('T', 0xa5, struct snd_timer_uinfo)
|
||||
#define SNDRV_TIMER_IOCTL_TRIGGER _IO('T', 0xa6)
|
||||
|
||||
#if __BITS_PER_LONG == 64
|
||||
#define SNDRV_TIMER_IOCTL_TREAD SNDRV_TIMER_IOCTL_TREAD_OLD
|
||||
|
@ -11,6 +11,9 @@
|
||||
#ifndef MSG_BATCH
|
||||
#define MSG_BATCH 0x40000
|
||||
#endif
|
||||
#ifndef MSG_SOCK_DEVMEM
|
||||
#define MSG_SOCK_DEVMEM 0x2000000
|
||||
#endif
|
||||
#ifndef MSG_ZEROCOPY
|
||||
#define MSG_ZEROCOPY 0x4000000
|
||||
#endif
|
||||
@ -57,6 +60,7 @@ static size_t syscall_arg__scnprintf_msg_flags(char *bf, size_t size,
|
||||
P_MSG_FLAG(MORE);
|
||||
P_MSG_FLAG(WAITFORONE);
|
||||
P_MSG_FLAG(BATCH);
|
||||
P_MSG_FLAG(SOCK_DEVMEM);
|
||||
P_MSG_FLAG(ZEROCOPY);
|
||||
P_MSG_FLAG(SPLICE_PAGES);
|
||||
P_MSG_FLAG(FASTOPEN);
|
||||
|
@ -3323,7 +3323,7 @@ static int cs_etm__create_decoders(struct cs_etm_auxtrace *etm)
|
||||
* Don't create decoders for empty queues, mainly because
|
||||
* etmq->format is unknown for empty queues.
|
||||
*/
|
||||
assert(empty == (etmq->format == UNSET));
|
||||
assert(empty || etmq->format != UNSET);
|
||||
if (empty)
|
||||
continue;
|
||||
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include <elfutils/libdw.h>
|
||||
#include <elfutils/libdwfl.h>
|
||||
#include <elfutils/version.h>
|
||||
#include <errno.h>
|
||||
|
||||
struct strbuf;
|
||||
|
||||
|
@ -1931,6 +1931,9 @@ int dso__load(struct dso *dso, struct map *map)
|
||||
if (next_slot) {
|
||||
ss_pos++;
|
||||
|
||||
if (dso__binary_type(dso) == DSO_BINARY_TYPE__NOT_FOUND)
|
||||
dso__set_binary_type(dso, symtab_type);
|
||||
|
||||
if (syms_ss && runtime_ss)
|
||||
break;
|
||||
} else {
|
||||
|
@ -308,8 +308,10 @@ static struct dso *machine__find_vdso(struct machine *machine,
|
||||
if (!dso) {
|
||||
dso = dsos__find(&machine->dsos, DSO__NAME_VDSO,
|
||||
true);
|
||||
if (dso && dso_type != dso__type(dso, machine))
|
||||
if (dso && dso_type != dso__type(dso, machine)) {
|
||||
dso__put(dso);
|
||||
dso = NULL;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DSO__TYPE_X32BIT:
|
||||
|
Loading…
Reference in New Issue
Block a user