asm-generic bits for 6.2
There are only three fairly simple patches. The #include change to linux/swab.h addresses a userspace build issue, and the change to the mmio tracing logic helps provide more useful traces. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmOgtJUACgkQmmx57+YA GNln8Q//dvQ2FRIWBXKh4r6CxtiCx2aktGmnP1YAuaIVuzjGSn/8EQZAoTYN5jKY Io8rFt1/FfOMtu3E32JtGpgfDAP/8sfz3Lao9bzJR/Fjv059qL5QCoI3qbEFTNz9 vzUqiddFZGppn76qsXSA6aItHVDS4Y97XiYRSwSMlpIz+9a84rYxCo04bNR4ut4t PR5+lvlTDfGfmj+SebrCt/IEi/FF9ckEYCLJHfaSPcQcujLDZDKPcT2RbubgwHgB OfE5Rx25xJxR4BU5MFe74sKn5Qi5HOfr1GrsjL3RbMNiYuHgbwLcZkMXvbZukdHz 50Gt8UXMAxvZYKz92kyQLYuiKEtFSrQ8JccgqVUWL/lRLDoUkTg4hz4tmGUZE6KP ElxdgIBem9yrFX0oCaPNkY5d3MRU2i19FvBfKWKC54NbcmBjpHxxSg+WW/P7Jw+N uegj7qcEh7RcQU4w97OW4nS+eZmnXb4O4qXZeFwhXHS/snH7p3iBApyoPlyb+KOs np5MWRNaGFfi8BWWeVTX78U2VW8Ql8nnlRIlk/Wwm8AkVaNFQDnffKPi87paZd9o Kl+a9broMf4v0Oq5JTxqPMzmn9zUV0rHa1VanRBnNKqTOWalmNcsfsg1Ih9PhAAT p3u2CN0cBI7QmrcymJHrCuv0eNJRjsYa5FB4xmhJcJkD2qjsqXI= =05F5 -----END PGP SIGNATURE----- Merge tag 'asm-generic-6.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic Pull asm-generic updates from Arnd Bergmann: "There are only three fairly simple patches. The #include change to linux/swab.h addresses a userspace build issue, and the change to the mmio tracing logic helps provide more useful traces" * tag 'asm-generic-6.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic: uapi: Add missing _UAPI prefix to <asm-generic/types.h> include guard asm-generic/io: Add _RET_IP_ to MMIO trace for more accurate debug info include/uapi/linux/swab: Fix potentially missing __always_inline
This commit is contained in:
Коммит
70b07bec95
|
@ -80,24 +80,24 @@ DECLARE_TRACEPOINT(rwmmio_read);
|
|||
DECLARE_TRACEPOINT(rwmmio_post_read);
|
||||
|
||||
void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
|
||||
unsigned long caller_addr);
|
||||
unsigned long caller_addr, unsigned long caller_addr0);
|
||||
void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
|
||||
unsigned long caller_addr);
|
||||
unsigned long caller_addr, unsigned long caller_addr0);
|
||||
void log_read_mmio(u8 width, const volatile void __iomem *addr,
|
||||
unsigned long caller_addr);
|
||||
unsigned long caller_addr, unsigned long caller_addr0);
|
||||
void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr,
|
||||
unsigned long caller_addr);
|
||||
unsigned long caller_addr, unsigned long caller_addr0);
|
||||
|
||||
#else
|
||||
|
||||
static inline void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
|
||||
unsigned long caller_addr) {}
|
||||
unsigned long caller_addr, unsigned long caller_addr0) {}
|
||||
static inline void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
|
||||
unsigned long caller_addr) {}
|
||||
unsigned long caller_addr, unsigned long caller_addr0) {}
|
||||
static inline void log_read_mmio(u8 width, const volatile void __iomem *addr,
|
||||
unsigned long caller_addr) {}
|
||||
unsigned long caller_addr, unsigned long caller_addr0) {}
|
||||
static inline void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr,
|
||||
unsigned long caller_addr) {}
|
||||
unsigned long caller_addr, unsigned long caller_addr0) {}
|
||||
|
||||
#endif /* CONFIG_TRACE_MMIO_ACCESS */
|
||||
|
||||
|
@ -188,11 +188,11 @@ static inline u8 readb(const volatile void __iomem *addr)
|
|||
{
|
||||
u8 val;
|
||||
|
||||
log_read_mmio(8, addr, _THIS_IP_);
|
||||
log_read_mmio(8, addr, _THIS_IP_, _RET_IP_);
|
||||
__io_br();
|
||||
val = __raw_readb(addr);
|
||||
__io_ar(val);
|
||||
log_post_read_mmio(val, 8, addr, _THIS_IP_);
|
||||
log_post_read_mmio(val, 8, addr, _THIS_IP_, _RET_IP_);
|
||||
return val;
|
||||
}
|
||||
#endif
|
||||
|
@ -203,11 +203,11 @@ static inline u16 readw(const volatile void __iomem *addr)
|
|||
{
|
||||
u16 val;
|
||||
|
||||
log_read_mmio(16, addr, _THIS_IP_);
|
||||
log_read_mmio(16, addr, _THIS_IP_, _RET_IP_);
|
||||
__io_br();
|
||||
val = __le16_to_cpu((__le16 __force)__raw_readw(addr));
|
||||
__io_ar(val);
|
||||
log_post_read_mmio(val, 16, addr, _THIS_IP_);
|
||||
log_post_read_mmio(val, 16, addr, _THIS_IP_, _RET_IP_);
|
||||
return val;
|
||||
}
|
||||
#endif
|
||||
|
@ -218,11 +218,11 @@ static inline u32 readl(const volatile void __iomem *addr)
|
|||
{
|
||||
u32 val;
|
||||
|
||||
log_read_mmio(32, addr, _THIS_IP_);
|
||||
log_read_mmio(32, addr, _THIS_IP_, _RET_IP_);
|
||||
__io_br();
|
||||
val = __le32_to_cpu((__le32 __force)__raw_readl(addr));
|
||||
__io_ar(val);
|
||||
log_post_read_mmio(val, 32, addr, _THIS_IP_);
|
||||
log_post_read_mmio(val, 32, addr, _THIS_IP_, _RET_IP_);
|
||||
return val;
|
||||
}
|
||||
#endif
|
||||
|
@ -234,11 +234,11 @@ static inline u64 readq(const volatile void __iomem *addr)
|
|||
{
|
||||
u64 val;
|
||||
|
||||
log_read_mmio(64, addr, _THIS_IP_);
|
||||
log_read_mmio(64, addr, _THIS_IP_, _RET_IP_);
|
||||
__io_br();
|
||||
val = __le64_to_cpu(__raw_readq(addr));
|
||||
__io_ar(val);
|
||||
log_post_read_mmio(val, 64, addr, _THIS_IP_);
|
||||
log_post_read_mmio(val, 64, addr, _THIS_IP_, _RET_IP_);
|
||||
return val;
|
||||
}
|
||||
#endif
|
||||
|
@ -248,11 +248,11 @@ static inline u64 readq(const volatile void __iomem *addr)
|
|||
#define writeb writeb
|
||||
static inline void writeb(u8 value, volatile void __iomem *addr)
|
||||
{
|
||||
log_write_mmio(value, 8, addr, _THIS_IP_);
|
||||
log_write_mmio(value, 8, addr, _THIS_IP_, _RET_IP_);
|
||||
__io_bw();
|
||||
__raw_writeb(value, addr);
|
||||
__io_aw();
|
||||
log_post_write_mmio(value, 8, addr, _THIS_IP_);
|
||||
log_post_write_mmio(value, 8, addr, _THIS_IP_, _RET_IP_);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -260,11 +260,11 @@ static inline void writeb(u8 value, volatile void __iomem *addr)
|
|||
#define writew writew
|
||||
static inline void writew(u16 value, volatile void __iomem *addr)
|
||||
{
|
||||
log_write_mmio(value, 16, addr, _THIS_IP_);
|
||||
log_write_mmio(value, 16, addr, _THIS_IP_, _RET_IP_);
|
||||
__io_bw();
|
||||
__raw_writew((u16 __force)cpu_to_le16(value), addr);
|
||||
__io_aw();
|
||||
log_post_write_mmio(value, 16, addr, _THIS_IP_);
|
||||
log_post_write_mmio(value, 16, addr, _THIS_IP_, _RET_IP_);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -272,11 +272,11 @@ static inline void writew(u16 value, volatile void __iomem *addr)
|
|||
#define writel writel
|
||||
static inline void writel(u32 value, volatile void __iomem *addr)
|
||||
{
|
||||
log_write_mmio(value, 32, addr, _THIS_IP_);
|
||||
log_write_mmio(value, 32, addr, _THIS_IP_, _RET_IP_);
|
||||
__io_bw();
|
||||
__raw_writel((u32 __force)__cpu_to_le32(value), addr);
|
||||
__io_aw();
|
||||
log_post_write_mmio(value, 32, addr, _THIS_IP_);
|
||||
log_post_write_mmio(value, 32, addr, _THIS_IP_, _RET_IP_);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -285,11 +285,11 @@ static inline void writel(u32 value, volatile void __iomem *addr)
|
|||
#define writeq writeq
|
||||
static inline void writeq(u64 value, volatile void __iomem *addr)
|
||||
{
|
||||
log_write_mmio(value, 64, addr, _THIS_IP_);
|
||||
log_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_);
|
||||
__io_bw();
|
||||
__raw_writeq(__cpu_to_le64(value), addr);
|
||||
__io_aw();
|
||||
log_post_write_mmio(value, 64, addr, _THIS_IP_);
|
||||
log_post_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_);
|
||||
}
|
||||
#endif
|
||||
#endif /* CONFIG_64BIT */
|
||||
|
@ -305,9 +305,9 @@ static inline u8 readb_relaxed(const volatile void __iomem *addr)
|
|||
{
|
||||
u8 val;
|
||||
|
||||
log_read_mmio(8, addr, _THIS_IP_);
|
||||
log_read_mmio(8, addr, _THIS_IP_, _RET_IP_);
|
||||
val = __raw_readb(addr);
|
||||
log_post_read_mmio(val, 8, addr, _THIS_IP_);
|
||||
log_post_read_mmio(val, 8, addr, _THIS_IP_, _RET_IP_);
|
||||
return val;
|
||||
}
|
||||
#endif
|
||||
|
@ -318,9 +318,9 @@ static inline u16 readw_relaxed(const volatile void __iomem *addr)
|
|||
{
|
||||
u16 val;
|
||||
|
||||
log_read_mmio(16, addr, _THIS_IP_);
|
||||
log_read_mmio(16, addr, _THIS_IP_, _RET_IP_);
|
||||
val = __le16_to_cpu(__raw_readw(addr));
|
||||
log_post_read_mmio(val, 16, addr, _THIS_IP_);
|
||||
log_post_read_mmio(val, 16, addr, _THIS_IP_, _RET_IP_);
|
||||
return val;
|
||||
}
|
||||
#endif
|
||||
|
@ -331,9 +331,9 @@ static inline u32 readl_relaxed(const volatile void __iomem *addr)
|
|||
{
|
||||
u32 val;
|
||||
|
||||
log_read_mmio(32, addr, _THIS_IP_);
|
||||
log_read_mmio(32, addr, _THIS_IP_, _RET_IP_);
|
||||
val = __le32_to_cpu(__raw_readl(addr));
|
||||
log_post_read_mmio(val, 32, addr, _THIS_IP_);
|
||||
log_post_read_mmio(val, 32, addr, _THIS_IP_, _RET_IP_);
|
||||
return val;
|
||||
}
|
||||
#endif
|
||||
|
@ -344,9 +344,9 @@ static inline u64 readq_relaxed(const volatile void __iomem *addr)
|
|||
{
|
||||
u64 val;
|
||||
|
||||
log_read_mmio(64, addr, _THIS_IP_);
|
||||
log_read_mmio(64, addr, _THIS_IP_, _RET_IP_);
|
||||
val = __le64_to_cpu(__raw_readq(addr));
|
||||
log_post_read_mmio(val, 64, addr, _THIS_IP_);
|
||||
log_post_read_mmio(val, 64, addr, _THIS_IP_, _RET_IP_);
|
||||
return val;
|
||||
}
|
||||
#endif
|
||||
|
@ -355,9 +355,9 @@ static inline u64 readq_relaxed(const volatile void __iomem *addr)
|
|||
#define writeb_relaxed writeb_relaxed
|
||||
static inline void writeb_relaxed(u8 value, volatile void __iomem *addr)
|
||||
{
|
||||
log_write_mmio(value, 8, addr, _THIS_IP_);
|
||||
log_write_mmio(value, 8, addr, _THIS_IP_, _RET_IP_);
|
||||
__raw_writeb(value, addr);
|
||||
log_post_write_mmio(value, 8, addr, _THIS_IP_);
|
||||
log_post_write_mmio(value, 8, addr, _THIS_IP_, _RET_IP_);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -365,9 +365,9 @@ static inline void writeb_relaxed(u8 value, volatile void __iomem *addr)
|
|||
#define writew_relaxed writew_relaxed
|
||||
static inline void writew_relaxed(u16 value, volatile void __iomem *addr)
|
||||
{
|
||||
log_write_mmio(value, 16, addr, _THIS_IP_);
|
||||
log_write_mmio(value, 16, addr, _THIS_IP_, _RET_IP_);
|
||||
__raw_writew(cpu_to_le16(value), addr);
|
||||
log_post_write_mmio(value, 16, addr, _THIS_IP_);
|
||||
log_post_write_mmio(value, 16, addr, _THIS_IP_, _RET_IP_);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -375,9 +375,9 @@ static inline void writew_relaxed(u16 value, volatile void __iomem *addr)
|
|||
#define writel_relaxed writel_relaxed
|
||||
static inline void writel_relaxed(u32 value, volatile void __iomem *addr)
|
||||
{
|
||||
log_write_mmio(value, 32, addr, _THIS_IP_);
|
||||
log_write_mmio(value, 32, addr, _THIS_IP_, _RET_IP_);
|
||||
__raw_writel(__cpu_to_le32(value), addr);
|
||||
log_post_write_mmio(value, 32, addr, _THIS_IP_);
|
||||
log_post_write_mmio(value, 32, addr, _THIS_IP_, _RET_IP_);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -385,9 +385,9 @@ static inline void writel_relaxed(u32 value, volatile void __iomem *addr)
|
|||
#define writeq_relaxed writeq_relaxed
|
||||
static inline void writeq_relaxed(u64 value, volatile void __iomem *addr)
|
||||
{
|
||||
log_write_mmio(value, 64, addr, _THIS_IP_);
|
||||
log_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_);
|
||||
__raw_writeq(__cpu_to_le64(value), addr);
|
||||
log_post_write_mmio(value, 64, addr, _THIS_IP_);
|
||||
log_post_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -12,12 +12,14 @@
|
|||
|
||||
DECLARE_EVENT_CLASS(rwmmio_rw_template,
|
||||
|
||||
TP_PROTO(unsigned long caller, u64 val, u8 width, volatile void __iomem *addr),
|
||||
TP_PROTO(unsigned long caller, unsigned long caller0, u64 val, u8 width,
|
||||
volatile void __iomem *addr),
|
||||
|
||||
TP_ARGS(caller, val, width, addr),
|
||||
TP_ARGS(caller, caller0, val, width, addr),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned long, caller)
|
||||
__field(unsigned long, caller0)
|
||||
__field(unsigned long, addr)
|
||||
__field(u64, val)
|
||||
__field(u8, width)
|
||||
|
@ -25,56 +27,64 @@ DECLARE_EVENT_CLASS(rwmmio_rw_template,
|
|||
|
||||
TP_fast_assign(
|
||||
__entry->caller = caller;
|
||||
__entry->caller0 = caller0;
|
||||
__entry->val = val;
|
||||
__entry->addr = (unsigned long)addr;
|
||||
__entry->width = width;
|
||||
),
|
||||
|
||||
TP_printk("%pS width=%d val=%#llx addr=%#lx",
|
||||
(void *)__entry->caller, __entry->width,
|
||||
TP_printk("%pS -> %pS width=%d val=%#llx addr=%#lx",
|
||||
(void *)__entry->caller0, (void *)__entry->caller, __entry->width,
|
||||
__entry->val, __entry->addr)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(rwmmio_rw_template, rwmmio_write,
|
||||
TP_PROTO(unsigned long caller, u64 val, u8 width, volatile void __iomem *addr),
|
||||
TP_ARGS(caller, val, width, addr)
|
||||
TP_PROTO(unsigned long caller, unsigned long caller0, u64 val, u8 width,
|
||||
volatile void __iomem *addr),
|
||||
TP_ARGS(caller, caller0, val, width, addr)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(rwmmio_rw_template, rwmmio_post_write,
|
||||
TP_PROTO(unsigned long caller, u64 val, u8 width, volatile void __iomem *addr),
|
||||
TP_ARGS(caller, val, width, addr)
|
||||
TP_PROTO(unsigned long caller, unsigned long caller0, u64 val, u8 width,
|
||||
volatile void __iomem *addr),
|
||||
TP_ARGS(caller, caller0, val, width, addr)
|
||||
);
|
||||
|
||||
TRACE_EVENT(rwmmio_read,
|
||||
|
||||
TP_PROTO(unsigned long caller, u8 width, const volatile void __iomem *addr),
|
||||
TP_PROTO(unsigned long caller, unsigned long caller0, u8 width,
|
||||
const volatile void __iomem *addr),
|
||||
|
||||
TP_ARGS(caller, width, addr),
|
||||
TP_ARGS(caller, caller0, width, addr),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned long, caller)
|
||||
__field(unsigned long, caller0)
|
||||
__field(unsigned long, addr)
|
||||
__field(u8, width)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->caller = caller;
|
||||
__entry->caller0 = caller0;
|
||||
__entry->addr = (unsigned long)addr;
|
||||
__entry->width = width;
|
||||
),
|
||||
|
||||
TP_printk("%pS width=%d addr=%#lx",
|
||||
(void *)__entry->caller, __entry->width, __entry->addr)
|
||||
TP_printk("%pS -> %pS width=%d addr=%#lx",
|
||||
(void *)__entry->caller0, (void *)__entry->caller, __entry->width, __entry->addr)
|
||||
);
|
||||
|
||||
TRACE_EVENT(rwmmio_post_read,
|
||||
|
||||
TP_PROTO(unsigned long caller, u64 val, u8 width, const volatile void __iomem *addr),
|
||||
TP_PROTO(unsigned long caller, unsigned long caller0, u64 val, u8 width,
|
||||
const volatile void __iomem *addr),
|
||||
|
||||
TP_ARGS(caller, val, width, addr),
|
||||
TP_ARGS(caller, caller0, val, width, addr),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned long, caller)
|
||||
__field(unsigned long, caller0)
|
||||
__field(unsigned long, addr)
|
||||
__field(u64, val)
|
||||
__field(u8, width)
|
||||
|
@ -82,13 +92,14 @@ TRACE_EVENT(rwmmio_post_read,
|
|||
|
||||
TP_fast_assign(
|
||||
__entry->caller = caller;
|
||||
__entry->caller0 = caller0;
|
||||
__entry->val = val;
|
||||
__entry->addr = (unsigned long)addr;
|
||||
__entry->width = width;
|
||||
),
|
||||
|
||||
TP_printk("%pS width=%d val=%#llx addr=%#lx",
|
||||
(void *)__entry->caller, __entry->width,
|
||||
TP_printk("%pS -> %pS width=%d val=%#llx addr=%#lx",
|
||||
(void *)__entry->caller0, (void *)__entry->caller, __entry->width,
|
||||
__entry->val, __entry->addr)
|
||||
);
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _ASM_GENERIC_TYPES_H
|
||||
#define _ASM_GENERIC_TYPES_H
|
||||
#ifndef _UAPI_ASM_GENERIC_TYPES_H
|
||||
#define _UAPI_ASM_GENERIC_TYPES_H
|
||||
/*
|
||||
* int-ll64 is used everywhere now.
|
||||
*/
|
||||
#include <asm-generic/int-ll64.h>
|
||||
|
||||
#endif /* _ASM_GENERIC_TYPES_H */
|
||||
#endif /* _UAPI_ASM_GENERIC_TYPES_H */
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#define _UAPI_LINUX_SWAB_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/stddef.h>
|
||||
#include <asm/bitsperlong.h>
|
||||
#include <asm/swab.h>
|
||||
|
||||
|
|
|
@ -14,33 +14,33 @@
|
|||
|
||||
#ifdef CONFIG_TRACE_MMIO_ACCESS
|
||||
void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
|
||||
unsigned long caller_addr)
|
||||
unsigned long caller_addr, unsigned long caller_addr0)
|
||||
{
|
||||
trace_rwmmio_write(caller_addr, val, width, addr);
|
||||
trace_rwmmio_write(caller_addr, caller_addr0, val, width, addr);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(log_write_mmio);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_write);
|
||||
|
||||
void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr,
|
||||
unsigned long caller_addr)
|
||||
unsigned long caller_addr, unsigned long caller_addr0)
|
||||
{
|
||||
trace_rwmmio_post_write(caller_addr, val, width, addr);
|
||||
trace_rwmmio_post_write(caller_addr, caller_addr0, val, width, addr);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(log_post_write_mmio);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_post_write);
|
||||
|
||||
void log_read_mmio(u8 width, const volatile void __iomem *addr,
|
||||
unsigned long caller_addr)
|
||||
unsigned long caller_addr, unsigned long caller_addr0)
|
||||
{
|
||||
trace_rwmmio_read(caller_addr, width, addr);
|
||||
trace_rwmmio_read(caller_addr, caller_addr0, width, addr);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(log_read_mmio);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_read);
|
||||
|
||||
void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr,
|
||||
unsigned long caller_addr)
|
||||
unsigned long caller_addr, unsigned long caller_addr0)
|
||||
{
|
||||
trace_rwmmio_post_read(caller_addr, val, width, addr);
|
||||
trace_rwmmio_post_read(caller_addr, caller_addr0, val, width, addr);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(log_post_read_mmio);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_post_read);
|
||||
|
|
Загрузка…
Ссылка в новой задаче