diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/amba/clcd.h | 33 | ||||
| -rw-r--r-- | include/linux/backlight.h | 11 | ||||
| -rw-r--r-- | include/linux/ftrace_event.h | 23 | ||||
| -rw-r--r-- | include/linux/memory.h | 2 | ||||
| -rw-r--r-- | include/linux/of.h | 2 | ||||
| -rw-r--r-- | include/linux/perf_event.h | 59 | ||||
| -rw-r--r-- | include/linux/serial_sci.h | 4 | ||||
| -rw-r--r-- | include/linux/spi/l4f00242t03.h | 31 | ||||
| -rw-r--r-- | include/linux/syscalls.h | 26 | ||||
| -rw-r--r-- | include/linux/tty.h | 10 | ||||
| -rw-r--r-- | include/linux/usb.h | 18 | ||||
| -rw-r--r-- | include/linux/vt.h | 3 | ||||
| -rw-r--r-- | include/scsi/libiscsi.h | 3 | ||||
| -rw-r--r-- | include/trace/ftrace.h | 44 | ||||
| -rw-r--r-- | include/trace/syscall.h | 8 | 
15 files changed, 195 insertions, 82 deletions
| diff --git a/include/linux/amba/clcd.h b/include/linux/amba/clcd.h index 29c0448265cf..ca16c3801a1e 100644 --- a/include/linux/amba/clcd.h +++ b/include/linux/amba/clcd.h @@ -21,22 +21,21 @@  #define CLCD_UBAS 		0x00000010  #define CLCD_LBAS 		0x00000014 -#if !defined(CONFIG_ARCH_VERSATILE) && !defined(CONFIG_ARCH_REALVIEW) -#define CLCD_IENB 		0x00000018 -#define CLCD_CNTL 		0x0000001c -#else -/* - * Someone rearranged these two registers on the Versatile - * platform... - */ -#define CLCD_IENB 		0x0000001c -#define CLCD_CNTL 		0x00000018 -#endif - -#define CLCD_STAT 		0x00000020 -#define CLCD_INTR 		0x00000024 -#define CLCD_UCUR 		0x00000028 -#define CLCD_LCUR 		0x0000002C +#define CLCD_PL110_IENB		0x00000018 +#define CLCD_PL110_CNTL		0x0000001c +#define CLCD_PL110_STAT		0x00000020 +#define CLCD_PL110_INTR 	0x00000024 +#define CLCD_PL110_UCUR		0x00000028 +#define CLCD_PL110_LCUR		0x0000002C + +#define CLCD_PL111_CNTL		0x00000018 +#define CLCD_PL111_IENB		0x0000001c +#define CLCD_PL111_RIS		0x00000020 +#define CLCD_PL111_MIS		0x00000024 +#define CLCD_PL111_ICR		0x00000028 +#define CLCD_PL111_UCUR		0x0000002c +#define CLCD_PL111_LCUR		0x00000030 +  #define CLCD_PALL 		0x00000200  #define CLCD_PALETTE		0x00000200 @@ -147,6 +146,8 @@ struct clcd_fb {  	struct clcd_board	*board;  	void			*board_data;  	void __iomem		*regs; +	u16			off_ienb; +	u16			off_cntl;  	u32			clcd_cntl;  	u32			cmap[16];  }; diff --git a/include/linux/backlight.h b/include/linux/backlight.h index 8c4f884db6b4..4a3d52e545e1 100644 --- a/include/linux/backlight.h +++ b/include/linux/backlight.h @@ -36,18 +36,18 @@ struct backlight_device;  struct fb_info;  struct backlight_ops { -	const unsigned int options; +	unsigned int options;  #define BL_CORE_SUSPENDRESUME	(1 << 0)  	/* Notify the backlight driver some property has changed */ -	int (* const update_status)(struct backlight_device *); +	int (*update_status)(struct backlight_device *);  	/* Return the current backlight brightness (accounting for power,  	   fb_blank etc.) */ -	int (* const get_brightness)(struct backlight_device *); +	int (*get_brightness)(struct backlight_device *);  	/* Check if given framebuffer device is the one bound to this backlight;  	   return 0 if not, !=0 if it is. If NULL, backlight always matches the fb. */ -	int (* const check_fb)(struct fb_info *); +	int (*check_fb)(struct backlight_device *, struct fb_info *);  };  /* This structure defines all the properties of a backlight */ @@ -103,7 +103,8 @@ static inline void backlight_update_status(struct backlight_device *bd)  }  extern struct backlight_device *backlight_device_register(const char *name, -	struct device *dev, void *devdata, const struct backlight_ops *ops); +	struct device *dev, void *devdata, const struct backlight_ops *ops, +	const struct backlight_properties *props);  extern void backlight_device_unregister(struct backlight_device *bd);  extern void backlight_force_update(struct backlight_device *bd,  				   enum backlight_update_reason reason); diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index 6b7c444ab8f6..c0f4b364c711 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h @@ -131,12 +131,12 @@ struct ftrace_event_call {  	void			*mod;  	void			*data; -	int			profile_count; -	int			(*profile_enable)(struct ftrace_event_call *); -	void			(*profile_disable)(struct ftrace_event_call *); +	int			perf_refcount; +	int			(*perf_event_enable)(struct ftrace_event_call *); +	void			(*perf_event_disable)(struct ftrace_event_call *);  }; -#define FTRACE_MAX_PROFILE_SIZE	2048 +#define PERF_MAX_TRACE_SIZE	2048  #define MAX_FILTER_PRED		32  #define MAX_FILTER_STR_VAL	256	/* Should handle KSYM_SYMBOL_LEN */ @@ -187,22 +187,25 @@ do {									\  #ifdef CONFIG_PERF_EVENTS  struct perf_event; -extern int ftrace_profile_enable(int event_id); -extern void ftrace_profile_disable(int event_id); + +DECLARE_PER_CPU(struct pt_regs, perf_trace_regs); + +extern int perf_trace_enable(int event_id); +extern void perf_trace_disable(int event_id);  extern int ftrace_profile_set_filter(struct perf_event *event, int event_id,  				     char *filter_str);  extern void ftrace_profile_free_filter(struct perf_event *event);  extern void * -ftrace_perf_buf_prepare(int size, unsigned short type, int *rctxp, +perf_trace_buf_prepare(int size, unsigned short type, int *rctxp,  			 unsigned long *irq_flags);  static inline void -ftrace_perf_buf_submit(void *raw_data, int size, int rctx, u64 addr, -		       u64 count, unsigned long irq_flags) +perf_trace_buf_submit(void *raw_data, int size, int rctx, u64 addr, +		       u64 count, unsigned long irq_flags, struct pt_regs *regs)  {  	struct trace_entry *entry = raw_data; -	perf_tp_event(entry->type, addr, count, raw_data, size); +	perf_tp_event(entry->type, addr, count, raw_data, size, regs);  	perf_swevent_put_recursion_context(rctx);  	local_irq_restore(irq_flags);  } diff --git a/include/linux/memory.h b/include/linux/memory.h index 1adfe779eb99..85582e1bcee9 100644 --- a/include/linux/memory.h +++ b/include/linux/memory.h @@ -36,6 +36,8 @@ struct memory_block {  	struct sys_device sysdev;  }; +int arch_get_memory_phys_device(unsigned long start_pfn); +  /* These states are exposed to userspace as text strings in sysfs */  #define	MEM_ONLINE		(1<<0) /* exposed to userspace */  #define	MEM_GOING_OFFLINE	(1<<1) /* exposed to userspace */ diff --git a/include/linux/of.h b/include/linux/of.h index f6d9cbc39c9c..a367e19bb3af 100644 --- a/include/linux/of.h +++ b/include/linux/of.h @@ -127,7 +127,7 @@ static inline unsigned long of_read_ulong(const __be32 *cell, int size)  /* Default string compare functions, Allow arch asm/prom.h to override */  #if !defined(of_compat_cmp) -#define of_compat_cmp(s1, s2, l)	strncasecmp((s1), (s2), (l)) +#define of_compat_cmp(s1, s2, l)	strcasecmp((s1), (s2))  #define of_prop_cmp(s1, s2)		strcmp((s1), (s2))  #define of_node_cmp(s1, s2)		strcasecmp((s1), (s2))  #endif diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 6f8cd7da1a01..95477038a72a 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -452,6 +452,8 @@ enum perf_callchain_context {  #include <linux/fs.h>  #include <linux/pid_namespace.h>  #include <linux/workqueue.h> +#include <linux/ftrace.h> +#include <linux/cpu.h>  #include <asm/atomic.h>  #define PERF_MAX_STACK_DEPTH		255 @@ -847,6 +849,44 @@ perf_sw_event(u32 event_id, u64 nr, int nmi, struct pt_regs *regs, u64 addr)  		__perf_sw_event(event_id, nr, nmi, regs, addr);  } +extern void +perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip, int skip); + +/* + * Take a snapshot of the regs. Skip ip and frame pointer to + * the nth caller. We only need a few of the regs: + * - ip for PERF_SAMPLE_IP + * - cs for user_mode() tests + * - bp for callchains + * - eflags, for future purposes, just in case + */ +static inline void perf_fetch_caller_regs(struct pt_regs *regs, int skip) +{ +	unsigned long ip; + +	memset(regs, 0, sizeof(*regs)); + +	switch (skip) { +	case 1 : +		ip = CALLER_ADDR0; +		break; +	case 2 : +		ip = CALLER_ADDR1; +		break; +	case 3 : +		ip = CALLER_ADDR2; +		break; +	case 4: +		ip = CALLER_ADDR3; +		break; +	/* No need to support further for now */ +	default: +		ip = 0; +	} + +	return perf_arch_fetch_caller_regs(regs, ip, skip); +} +  extern void __perf_event_mmap(struct vm_area_struct *vma);  static inline void perf_event_mmap(struct vm_area_struct *vma) @@ -880,7 +920,8 @@ static inline bool perf_paranoid_kernel(void)  }  extern void perf_event_init(void); -extern void perf_tp_event(int event_id, u64 addr, u64 count, void *record, int entry_size); +extern void perf_tp_event(int event_id, u64 addr, u64 count, void *record, +			  int entry_size, struct pt_regs *regs);  extern void perf_bp_event(struct perf_event *event, void *data);  #ifndef perf_misc_flags @@ -936,5 +977,21 @@ static inline void perf_event_disable(struct perf_event *event)		{ }  #define perf_output_put(handle, x) \  	perf_output_copy((handle), &(x), sizeof(x)) +/* + * This has to have a higher priority than migration_notifier in sched.c. + */ +#define perf_cpu_notifier(fn)					\ +do {								\ +	static struct notifier_block fn##_nb __cpuinitdata =	\ +		{ .notifier_call = fn, .priority = 20 };	\ +	fn(&fn##_nb, (unsigned long)CPU_UP_PREPARE,		\ +		(void *)(unsigned long)smp_processor_id());	\ +	fn(&fn##_nb, (unsigned long)CPU_STARTING,		\ +		(void *)(unsigned long)smp_processor_id());	\ +	fn(&fn##_nb, (unsigned long)CPU_ONLINE,			\ +		(void *)(unsigned long)smp_processor_id());	\ +	register_cpu_notifier(&fn##_nb);			\ +} while (0) +  #endif /* __KERNEL__ */  #endif /* _LINUX_PERF_EVENT_H */ diff --git a/include/linux/serial_sci.h b/include/linux/serial_sci.h index 1b177d29a7f0..193d4bfe42ff 100644 --- a/include/linux/serial_sci.h +++ b/include/linux/serial_sci.h @@ -2,7 +2,9 @@  #define __LINUX_SERIAL_SCI_H  #include <linux/serial_core.h> +#ifdef CONFIG_SERIAL_SH_SCI_DMA  #include <asm/dmaengine.h> +#endif  /*   * Generic header for SuperH SCI(F) (used by sh/sh64/h8300 and related parts) @@ -30,8 +32,10 @@ struct plat_sci_port {  	upf_t		flags;			/* UPF_* flags */  	char		*clk;			/* clock string */  	struct device	*dma_dev; +#ifdef CONFIG_SERIAL_SH_SCI_DMA  	enum sh_dmae_slave_chan_id dma_slave_tx;  	enum sh_dmae_slave_chan_id dma_slave_rx; +#endif  };  #endif /* __LINUX_SERIAL_SCI_H */ diff --git a/include/linux/spi/l4f00242t03.h b/include/linux/spi/l4f00242t03.h new file mode 100644 index 000000000000..aee1dbda4edc --- /dev/null +++ b/include/linux/spi/l4f00242t03.h @@ -0,0 +1,31 @@ +/* + * l4f00242t03.h -- Platform glue for Epson L4F00242T03 LCD + * + * Copyright (c) 2009 Alberto Panizzo <maramaopercheseimorto@gmail.com> + * Based on Marek Vasut work in lms283gf05.h + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA +*/ + +#ifndef _INCLUDE_LINUX_SPI_L4F00242T03_H_ +#define _INCLUDE_LINUX_SPI_L4F00242T03_H_ + +struct l4f00242t03_pdata { +	unsigned int	reset_gpio; +	unsigned int	data_enable_gpio; +	const char 	*io_supply;	/* will be set to 1.8 V */ +	const char 	*core_supply;	/* will be set to 2.8 V */ +}; + +#endif /* _INCLUDE_LINUX_SPI_L4F00242T03_H_ */ diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 44f2ad0e8825..057929b0a651 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -105,18 +105,18 @@ struct perf_event_attr;  #ifdef CONFIG_PERF_EVENTS -#define TRACE_SYS_ENTER_PROFILE_INIT(sname)				       \ -	.profile_enable = prof_sysenter_enable,				       \ -	.profile_disable = prof_sysenter_disable, +#define TRACE_SYS_ENTER_PERF_INIT(sname)				       \ +	.perf_event_enable = perf_sysenter_enable,			       \ +	.perf_event_disable = perf_sysenter_disable, -#define TRACE_SYS_EXIT_PROFILE_INIT(sname)				       \ -	.profile_enable = prof_sysexit_enable,				       \ -	.profile_disable = prof_sysexit_disable, +#define TRACE_SYS_EXIT_PERF_INIT(sname)					       \ +	.perf_event_enable = perf_sysexit_enable,			       \ +	.perf_event_disable = perf_sysexit_disable,  #else -#define TRACE_SYS_ENTER_PROFILE(sname) -#define TRACE_SYS_ENTER_PROFILE_INIT(sname) -#define TRACE_SYS_EXIT_PROFILE(sname) -#define TRACE_SYS_EXIT_PROFILE_INIT(sname) +#define TRACE_SYS_ENTER_PERF(sname) +#define TRACE_SYS_ENTER_PERF_INIT(sname) +#define TRACE_SYS_EXIT_PERF(sname) +#define TRACE_SYS_EXIT_PERF_INIT(sname)  #endif /* CONFIG_PERF_EVENTS */  #ifdef CONFIG_FTRACE_SYSCALLS @@ -153,7 +153,7 @@ struct perf_event_attr;  		.regfunc		= reg_event_syscall_enter,	\  		.unregfunc		= unreg_event_syscall_enter,	\  		.data			= (void *)&__syscall_meta_##sname,\ -		TRACE_SYS_ENTER_PROFILE_INIT(sname)			\ +		TRACE_SYS_ENTER_PERF_INIT(sname)			\  	}  #define SYSCALL_TRACE_EXIT_EVENT(sname)					\ @@ -175,7 +175,7 @@ struct perf_event_attr;  		.regfunc		= reg_event_syscall_exit,	\  		.unregfunc		= unreg_event_syscall_exit,	\  		.data			= (void *)&__syscall_meta_##sname,\ -		TRACE_SYS_EXIT_PROFILE_INIT(sname)			\ +		TRACE_SYS_EXIT_PERF_INIT(sname)			\  	}  #define SYSCALL_METADATA(sname, nb)				\ @@ -688,7 +688,7 @@ asmlinkage long sys_shmat(int shmid, char __user *shmaddr, int shmflg);  asmlinkage long sys_shmget(key_t key, size_t size, int flag);  asmlinkage long sys_shmdt(char __user *shmaddr);  asmlinkage long sys_shmctl(int shmid, int cmd, struct shmid_ds __user *buf); -asmlinkage long sys_ipc(unsigned int call, int first, int second, +asmlinkage long sys_ipc(unsigned int call, int first, unsigned long second,  		unsigned long third, void __user *ptr, long fifth);  asmlinkage long sys_mq_open(const char __user *name, int oflag, mode_t mode, struct mq_attr __user *attr); diff --git a/include/linux/tty.h b/include/linux/tty.h index 568369a86306..4409967db0c4 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h @@ -70,12 +70,13 @@ struct tty_buffer {  /*   * We default to dicing tty buffer allocations to this many characters - * in order to avoid multiple page allocations. We assume tty_buffer itself - * is under 256 bytes. See tty_buffer_find for the allocation logic this - * must match + * in order to avoid multiple page allocations. We know the size of + * tty_buffer itself but it must also be taken into account that the + * the buffer is 256 byte aligned. See tty_buffer_find for the allocation + * logic this must match   */ -#define TTY_BUFFER_PAGE		((PAGE_SIZE  - 256) / 2) +#define TTY_BUFFER_PAGE	(((PAGE_SIZE - sizeof(struct tty_buffer)) / 2) & ~0xFF)  struct tty_bufhead { @@ -223,6 +224,7 @@ struct tty_port {  	wait_queue_head_t	close_wait;	/* Close waiters */  	wait_queue_head_t	delta_msr_wait;	/* Modem status change */  	unsigned long		flags;		/* TTY flags ASY_*/ +	unsigned char		console:1;	/* port is a console */  	struct mutex		mutex;		/* Locking */  	struct mutex		buf_mutex;	/* Buffer alloc lock */  	unsigned char		*xmit_buf;	/* Optional buffer */ diff --git a/include/linux/usb.h b/include/linux/usb.h index 8c9f053111bb..ce1323c4e47c 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h @@ -1055,7 +1055,8 @@ typedef void (*usb_complete_t)(struct urb *);   * @number_of_packets: Lists the number of ISO transfer buffers.   * @interval: Specifies the polling interval for interrupt or isochronous   *	transfers.  The units are frames (milliseconds) for full and low - *	speed devices, and microframes (1/8 millisecond) for highspeed ones. + *	speed devices, and microframes (1/8 millisecond) for highspeed + *	and SuperSpeed devices.   * @error_count: Returns the number of ISO transfers that reported errors.   * @context: For use in completion functions.  This normally points to   *	request-specific driver context. @@ -1286,9 +1287,16 @@ static inline void usb_fill_bulk_urb(struct urb *urb,   *   * Initializes a interrupt urb with the proper information needed to submit   * it to a device. - * Note that high speed interrupt endpoints use a logarithmic encoding of - * the endpoint interval, and express polling intervals in microframes - * (eight per millisecond) rather than in frames (one per millisecond). + * + * Note that High Speed and SuperSpeed interrupt endpoints use a logarithmic + * encoding of the endpoint interval, and express polling intervals in + * microframes (eight per millisecond) rather than in frames (one per + * millisecond). + * + * Wireless USB also uses the logarithmic encoding, but specifies it in units of + * 128us instead of 125us.  For Wireless USB devices, the interval is passed + * through to the host controller, rather than being translated into microframe + * units.   */  static inline void usb_fill_int_urb(struct urb *urb,  				    struct usb_device *dev, @@ -1305,7 +1313,7 @@ static inline void usb_fill_int_urb(struct urb *urb,  	urb->transfer_buffer_length = buffer_length;  	urb->complete = complete_fn;  	urb->context = context; -	if (dev->speed == USB_SPEED_HIGH) +	if (dev->speed == USB_SPEED_HIGH || dev->speed == USB_SPEED_SUPER)  		urb->interval = 1 << (interval - 1);  	else  		urb->interval = interval; diff --git a/include/linux/vt.h b/include/linux/vt.h index 778b7b2a47d4..d5dd0bc408fd 100644 --- a/include/linux/vt.h +++ b/include/linux/vt.h @@ -27,7 +27,7 @@ struct vt_mode {  #define VT_SETMODE	0x5602	/* set mode of active vt */  #define		VT_AUTO		0x00	/* auto vt switching */  #define		VT_PROCESS	0x01	/* process controls switching */ -#define		VT_PROCESS_AUTO 0x02	/* process is notified of switching */ +#define		VT_ACKACQ	0x02	/* acknowledge switch */  struct vt_stat {  	unsigned short v_active;	/* active vt */ @@ -38,7 +38,6 @@ struct vt_stat {  #define VT_SENDSIG	0x5604	/* signal to send to bitmask of vts */  #define VT_RELDISP	0x5605	/* release display */ -#define		VT_ACKACQ	0x02	/* acknowledge switch */  #define VT_ACTIVATE	0x5606	/* make vt active */  #define VT_WAITACTIVE	0x5607	/* wait for vt active */ diff --git a/include/scsi/libiscsi.h b/include/scsi/libiscsi.h index ff92b46f5153..ae5196aae1a5 100644 --- a/include/scsi/libiscsi.h +++ b/include/scsi/libiscsi.h @@ -338,7 +338,8 @@ struct iscsi_host {  extern int iscsi_change_queue_depth(struct scsi_device *sdev, int depth,  				    int reason);  extern int iscsi_eh_abort(struct scsi_cmnd *sc); -extern int iscsi_eh_target_reset(struct scsi_cmnd *sc); +extern int iscsi_eh_recover_target(struct scsi_cmnd *sc); +extern int iscsi_eh_session_reset(struct scsi_cmnd *sc);  extern int iscsi_eh_device_reset(struct scsi_cmnd *sc);  extern int iscsi_queuecommand(struct scsi_cmnd *sc,  			      void (*done)(struct scsi_cmnd *)); diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h index 601ad7744247..ea6f9d4a20e9 100644 --- a/include/trace/ftrace.h +++ b/include/trace/ftrace.h @@ -401,18 +401,18 @@ static inline notrace int ftrace_get_offsets_##call(			\  #undef DEFINE_EVENT  #define DEFINE_EVENT(template, name, proto, args)			\  									\ -static void ftrace_profile_##name(proto);				\ +static void perf_trace_##name(proto);					\  									\  static notrace int							\ -ftrace_profile_enable_##name(struct ftrace_event_call *unused)		\ +perf_trace_enable_##name(struct ftrace_event_call *unused)		\  {									\ -	return register_trace_##name(ftrace_profile_##name);		\ +	return register_trace_##name(perf_trace_##name);		\  }									\  									\  static notrace void							\ -ftrace_profile_disable_##name(struct ftrace_event_call *unused)		\ +perf_trace_disable_##name(struct ftrace_event_call *unused)		\  {									\ -	unregister_trace_##name(ftrace_profile_##name);			\ +	unregister_trace_##name(perf_trace_##name);			\  }  #undef DEFINE_EVENT_PRINT @@ -507,12 +507,12 @@ ftrace_profile_disable_##name(struct ftrace_event_call *unused)		\  #ifdef CONFIG_PERF_EVENTS -#define _TRACE_PROFILE_INIT(call)					\ -	.profile_enable = ftrace_profile_enable_##call,			\ -	.profile_disable = ftrace_profile_disable_##call, +#define _TRACE_PERF_INIT(call)						\ +	.perf_event_enable = perf_trace_enable_##call,			\ +	.perf_event_disable = perf_trace_disable_##call,  #else -#define _TRACE_PROFILE_INIT(call) +#define _TRACE_PERF_INIT(call)  #endif /* CONFIG_PERF_EVENTS */  #undef __entry @@ -638,7 +638,7 @@ __attribute__((section("_ftrace_events"))) event_##call = {		\  	.unregfunc		= ftrace_raw_unreg_event_##call,	\  	.print_fmt		= print_fmt_##template,			\  	.define_fields		= ftrace_define_fields_##template,	\ -	_TRACE_PROFILE_INIT(call)					\ +	_TRACE_PERF_INIT(call)					\  }  #undef DEFINE_EVENT_PRINT @@ -657,18 +657,18 @@ __attribute__((section("_ftrace_events"))) event_##call = {		\  	.unregfunc		= ftrace_raw_unreg_event_##call,	\  	.print_fmt		= print_fmt_##call,			\  	.define_fields		= ftrace_define_fields_##template,	\ -	_TRACE_PROFILE_INIT(call)					\ +	_TRACE_PERF_INIT(call)					\  }  #include TRACE_INCLUDE(TRACE_INCLUDE_FILE)  /* - * Define the insertion callback to profile events + * Define the insertion callback to perf events   *   * The job is very similar to ftrace_raw_event_<call> except that we don't   * insert in the ring buffer but in a perf counter.   * - * static void ftrace_profile_<call>(proto) + * static void ftrace_perf_<call>(proto)   * {   *	struct ftrace_data_offsets_<call> __maybe_unused __data_offsets;   *	struct ftrace_event_call *event_call = &event_<call>; @@ -757,13 +757,14 @@ __attribute__((section("_ftrace_events"))) event_##call = {		\  #undef DECLARE_EVENT_CLASS  #define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print)	\  static notrace void							\ -ftrace_profile_templ_##call(struct ftrace_event_call *event_call,	\ +perf_trace_templ_##call(struct ftrace_event_call *event_call,		\  			    proto)					\  {									\  	struct ftrace_data_offsets_##call __maybe_unused __data_offsets;\  	struct ftrace_raw_##call *entry;				\  	u64 __addr = 0, __count = 1;					\  	unsigned long irq_flags;					\ +	struct pt_regs *__regs;						\  	int __entry_size;						\  	int __data_size;						\  	int rctx;							\ @@ -773,10 +774,10 @@ ftrace_profile_templ_##call(struct ftrace_event_call *event_call,	\  			     sizeof(u64));				\  	__entry_size -= sizeof(u32);					\  									\ -	if (WARN_ONCE(__entry_size > FTRACE_MAX_PROFILE_SIZE,		\ +	if (WARN_ONCE(__entry_size > PERF_MAX_TRACE_SIZE,		\  		      "profile buffer not large enough"))		\  		return;							\ -	entry = (struct ftrace_raw_##call *)ftrace_perf_buf_prepare(	\ +	entry = (struct ftrace_raw_##call *)perf_trace_buf_prepare(	\  		__entry_size, event_call->id, &rctx, &irq_flags);	\  	if (!entry)							\  		return;							\ @@ -784,17 +785,20 @@ ftrace_profile_templ_##call(struct ftrace_event_call *event_call,	\  									\  	{ assign; }							\  									\ -	ftrace_perf_buf_submit(entry, __entry_size, rctx, __addr,	\ -			       __count, irq_flags);			\ +	__regs = &__get_cpu_var(perf_trace_regs);			\ +	perf_fetch_caller_regs(__regs, 2);				\ +									\ +	perf_trace_buf_submit(entry, __entry_size, rctx, __addr,	\ +			       __count, irq_flags, __regs);		\  }  #undef DEFINE_EVENT  #define DEFINE_EVENT(template, call, proto, args)		\ -static notrace void ftrace_profile_##call(proto)		\ +static notrace void perf_trace_##call(proto)			\  {								\  	struct ftrace_event_call *event_call = &event_##call;	\  								\ -	ftrace_profile_templ_##template(event_call, args);	\ +	perf_trace_templ_##template(event_call, args);		\  }  #undef DEFINE_EVENT_PRINT diff --git a/include/trace/syscall.h b/include/trace/syscall.h index 0387100752f0..e5e5f48dbfb3 100644 --- a/include/trace/syscall.h +++ b/include/trace/syscall.h @@ -47,10 +47,10 @@ enum print_line_t print_syscall_exit(struct trace_iterator *iter, int flags);  #endif  #ifdef CONFIG_PERF_EVENTS -int prof_sysenter_enable(struct ftrace_event_call *call); -void prof_sysenter_disable(struct ftrace_event_call *call); -int prof_sysexit_enable(struct ftrace_event_call *call); -void prof_sysexit_disable(struct ftrace_event_call *call); +int perf_sysenter_enable(struct ftrace_event_call *call); +void perf_sysenter_disable(struct ftrace_event_call *call); +int perf_sysexit_enable(struct ftrace_event_call *call); +void perf_sysexit_disable(struct ftrace_event_call *call);  #endif  #endif /* _TRACE_SYSCALL_H */ | 
