| .. | .. | 
|---|
| 23 | 23 |  	return 0; | 
|---|
| 24 | 24 |  } | 
|---|
| 25 | 25 |   | 
|---|
| 26 |  | -static int trace_test_buffer_cpu(struct trace_buffer *buf, int cpu)  | 
|---|
 | 26 | +static int trace_test_buffer_cpu(struct array_buffer *buf, int cpu)  | 
|---|
| 27 | 27 |  { | 
|---|
| 28 | 28 |  	struct ring_buffer_event *event; | 
|---|
| 29 | 29 |  	struct trace_entry *entry; | 
|---|
| .. | .. | 
|---|
| 60 | 60 |   * Test the trace buffer to see if all the elements | 
|---|
| 61 | 61 |   * are still sane. | 
|---|
| 62 | 62 |   */ | 
|---|
| 63 |  | -static int __maybe_unused trace_test_buffer(struct trace_buffer *buf, unsigned long *count)  | 
|---|
 | 63 | +static int __maybe_unused trace_test_buffer(struct array_buffer *buf, unsigned long *count)  | 
|---|
| 64 | 64 |  { | 
|---|
| 65 | 65 |  	unsigned long flags, cnt = 0; | 
|---|
| 66 | 66 |  	int cpu, ret = 0; | 
|---|
| .. | .. | 
|---|
| 362 | 362 |  	msleep(100); | 
|---|
| 363 | 363 |   | 
|---|
| 364 | 364 |  	/* we should have nothing in the buffer */ | 
|---|
| 365 |  | -	ret = trace_test_buffer(&tr->trace_buffer, &count);  | 
|---|
 | 365 | +	ret = trace_test_buffer(&tr->array_buffer, &count);  | 
|---|
| 366 | 366 |  	if (ret) | 
|---|
| 367 | 367 |  		goto out; | 
|---|
| 368 | 368 |   | 
|---|
| .. | .. | 
|---|
| 383 | 383 |  	ftrace_enabled = 0; | 
|---|
| 384 | 384 |   | 
|---|
| 385 | 385 |  	/* check the trace buffer */ | 
|---|
| 386 |  | -	ret = trace_test_buffer(&tr->trace_buffer, &count);  | 
|---|
 | 386 | +	ret = trace_test_buffer(&tr->array_buffer, &count);  | 
|---|
| 387 | 387 |   | 
|---|
| 388 | 388 |  	ftrace_enabled = 1; | 
|---|
| 389 | 389 |  	tracing_start(); | 
|---|
| .. | .. | 
|---|
| 687 | 687 |  	ftrace_enabled = 0; | 
|---|
| 688 | 688 |   | 
|---|
| 689 | 689 |  	/* check the trace buffer */ | 
|---|
| 690 |  | -	ret = trace_test_buffer(&tr->trace_buffer, &count);  | 
|---|
 | 690 | +	ret = trace_test_buffer(&tr->array_buffer, &count);  | 
|---|
| 691 | 691 |   | 
|---|
| 692 | 692 |  	ftrace_enabled = 1; | 
|---|
| 693 | 693 |  	trace->reset(tr); | 
|---|
| .. | .. | 
|---|
| 746 | 746 |  	return trace_graph_entry(trace); | 
|---|
| 747 | 747 |  } | 
|---|
| 748 | 748 |   | 
|---|
 | 749 | +static struct fgraph_ops fgraph_ops __initdata  = {  | 
|---|
 | 750 | +	.entryfunc		= &trace_graph_entry_watchdog,  | 
|---|
 | 751 | +	.retfunc		= &trace_graph_return,  | 
|---|
 | 752 | +};  | 
|---|
 | 753 | +  | 
|---|
| 749 | 754 |  /* | 
|---|
| 750 | 755 |   * Pretty much the same than for the function tracer from which the selftest | 
|---|
| 751 | 756 |   * has been borrowed. | 
|---|
| .. | .. | 
|---|
| 768 | 773 |  	 * Simulate the init() callback but we attach a watchdog callback | 
|---|
| 769 | 774 |  	 * to detect and recover from possible hangs | 
|---|
| 770 | 775 |  	 */ | 
|---|
| 771 |  | -	tracing_reset_online_cpus(&tr->trace_buffer);  | 
|---|
 | 776 | +	tracing_reset_online_cpus(&tr->array_buffer);  | 
|---|
| 772 | 777 |  	set_graph_array(tr); | 
|---|
| 773 |  | -	ret = register_ftrace_graph(&trace_graph_return,  | 
|---|
| 774 |  | -				    &trace_graph_entry_watchdog);  | 
|---|
 | 778 | +	ret = register_ftrace_graph(&fgraph_ops);  | 
|---|
| 775 | 779 |  	if (ret) { | 
|---|
| 776 | 780 |  		warn_failed_init_tracer(trace, ret); | 
|---|
| 777 | 781 |  		goto out; | 
|---|
| .. | .. | 
|---|
| 783 | 787 |   | 
|---|
| 784 | 788 |  	/* Have we just recovered from a hang? */ | 
|---|
| 785 | 789 |  	if (graph_hang_thresh > GRAPH_MAX_FUNC_TEST) { | 
|---|
| 786 |  | -		tracing_selftest_disabled = true;  | 
|---|
 | 790 | +		disable_tracing_selftest("recovering from a hang");  | 
|---|
| 787 | 791 |  		ret = -1; | 
|---|
| 788 | 792 |  		goto out; | 
|---|
| 789 | 793 |  	} | 
|---|
| .. | .. | 
|---|
| 791 | 795 |  	tracing_stop(); | 
|---|
| 792 | 796 |   | 
|---|
| 793 | 797 |  	/* check the trace buffer */ | 
|---|
| 794 |  | -	ret = trace_test_buffer(&tr->trace_buffer, &count);  | 
|---|
 | 798 | +	ret = trace_test_buffer(&tr->array_buffer, &count);  | 
|---|
| 795 | 799 |   | 
|---|
| 796 |  | -	trace->reset(tr);  | 
|---|
 | 800 | +	/* Need to also simulate the tr->reset to remove this fgraph_ops */  | 
|---|
 | 801 | +	tracing_stop_cmdline_record();  | 
|---|
 | 802 | +	unregister_ftrace_graph(&fgraph_ops);  | 
|---|
 | 803 | +  | 
|---|
| 797 | 804 |  	tracing_start(); | 
|---|
| 798 | 805 |   | 
|---|
| 799 | 806 |  	if (!ret && !count) { | 
|---|
| .. | .. | 
|---|
| 846 | 853 |  	/* stop the tracing. */ | 
|---|
| 847 | 854 |  	tracing_stop(); | 
|---|
| 848 | 855 |  	/* check both trace buffers */ | 
|---|
| 849 |  | -	ret = trace_test_buffer(&tr->trace_buffer, NULL);  | 
|---|
 | 856 | +	ret = trace_test_buffer(&tr->array_buffer, NULL);  | 
|---|
| 850 | 857 |  	if (!ret) | 
|---|
| 851 | 858 |  		ret = trace_test_buffer(&tr->max_buffer, &count); | 
|---|
| 852 | 859 |  	trace->reset(tr); | 
|---|
| .. | .. | 
|---|
| 908 | 915 |  	/* stop the tracing. */ | 
|---|
| 909 | 916 |  	tracing_stop(); | 
|---|
| 910 | 917 |  	/* check both trace buffers */ | 
|---|
| 911 |  | -	ret = trace_test_buffer(&tr->trace_buffer, NULL);  | 
|---|
 | 918 | +	ret = trace_test_buffer(&tr->array_buffer, NULL);  | 
|---|
| 912 | 919 |  	if (!ret) | 
|---|
| 913 | 920 |  		ret = trace_test_buffer(&tr->max_buffer, &count); | 
|---|
| 914 | 921 |  	trace->reset(tr); | 
|---|
| .. | .. | 
|---|
| 974 | 981 |  	/* stop the tracing. */ | 
|---|
| 975 | 982 |  	tracing_stop(); | 
|---|
| 976 | 983 |  	/* check both trace buffers */ | 
|---|
| 977 |  | -	ret = trace_test_buffer(&tr->trace_buffer, NULL);  | 
|---|
 | 984 | +	ret = trace_test_buffer(&tr->array_buffer, NULL);  | 
|---|
| 978 | 985 |  	if (ret) | 
|---|
| 979 | 986 |  		goto out; | 
|---|
| 980 | 987 |   | 
|---|
| .. | .. | 
|---|
| 1004 | 1011 |  	/* stop the tracing. */ | 
|---|
| 1005 | 1012 |  	tracing_stop(); | 
|---|
| 1006 | 1013 |  	/* check both trace buffers */ | 
|---|
| 1007 |  | -	ret = trace_test_buffer(&tr->trace_buffer, NULL);  | 
|---|
 | 1014 | +	ret = trace_test_buffer(&tr->array_buffer, NULL);  | 
|---|
| 1008 | 1015 |  	if (ret) | 
|---|
| 1009 | 1016 |  		goto out; | 
|---|
| 1010 | 1017 |   | 
|---|
| .. | .. | 
|---|
| 1134 | 1141 |  	/* stop the tracing. */ | 
|---|
| 1135 | 1142 |  	tracing_stop(); | 
|---|
| 1136 | 1143 |  	/* check both trace buffers */ | 
|---|
| 1137 |  | -	ret = trace_test_buffer(&tr->trace_buffer, NULL);  | 
|---|
 | 1144 | +	ret = trace_test_buffer(&tr->array_buffer, NULL);  | 
|---|
| 1138 | 1145 |  	if (!ret) | 
|---|
| 1139 | 1146 |  		ret = trace_test_buffer(&tr->max_buffer, &count); | 
|---|
| 1140 | 1147 |   | 
|---|
| .. | .. | 
|---|
| 1175 | 1182 |  	/* stop the tracing. */ | 
|---|
| 1176 | 1183 |  	tracing_stop(); | 
|---|
| 1177 | 1184 |  	/* check the trace buffer */ | 
|---|
| 1178 |  | -	ret = trace_test_buffer(&tr->trace_buffer, &count);  | 
|---|
 | 1185 | +	ret = trace_test_buffer(&tr->array_buffer, &count);  | 
|---|
| 1179 | 1186 |  	trace->reset(tr); | 
|---|
| 1180 | 1187 |  	tracing_start(); | 
|---|
| 1181 | 1188 |   | 
|---|