<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Carl-Daniel Hailfinger wrote:
<blockquote cite="mid:47BC5C83.3030802@gmx.net" type="cite">
  <pre wrap="">On 20.02.2008 17:19, Stefan Reinauer wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">* ron minnich <a class="moz-txt-link-rfc2396E" href="mailto:rminnich@gmail.com"><rminnich@gmail.com></a> [071212 17:19]:
  
    </pre>
    <blockquote type="cite">
      <blockquote type="cite">
        <pre wrap="">Question to you guys: why is the first wrmsr instruction there? From my
understanding, by not properly initialising ECX, EAX and EDX this will
overwrite whatever is in the MSR pointed to by ECX?!

BTW I tried out your code on our target hardware (Intel Celeron M, 600 MHz)
and with that first wrmsr line in place it hangs and without it, it runs
just fine.
      
        </pre>
      </blockquote>
      <pre wrap="">Thanks Martin. That looks like quite a nice bug catch you've done :-)
    
      </pre>
    </blockquote>
    <pre wrap="">Here's a patch that resolves the issue.

Signed-off-by: Stefan Reinauer <a class="moz-txt-link-rfc2396E" href="mailto:stepan@coresystems.de"><stepan@coresystems.de></a>

Index: src/cpu/intel/microcode/microcode.c
===================================================================
--- src/cpu/intel/microcode/microcode.c (revision 3111)
+++ src/cpu/intel/microcode/microcode.c (working copy)
@@ -33,7 +33,6 @@
         */
        msr_t msr;
        __asm__ volatile (
-               "wrmsr\n\t"
  
    </pre>
  </blockquote>
  <pre wrap=""><!---->
ACK.

  </pre>
  <blockquote type="cite">
    <pre wrap="">               "xorl %%eax, %%eax\n\t"
                "xorl %%edx, %%edx\n\t"
                "movl $0x8b, %%ecx\n\t"
@@ -60,7 +59,7 @@
        char *c;
        msr_t msr;
        
-       /* cpuid sets msr 0x8B iff a microcode update has been loaded. */
+       /* cpuid sets msr 0x8B if a microcode update has been loaded. */
  
    </pre>
  </blockquote>
  <pre wrap=""><!---->
NACK. "IFF" is shorthand for "if and only if", see 
<a class="moz-txt-link-freetext" href="http://en.wikipedia.org/wiki/If_and_only_if">http://en.wikipedia.org/wiki/If_and_only_if</a>
  </pre>
</blockquote>
<br>
That's silly. This is not a mathematical expression nor a philosophical
disquisition but a sentence. I am not even convinced that it was meant
that way rather than being just a typo. If you have reasons to assume
it means "If and only if" then let's write it that way. <br>
<br>
Stefan<br>
<br>
<br>
<pre class="moz-signature" cols="72">-- 
coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br.
      Tel.: +49 761 7668825 • Fax: +49 761 7664613
Email: <a class="moz-txt-link-abbreviated" href="mailto:info@coresystems.de">info@coresystems.de</a>  • <a class="moz-txt-link-freetext" href="http://www.coresystems.de/">http://www.coresystems.de/</a>
Registergericht: Amtsgericht Freiburg • HRB 7656
Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866
</pre>
</body>
</html>