Skip to content

Commit

Permalink
x86: move tracedata to RODATA
Browse files Browse the repository at this point in the history
.. allowing it to be write-protected just as other read-only data
under CONFIG_DEBUG_RODATA.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
  • Loading branch information
Jan Beulich authored and Thomas Gleixner committed May 25, 2008
1 parent 75d3bce commit 63687a5
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 17 deletions.
7 changes: 0 additions & 7 deletions arch/x86/kernel/vmlinux_32.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,6 @@ SECTIONS

BUG_TABLE :text

. = ALIGN(4);
.tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) {
__tracedata_start = .;
*(.tracedata)
__tracedata_end = .;
}

RODATA

/* writeable */
Expand Down
7 changes: 0 additions & 7 deletions arch/x86/kernel/vmlinux_64.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,6 @@ SECTIONS

RODATA

. = ALIGN(4);
.tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) {
__tracedata_start = .;
*(.tracedata)
__tracedata_end = .;
}

. = ALIGN(PAGE_SIZE); /* Align data segment to page size boundary */
/* Data */
.data : AT(ADDR(.data) - LOAD_OFFSET) {
Expand Down
2 changes: 1 addition & 1 deletion drivers/base/power/trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ EXPORT_SYMBOL(set_trace_device);
* it's not any guarantee, but it's a high _likelihood_ that
* the match is valid).
*/
void generate_resume_trace(void *tracedata, unsigned int user)
void generate_resume_trace(const void *tracedata, unsigned int user)
{
unsigned short lineno = *(unsigned short *)tracedata;
const char *file = *(const char **)(tracedata + 2);
Expand Down
14 changes: 14 additions & 0 deletions include/asm-generic/vmlinux.lds.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@
VMLINUX_SYMBOL(__end_rio_route_ops) = .; \
} \
\
TRACEDATA \
\
/* Kernel symbol table: Normal symbols */ \
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start___ksymtab) = .; \
Expand Down Expand Up @@ -318,6 +320,18 @@
__stop___bug_table = .; \
}

#ifdef CONFIG_PM_TRACE
#define TRACEDATA \
. = ALIGN(4); \
.tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) { \
__tracedata_start = .; \
*(.tracedata) \
__tracedata_end = .; \
}
#else
#define TRACEDATA
#endif

#define NOTES \
.notes : AT(ADDR(.notes) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start_notes) = .; \
Expand Down
2 changes: 1 addition & 1 deletion include/asm-x86/resume-trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#define TRACE_RESUME(user) \
do { \
if (pm_trace_enabled) { \
void *tracedata; \
const void *tracedata; \
asm volatile(_ASM_MOV_UL " $1f,%0\n" \
".section .tracedata,\"a\"\n" \
"1:\t.word %c1\n\t" \
Expand Down
2 changes: 1 addition & 1 deletion include/linux/resume-trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ extern int pm_trace_enabled;

struct device;
extern void set_trace_device(struct device *);
extern void generate_resume_trace(void *tracedata, unsigned int user);
extern void generate_resume_trace(const void *tracedata, unsigned int user);

#define TRACE_DEVICE(dev) do { \
if (pm_trace_enabled) \
Expand Down

0 comments on commit 63687a5

Please sign in to comment.