[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-merge] [patch] SMP alternatives for i386



Gerd Knorr wrote:

+#ifdef CONFIG_SMP
+#define alternative_smp(smpinstr, upinstr, args...)    \
+       asm volatile ("661:\n\t" smpinstr "\n662:\n"                     \
+                     ".section .smp_altinstructions,\"a\"\n"          \
+                     "  .align 4\n"                                 \
+                     "  .long 661b\n"            /* label */          \
+                     "  .long 663f\n"                  /* new instruction */   
      \
+                     "  .byte 0x68\n"            /* X86_FEATURE_UP */    \
+                     "  .byte 662b-661b\n"       /* sourcelen */      \
+                     "  .byte 664f-663f\n"       /* replacementlen */ \
+                     ".previous\n"                                           \
+                     ".section .smp_altinstr_replacement,\"awx\"\n"            
    \
+                     "663:\n\t" upinstr "\n"     /* replacement */    \
+                     "664:\n\t.fill 662b-661b,1,0x42\n" /* space for original 
*/ \
+                     ".previous" : args)
+
+#define LOCK_PREFIX \
+               ".section .smp_locks,\"a\"\n"       \
+               "  .align 4\n"                        \
+               "  .long 661f\n" /* address */        \
+               ".previous\n"                 \
+               "661:\n\tlock; "
+
+#else /* ! CONFIG_SMP */
+#define alternative_smp(smpinstr, upinstr, args...) \
+       asm volatile (upinstr : args)
+#define LOCK_PREFIX ""
+#endif
+
+#endif /* _I386_ALTERNATIVE_H */


Overall technically, I like this patch. Philosophically, I agree with it as well - but might I strongly suggest that you avoid the .section .previous directives and use the nestable .pushsection, .popsection instead? We are almost to the complexity point with fault handling and alternatives that we will need nested section overrides.

Zach

_______________________________________________
Xen-merge mailing list
Xen-merge@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-merge


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.