[lkml]   [2002]   [Aug]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH 1 / ...] i386 dynamic fixup/self modifying code
Luca Barbieri writes:
> This patch implements a system that modifies the kernel code at runtime
> depending on CPU features and SMPness.
> /* If we are running on SMP any other processor might be executing the
> code that we are modifying. We must make sure that the other
> processor will either fault or will execute the complete
> replacement instruction.
> This is accomplished by using instructions that fault only
> depending on up to 4 bytes. When fixing up something we first write
> bytes after the first 4 and we then use a locked write to set the
> first 4.
> We depend on the processor execute unit to never see our locked
> write before it sees the other modifications.
> According to page 7-5 of the Intel Pentium 4 System Programming
> Manual, this is safe on 486 and Pentium <= 4.

I've tried this sort of thing before (unsynchronised cross-modifying code),
but I had to abandon it due to Pentium III Erratum E49 and similar errata
for all Intel P6 CPUs. Have you verified that you're not hitting this erratum?

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:28    [W:0.098 / U:0.068 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site