<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel about="http://blog.gmane.org/gmane.linux.kernel">
    <title>gmane.linux.kernel</title>
    <link>http://blog.gmane.org/gmane.linux.kernel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730654"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730640"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730638"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730610"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730606"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730601"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730575"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730573"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730572"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730537"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730536"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730535"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730533"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730530"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730526"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730523"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730503"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730500"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730495"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.linux.kernel/730482"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730654">
    <title>Power management stuff</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730654</link>
    <description>Hello,


I have a few ideas/questions about some power management-related issues:

1) How could we get the current frequency/voltage settings for the CPU,
fr example when using SpeedStep by using the /proc filesystem?

2) It would be nice to modify a bit the CPU throttling API to be able to
set a max value when using dynamic governors, like ondemand. 
The frequency/voltage pair should be set to the minimum allowed by
construction, just like it was before, and scale up to a max value set
by the user. This would allow the user set the best balance between
responsiveness and power consumption that suits its needs.
Also, targeting a certain temperature would be a great feature to have.

3) Is there any plan to improve the current battery framework and
provide information about the estimated recharging time, as it was
before. I guess the versions before 2.6.24 used to provide this but the
newer versions don't do it anymore.

Thanks,
Cristi

</description>
    <dc:creator>Cristi Magherusan</dc:creator>
    <dc:date>2008-09-06T20:19:46</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730640">
    <title>03:03:58--&gt;無名相冊-高中學妹-裸照流出65</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730640</link>
    <description>無名相冊-高中學妹-裸照流出 http://qetwr.com/dgfg


      _________________________________________________________________________________________________________
想知道無聊生活如何大變身嘛？ http://tw.promote.mail.yahoo.com/dc/change.html
</description>
    <dc:creator>趙李 馬</dc:creator>
    <dc:date>2008-09-06T19:04:01</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730638">
    <title>[git pull] x86 fixes</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730638</link>
    <description>Linus,

Please pull the latest x86-fixes-for-linus git tree from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git x86-fixes-for-linus

The NOP impact is a bit wider than what i'd like, but it addresses the 
VirtualPC regression and it's what Peter tested - and also Peter's 
solution of turning enhanced NOPs into a virtual CPUID flag that is 
tested before use is kind of elegant IMO and reduces some of the mess 
and risks.

The memory leak fixes are old commits freshly cherry-picked over from 
another branch (i already ran a few test builds and test boots of it) - 
they have a lot of test time already otherwise, i just missed their .27 
impact.

Thanks,

Ingo

------------------&gt;
Andreas Herrmann (2):
      x86: pda_init(): fix memory leak when using CPU hotplug
      x86: cpu_init(): fix memory leak when using CPU hotplug

Eduardo Habkost (1):
      x86, xen: Use native_pte_flags instead of native_pte_val for .pte_flags

H. Peter Anvin (3):
      x86: boot: stub out unimplemented CPU feature words
      x86: add NOPL as a synthetic CPU feature bit
      x86: use X86_FEATURE_NOPL in alternatives

Krzysztof Helt (1):
      x86: delay early cpu initialization until cpuid is done

Yinghai Lu (1):
      x86: move mtrr cpu cap setting early in early_init_xxxx


 arch/x86/boot/cpucheck.c            |    8 ++--
 arch/x86/kernel/alternative.c       |   36 ++++++-----------
 arch/x86/kernel/cpu/amd.c           |    9 ++--
 arch/x86/kernel/cpu/centaur.c       |   11 +++++
 arch/x86/kernel/cpu/common.c        |   34 +++++++++++++++-
 arch/x86/kernel/cpu/common_64.c     |   74 +++++++++++++++++++++++++++-------
 arch/x86/kernel/cpu/cyrix.c         |   32 +++++++++++++--
 arch/x86/kernel/cpu/feature_names.c |    3 +-
 arch/x86/xen/enlighten.c            |    2 +-
 include/asm-x86/cpufeature.h        |   11 +++--
 include/asm-x86/required-features.h |    8 +++-
 11 files changed, 167 insertions(+), 61 deletions(-)

diff --git a/arch/x86/boot/cpucheck.c b/arch/x86/boot/cpucheck.c
index 4b9ae7c..4d3ff03 100644
--- a/arch/x86/boot/cpucheck.c
+++ b/arch/x86/boot/cpucheck.c
&lt; at &gt;&lt; at &gt; -38,12 +38,12 &lt; at &gt;&lt; at &gt; static const u32 req_flags[NCAPINTS] =
 {
 REQUIRED_MASK0,
 REQUIRED_MASK1,
-REQUIRED_MASK2,
-REQUIRED_MASK3,
+0, /* REQUIRED_MASK2 not implemented in this file */
+0, /* REQUIRED_MASK3 not implemented in this file */
 REQUIRED_MASK4,
-REQUIRED_MASK5,
+0, /* REQUIRED_MASK5 not implemented in this file */
 REQUIRED_MASK6,
-REQUIRED_MASK7,
+0, /* REQUIRED_MASK7 not implemented in this file */
 };
 
 #define A32(a, b, c, d) (((d) &lt;&lt; 24)+((c) &lt;&lt; 16)+((b) &lt;&lt; 8)+(a))
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index 2763cb3..65a0c1b 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
&lt; at &gt;&lt; at &gt; -145,35 +145,25 &lt; at &gt;&lt; at &gt; static const unsigned char *const p6_nops[ASM_NOP_MAX+1] = {
 extern char __vsyscall_0;
 const unsigned char *const *find_nop_table(void)
 {
-return boot_cpu_data.x86_vendor != X86_VENDOR_INTEL ||
-       boot_cpu_data.x86 &lt; 6 ? k8_nops : p6_nops;
+if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL &amp;&amp;
+    boot_cpu_has(X86_FEATURE_NOPL))
+return p6_nops;
+else
+return k8_nops;
 }
 
 #else /* CONFIG_X86_64 */
 
-static const struct nop {
-int cpuid;
-const unsigned char *const *noptable;
-} noptypes[] = {
-{ X86_FEATURE_K8, k8_nops },
-{ X86_FEATURE_K7, k7_nops },
-{ X86_FEATURE_P4, p6_nops },
-{ X86_FEATURE_P3, p6_nops },
-{ -1, NULL }
-};
-
 const unsigned char *const *find_nop_table(void)
 {
-const unsigned char *const *noptable = intel_nops;
-int i;
-
-for (i = 0; noptypes[i].cpuid &gt;= 0; i++) {
-if (boot_cpu_has(noptypes[i].cpuid)) {
-noptable = noptypes[i].noptable;
-break;
-}
-}
-return noptable;
+if (boot_cpu_has(X86_FEATURE_K8))
+return k8_nops;
+else if (boot_cpu_has(X86_FEATURE_K7))
+return k7_nops;
+else if (boot_cpu_has(X86_FEATURE_NOPL))
+return p6_nops;
+else
+return intel_nops;
 }
 
 #endif /* CONFIG_X86_64 */
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
index cae9cab..18514ed 100644
--- a/arch/x86/kernel/cpu/amd.c
+++ b/arch/x86/kernel/cpu/amd.c
&lt; at &gt;&lt; at &gt; -31,6 +31,11 &lt; at &gt;&lt; at &gt; static void __cpuinit early_init_amd(struct cpuinfo_x86 *c)
 if (c-&gt;x86_power &amp; (1&lt;&lt;8))
 set_cpu_cap(c, X86_FEATURE_CONSTANT_TSC);
 }
+
+/*  Set MTRR capability flag if appropriate */
+if (c-&gt;x86_model == 13 || c-&gt;x86_model == 9 ||
+   (c-&gt;x86_model == 8 &amp;&amp; c-&gt;x86_mask &gt;= 8))
+set_cpu_cap(c, X86_FEATURE_K6_MTRR);
 }
 
 static void __cpuinit init_amd(struct cpuinfo_x86 *c)
&lt; at &gt;&lt; at &gt; -166,10 +171,6 &lt; at &gt;&lt; at &gt; static void __cpuinit init_amd(struct cpuinfo_x86 *c)
 mbytes);
 }
 
-/*  Set MTRR capability flag if appropriate */
-if (c-&gt;x86_model == 13 || c-&gt;x86_model == 9 ||
-   (c-&gt;x86_model == 8 &amp;&amp; c-&gt;x86_mask &gt;= 8))
-set_cpu_cap(c, X86_FEATURE_K6_MTRR);
 break;
 }
 
diff --git a/arch/x86/kernel/cpu/centaur.c b/arch/x86/kernel/cpu/centaur.c
index e0f45ed..a0534c0 100644
--- a/arch/x86/kernel/cpu/centaur.c
+++ b/arch/x86/kernel/cpu/centaur.c
&lt; at &gt;&lt; at &gt; -314,6 +314,16 &lt; at &gt;&lt; at &gt; enum {
 EAMD3D= 1&lt;&lt;20,
 };
 
+static void __cpuinit early_init_centaur(struct cpuinfo_x86 *c)
+{
+switch (c-&gt;x86) {
+case 5:
+/* Emulate MTRRs using Centaur's MCR. */
+set_cpu_cap(c, X86_FEATURE_CENTAUR_MCR);
+break;
+}
+}
+
 static void __cpuinit init_centaur(struct cpuinfo_x86 *c)
 {
 
&lt; at &gt;&lt; at &gt; -462,6 +472,7 &lt; at &gt;&lt; at &gt; centaur_size_cache(struct cpuinfo_x86 *c, unsigned int size)
 static struct cpu_dev centaur_cpu_dev __cpuinitdata = {
 .c_vendor= "Centaur",
 .c_ident= { "CentaurHauls" },
+.c_early_init= early_init_centaur,
 .c_init= init_centaur,
 .c_size_cache= centaur_size_cache,
 };
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index 80ab20d..8aab851 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
&lt; at &gt;&lt; at &gt; -13,6 +13,7 &lt; at &gt;&lt; at &gt;
 #include &lt;asm/mtrr.h&gt;
 #include &lt;asm/mce.h&gt;
 #include &lt;asm/pat.h&gt;
+#include &lt;asm/asm.h&gt;
 #ifdef CONFIG_X86_LOCAL_APIC
 #include &lt;asm/mpspec.h&gt;
 #include &lt;asm/apic.h&gt;
&lt; at &gt;&lt; at &gt; -334,11 +335,40 &lt; at &gt;&lt; at &gt; static void __init early_cpu_detect(void)
 
 get_cpu_vendor(c, 1);
 
+early_get_cap(c);
+
 if (c-&gt;x86_vendor != X86_VENDOR_UNKNOWN &amp;&amp;
     cpu_devs[c-&gt;x86_vendor]-&gt;c_early_init)
 cpu_devs[c-&gt;x86_vendor]-&gt;c_early_init(c);
+}
 
-early_get_cap(c);
+/*
+ * The NOPL instruction is supposed to exist on all CPUs with
+ * family &gt;= 6, unfortunately, that's not true in practice because
+ * of early VIA chips and (more importantly) broken virtualizers that
+ * are not easy to detect.  Hence, probe for it based on first
+ * principles.
+ */
+static void __cpuinit detect_nopl(struct cpuinfo_x86 *c)
+{
+const u32 nopl_signature = 0x888c53b1; /* Random number */
+u32 has_nopl = nopl_signature;
+
+clear_cpu_cap(c, X86_FEATURE_NOPL);
+if (c-&gt;x86 &gt;= 6) {
+asm volatile("\n"
+     "1:      .byte 0x0f,0x1f,0xc0\n" /* nopl %eax */
+     "2:\n"
+     "        .section .fixup,\"ax\"\n"
+     "3:      xor %0,%0\n"
+     "        jmp 2b\n"
+     "        .previous\n"
+     _ASM_EXTABLE(1b,3b)
+     : "+a" (has_nopl));
+
+if (has_nopl == nopl_signature)
+set_cpu_cap(c, X86_FEATURE_NOPL);
+}
 }
 
 static void __cpuinit generic_identify(struct cpuinfo_x86 *c)
&lt; at &gt;&lt; at &gt; -395,8 +425,8 &lt; at &gt;&lt; at &gt; static void __cpuinit generic_identify(struct cpuinfo_x86 *c)
 }
 
 init_scattered_cpuid_features(c);
+detect_nopl(c);
 }
-
 }
 
 static void __cpuinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c)
diff --git a/arch/x86/kernel/cpu/common_64.c b/arch/x86/kernel/cpu/common_64.c
index dd6e3f1..a11f5d4 100644
--- a/arch/x86/kernel/cpu/common_64.c
+++ b/arch/x86/kernel/cpu/common_64.c
&lt; at &gt;&lt; at &gt; -18,6 +18,7 &lt; at &gt;&lt; at &gt;
 #include &lt;asm/mtrr.h&gt;
 #include &lt;asm/mce.h&gt;
 #include &lt;asm/pat.h&gt;
+#include &lt;asm/asm.h&gt;
 #include &lt;asm/numa.h&gt;
 #ifdef CONFIG_X86_LOCAL_APIC
 #include &lt;asm/mpspec.h&gt;
&lt; at &gt;&lt; at &gt; -215,6 +216,39 &lt; at &gt;&lt; at &gt; static void __init early_cpu_support_print(void)
 }
 }
 
+/*
+ * The NOPL instruction is supposed to exist on all CPUs with
+ * family &gt;= 6, unfortunately, that's not true in practice because
+ * of early VIA chips and (more importantly) broken virtualizers that
+ * are not easy to detect.  Hence, probe for it based on first
+ * principles.
+ *
+ * Note: no 64-bit chip is known to lack these, but put the code here
+ * for consistency with 32 bits, and to make it utterly trivial to
+ * diagnose the problem should it ever surface.
+ */
+static void __cpuinit detect_nopl(struct cpuinfo_x86 *c)
+{
+const u32 nopl_signature = 0x888c53b1; /* Random number */
+u32 has_nopl = nopl_signature;
+
+clear_cpu_cap(c, X86_FEATURE_NOPL);
+if (c-&gt;x86 &gt;= 6) {
+asm volatile("\n"
+     "1:      .byte 0x0f,0x1f,0xc0\n" /* nopl %eax */
+     "2:\n"
+     "        .section .fixup,\"ax\"\n"
+     "3:      xor %0,%0\n"
+     "        jmp 2b\n"
+     "        .previous\n"
+     _ASM_EXTABLE(1b,3b)
+     : "+a" (has_nopl));
+
+if (has_nopl == nopl_signature)
+set_cpu_cap(c, X86_FEATURE_NOPL);
+}
+}
+
 static void __cpuinit early_identify_cpu(struct cpuinfo_x86 *c);
 
 void __init early_cpu_init(void)
&lt; at &gt;&lt; at &gt; -313,6 +347,8 &lt; at &gt;&lt; at &gt; static void __cpuinit early_identify_cpu(struct cpuinfo_x86 *c)
 c-&gt;x86_phys_bits = eax &amp; 0xff;
 }
 
+detect_nopl(c);
+
 if (c-&gt;x86_vendor != X86_VENDOR_UNKNOWN &amp;&amp;
     cpu_devs[c-&gt;x86_vendor]-&gt;c_early_init)
 cpu_devs[c-&gt;x86_vendor]-&gt;c_early_init(c);
&lt; at &gt;&lt; at &gt; -493,17 +529,20 &lt; at &gt;&lt; at &gt; void pda_init(int cpu)
 /* others are initialized in smpboot.c */
 pda-&gt;pcurrent = &amp;init_task;
 pda-&gt;irqstackptr = boot_cpu_stack;
+pda-&gt;irqstackptr += IRQSTACKSIZE - 64;
 } else {
-pda-&gt;irqstackptr = (char *)
-__get_free_pages(GFP_ATOMIC, IRQSTACK_ORDER);
-if (!pda-&gt;irqstackptr)
-panic("cannot allocate irqstack for cpu %d", cpu);
+if (!pda-&gt;irqstackptr) {
+pda-&gt;irqstackptr = (char *)
+__get_free_pages(GFP_ATOMIC, IRQSTACK_ORDER);
+if (!pda-&gt;irqstackptr)
+panic("cannot allocate irqstack for cpu %d",
+      cpu);
+pda-&gt;irqstackptr += IRQSTACKSIZE - 64;
+}
 
 if (pda-&gt;nodenumber == 0 &amp;&amp; cpu_to_node(cpu) != NUMA_NO_NODE)
 pda-&gt;nodenumber = cpu_to_node(cpu);
 }
-
-pda-&gt;irqstackptr += IRQSTACKSIZE-64;
 }
 
 char boot_exception_stacks[(N_EXCEPTION_STACKS - 1) * EXCEPTION_STKSZ +
&lt; at &gt;&lt; at &gt; -601,19 +640,22 &lt; at &gt;&lt; at &gt; void __cpuinit cpu_init(void)
 /*
  * set up and load the per-CPU TSS
  */
-for (v = 0; v &lt; N_EXCEPTION_STACKS; v++) {
+if (!orig_ist-&gt;ist[0]) {
 static const unsigned int order[N_EXCEPTION_STACKS] = {
-[0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STACK_ORDER,
-[DEBUG_STACK - 1] = DEBUG_STACK_ORDER
+  [0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STACK_ORDER,
+  [DEBUG_STACK - 1] = DEBUG_STACK_ORDER
 };
-if (cpu) {
-estacks = (char *)__get_free_pages(GFP_ATOMIC, order[v]);
-if (!estacks)
-panic("Cannot allocate exception stack %ld %d\n",
-      v, cpu);
+for (v = 0; v &lt; N_EXCEPTION_STACKS; v++) {
+if (cpu) {
+estacks = (char *)__get_free_pages(GFP_ATOMIC, order[v]);
+if (!estacks)
+panic("Cannot allocate exception "
+      "stack %ld %d\n", v, cpu);
+}
+estacks += PAGE_SIZE &lt;&lt; order[v];
+orig_ist-&gt;ist[v] = t-&gt;x86_tss.ist[v] =
+(unsigned long)estacks;
 }
-estacks += PAGE_SIZE &lt;&lt; order[v];
-orig_ist-&gt;ist[v] = t-&gt;x86_tss.ist[v] = (unsigned long)estacks;
 }
 
 t-&gt;x86_tss.io_bitmap_base = offsetof(struct tss_struct, io_bitmap);
diff --git a/arch/x86/kernel/cpu/cyrix.c b/arch/x86/kernel/cpu/cyrix.c
index e710a21..898a5a2 100644
--- a/arch/x86/kernel/cpu/cyrix.c
+++ b/arch/x86/kernel/cpu/cyrix.c
&lt; at &gt;&lt; at &gt; -15,13 +15,11 &lt; at &gt;&lt; at &gt;
 /*
  * Read NSC/Cyrix DEVID registers (DIR) to get more detailed info. about the CPU
  */
-static void __cpuinit do_cyrix_devid(unsigned char *dir0, unsigned char *dir1)
+static void __cpuinit __do_cyrix_devid(unsigned char *dir0, unsigned char *dir1)
 {
 unsigned char ccr2, ccr3;
-unsigned long flags;
 
 /* we test for DEVID by checking whether CCR3 is writable */
-local_irq_save(flags);
 ccr3 = getCx86(CX86_CCR3);
 setCx86(CX86_CCR3, ccr3 ^ 0x80);
 getCx86(0xc0);   /* dummy to change bus */
&lt; at &gt;&lt; at &gt; -44,9 +42,16 &lt; at &gt;&lt; at &gt; static void __cpuinit do_cyrix_devid(unsigned char *dir0, unsigned char *dir1)
 *dir0 = getCx86(CX86_DIR0);
 *dir1 = getCx86(CX86_DIR1);
 }
-local_irq_restore(flags);
 }
 
+static void __cpuinit do_cyrix_devid(unsigned char *dir0, unsigned char *dir1)
+{
+unsigned long flags;
+
+local_irq_save(flags);
+__do_cyrix_devid(dir0, dir1);
+local_irq_restore(flags);
+}
 /*
  * Cx86_dir0_msb is a HACK needed by check_cx686_cpuid/slop in bugs.h in
  * order to identify the Cyrix CPU model after we're out of setup.c
&lt; at &gt;&lt; at &gt; -161,6 +166,24 &lt; at &gt;&lt; at &gt; static void __cpuinit geode_configure(void)
 local_irq_restore(flags);
 }
 
+static void __cpuinit early_init_cyrix(struct cpuinfo_x86 *c)
+{
+unsigned char dir0, dir0_msn, dir1 = 0;
+
+__do_cyrix_devid(&amp;dir0, &amp;dir1);
+dir0_msn = dir0 &gt;&gt; 4; /* identifies CPU "family"   */
+
+switch (dir0_msn) {
+case 3: /* 6x86/6x86L */
+/* Emulate MTRRs using Cyrix's ARRs. */
+set_cpu_cap(c, X86_FEATURE_CYRIX_ARR);
+break;
+case 5: /* 6x86MX/M II */
+/* Emulate MTRRs using Cyrix's ARRs. */
+set_cpu_cap(c, X86_FEATURE_CYRIX_ARR);
+break;
+}
+}
 
 static void __cpuinit init_cyrix(struct cpuinfo_x86 *c)
 {
&lt; at &gt;&lt; at &gt; -416,6 +439,7 &lt; at &gt;&lt; at &gt; static void __cpuinit cyrix_identify(struct cpuinfo_x86 *c)
 static struct cpu_dev cyrix_cpu_dev __cpuinitdata = {
 .c_vendor= "Cyrix",
 .c_ident= { "CyrixInstead" },
+.c_early_init= early_init_cyrix,
 .c_init= init_cyrix,
 .c_identify= cyrix_identify,
 };
diff --git a/arch/x86/kernel/cpu/feature_names.c b/arch/x86/kernel/cpu/feature_names.c
index e43ad4a..c901779 100644
--- a/arch/x86/kernel/cpu/feature_names.c
+++ b/arch/x86/kernel/cpu/feature_names.c
&lt; at &gt;&lt; at &gt; -39,7 +39,8 &lt; at &gt;&lt; at &gt; const char * const x86_cap_flags[NCAPINTS*32] = {
 NULL, NULL, NULL, NULL,
 "constant_tsc", "up", NULL, "arch_perfmon",
 "pebs", "bts", NULL, NULL,
-"rep_good", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+"rep_good", NULL, NULL, NULL,
+"nopl", NULL, NULL, NULL,
 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
 
 /* Intel-defined (#2) */
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index 9ff6e3c..a4e201b 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
&lt; at &gt;&lt; at &gt; -1324,7 +1324,7 &lt; at &gt;&lt; at &gt; static const struct pv_mmu_ops xen_mmu_ops __initdata = {
 .ptep_modify_prot_commit = __ptep_modify_prot_commit,
 
 .pte_val = xen_pte_val,
-.pte_flags = native_pte_val,
+.pte_flags = native_pte_flags,
 .pgd_val = xen_pgd_val,
 
 .make_pte = xen_make_pte,
diff --git a/include/asm-x86/cpufeature.h b/include/asm-x86/cpufeature.h
index 762f6a6..9489283 100644
--- a/include/asm-x86/cpufeature.h
+++ b/include/asm-x86/cpufeature.h
&lt; at &gt;&lt; at &gt; -72,14 +72,15 &lt; at &gt;&lt; at &gt;
 #define X86_FEATURE_UP(3*32+ 9) /* smp kernel running on up */
 #define X86_FEATURE_FXSAVE_LEAK (3*32+10) /* FXSAVE leaks FOP/FIP/FOP */
 #define X86_FEATURE_ARCH_PERFMON (3*32+11) /* Intel Architectural PerfMon */
-#define X86_FEATURE_PEBS(3*32+12)  /* Precise-Event Based Sampling */
-#define X86_FEATURE_BTS(3*32+13)  /* Branch Trace Store */
-#define X86_FEATURE_SYSCALL32(3*32+14)  /* syscall in ia32 userspace */
-#define X86_FEATURE_SYSENTER32(3*32+15)  /* sysenter in ia32 userspace */
+#define X86_FEATURE_PEBS(3*32+12) /* Precise-Event Based Sampling */
+#define X86_FEATURE_BTS(3*32+13) /* Branch Trace Store */
+#define X86_FEATURE_SYSCALL32(3*32+14) /* syscall in ia32 userspace */
+#define X86_FEATURE_SYSENTER32(3*32+15) /* sysenter in ia32 userspace */
 #define X86_FEATURE_REP_GOOD(3*32+16) /* rep microcode works well on this CPU */
 #define X86_FEATURE_MFENCE_RDTSC (3*32+17) /* Mfence synchronizes RDTSC */
 #define X86_FEATURE_LFENCE_RDTSC (3*32+18) /* Lfence synchronizes RDTSC */
-#define X86_FEATURE_11AP(3*32+19)  /* Bad local APIC aka 11AP */
+#define X86_FEATURE_11AP(3*32+19) /* Bad local APIC aka 11AP */
+#define X86_FEATURE_NOPL(3*32+20) /* The NOPL (0F 1F) instructions */
 
 /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
 #define X86_FEATURE_XMM3(4*32+ 0) /* Streaming SIMD Extensions-3 */
diff --git a/include/asm-x86/required-features.h b/include/asm-x86/required-features.h
index adec887..5c2ff4b 100644
--- a/include/asm-x86/required-features.h
+++ b/include/asm-x86/required-features.h
&lt; at &gt;&lt; at &gt; -41,6 +41,12 &lt; at &gt;&lt; at &gt;
 # define NEED_3DNOW0
 #endif
 
+#if defined(CONFIG_X86_P6_NOP) || defined(CONFIG_X86_64)
+# define NEED_NOPL(1&lt;&lt;(X86_FEATURE_NOPL &amp; 31))
+#else
+# define NEED_NOPL0
+#endif
+
 #ifdef CONFIG_X86_64
 #define NEED_PSE0
 #define NEED_MSR(1&lt;&lt;(X86_FEATURE_MSR &amp; 31))
&lt; at &gt;&lt; at &gt; -67,7 +73,7 &lt; at &gt;&lt; at &gt;
 #define REQUIRED_MASK1(NEED_LM|NEED_3DNOW)
 
 #define REQUIRED_MASK20
-#define REQUIRED_MASK30
+#define REQUIRED_MASK3(NEED_NOPL)
 #define REQUIRED_MASK40
 #define REQUIRED_MASK50
 #define REQUIRED_MASK60
</description>
    <dc:creator>Ingo Molnar</dc:creator>
    <dc:date>2008-09-06T19:01:36</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730610">
    <title>[PATCH] dyn_array: remove one panic</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730610</link>
    <description>Andrew said, we don't need duplicated panic.
because __alloc_bootmem already have that.

Signed-off-by: Yinghai Lu &lt;yhlu.kernel&lt; at &gt;gmail.com&gt;

diff --git a/init/dyn_array.c b/init/dyn_array.c
index cf1e04c..778d9d5 100644
--- a/init/dyn_array.c
+++ b/init/dyn_array.c
&lt; at &gt;&lt; at &gt; -33,11 +33,9 &lt; at &gt;&lt; at &gt; void __init pre_alloc_dyn_array(void)
 
 /* allocate them all together */
 max_align = max_t(unsigned long, max_align, PAGE_SIZE);
-ptr = __alloc_bootmem_nopanic(total_size, max_align, 0);
-if (!ptr)
-panic("Can not alloc dyn_alloc\n");
-
+ptr = __alloc_bootmem(total_size, max_align, 0);
 phys = virt_to_phys(ptr);
+
 for (daa = __dyn_array_start ; daa &lt; __dyn_array_end; daa++) {
 struct dyn_array *da = *daa;
 
</description>
    <dc:creator>Yinghai Lu</dc:creator>
    <dc:date>2008-09-06T17:26:50</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730606">
    <title>[PATCH] Fix pointer arithmetic in hpt3xx driver code (3rd try)</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730606</link>
    <description>
git commit 74811f355f4f69a187fa74892dcf2a684b84ce99 causes crash at
module load (or boot) time on my machine with a hpt374 controller.
The reason for this is that for initializing second controller which sets
(hwif-&gt;dev == host-&gt;dev[1]) to true (1), adds 1 to a void ptr, which
advances it by one byte instead of advancing it by sizeof(hpt_info) bytes.
Because of this, all initialization functions get corrupted data in info
variable which causes a crash at boot time.

This patch fixes that and makes my machine boot again.

The card itself is a HPT374 raid conroller: Here is the lspci -v output:
03:06.0 RAID bus controller: HighPoint Technologies, Inc. HPT374 (rev
07)
        Subsystem: HighPoint Technologies, Inc. Unknown device 0001
        Flags: bus master, 66MHz, medium devsel, latency 120, IRQ 28
        I/O ports at 8000 [size=8]
        I/O ports at 7800 [size=4]
        I/O ports at 7400 [size=8]
        I/O ports at 7000 [size=4]
        I/O ports at 6800 [size=256]
        Expansion ROM at fe8e0000 [disabled] [size=128K]
        Capabilities: [60] Power Management version 2

03:06.1 RAID bus controller: HighPoint Technologies, Inc. HPT374 (rev
07)
        Subsystem: HighPoint Technologies, Inc. Unknown device 0001
        Flags: bus master, 66MHz, medium devsel, latency 120, IRQ 28
        I/O ports at 9800 [size=8]
        I/O ports at 9400 [size=4]
        I/O ports at 9000 [size=8]
        I/O ports at 8800 [size=4]
        I/O ports at 8400 [size=256]
        Capabilities: [60] Power Management version 2


Signed-Off-By: Masoud Sharbiani &lt;masouds&lt; at &gt;google.com&gt;

diff --git a/drivers/ide/pci/hpt366.c b/drivers/ide/pci/hpt366.c
index eb107ee..4eae284 100644
--- a/drivers/ide/pci/hpt366.c
+++ b/drivers/ide/pci/hpt366.c
&lt; at &gt;&lt; at &gt; -613,6 +613,14 &lt; at &gt;&lt; at &gt; static int check_in_drive_list(ide_drive_t *drive, const char **list)
 return 0;
 }
 
+static struct hpt_info *hpt3xx_get_info(struct device *dev)
+{
+struct ide_host *host= pci_get_drvdata(to_pci_dev(pci_dev));
+struct hpt_info *info= (struct hpt_info *)host-&gt;host_priv;
+
+return dev == host-&gt;dev[1] ? info + 1 : info;
+}
+
 /*
  * The Marvell bridge chips used on the HighPoint SATA cards do not seem
  * to support the UltraDMA modes 1, 2, and 3 as well as any MWDMA modes...
&lt; at &gt;&lt; at &gt; -621,9 +629,7 &lt; at &gt;&lt; at &gt; static int check_in_drive_list(ide_drive_t *drive, const char **list)
 static u8 hpt3xx_udma_filter(ide_drive_t *drive)
 {
 ide_hwif_t *hwif= HWIF(drive);
-struct pci_dev *dev= to_pci_dev(hwif-&gt;dev);
-struct ide_host *host= pci_get_drvdata(dev);
-struct hpt_info *info= host-&gt;host_priv + (hwif-&gt;dev == host-&gt;dev[1]);
+struct hpt_info *info= hpt3xx_get_info(hwif-&gt;dev);
 u8 mask = hwif-&gt;ultra_mask;
 
 switch (info-&gt;chip_type) {
&lt; at &gt;&lt; at &gt; -662,9 +668,7 &lt; at &gt;&lt; at &gt; static u8 hpt3xx_udma_filter(ide_drive_t *drive)
 static u8 hpt3xx_mdma_filter(ide_drive_t *drive)
 {
 ide_hwif_t *hwif= HWIF(drive);
-struct pci_dev *dev= to_pci_dev(hwif-&gt;dev);
-struct ide_host *host= pci_get_drvdata(dev);
-struct hpt_info *info= host-&gt;host_priv + (hwif-&gt;dev == host-&gt;dev[1]);
+struct hpt_info *info= hpt3xx_get_info(hwif-&gt;dev);
 
 switch (info-&gt;chip_type) {
 case HPT372 :
&lt; at &gt;&lt; at &gt; -700,8 +704,7 &lt; at &gt;&lt; at &gt; static void hpt3xx_set_mode(ide_drive_t *drive, const u8 speed)
 {
 ide_hwif_t *hwif= drive-&gt;hwif;
 struct pci_dev *dev= to_pci_dev(hwif-&gt;dev);
-struct ide_host *host= pci_get_drvdata(dev);
-struct hpt_info *info= host-&gt;host_priv + (hwif-&gt;dev == host-&gt;dev[1]);
+struct hpt_info *info= hpt3xx_get_info(hwif-&gt;dev);
 struct hpt_timings *t= info-&gt;timings;
 u8  itr_addr= 0x40 + (drive-&gt;dn * 4);
 u32 old_itr= 0;
&lt; at &gt;&lt; at &gt; -744,8 +747,7 &lt; at &gt;&lt; at &gt; static void hpt3xx_maskproc(ide_drive_t *drive, int mask)
 {
 ide_hwif_t *hwif= HWIF(drive);
 struct pci_dev*dev= to_pci_dev(hwif-&gt;dev);
-struct ide_host *host= pci_get_drvdata(dev);
-struct hpt_info *info= host-&gt;host_priv + (hwif-&gt;dev == host-&gt;dev[1]);
+struct hpt_info *info= hpt3xx_get_info(hwif-&gt;dev);
 
 if (drive-&gt;quirk_list) {
 if (info-&gt;chip_type &gt;= HPT370) {
&lt; at &gt;&lt; at &gt; -973,8 +975,7 &lt; at &gt;&lt; at &gt; static int __devinit hpt37x_calibrate_dpll(struct pci_dev *dev, u16 f_low, u16 f
 static unsigned int __devinit init_chipset_hpt366(struct pci_dev *dev)
 {
 unsigned long io_base= pci_resource_start(dev, 4);
-struct ide_host *host= pci_get_drvdata(dev);
-struct hpt_info *info= host-&gt;host_priv + (&amp;dev-&gt;dev == host-&gt;dev[1]);
+struct hpt_info *info= hpt3xx_get_info(&amp;dev-&gt;dev);
 const char *name= DRV_NAME;
 u8 pci_clk,  dpll_clk= 0;/* PCI and DPLL clock in MHz */
 u8 chip_type;
&lt; at &gt;&lt; at &gt; -1217,8 +1218,7 &lt; at &gt;&lt; at &gt; static unsigned int __devinit init_chipset_hpt366(struct pci_dev *dev)
 static u8 hpt3xx_cable_detect(ide_hwif_t *hwif)
 {
 struct pci_dev*dev= to_pci_dev(hwif-&gt;dev);
-struct ide_host *host= pci_get_drvdata(dev);
-struct hpt_info *info= host-&gt;host_priv + (hwif-&gt;dev == host-&gt;dev[1]);
+struct hpt_info *info= hpt3xx_get_info(hwif-&gt;dev);
 u8 chip_type= info-&gt;chip_type;
 u8 scr1 = 0, ata66= hwif-&gt;channel ? 0x01 : 0x02;
 
&lt; at &gt;&lt; at &gt; -1262,8 +1262,7 &lt; at &gt;&lt; at &gt; static u8 hpt3xx_cable_detect(ide_hwif_t *hwif)
 static void __devinit init_hwif_hpt366(ide_hwif_t *hwif)
 {
 struct pci_dev *dev= to_pci_dev(hwif-&gt;dev);
-struct ide_host *host= pci_get_drvdata(dev);
-struct hpt_info *info= host-&gt;host_priv + (hwif-&gt;dev == host-&gt;dev[1]);
+struct hpt_info *info= hpt3xx_get_info(hwif-&gt;dev);
 int serialize= HPT_SERIALIZE_IO;
 u8  chip_type= info-&gt;chip_type;
 u8  new_mcr, old_mcr= 0;

</description>
    <dc:creator>Masoud Sharbiani</dc:creator>
    <dc:date>2008-09-06T17:18:50</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730601">
    <title>hotplug create_slot hang</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730601</link>
    <description>calling  pci_hotplug_init+0x0/0x1d
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
initcall pci_hotplug_init+0x0/0x1d returned 0 after 11 msecs

calling  acpiphp_init+0x0/0x5f
acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
decode_hpp: Could not get hotplug parameters. Use defaults
pci_create_slot: created pci_slot on 0000:07:00
acpiphp: Slot [1] registered
decode_hpp: Could not get hotplug parameters. Use defaults
pci_create_slot: created pci_slot on 0000:0d:00
acpiphp: Slot [2] registered
initcall acpiphp_init+0x0/0x5f returned 0 after 105 msecs

calling  pcied_init+0x0/0x7b
pciehp: HPC vendor_id 8086 device_id 340a ss_vid 0 ss_did 0
pci_create_slot: inc refcount to 2 on 0000:07:00
pci_destroy_slot: dec refcount to 1 on 0000:07:00
pciehp: pci_hp_register failed with error -16
pciehp: pciehp: slot already registered by another hotplug driver
</description>
    <dc:creator>Yinghai Lu</dc:creator>
    <dc:date>2008-09-06T17:15:03</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730575">
    <title>nice and hyperthreading on atom</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730575</link>
    <description>Dear Experts,

I have an ASUS Eee with an Atom processor, which has hyperthreading 
enabled.  If I have two processes, one nice and the other normal, they 
each get 50% of the CPU time.  Of course this is what you'd expect if 
the scheduler didn't understand that the two virtual processors are not 
really independent.  I'd like to fix it.

Google finds patches posted by Con Kolivas a looong time ago to address 
this.  Can anyone tell me what has happened in the meantime?  Maybe 
this feature is now in the kernel, but there's something I have to do 
to enable it (e.g. choose the right scheduler).  Or maybe it never made 
it in, for some reason.

Thanks for any suggestions.

Phil.



</description>
    <dc:creator>Phil Endecott</dc:creator>
    <dc:date>2008-09-06T15:43:31</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730573">
    <title>kvm-intel + vista64 installer == BSOD.</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730573</link>
    <description>Hi,

i'm trying to install vista64 with integrated sp1 on virtual machine
and getting bsod during installer startup -&gt;  http://imagebin.org/25860

hardware: intel q9300 with 8GB of ram.
software: kvm-74, qemu-0.9.1-13k, kernel-2.6.26

in dmesg i found only few lines:

[  277.882001] SIPI to vcpu 1 vector 0x10
[  277.882001] SIPI to vcpu 2 vector 0x10
[  277.882001] SIPI to vcpu 3 vector 0x10
[  283.352002] apic write: bad size=1 fee00030
[  283.352002] Ignoring de-assert INIT to vcpu 0
[  283.352002] Ignoring de-assert INIT to vcpu 1
[  283.352002] Ignoring de-assert INIT to vcpu 2
[  283.352002] Ignoring de-assert INIT to vcpu 3

i have no idea what's wrong :(
</description>
    <dc:creator>Paweł Sikora</dc:creator>
    <dc:date>2008-09-06T14:57:41</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730572">
    <title>[GIT pull] timer fixes for 2.6.27</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730572</link>
    <description>Linus,

Please pull the latest timers-fixes-for-linus git tree from:

   git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git timers-fixes-for-linus

This is a rather large update that late in the rc cycle, but it's all
really important bugfixes around the timers/timekeeping code.

The C1E idle support (added in .27) made some long standing bugs in
the timers code more prominent and I spent almost two weeks now going
through the code with a fine comb, creating debug patches and tracking
down the last (and for me most embarrassing) bug in the hpet code
along with a new workaround for hardware bugs^Wfeatures in ATI HPETs
which need a readback of the compare value _before_ reading the count
register to verify that we did not miss the event.

The patches are confirmed by various testers and close a couple of
entries in the regression list [BZ #11145 #11191 #11279] and some
other related bug reports.

Also passed in -tip testing on a broad range of x86 boxes.

I thought about disabling C1E for .27, but the bugs are real and
affect non C1E systems as well. So fixing them is better than hiding
them and hope they wont trigger.

The timekeeping patches vs. acpi_pm and ntp were collected and tested
by Andrew and have been in -mm for some time.

Thanks,

tglx

------------------&gt;
Dominik Brodowski (2):
      clocksource, acpi_pm.c: use proper read function also in errata mode
      clocksource, acpi_pm.c: check for monotonicity

Maciej W. Rozycki (1):
      ntp: fix calculation of the next jiffie to trigger RTC sync

Thomas Gleixner (8):
      clockevents: prevent endless loop in periodic broadcast handler
      clockevents: enforce reprogram in oneshot setup
      clockevents: prevent multiple init/shutdown
      clockevents: prevent endless loop lockup
      HPET: make minimum reprogramming delta useful
      clockevents: broadcast fixup possible waiters
      x86: HPET fix moronic 32/64bit thinko
      x86: HPET: read back compare register before reading counter

Venkatesh Pallipadi (1):
      clockevents: prevent clockevent event_handler ending up handler_noop


 arch/x86/kernel/hpet.c        |   19 +++++++---
 drivers/clocksource/acpi_pm.c |   54 +++++++++++++++++-----------
 include/linux/clockchips.h    |    2 +
 kernel/time/clockevents.c     |    3 +-
 kernel/time/ntp.c             |    2 +-
 kernel/time/tick-broadcast.c  |   78 ++++++++++++++++++++++++++++++----------
 kernel/time/tick-common.c     |    1 +
 kernel/time/tick-internal.h   |    2 +
 kernel/time/tick-oneshot.c    |   46 +++++++++++++++++++++---
 9 files changed, 151 insertions(+), 56 deletions(-)

diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index 59fd3b6..73deaff 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
&lt; at &gt;&lt; at &gt; -210,8 +210,8 &lt; at &gt;&lt; at &gt; static void hpet_legacy_clockevent_register(void)
 /* Calculate the min / max delta */
 hpet_clockevent.max_delta_ns = clockevent_delta2ns(0x7FFFFFFF,
    &amp;hpet_clockevent);
-hpet_clockevent.min_delta_ns = clockevent_delta2ns(0x30,
-   &amp;hpet_clockevent);
+/* 5 usec minimum reprogramming delta. */
+hpet_clockevent.min_delta_ns = 5000;
 
 /*
  * Start hpet with the boot cpu mask and make it
&lt; at &gt;&lt; at &gt; -270,15 +270,22 &lt; at &gt;&lt; at &gt; static void hpet_legacy_set_mode(enum clock_event_mode mode,
 }
 
 static int hpet_legacy_next_event(unsigned long delta,
-   struct clock_event_device *evt)
+  struct clock_event_device *evt)
 {
-unsigned long cnt;
+u32 cnt;
 
 cnt = hpet_readl(HPET_COUNTER);
-cnt += delta;
+cnt += (u32) delta;
 hpet_writel(cnt, HPET_T0_CMP);
 
-return ((long)(hpet_readl(HPET_COUNTER) - cnt ) &gt; 0) ? -ETIME : 0;
+/*
+ * We need to read back the CMP register to make sure that
+ * what we wrote hit the chip before we compare it to the
+ * counter.
+ */
+WARN_ON((u32)hpet_readl(HPET_T0_CMP) != cnt);
+
+return (s32)((u32)hpet_readl(HPET_COUNTER) - cnt) &gt;= 0 ? -ETIME : 0;
 }
 
 /*
diff --git a/drivers/clocksource/acpi_pm.c b/drivers/clocksource/acpi_pm.c
index 5ca1d80..4eee533 100644
--- a/drivers/clocksource/acpi_pm.c
+++ b/drivers/clocksource/acpi_pm.c
&lt; at &gt;&lt; at &gt; -21,6 +21,7 &lt; at &gt;&lt; at &gt;
 #include &lt;linux/errno.h&gt;
 #include &lt;linux/init.h&gt;
 #include &lt;linux/pci.h&gt;
+#include &lt;linux/delay.h&gt;
 #include &lt;asm/io.h&gt;
 
 /*
&lt; at &gt;&lt; at &gt; -151,13 +152,13 &lt; at &gt;&lt; at &gt; DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SERVERWORKS, PCI_DEVICE_ID_SERVERWORKS_LE,
  */
 static int verify_pmtmr_rate(void)
 {
-u32 value1, value2;
+cycle_t value1, value2;
 unsigned long count, delta;
 
 mach_prepare_counter();
-value1 = read_pmtmr();
+value1 = clocksource_acpi_pm.read();
 mach_countup(&amp;count);
-value2 = read_pmtmr();
+value2 = clocksource_acpi_pm.read();
 delta = (value2 - value1) &amp; ACPI_PM_MASK;
 
 /* Check that the PMTMR delta is within 5% of what we expect */
&lt; at &gt;&lt; at &gt; -175,10 +176,13 &lt; at &gt;&lt; at &gt; static int verify_pmtmr_rate(void)
 #define verify_pmtmr_rate() (0)
 #endif
 
+/* Number of monotonicity checks to perform during initialization */
+#define ACPI_PM_MONOTONICITY_CHECKS 10
+
 static int __init init_acpi_pm_clocksource(void)
 {
-u32 value1, value2;
-unsigned int i;
+cycle_t value1, value2;
+unsigned int i, j, good = 0;
 
 if (!pmtmr_ioport)
 return -ENODEV;
&lt; at &gt;&lt; at &gt; -187,24 +191,32 &lt; at &gt;&lt; at &gt; static int __init init_acpi_pm_clocksource(void)
 clocksource_acpi_pm.shift);
 
 /* "verify" this timing source: */
-value1 = read_pmtmr();
-for (i = 0; i &lt; 10000; i++) {
-value2 = read_pmtmr();
-if (value2 == value1)
-continue;
-if (value2 &gt; value1)
-goto pm_good;
-if ((value2 &lt; value1) &amp;&amp; ((value2) &lt; 0xFFF))
-goto pm_good;
-printk(KERN_INFO "PM-Timer had inconsistent results:"
-" 0x%#x, 0x%#x - aborting.\n", value1, value2);
-return -EINVAL;
+for (j = 0; j &lt; ACPI_PM_MONOTONICITY_CHECKS; j++) {
+value1 = clocksource_acpi_pm.read();
+for (i = 0; i &lt; 10000; i++) {
+value2 = clocksource_acpi_pm.read();
+if (value2 == value1)
+continue;
+if (value2 &gt; value1)
+good++;
+break;
+if ((value2 &lt; value1) &amp;&amp; ((value2) &lt; 0xFFF))
+good++;
+break;
+printk(KERN_INFO "PM-Timer had inconsistent results:"
+       " 0x%#llx, 0x%#llx - aborting.\n",
+       value1, value2);
+return -EINVAL;
+}
+udelay(300 * i);
+}
+
+if (good != ACPI_PM_MONOTONICITY_CHECKS) {
+printk(KERN_INFO "PM-Timer failed consistency check "
+       " (0x%#llx) - aborting.\n", value1);
+return -ENODEV;
 }
-printk(KERN_INFO "PM-Timer had no reasonable result:"
-" 0x%#x - aborting.\n", value1);
-return -ENODEV;
 
-pm_good:
 if (verify_pmtmr_rate() != 0)
 return -ENODEV;
 
diff --git a/include/linux/clockchips.h b/include/linux/clockchips.h
index c33b0dc..ed3a5d4 100644
--- a/include/linux/clockchips.h
+++ b/include/linux/clockchips.h
&lt; at &gt;&lt; at &gt; -127,6 +127,8 &lt; at &gt;&lt; at &gt; extern int clockevents_register_notifier(struct notifier_block *nb);
 extern int clockevents_program_event(struct clock_event_device *dev,
      ktime_t expires, ktime_t now);
 
+extern void clockevents_handle_noop(struct clock_event_device *dev);
+
 #ifdef CONFIG_GENERIC_CLOCKEVENTS
 extern void clockevents_notify(unsigned long reason, void *arg);
 #else
diff --git a/kernel/time/clockevents.c b/kernel/time/clockevents.c
index 3d1e3e1..1876b52 100644
--- a/kernel/time/clockevents.c
+++ b/kernel/time/clockevents.c
&lt; at &gt;&lt; at &gt; -177,7 +177,7 &lt; at &gt;&lt; at &gt; void clockevents_register_device(struct clock_event_device *dev)
 /*
  * Noop handler when we shut down an event device
  */
-static void clockevents_handle_noop(struct clock_event_device *dev)
+void clockevents_handle_noop(struct clock_event_device *dev)
 {
 }
 
&lt; at &gt;&lt; at &gt; -199,7 +199,6 &lt; at &gt;&lt; at &gt; void clockevents_exchange_device(struct clock_event_device *old,
  * released list and do a notify add later.
  */
 if (old) {
-old-&gt;event_handler = clockevents_handle_noop;
 clockevents_set_mode(old, CLOCK_EVT_MODE_UNUSED);
 list_del(&amp;old-&gt;list);
 list_add(&amp;old-&gt;list, &amp;clockevents_released);
diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
index 5125ddd..1ad46f3 100644
--- a/kernel/time/ntp.c
+++ b/kernel/time/ntp.c
&lt; at &gt;&lt; at &gt; -245,7 +245,7 &lt; at &gt;&lt; at &gt; static void sync_cmos_clock(unsigned long dummy)
 if (abs(now.tv_nsec - (NSEC_PER_SEC / 2)) &lt;= tick_nsec / 2)
 fail = update_persistent_clock(now);
 
-next.tv_nsec = (NSEC_PER_SEC / 2) - now.tv_nsec;
+next.tv_nsec = (NSEC_PER_SEC / 2) - now.tv_nsec - (TICK_NSEC / 2);
 if (next.tv_nsec &lt;= 0)
 next.tv_nsec += NSEC_PER_SEC;
 
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
index 31463d3..2f5a382 100644
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
&lt; at &gt;&lt; at &gt; -175,6 +175,8 &lt; at &gt;&lt; at &gt; static void tick_do_periodic_broadcast(void)
  */
 static void tick_handle_periodic_broadcast(struct clock_event_device *dev)
 {
+ktime_t next;
+
 tick_do_periodic_broadcast();
 
 /*
&lt; at &gt;&lt; at &gt; -185,10 +187,13 &lt; at &gt;&lt; at &gt; static void tick_handle_periodic_broadcast(struct clock_event_device *dev)
 
 /*
  * Setup the next period for devices, which do not have
- * periodic mode:
+ * periodic mode. We read dev-&gt;next_event first and add to it
+ * when the event alrady expired. clockevents_program_event()
+ * sets dev-&gt;next_event only when the event is really
+ * programmed to the device.
  */
-for (;;) {
-ktime_t next = ktime_add(dev-&gt;next_event, tick_period);
+for (next = dev-&gt;next_event; ;) {
+next = ktime_add(next, tick_period);
 
 if (!clockevents_program_event(dev, next, ktime_get()))
 return;
&lt; at &gt;&lt; at &gt; -205,7 +210,7 &lt; at &gt;&lt; at &gt; static void tick_do_broadcast_on_off(void *why)
 struct clock_event_device *bc, *dev;
 struct tick_device *td;
 unsigned long flags, *reason = why;
-int cpu;
+int cpu, bc_stopped;
 
 spin_lock_irqsave(&amp;tick_broadcast_lock, flags);
 
&lt; at &gt;&lt; at &gt; -223,6 +228,8 &lt; at &gt;&lt; at &gt; static void tick_do_broadcast_on_off(void *why)
 if (!tick_device_is_functional(dev))
 goto out;
 
+bc_stopped = cpus_empty(tick_broadcast_mask);
+
 switch (*reason) {
 case CLOCK_EVT_NOTIFY_BROADCAST_ON:
 case CLOCK_EVT_NOTIFY_BROADCAST_FORCE:
&lt; at &gt;&lt; at &gt; -245,9 +252,10 &lt; at &gt;&lt; at &gt; static void tick_do_broadcast_on_off(void *why)
 break;
 }
 
-if (cpus_empty(tick_broadcast_mask))
-clockevents_set_mode(bc, CLOCK_EVT_MODE_SHUTDOWN);
-else {
+if (cpus_empty(tick_broadcast_mask)) {
+if (!bc_stopped)
+clockevents_set_mode(bc, CLOCK_EVT_MODE_SHUTDOWN);
+} else if (bc_stopped) {
 if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
 tick_broadcast_start_periodic(bc);
 else
&lt; at &gt;&lt; at &gt; -364,16 +372,8 &lt; at &gt;&lt; at &gt; cpumask_t *tick_get_broadcast_oneshot_mask(void)
 static int tick_broadcast_set_event(ktime_t expires, int force)
 {
 struct clock_event_device *bc = tick_broadcast_device.evtdev;
-ktime_t now = ktime_get();
-int res;
-
-for(;;) {
-res = clockevents_program_event(bc, expires, now);
-if (!res || !force)
-return res;
-now = ktime_get();
-expires = ktime_add(now, ktime_set(0, bc-&gt;min_delta_ns));
-}
+
+return tick_dev_program_event(bc, expires, force);
 }
 
 int tick_resume_broadcast_oneshot(struct clock_event_device *bc)
&lt; at &gt;&lt; at &gt; -491,14 +491,52 &lt; at &gt;&lt; at &gt; static void tick_broadcast_clear_oneshot(int cpu)
 cpu_clear(cpu, tick_broadcast_oneshot_mask);
 }
 
+static void tick_broadcast_init_next_event(cpumask_t *mask, ktime_t expires)
+{
+struct tick_device *td;
+int cpu;
+
+for_each_cpu_mask_nr(cpu, *mask) {
+td = &amp;per_cpu(tick_cpu_device, cpu);
+if (td-&gt;evtdev)
+td-&gt;evtdev-&gt;next_event = expires;
+}
+}
+
 /**
  * tick_broadcast_setup_oneshot - setup the broadcast device
  */
 void tick_broadcast_setup_oneshot(struct clock_event_device *bc)
 {
-bc-&gt;event_handler = tick_handle_oneshot_broadcast;
-clockevents_set_mode(bc, CLOCK_EVT_MODE_ONESHOT);
-bc-&gt;next_event.tv64 = KTIME_MAX;
+/* Set it up only once ! */
+if (bc-&gt;event_handler != tick_handle_oneshot_broadcast) {
+int was_periodic = bc-&gt;mode == CLOCK_EVT_MODE_PERIODIC;
+int cpu = smp_processor_id();
+cpumask_t mask;
+
+bc-&gt;event_handler = tick_handle_oneshot_broadcast;
+clockevents_set_mode(bc, CLOCK_EVT_MODE_ONESHOT);
+
+/* Take the do_timer update */
+tick_do_timer_cpu = cpu;
+
+/*
+ * We must be careful here. There might be other CPUs
+ * waiting for periodic broadcast. We need to set the
+ * oneshot_mask bits for those and program the
+ * broadcast device to fire.
+ */
+mask = tick_broadcast_mask;
+cpu_clear(cpu, mask);
+cpus_or(tick_broadcast_oneshot_mask,
+tick_broadcast_oneshot_mask, mask);
+
+if (was_periodic &amp;&amp; !cpus_empty(mask)) {
+tick_broadcast_init_next_event(&amp;mask, tick_next_period);
+tick_broadcast_set_event(tick_next_period, 1);
+} else
+bc-&gt;next_event.tv64 = KTIME_MAX;
+}
 }
 
 /*
diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c
index 80c4336..c477719 100644
--- a/kernel/time/tick-common.c
+++ b/kernel/time/tick-common.c
&lt; at &gt;&lt; at &gt; -161,6 +161,7 &lt; at &gt;&lt; at &gt; static void tick_setup_device(struct tick_device *td,
 } else {
 handler = td-&gt;evtdev-&gt;event_handler;
 next_event = td-&gt;evtdev-&gt;next_event;
+td-&gt;evtdev-&gt;event_handler = clockevents_handle_noop;
 }
 
 td-&gt;evtdev = newdev;
diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h
index f13f2b7..0ffc291 100644
--- a/kernel/time/tick-internal.h
+++ b/kernel/time/tick-internal.h
&lt; at &gt;&lt; at &gt; -17,6 +17,8 &lt; at &gt;&lt; at &gt; extern void tick_handle_periodic(struct clock_event_device *dev);
 extern void tick_setup_oneshot(struct clock_event_device *newdev,
        void (*handler)(struct clock_event_device *),
        ktime_t nextevt);
+extern int tick_dev_program_event(struct clock_event_device *dev,
+  ktime_t expires, int force);
 extern int tick_program_event(ktime_t expires, int force);
 extern void tick_oneshot_notify(void);
 extern int tick_switch_to_oneshot(void (*handler)(struct clock_event_device *));
diff --git a/kernel/time/tick-oneshot.c b/kernel/time/tick-oneshot.c
index 450c049..2e35501 100644
--- a/kernel/time/tick-oneshot.c
+++ b/kernel/time/tick-oneshot.c
&lt; at &gt;&lt; at &gt; -23,24 +23,58 &lt; at &gt;&lt; at &gt;
 #include "tick-internal.h"
 
 /**
- * tick_program_event
+ * tick_program_event internal worker function
  */
-int tick_program_event(ktime_t expires, int force)
+int tick_dev_program_event(struct clock_event_device *dev, ktime_t expires,
+   int force)
 {
-struct clock_event_device *dev = __get_cpu_var(tick_cpu_device).evtdev;
 ktime_t now = ktime_get();
+int i;
 
-while (1) {
+for (i = 0;;) {
 int ret = clockevents_program_event(dev, expires, now);
 
 if (!ret || !force)
 return ret;
+
+/*
+ * We tried 2 times to program the device with the given
+ * min_delta_ns. If that's not working then we double it
+ * and emit a warning.
+ */
+if (++i &gt; 2) {
+printk(KERN_WARNING "CE: __tick_program_event of %s is "
+       "stuck %llx %llx\n", dev-&gt;name ? dev-&gt;name : "?",
+       now.tv64, expires.tv64);
+printk(KERN_WARNING
+       "CE: increasing min_delta_ns %ld to %ld nsec\n",
+       dev-&gt;min_delta_ns, dev-&gt;min_delta_ns &lt;&lt; 1);
+WARN_ON(1);
+
+/* Double the min. delta and try again */
+if (!dev-&gt;min_delta_ns)
+dev-&gt;min_delta_ns = 5000;
+else
+dev-&gt;min_delta_ns &lt;&lt;= 1;
+i = 0;
+}
+
 now = ktime_get();
-expires = ktime_add(now, ktime_set(0, dev-&gt;min_delta_ns));
+expires = ktime_add_ns(now, dev-&gt;min_delta_ns);
 }
 }
 
 /**
+ * tick_program_event
+ */
+int tick_program_event(ktime_t expires, int force)
+{
+struct clock_event_device *dev = __get_cpu_var(tick_cpu_device).evtdev;
+
+return tick_dev_program_event(dev, expires, force);
+}
+
+/**
  * tick_resume_onshot - resume oneshot mode
  */
 void tick_resume_oneshot(void)
&lt; at &gt;&lt; at &gt; -61,7 +95,7 &lt; at &gt;&lt; at &gt; void tick_setup_oneshot(struct clock_event_device *newdev,
 {
 newdev-&gt;event_handler = handler;
 clockevents_set_mode(newdev, CLOCK_EVT_MODE_ONESHOT);
-clockevents_program_event(newdev, next_event, ktime_get());
+tick_dev_program_event(newdev, next_event, 1);
 }
 
 /**
</description>
    <dc:creator>Thomas Gleixner</dc:creator>
    <dc:date>2008-09-06T15:10:16</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730537">
    <title>[GIT PULL] ALSA fix</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730537</link>
    <description>Linus,

please pull another ALSA fix for 2.6.27-rc5 from:

  git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git for-linus

which is a simple regression fix in Kconfig.

Thanks!

Takashi

===

Takashi Iwai (1):
      Fix CONFIG_AC97_BUS dependency

 sound/Kconfig |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/sound/Kconfig b/sound/Kconfig
index a37bee0..8ebf512 100644
--- a/sound/Kconfig
+++ b/sound/Kconfig
&lt; at &gt;&lt; at &gt; -91,6 +91,9 &lt; at &gt;&lt; at &gt; endif # SOUND_PRIME
 
 endif # !M68K
 
+endif # SOUND
+
+# AC97_BUS is used from both sound and ucb1400
 config AC97_BUS
 tristate
 help
&lt; at &gt;&lt; at &gt; -99,4 +102,3 &lt; at &gt;&lt; at &gt; config AC97_BUS
   sound although they're sharing the AC97 bus. Concerned drivers
   should "select" this.
 
-endif # SOUND
</description>
    <dc:creator>Takashi Iwai</dc:creator>
    <dc:date>2008-09-06T09:53:08</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730536">
    <title>SOS new timer:</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730536</link>
    <description>a new timer implementation based on SOS. resolution of microseconds or 100ns.
first draft, still needs many fixes.

http://sos-linux.cvs.sourceforge.net/sos-linux/sos/

</description>
    <dc:creator>Raz</dc:creator>
    <dc:date>2008-09-06T09:35:08</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730535">
    <title>[PATCH] rate limit drm:radeon_cp_idle/reset errors</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730535</link>
    <description>When switching from kwin composite wm (KDE 4.1) to compiz I often hit the
following error:

Sep  6 10:24:31 poppero1 kernel: [  186.138203] [drm:radeon_cp_idle] *ERROR* radeon_cp_idle called without lock held, held  0 owner f726bc80 f68f6840
Sep  6 10:24:31 poppero1 kernel: [  186.138568] [drm:radeon_cp_reset] *ERROR* radeon_cp_reset called without lock held, held  0 owner f726bc80 f68f6840

probably due to broken X drivers/apps; after hitting this the error my laptop
(hp nx7010) is totally unresponsitive to keyboard/mouse, also if it can be 
shut down via the power button:

Sep  6 10:24:59 poppero1 powersave-wm_shutdown[4843]: DIAG: Process script for event button.power ID 10
Sep  6 10:24:59 poppero1 powersave-wm_shutdown[4843]: INFO: Event: BUTTON_POWER occured.
Sep  6 10:24:59 poppero1 powersave-wm_shutdown[4843]: INFO: Parameters: Event - button.power; Current Active Scheme: scheme_performance - ACPI event line: button/power PWRF 00000080
00000001
Sep  6 10:25:00 poppero1 shutdown[4852]: shutting down for system halt
...

Without the attached patch, which rate limits DRM_ERROR, the syslog is flooded
by thuosands of messages; here's the output with the patch applied.

Sep  6 10:24:31 poppero1 kernel: [  186.138774] [drm:radeon_cp_start] *ERROR* radeon_cp_start called without lock held, held  0 owner f726bc80 f68f6840
Sep  6 10:24:31 poppero1 kernel: [  186.138968] [drm:radeon_cp_idle] *ERROR* radeon_cp_idle called without lock held, held  0 owner f726bc80 f68f6840
Sep  6 10:24:31 poppero1 kernel: [  186.139214] [drm:radeon_cp_reset] *ERROR* radeon_cp_reset called without lock held, held  0 owner f726bc80 f68f6840
Sep  6 10:24:31 poppero1 kernel: [  186.139408] [drm:radeon_cp_start] *ERROR* radeon_cp_start called without lock held, held  0 owner f726bc80 f68f6840
Sep  6 10:24:31 poppero1 kernel: [  186.139601] [drm:radeon_cp_idle] *ERROR* radeon_cp_idle called without lock held, held  0 owner f726bc80 f68f6840
Sep  6 10:24:31 poppero1 kernel: [  186.139866] [drm:radeon_cp_reset] *ERROR* radeon_cp_reset called without lock held, held  0 owner f726bc80 f68f6840
Sep  6 10:24:31 poppero1 kernel: [  186.140072] [drm:radeon_cp_start] *ERROR* radeon_cp_start called without lock held, held  0 owner f726bc80 f68f6840
Sep  6 10:24:31 poppero1 kernel: [  186.140467] [drm:radeon_cp_idle] *ERROR* radeon_cp_idle called without lock held, held  0 owner f726bc80 f68f6840
Sep  6 10:24:36 poppero1 kernel: [  191.139019] __ratelimit: 253431 callbacks suppressed
Sep  6 10:24:36 poppero1 kernel: [  191.139030] [drm:radeon_cp_reset] *ERROR* radeon_cp_reset called without lock held, held  0 owner f726bc80 f68f6840
Sep  6 10:24:36 poppero1 kernel: [  191.139314] [drm:radeon_cp_start] *ERROR* radeon_cp_start called without lock held, held  0 owner f726bc80 f68f6840

Also if it doesn't solve a bug I think it may still be worth applying it. 
Patch is against current git.

Signed-off-by: Roberto Oppedisano &lt;roberto.oppedisano&lt; at &gt;infracom.it&gt;

diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 1c1b13e..1107361 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
&lt; at &gt;&lt; at &gt; -162,7 +162,8 &lt; at &gt;&lt; at &gt; struct drm_device;
  * \param arg arguments
  */
 #define DRM_ERROR(fmt, arg...) \
-printk(KERN_ERR "[" DRM_NAME ":%s] *ERROR* " fmt , __func__ , ##arg)
+if (printk_ratelimit()) \
+printk(KERN_ERR "[" DRM_NAME ":%s] *ERROR* " fmt , __func__ , ##arg)
 
 /**
  * Memory error output.

</description>
    <dc:creator>Roberto Oppedisano</dc:creator>
    <dc:date>2008-09-06T09:19:19</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730533">
    <title>Uniquely identify and Motherboard Model.</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730533</link>
    <description>Hi,

Is there a way I could uniquely identify a Motherboard Model. I don't
need the serial number, just the model.
Applications for this could be:
1) Create a table to map Motherboard Model to lmsensors calibration
settings. All motherboards seem to use different resistors, so the
calibration needs to be adjusted for each motherboard model.
2) Sound card in/out wiring.
3) Any other wiring on the motherboard that one needs to know, but
cannot identify through other means.

It might be useful for the kernel to provide this as a service so that
driver modules can use it to make choices.


Kind Regards

James
</description>
    <dc:creator>James Courtier-Dutton</dc:creator>
    <dc:date>2008-09-06T09:09:13</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730530">
    <title>[PATCH 1/2] x86: remove duplicated get_mode_name calling</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730530</link>
    <description>Signed-off-by: Yinghai Lu &lt;yhlu.kernel&lt; at &gt;gmail.com&gt;

---
 arch/x86/kernel/cpu/amd.c       |    3 ---
 arch/x86/kernel/cpu/amd_64.c    |    3 +--
 arch/x86/kernel/cpu/centaur.c   |    1 -
 arch/x86/kernel/cpu/common.c    |    9 +++------
 arch/x86/kernel/cpu/cpu.h       |    1 -
 arch/x86/kernel/cpu/cyrix.c     |    1 -
 arch/x86/kernel/cpu/transmeta.c |    1 -
 7 files changed, 4 insertions(+), 15 deletions(-)

Index: linux-2.6/arch/x86/kernel/cpu/amd.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/cpu/amd.c
+++ linux-2.6/arch/x86/kernel/cpu/amd.c
&lt; at &gt;&lt; at &gt; -42,7 +42,6 &lt; at &gt;&lt; at &gt; static void __cpuinit init_amd(struct cp
 {
 u32 l, h;
 int mbytes = num_physpages &gt;&gt; (20-PAGE_SHIFT);
-int r;
 
 #ifdef CONFIG_SMP
 unsigned long long value;
&lt; at &gt;&lt; at &gt; -75,8 +74,6 &lt; at &gt;&lt; at &gt; static void __cpuinit init_amd(struct cp
  */
 clear_cpu_cap(c, 0*32+31);
 
-r = get_model_name(c);
-
 switch (c-&gt;x86) {
 case 4:
 /*
Index: linux-2.6/arch/x86/kernel/cpu/amd_64.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/cpu/amd_64.c
+++ linux-2.6/arch/x86/kernel/cpu/amd_64.c
&lt; at &gt;&lt; at &gt; -157,8 +157,7 &lt; at &gt;&lt; at &gt; static void __cpuinit init_amd(struct cp
 if (c-&gt;x86 &gt;= 6)
 set_cpu_cap(c, X86_FEATURE_FXSAVE_LEAK);
 
-level = get_model_name(c);
-if (!level) {
+if (!c-&gt;x86_model_id[0]) {
 switch (c-&gt;x86) {
 case 0xf:
 /* Should distinguish Models here, but this is only
Index: linux-2.6/arch/x86/kernel/cpu/centaur.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/cpu/centaur.c
+++ linux-2.6/arch/x86/kernel/cpu/centaur.c
&lt; at &gt;&lt; at &gt; -289,7 +289,6 &lt; at &gt;&lt; at &gt; static void __cpuinit init_c3(struct cpu
 if (c-&gt;x86_model &gt;= 6 &amp;&amp; c-&gt;x86_model &lt; 9)
 set_cpu_cap(c, X86_FEATURE_3DNOW);
 
-get_model_name(c);
 display_cacheinfo(c);
 }
 
Index: linux-2.6/arch/x86/kernel/cpu/common.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/cpu/common.c
+++ linux-2.6/arch/x86/kernel/cpu/common.c
&lt; at &gt;&lt; at &gt; -252,13 +252,13 &lt; at &gt;&lt; at &gt; static struct cpu_dev __cpuinitdata defa
 .c_x86_vendor = X86_VENDOR_UNKNOWN,
 };
 
-int __cpuinit get_model_name(struct cpuinfo_x86 *c)
+static void __cpuinit get_model_name(struct cpuinfo_x86 *c)
 {
 unsigned int *v;
 char *p, *q;
 
 if (c-&gt;extended_cpuid_level &lt; 0x80000004)
-return 0;
+return;
 
 v = (unsigned int *) c-&gt;x86_model_id;
 cpuid(0x80000002, &amp;v[0], &amp;v[1], &amp;v[2], &amp;v[3]);
&lt; at &gt;&lt; at &gt; -277,8 +277,6 &lt; at &gt;&lt; at &gt; int __cpuinit get_model_name(struct cpui
      while (q &lt;= &amp;c-&gt;x86_model_id[48])
   *q++ = '\0';/* Zero-pad the rest */
 }
-
-return 1;
 }
 
 void __cpuinit display_cacheinfo(struct cpuinfo_x86 *c)
&lt; at &gt;&lt; at &gt; -610,8 +608,7 &lt; at &gt;&lt; at &gt; static void __cpuinit generic_identify(s
 #endif
 }
 
-if (c-&gt;extended_cpuid_level &gt;= 0x80000004)
-get_model_name(c); /* Default name */
+get_model_name(c); /* Default name */
 
 init_scattered_cpuid_features(c);
 detect_nopl(c);
Index: linux-2.6/arch/x86/kernel/cpu/cpu.h
===================================================================
--- linux-2.6.orig/arch/x86/kernel/cpu/cpu.h
+++ linux-2.6/arch/x86/kernel/cpu/cpu.h
&lt; at &gt;&lt; at &gt; -31,7 +31,6 &lt; at &gt;&lt; at &gt; struct cpu_dev {
 
 extern struct cpu_dev *__x86_cpu_dev_start[], *__x86_cpu_dev_end[];
 
-extern int get_model_name(struct cpuinfo_x86 *c);
 extern void display_cacheinfo(struct cpuinfo_x86 *c);
 
 #endif
Index: linux-2.6/arch/x86/kernel/cpu/cyrix.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/cpu/cyrix.c
+++ linux-2.6/arch/x86/kernel/cpu/cyrix.c
&lt; at &gt;&lt; at &gt; -301,7 +301,6 &lt; at &gt;&lt; at &gt; static void __cpuinit init_cyrix(struct
  */
 if ((0x30 &lt;= dir1 &amp;&amp; dir1 &lt;= 0x6f) || (0x80 &lt;= dir1 &amp;&amp; dir1 &lt;= 0x8f))
 geode_configure();
-get_model_name(c);  /* get CPU marketing name */
 return;
 } else { /* MediaGX */
 Cx86_cb[2] = (dir0_lsn &amp; 1) ? '3' : '4';
Index: linux-2.6/arch/x86/kernel/cpu/transmeta.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/cpu/transmeta.c
+++ linux-2.6/arch/x86/kernel/cpu/transmeta.c
&lt; at &gt;&lt; at &gt; -12,7 +12,6 &lt; at &gt;&lt; at &gt; static void __cpuinit init_transmeta(str
 unsigned int cpu_rev, cpu_freq = 0, cpu_flags, new_cpu_rev;
 char cpu_info[65];
 
-get_model_name(c);/* Same as AMD/Cyrix */
 display_cacheinfo(c);
 
 /* Print CMS and CPU revision */
</description>
    <dc:creator>Yinghai Lu</dc:creator>
    <dc:date>2008-09-06T08:52:27</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730526">
    <title>ACPI video.c brightness handler conflicts with toshiba_acpi</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730526</link>
    <description>I have now two different devices that refer to the same hardware:

lrwxrwxrwx 1 root root 0 2008-09-06 11:04 acpi_video0 -&gt; ../../devices/virtual/backlight/acpi_video0/
lrwxrwxrwx 1 root root 0 2008-09-06 11:04 toshiba -&gt; ../../devices/virtual/backlight/toshiba/

Unfortunately, due to ACPI implementation the acpi_video0 one is much
inferior (as it provides only effectively two levels instead of 8);
and user level tools are apparently quite confused which one to select.

Is there any mechanism that would allow tochiba_acpi to claim brightness
for internal LCD screen that video would not attempt to grab it too?

Of course manually disabling brightness handling in video is always possible,
still is nice for this to be handled automatically.
</description>
    <dc:creator>Andrey Borzenkov</dc:creator>
    <dc:date>2008-09-06T07:08:33</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730523">
    <title>2.6.27-rc5-mm1: 3 WARN_ON dumps during boot (acpi + vmap_pte_range)</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730523</link>
    <description>Hi,

There is a dmesg dump  below from my Compaq AP550 workstation.
It has 3 WARN_ON() dumps: 1 from acpi layer and 2 from vmap_pte_range()
There is no such thing in 2.6.27-rc4 which I use daily so I assume
it is something in the -mm tree.

It is a Pentium3 SMP machine.

Kind regards,
Krzysztof

Linux version 2.6.27-rc5-mm1 (root&lt; at &gt;xxx) (gcc version 3.4.6) #1 SMP Sat Sep 6 07:47:58 CEST 2008
PAT WC disabled due to known CPU erratum.
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
 BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000001fff0000 (usable)
 BIOS-e820: 000000001fff0000 - 0000000020000000 (reserved)
last_pfn = 0x1fff0 max_arch_pfn = 0x100000
kernel direct mapping tables up to 1fff0000 &lt; at &gt; 7000-d000
DMI 2.3 present.
ACPI: RSDP 000E0010, 0014 (r0 COMPAQ)
ACPI: RSDT 000E0080, 0040 (r1 COMPAQ CPQB154  20010410             0)
ACPI: FACP 000E00EC, 0074 (r1 COMPAQ CARMEL          1             0)
ACPI: DSDT 000E0230, 1B6C (r1 COMPAQ     DSDT        1 MSFT  100000D)
ACPI: FACS 000E0040, 0040
ACPI: APIC 000E0160, 0068 (r1 COMPAQ CARMEL          1             0)
ACPI: SSDT 000E1D9C, 005B (r1 COMPAQ   ZURICH        1 MSFT  100000D)
ACPI: SSDT 000E1FE8, 06A5 (r1 COMPAQ PNP_PRSS        1 MSFT  100000D)
ACPI: SSDT 000E3414, 005D (r1 COMPAQ     FHUB        1 MSFT  100000D)
ACPI: SSDT 000E268D, 0CBF (r1 COMPAQ  THERMAL        1 MSFT  100000D)
ACPI: SSDT 000E334C, 0024 (r1 COMPAQ       S1        1 MSFT  100000D)
511MB LOWMEM available.
  mapped low ram: 0 - 1fff0000
  low ram: 00000000 - 1fff0000
  bootmap 00002000 - 00006000
(8 early reservations) ==&gt; bootmem [0000000000 - 001fff0000]
  #0 [0000000000 - 0000001000]   BIOS data page ==&gt; [0000000000 - 0000001000]
  #1 [0000001000 - 0000002000]    EX TRAMPOLINE ==&gt; [0000001000 - 0000002000]
  #2 [0000006000 - 0000007000]       TRAMPOLINE ==&gt; [0000006000 - 0000007000]
  #3 [0000100000 - 00004dbb24]    TEXT DATA BSS ==&gt; [0000100000 - 00004dbb24]
  #4 [00004dc000 - 00004df000]    INIT_PG_TABLE ==&gt; [00004dc000 - 00004df000]
  #5 [000009f800 - 0000100000]    BIOS reserved ==&gt; [000009f800 - 0000100000]
  #6 [0000007000 - 0000009000]          PGTABLE ==&gt; [0000007000 - 0000009000]
  #7 [0000002000 - 0000006000]          BOOTMAP ==&gt; [0000002000 - 0000006000]
sizeof(struct page) = 32
Zone PFN ranges:
  DMA      0x00000000 -&gt; 0x00001000
  Normal   0x00001000 -&gt; 0x0001fff0
Movable zone start PFN for each node
early_node_map[2] active PFN ranges
    0: 0x00000000 -&gt; 0x0000009f
    0: 0x00000100 -&gt; 0x0001fff0
On node 0 totalpages: 130959
Node 0 memmap at 0xc1000000 size 4194304 first pfn 0xc1000000
free_area_init_node: node 0, pgdat c045d4a0, node_mem_map c1000000
  DMA zone: 3967 pages, LIFO batch:0
  Normal zone: 125968 pages, LIFO batch:31
ACPI: PM-Timer IO Port: 0xf808
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])
ACPI: IOAPIC (id[0x08] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 8, version 32, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: IRQ0 used by override.
ACPI: IRQ2 used by override.
ACPI: IRQ9 used by override.
Enabling APIC mode:  Flat.  Using 1 I/O APICs
SMP: Allowing 2 CPUs, 0 hotplug CPUs
Allocating PCI resources starting at 30000000 (gap: 20000000:e0000000)
dyn_array 0xc04b92a4 size:0x1c nr:32 align:0x1000
dyn_array 0xc04b92ac size:0xc nr:256 align:0x1000
dyn_array 0xc04ce274 size:0x60 nr:32 align:0x1000
dyn_array total_size: 0x3000
dyn_array 0xc04b92a4 ==&gt; [0x1402000 - 0x1402380]
dyn_array 0xc04b92ac ==&gt; [0x1403000 - 0x1403c00]
dyn_array 0xc04ce274 ==&gt; [0x1404000 - 0x1404c00]
kstat_irqs ==&gt; [0x1405000 - 0x1405100]
PERCPU: Allocating 32768 bytes of per cpu data
NR_CPUS: 4, nr_cpu_ids: 2, nr_node_ids 1
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129935
Kernel command line: BOOT_IMAGE=Linux-mm ro root=306 video=tridentfb:1024x768
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
found new irq_desc for irq 0
found new irq_desc for irq 1
found new irq_desc for irq 2
found new irq_desc for irq 3
found new irq_desc for irq 4
found new irq_desc for irq 5
found new irq_desc for irq 6
found new irq_desc for irq 7
found new irq_desc for irq 8
found new irq_desc for irq 9
found new irq_desc for irq 10
found new irq_desc for irq 11
found new irq_desc for irq 12
found new irq_desc for irq 13
found new irq_desc for irq 14
found new irq_desc for irq 15
CPU 0 irqstacks, hard=c04aa000 soft=c04a6000
PID hash table entries: 2048 (order: 11, 8192 bytes)
TSC: PIT calibration confirmed by PMTIMER.
TSC: using PIT calibration value
Detected 863.928 MHz processor.
Console: colour VGA+ 80x25
console [tty0] enabled
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 515180k/524224k available (2583k kernel code, 8564k reserved, 893k data, 228k init, 0k highmem)
virtual kernel memory layout:
    fixmap  : 0xfffb9000 - 0xfffff000   ( 280 kB)
    vmalloc : 0xe07f0000 - 0xfffb7000   ( 503 MB)
    lowmem  : 0xc0000000 - 0xdfff0000   ( 511 MB)
      .init : 0xc046a000 - 0xc04a3000   ( 228 kB)
      .data : 0xc0385de5 - 0xc04652b8   ( 893 kB)
      .text : 0xc0100000 - 0xc0385de5   (2583 kB)
Checking if this processor honours the WP bit even in supervisor mode...Ok.
CPA: page pool initialized 1 of 1 pages preallocated
SLUB: Genslabs=12, HWalign=32, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
Calibrating delay loop (skipped), value calculated using timer frequency.. 1727.85 BogoMIPS (lpj=3455712)
Mount-cache hash table entries: 512
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 256K
Checking 'hlt' instruction... OK.
ACPI: Core revision 20080729
 0 add_pin_to_irq: irq 1 --&gt; apic 0 pin 1
 0 add_pin_to_irq: irq 0 --&gt; apic 0 pin 2
 0 add_pin_to_irq: irq 3 --&gt; apic 0 pin 3
 0 add_pin_to_irq: irq 4 --&gt; apic 0 pin 4
 0 add_pin_to_irq: irq 5 --&gt; apic 0 pin 5
 0 add_pin_to_irq: irq 6 --&gt; apic 0 pin 6
 0 add_pin_to_irq: irq 7 --&gt; apic 0 pin 7
 0 add_pin_to_irq: irq 8 --&gt; apic 0 pin 8
 0 add_pin_to_irq: irq 9 --&gt; apic 0 pin 9
 0 add_pin_to_irq: irq 10 --&gt; apic 0 pin 10
 0 add_pin_to_irq: irq 11 --&gt; apic 0 pin 11
 0 add_pin_to_irq: irq 12 --&gt; apic 0 pin 12
 0 add_pin_to_irq: irq 13 --&gt; apic 0 pin 13
 0 add_pin_to_irq: irq 14 --&gt; apic 0 pin 14
 0 add_pin_to_irq: irq 15 --&gt; apic 0 pin 15
..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
CPU0: Intel Pentium III (Coppermine) stepping 03
CPU 1 irqstacks, hard=c04ab000 soft=c04a7000
Booting processor 1/0 ip 6000
Initializing CPU#1
Calibrating delay using timer specific routine.. 1727.95 BogoMIPS (lpj=3455917)
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 256K
CPU1: Intel Pentium III (Coppermine) stepping 03
checking TSC synchronization [CPU#0 -&gt; CPU#1]: passed.
Brought up 2 CPUs
Total of 2 processors activated (3455.81 BogoMIPS).
net_namespace: 296 bytes
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: PCI BIOS revision 2.10 entry at 0xedb08, last bus=2
PCI: Using configuration type 1 for base access
------------[ cut here ]------------
WARNING: at fs/sysfs/dir.c:465 sysfs_add_one+0x4c/0x50()
sysfs: duplicate filename 'acpi' can not be created
Modules linked in:
Pid: 1, comm: swapper Not tainted 2.6.27-rc5-mm1 #1
 [&lt;c012530f&gt;] warn_slowpath+0x6f/0xa0
 [&lt;c03837b0&gt;] __sched_text_start+0x2b0/0x4b0
 [&lt;c0111da1&gt;] xapic_wait_icr_idle+0x11/0x20
 [&lt;c01f6dc9&gt;] sub_alloc+0x69/0x160
 [&lt;c01f6f75&gt;] idr_get_empty_slot+0xb5/0x140
 [&lt;c01f768f&gt;] ida_get_new_above+0x3f/0x1b0
 [&lt;c0383a65&gt;] wait_for_common+0xb5/0x130
 [&lt;c01b6420&gt;] sysfs_ilookup_test+0x0/0x10
 [&lt;c01b6420&gt;] sysfs_ilookup_test+0x0/0x10
 [&lt;c01b67ca&gt;] sysfs_find_dirent+0x1a/0x30
 [&lt;c01b64fc&gt;] __sysfs_add_one+0x1c/0x80
 [&lt;c01b65ac&gt;] sysfs_add_one+0x4c/0x50
 [&lt;c01b6888&gt;] create_dir+0x48/0xb0
 [&lt;c01b6939&gt;] sysfs_create_dir+0x29/0x50
 [&lt;c01f7b89&gt;] create_dir+0x19/0x50
 [&lt;c01f7dca&gt;] kobject_add_internal+0x8a/0x120
 [&lt;c01f7e9a&gt;] kobject_set_name_vargs+0x3a/0x50
 [&lt;c01f7f92&gt;] kobject_add_varg+0x22/0x60
 [&lt;c01f8059&gt;] kobject_init_and_add+0x29/0x30
 [&lt;c04795db&gt;] kernel_param_sysfs_setup+0x5b/0xc0
 [&lt;c01b6891&gt;] create_dir+0x51/0xb0
 [&lt;c047974e&gt;] param_sysfs_builtin+0x10e/0x150
 [&lt;c0479790&gt;] param_sysfs_init+0x0/0x60
 [&lt;c04797bc&gt;] param_sysfs_init+0x2c/0x60
 [&lt;c0471531&gt;] mtrr_init_finialize+0x31/0x40
 [&lt;c0101032&gt;] _stext+0x32/0x180
 [&lt;c0111da1&gt;] xapic_wait_icr_idle+0x11/0x20
 [&lt;c011aeb4&gt;] resched_task+0x54/0x60
 [&lt;c011e76e&gt;] try_to_wake_up+0x12e/0x140
 [&lt;c0135211&gt;] __create_workqueue_key+0x131/0x150
 [&lt;c046a8d3&gt;] do_initcalls+0x53/0xd0
 [&lt;c046a9a0&gt;] kernel_init+0x0/0xb0
 [&lt;c046a9f5&gt;] kernel_init+0x55/0xb0
 [&lt;c0103f3b&gt;] kernel_thread_helper+0x7/0x1c
 =======================
---[ end trace 4eaa2a86a8e2da22 ]---
kobject_add_internal failed for acpi with -EEXIST, don't try to register things with the same name in the same directory.
Pid: 1, comm: swapper Tainted: G        W 2.6.27-rc5-mm1 #1
 [&lt;c01f7e48&gt;] kobject_add_internal+0x108/0x120
 [&lt;c01f7f92&gt;] kobject_add_varg+0x22/0x60
 [&lt;c01f8059&gt;] kobject_init_and_add+0x29/0x30
 [&lt;c04795db&gt;] kernel_param_sysfs_setup+0x5b/0xc0
 [&lt;c01b6891&gt;] create_dir+0x51/0xb0
 [&lt;c047974e&gt;] param_sysfs_builtin+0x10e/0x150
 [&lt;c0479790&gt;] param_sysfs_init+0x0/0x60
 [&lt;c04797bc&gt;] param_sysfs_init+0x2c/0x60
 [&lt;c0471531&gt;] mtrr_init_finialize+0x31/0x40
 [&lt;c0101032&gt;] _stext+0x32/0x180
 [&lt;c0111da1&gt;] xapic_wait_icr_idle+0x11/0x20
 [&lt;c011aeb4&gt;] resched_task+0x54/0x60
 [&lt;c011e76e&gt;] try_to_wake_up+0x12e/0x140
 [&lt;c0135211&gt;] __create_workqueue_key+0x131/0x150
 [&lt;c046a8d3&gt;] do_initcalls+0x53/0xd0
 [&lt;c046a9a0&gt;] kernel_init+0x0/0xb0
 [&lt;c046a9f5&gt;] kernel_init+0x55/0xb0
 [&lt;c0103f3b&gt;] kernel_thread_helper+0x7/0x1c
 =======================
Module 'acpi' failed to be added to sysfs, error number -17
The system will be unstable now.
ACPI: EC: Look up EC in DSDT
ACPI: Interpreter enabled
ACPI: (supports S0 S5)
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
pci 0000:00:1f.0: quirk: region f800-f87f claimed by ICH4 ACPI/GPIO/TCO
pci 0000:00:1f.0: quirk: region fa00-fa3f claimed by ICH4 GPIO
pci 0000:01:00.0: supports D1 D2
PCI: bridge 0000:00:01.0 32bit mmio: [fd000000, fe7fffff]
pci 0000:02:02.0: supports D1 D2
pci 0000:02:02.0: PME# supported from D0 D1 D2 D3hot D3cold
pci 0000:02:02.0: PME# disabled
pci 0000:02:0b.0: supports D2
pci 0000:00:1e.0: transparent bridge
PCI: bridge 0000:00:1e.0 io port: [5000, 5fff]
PCI: bridge 0000:00:1e.0 32bit mmio: [fcb00000, fcffffff]
bus 00 -&gt; node 0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.BUS1._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HUB_._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 10 11) *0, disabled.
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 *5 6 7 10 11)
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 10 *11)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 *10 11)
ACPI: Power Resource [PFN0] (on)
ACPI: Power Resource [PFN1] (on)
ACPI: Power Resource [PFN2] (on)
ACPI: Power Resource [PFN3] (on)
ACPI: Power Resource [PFN4] (on)
ACPI: Power Resource [PFN5] (on)
ACPI: Power Resource [PFN6] (on)
ACPI: Power Resource [PFN7] (on)
ACPI: Power Resource [PFN8] (on)
ACPI: Power Resource [PFN9] (on)
pnp: PnP ACPI init
ACPI: bus type pnp registered
pnp 00:0d: io resource (0xf800-0xf81f) overlaps 0000:00:1f.0 BAR 7 (0xf800-0xf87f), disabling
pnp 00:0d: io resource (0xf820-0xf83f) overlaps 0000:00:1f.0 BAR 7 (0xf800-0xf87f), disabling
pnp 00:0d: io resource (0xf840-0xf85f) overlaps 0000:00:1f.0 BAR 7 (0xf800-0xf87f), disabling
pnp 00:0d: io resource (0xf860-0xf87f) overlaps 0000:00:1f.0 BAR 7 (0xf800-0xf87f), disabling
pnp 00:0d: io resource (0xfa00-0xfa1f) overlaps 0000:00:1f.0 BAR 8 (0xfa00-0xfa3f), disabling
pnp 00:0d: io resource (0xfa20-0xfa3f) overlaps 0000:00:1f.0 BAR 8 (0xfa00-0xfa3f), disabling
pnp 00:0e: mem resource (0x0-0x9ffff) overlaps 0000:02:02.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:0e: mem resource (0xe0000-0xfffff) overlaps 0000:02:02.0 BAR 6 (0x0-0xfffff), disabling
pnp 00:0e: mem resource (0xd3600-0xd3fff) overlaps 0000:02:02.0 BAR 6 (0x0-0xfffff), disabling
pnp: PnP ACPI: found 16 devices
ACPI: ACPI bus type pnp unregistered
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
PCI: Using ACPI for IRQ routing
ACPI: RTC can wake from S4
system 00:0c: ioport range 0x4d0-0x4d1 has been reserved
system 00:0d: ioport range 0x400-0x41f has been reserved
system 00:0d: ioport range 0x420-0x43f has been reserved
system 00:0d: ioport range 0x440-0x45f has been reserved
system 00:0d: ioport range 0x460-0x47f has been reserved
system 00:0e: iomem range 0x100000-0x2000ffff could not be reserved
system 00:0e: iomem range 0xfff80000-0xffffffff has been reserved
system 00:0e: iomem range 0xfeea0000-0xfeebffff has been reserved
pci 0000:00:01.0: PCI bridge, secondary bus 0000:01
pci 0000:00:01.0:   IO window: disabled
pci 0000:00:01.0:   MEM window: 0xfd000000-0xfe7fffff
pci 0000:00:01.0:   PREFETCH window: 0x00000030000000-0x000000300fffff
pci 0000:00:1e.0: PCI bridge, secondary bus 0000:02
pci 0000:00:1e.0:   IO window: 0x5000-0x5fff
pci 0000:00:1e.0:   MEM window: 0xfcb00000-0xfcffffff
pci 0000:00:1e.0:   PREFETCH window: 0x00000030100000-0x000000302fffff
pci 0000:00:1e.0: setting latency timer to 64
bus: 00 index 0 io port: [0, ffff]
bus: 00 index 1 mmio: [0, ffffffff]
bus: 01 index 0 mmio: [0, 0]
bus: 01 index 1 mmio: [fd000000, fe7fffff]
bus: 01 index 2 mmio: [30000000, 300fffff]
bus: 01 index 3 mmio: [0, 0]
bus: 02 index 0 io port: [5000, 5fff]
bus: 02 index 1 mmio: [fcb00000, fcffffff]
bus: 02 index 2 mmio: [30100000, 302fffff]
bus: 02 index 3 io port: [0, ffff]
bus: 02 index 4 mmio: [0, ffffffff]
NET: Registered protocol family 2
IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
TCP established hash table entries: 16384 (order: 5, 131072 bytes)
TCP bind hash table entries: 16384 (order: 5, 131072 bytes)
TCP: Hash tables configured (established 16384 bind 16384)
TCP reno registered
NET: Registered protocol family 1
pci 0000:01:00.0: Boot video device
pci 0000:02:02.0: Firmware left e100 interrupts enabled; disabling
input: Power Button (FF) as /class/input/input0
ACPI: Power Button (FF) [PWRF]
input: Power Button (CM) as /class/input/input1
ACPI: Power Button (CM) [PBTN]
thermal LNXTHERM:01: registered as thermal_zone0
ACPI: Thermal Zone [THRM] (27 C)
USB Universal Host Controller Interface driver v3.0
found new irq_cfg for irq 19
 0 add_pin_to_irq: irq 19 --&gt; apic 0 pin 19
found new irq_desc for irq 19
uhci_hcd 0000:00:1f.2: PCI INT D -&gt; GSI 19 (level, low) -&gt; IRQ 19
uhci_hcd 0000:00:1f.2: setting latency timer to 64
uhci_hcd 0000:00:1f.2: UHCI Host Controller
uhci_hcd 0000:00:1f.2: new USB bus registered, assigned bus number 1
uhci_hcd 0000:00:1f.2: irq 19, io base 0x00006440
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
msgmni has been set to 1006
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
found new irq_cfg for irq 18
 0 add_pin_to_irq: irq 18 --&gt; apic 0 pin 18
found new irq_desc for irq 18
tridentfb 0000:01:00.0: PCI INT A -&gt; GSI 18 (level, low) -&gt; IRQ 18
tridentfb: framebuffer size = 8192 Kb
Console: switching to colour frame buffer device 128x48
tridentfb: fb0: Trident frame buffer device 1024x768-8bpp
ACPI: Transitioning device [FN0] to D3
fan PNP0C0B:00: registered as cooling_device0
ACPI: Fan [FN0] (off)
ACPI: Transitioning device [FN1] to D3
fan PNP0C0B:01: registered as cooling_device1
ACPI: Fan [FN1] (off)
ACPI: Transitioning device [FN2] to D3
fan PNP0C0B:02: registered as cooling_device2
ACPI: Fan [FN2] (off)
ACPI: Transitioning device [FN3] to D3
fan PNP0C0B:03: registered as cooling_device3
ACPI: Fan [FN3] (off)
ACPI: Transitioning device [FN4] to D3
fan PNP0C0B:04: registered as cooling_device4
ACPI: Fan [FN4] (off)
ACPI: Transitioning device [FN5] to D3
fan PNP0C0B:05: registered as cooling_device5
ACPI: Fan [FN5] (off)
ACPI: Transitioning device [FN6] to D3
fan PNP0C0B:06: registered as cooling_device6
ACPI: Fan [FN6] (off)
ACPI: Transitioning device [FN7] to D3
fan PNP0C0B:07: registered as cooling_device7
ACPI: Fan [FN7] (off)
ACPI: Transitioning device [FN8] to D3
fan PNP0C0B:08: registered as cooling_device8
ACPI: Fan [FN8] (off)
fan PNP0C0B:09: registered as cooling_device9
ACPI: Fan [FN9] (on)
processor ACPI0007:00: registered as cooling_device10
processor ACPI0007:01: registered as cooling_device11
Intel 82802 RNG detected
Linux agpgart interface v0.103
agpgart-intel 0000:00:00.0: Intel i840 Chipset
------------[ cut here ]------------
WARNING: at mm/vmalloc.c:105 vmap_pte_range+0xcb/0x100()
Modules linked in:
Pid: 1, comm: swapper Tainted: G        W 2.6.27-rc5-mm1 #1
 [&lt;c012526f&gt;] warn_on_slowpath+0x5f/0x90
 [&lt;c0217a5e&gt;] fbcon_clear+0x13e/0x1a0
 [&lt;c0111da1&gt;] xapic_wait_icr_idle+0x11/0x20
 [&lt;c01460cc&gt;] generic_exec_single+0x9c/0xa0
 [&lt;c0109776&gt;] read_tsc+0x6/0x30
 [&lt;c013e4f8&gt;] getnstimeofday+0x38/0x150
 [&lt;c015496c&gt;] buffered_rmqueue+0x12c/0x210
 [&lt;c011b53c&gt;] update_curr+0x4c/0x70
 [&lt;c016768b&gt;] vmap_pte_range+0xcb/0x100
 [&lt;c01676ed&gt;] vmap_pmd_range+0x2d/0x40
 [&lt;c016772d&gt;] vmap_pud_range+0x2d/0x40
 [&lt;c01677a6&gt;] vmap_page_range+0x66/0x90
 [&lt;c016844f&gt;] map_vm_area+0x2f/0x50
 [&lt;c0168996&gt;] __vmalloc_area_node+0xb6/0x110
 [&lt;c0168a95&gt;] __vmalloc_node+0x85/0xb0
 [&lt;c02603a2&gt;] agp_backend_initialize+0x82/0x230
 [&lt;c0168b01&gt;] vmalloc+0x21/0x30
 [&lt;c02603a2&gt;] agp_backend_initialize+0x82/0x230
 [&lt;c02603a2&gt;] agp_backend_initialize+0x82/0x230
 [&lt;c027f790&gt;] __driver_attach+0x0/0xc0
 [&lt;c02606b5&gt;] agp_add_bridge+0x55/0x1a0
 [&lt;c020955a&gt;] pci_call_probe+0xa/0x10
 [&lt;c02095ae&gt;] __pci_device_probe+0x4e/0x60
 [&lt;c02095e6&gt;] pci_device_probe+0x26/0x60
 [&lt;c027f5cb&gt;] really_probe+0x9b/0x130
 [&lt;c02094b0&gt;] pci_match_device+0x10/0xb0
 [&lt;c027f6af&gt;] driver_probe_device+0x3f/0x60
 [&lt;c027f819&gt;] __driver_attach+0x89/0xc0
 [&lt;c027e519&gt;] bus_for_each_dev+0x39/0x60
 [&lt;c027f866&gt;] driver_attach+0x16/0x20
 [&lt;c027f790&gt;] __driver_attach+0x0/0xc0
 [&lt;c027ed29&gt;] bus_add_driver+0x109/0x1a0
 [&lt;c01f85ed&gt;] kset_find_obj+0x2d/0x60
 [&lt;c0209660&gt;] pci_device_shutdown+0x0/0x20
 [&lt;c0209660&gt;] pci_device_shutdown+0x0/0x20
 [&lt;c027fcff&gt;] driver_register+0x3f/0xd0
 [&lt;c0125b17&gt;] printk+0x17/0x20
 [&lt;c0482250&gt;] agp_intel_init+0x0/0x20
 [&lt;c02096c7&gt;] __pci_register_driver+0x47/0x80
 [&lt;c0482250&gt;] agp_intel_init+0x0/0x20
 [&lt;c0101032&gt;] _stext+0x32/0x180
 [&lt;c0111da1&gt;] xapic_wait_icr_idle+0x11/0x20
 [&lt;c011aeb4&gt;] resched_task+0x54/0x60
 [&lt;c011e76e&gt;] try_to_wake_up+0x12e/0x140
 [&lt;c0135211&gt;] __create_workqueue_key+0x131/0x150
 [&lt;c046a8d3&gt;] do_initcalls+0x53/0xd0
 [&lt;c046a9a0&gt;] kernel_init+0x0/0xb0
 [&lt;c046a9f5&gt;] kernel_init+0x55/0xb0
 [&lt;c0103f3b&gt;] kernel_thread_helper+0x7/0x1c
 =======================
---[ end trace 4eaa2a86a8e2da22 ]---
agpgart-intel 0000:00:00.0: can't allocate memory for key lists
agpgart-intel 0000:00:00.0: agp_backend_initialize() failed
agpgart-intel: probe of 0000:00:00.0 failed with error -12
[drm] Initialized drm 1.1.0 20060810
Serial: 8250/16550 driver4 ports, IRQ sharing enabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:09: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
loop: module loaded
Linux video capture interface: v2.00
Uniform Multi-Platform E-IDE driver
piix 0000:00:1f.1: IDE controller (0x8086:0x2411 rev 0x02)
piix 0000:00:1f.1: not 100% native mode: will probe irqs later
    ide0: BM-DMA at 0x6460-0x6467
    ide1: BM-DMA at 0x6468-0x646f
Probing IDE interface ide0...
Switched to high resolution mode on CPU 1
Switched to high resolution mode on CPU 0
hda: SAMSUNG SP0411N, ATA DISK drive
hda: host max PIO4 wanted PIO255(auto-tune) selected PIO4
hda: UDMA/66 mode selected
Probing IDE interface ide1...
hdc: ATAPI DVD A DH20A3H, ATAPI CD/DVD-ROM drive
hdd: Compaq CRD-8402B, ATAPI CD/DVD-ROM drive
hdc: host max PIO4 wanted PIO255(auto-tune) selected PIO4
hdc: UDMA/66 mode selected
hdd: host max PIO4 wanted PIO255(auto-tune) selected PIO4
hdd: MWDMA2 mode selected
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: max request size: 512KiB
hda: 78242976 sectors (40060 MB) w/2048KiB Cache, CHS=16383/255/63
hda: cache flushes supported
 hda: hda1 hda2 &lt; hda5 hda6 hda7 &gt; hda3
hdc: ATAPI 12X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache
Uniform CD-ROM driver Revision: 3.20
hdd: ATAPI 48X CD-ROM drive, 128kB Cache
Driver 'sd' needs updating - please use bus_type methods
PNP: PS/2 Controller [PNP0303:KBD,PNP0f0e:PS2M] at 0x60,0x64 irq 1,12
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX port at 0x60,0x64 irq 12
mice: PS/2 mouse device common for all mice
input: AT Translated Set 2 keyboard as /class/input/input2
rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0
rtc0: alarms up to one month, y3k, native irqs
i2c /dev entries driver
found new irq_cfg for irq 17
 0 add_pin_to_irq: irq 17 --&gt; apic 0 pin 17
found new irq_desc for irq 17
i801_smbus 0000:00:1f.3: PCI INT B -&gt; GSI 17 (level, low) -&gt; IRQ 17
iTCO_wdt: Intel TCO WatchDog Timer Driver v1.03 (30-Apr-2008)
input: ImExPS/2 Generic Explorer Mouse as /class/input/input3
iTCO_wdt: Found a ICH TCO device (Version=1, TCOBASE=0xf860)
iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
cpuidle: using governor ladder
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
Advanced Linux Sound Architecture Driver Version 1.0.18rc1.
ALSA device list:
  No soundcards found.
TCP cubic registered
Using IPI No-Shortcut mode
rtc_cmos 00:03: setting system clock to 2008-09-06 08:22:22 UTC (1220689342)
EXT3-fs: INFO: recovery required on readonly filesystem.
EXT3-fs: write access will be enabled during recovery.
kjournald starting.  Commit interval 5 seconds
EXT3-fs: recovery complete.
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 228k freed
EXT3 FS on hda6, internal journal
------------[ cut here ]------------
WARNING: at mm/vmalloc.c:105 vmap_pte_range+0xcb/0x100()
Modules linked in:
Pid: 776, comm: modprobe Tainted: G        W 2.6.27-rc5-mm1 #1
 [&lt;c012526f&gt;] warn_on_slowpath+0x5f/0x90
 [&lt;c01617e9&gt;] handle_mm_fault+0x1d9/0x210
 [&lt;c01bd0a0&gt;] ext3_get_block+0x0/0x100
 [&lt;c011759b&gt;] do_page_fault+0x12b/0x4f0
 [&lt;c0105dde&gt;] do_IRQ+0x7e/0xd0
 [&lt;c0154ce4&gt;] __alloc_pages_internal+0x94/0x410
 [&lt;c0117470&gt;] do_page_fault+0x0/0x4f0
 [&lt;c038506a&gt;] error_code+0x72/0x78
 [&lt;c015496c&gt;] buffered_rmqueue+0x12c/0x210
 [&lt;c014fbab&gt;] find_get_page+0x2b/0xa0
 [&lt;c016768b&gt;] vmap_pte_range+0xcb/0x100
 [&lt;c01676ed&gt;] vmap_pmd_range+0x2d/0x40
 [&lt;c016772d&gt;] vmap_pud_range+0x2d/0x40
 [&lt;c01677a6&gt;] vmap_page_range+0x66/0x90
 [&lt;c016844f&gt;] map_vm_area+0x2f/0x50
 [&lt;c0168996&gt;] __vmalloc_area_node+0xb6/0x110
 [&lt;c0168a95&gt;] __vmalloc_node+0x85/0xb0
 [&lt;c0148eb9&gt;] load_module+0x89/0xd90
 [&lt;c0168b01&gt;] vmalloc+0x21/0x30
 [&lt;c0148eb9&gt;] load_module+0x89/0xd90
 [&lt;c0148eb9&gt;] load_module+0x89/0xd90
 [&lt;c01380e0&gt;] autoremove_wake_function+0x0/0x50
 [&lt;c0177db0&gt;] vfs_read+0x90/0x150
 [&lt;c0149c44&gt;] sys_init_module+0x44/0x1a0
 [&lt;c0178111&gt;] sys_read+0x41/0x70
 [&lt;c01031fa&gt;] syscall_call+0x7/0xb
 =======================
---[ end trace 4eaa2a86a8e2da22 ]---
Intel ICH 0000:00:1f.5: PCI INT B -&gt; GSI 17 (level, low) -&gt; IRQ 17
Intel ICH 0000:00:1f.5: setting latency timer to 64
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
de2104x PCI Ethernet driver v0.7 (Mar 17, 2004)
parport_pc 00:07: reported by Plug and Play ACPI
parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,ECP,DMA]
intel8x0_measure_ac97_clock: measured 54697 usecs
intel8x0: clocking to 48000
de2104x 0000:02:0a.0: PCI INT A -&gt; GSI 18 (level, low) -&gt; IRQ 18
de0: SROM leaf offset 30, default media 10baseT auto
de0:   media block #0: 10baseT-FD
de0:   media block #1: BNC
de0:   media block #2: 10baseT-HD
eth0: 21041 at 0xe1128000, 00:80:c8:e8:5f:b9, IRQ 18
au8820 0000:02:0b.0: PCI INT A -&gt; GSI 19 (level, low) -&gt; IRQ 19
Vortex: init.... &lt;6&gt;done.
gameport: AU88x0 Gameport is pci0000:02:0b.0/gameport0, speed 1355kHz
aic7xxx 0000:02:07.0: PCI INT A -&gt; GSI 19 (level, low) -&gt; IRQ 19
scsi0 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 7.0
        &lt;Adaptec aic7892 Ultra160 SCSI adapter&gt;
        aic7892: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs

scsi 0:0:0:0: Direct-Access     COMPAQ   BD009222BB       3B09 PQ: 0 ANSI: 2
scsi0:A:0:0: Tagged Queuing enabled.  Depth 64
 target0:0:0: Beginning Domain Validation
 target0:0:0: wide asynchronous
 target0:0:0: FAST-40 WIDE SCSI 80.0 MB/s ST (25 ns, offset 15)
 target0:0:0: Domain Validation skipping write tests
 target0:0:0: Ending Domain Validation
sd 0:0:0:0: [sda] 17773524 512-byte hardware sectors (9100 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: f3 00 10 08
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, supports DPO and FUA
sd 0:0:0:0: [sda] 17773524 512-byte hardware sectors (9100 MB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: f3 00 10 08
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, supports DPO and FUA
 sda: sda1
sd 0:0:0:0: [sda] Attached SCSI disk
sd 0:0:0:0: Attached scsi generic sg0 type 0
lp0: using parport0 (interrupt-driven).
SGI XFS with security attributes, no debug enabled
XFS mounting filesystem hda7
Ending clean XFS mount for filesystem: hda7
XFS mounting filesystem sda1
Ending clean XFS mount for filesystem: sda1
JFS: nTxBlock = 4027, nTxLock = 32218
NET: Registered protocol family 17
eth0: enabling interface
eth0: set link 10baseT auto
eth0:    mode 0x7ffc0040, sia 0x12c4,0xffffef01,0xffffffff,0xffff0008
eth0:    set mode 0x7ffc0040, set sia 0xef01,0xffff,0x8
eth0: link up, media 10baseT auto
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
Installing knfsd (copyright (C) 1996 okir&lt; at &gt;monad.swb.de).

----------------------------------------------------------------------
Nie zwlekaj! Tapetuj z nami!
Sprawdz &gt;&gt;  http://link.interia.pl/f1f01

</description>
    <dc:creator>Krzysztof Helt</dc:creator>
    <dc:date>2008-09-06T06:45:58</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730503">
    <title>[git pull] x86 fixes (NOPL issue)</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730503</link>
    <description>Hi Linus,

Please pull:

  git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git x86-fixes-for-linus-2

H. Peter Anvin (4):
      x86: boot: stub out unimplemented CPU feature words
      x86: add NOPL as a synthetic CPU feature bit
      x86: use X86_FEATURE_NOPL in alternatives
      Merge branch 'x86/urgent' into x86-fixes-for-linus-2

This fixes the NOPL issue by detecting it explicitly.  I don't have
access to Virtual PC, but this works on Virtual Server 2005 R2 which
has the same issue.  These changes have been in -tip since August 18,
so they have had some reasonable degree of exposure already.

 arch/x86/boot/cpucheck.c            |    8 +++---
 arch/x86/kernel/alternative.c       |   36 ++++++++++++----------------------
 arch/x86/kernel/cpu/common.c        |   32 ++++++++++++++++++++++++++++++-
 arch/x86/kernel/cpu/common_64.c     |   36 +++++++++++++++++++++++++++++++++++
 arch/x86/kernel/cpu/feature_names.c |    3 +-
 include/asm-x86/cpufeature.h        |   11 +++++----
 include/asm-x86/required-features.h |    8 ++++++-
 7 files changed, 99 insertions(+), 35 deletions(-)

diff --git a/arch/x86/boot/cpucheck.c b/arch/x86/boot/cpucheck.c
index 4b9ae7c..4d3ff03 100644
--- a/arch/x86/boot/cpucheck.c
+++ b/arch/x86/boot/cpucheck.c
&lt; at &gt;&lt; at &gt; -38,12 +38,12 &lt; at &gt;&lt; at &gt; static const u32 req_flags[NCAPINTS] =
 {
 REQUIRED_MASK0,
 REQUIRED_MASK1,
-REQUIRED_MASK2,
-REQUIRED_MASK3,
+0, /* REQUIRED_MASK2 not implemented in this file */
+0, /* REQUIRED_MASK3 not implemented in this file */
 REQUIRED_MASK4,
-REQUIRED_MASK5,
+0, /* REQUIRED_MASK5 not implemented in this file */
 REQUIRED_MASK6,
-REQUIRED_MASK7,
+0, /* REQUIRED_MASK7 not implemented in this file */
 };
 
 #define A32(a, b, c, d) (((d) &lt;&lt; 24)+((c) &lt;&lt; 16)+((b) &lt;&lt; 8)+(a))
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index 2763cb3..65a0c1b 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
&lt; at &gt;&lt; at &gt; -145,35 +145,25 &lt; at &gt;&lt; at &gt; static const unsigned char *const p6_nops[ASM_NOP_MAX+1] = {
 extern char __vsyscall_0;
 const unsigned char *const *find_nop_table(void)
 {
-return boot_cpu_data.x86_vendor != X86_VENDOR_INTEL ||
-       boot_cpu_data.x86 &lt; 6 ? k8_nops : p6_nops;
+if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL &amp;&amp;
+    boot_cpu_has(X86_FEATURE_NOPL))
+return p6_nops;
+else
+return k8_nops;
 }
 
 #else /* CONFIG_X86_64 */
 
-static const struct nop {
-int cpuid;
-const unsigned char *const *noptable;
-} noptypes[] = {
-{ X86_FEATURE_K8, k8_nops },
-{ X86_FEATURE_K7, k7_nops },
-{ X86_FEATURE_P4, p6_nops },
-{ X86_FEATURE_P3, p6_nops },
-{ -1, NULL }
-};
-
 const unsigned char *const *find_nop_table(void)
 {
-const unsigned char *const *noptable = intel_nops;
-int i;
-
-for (i = 0; noptypes[i].cpuid &gt;= 0; i++) {
-if (boot_cpu_has(noptypes[i].cpuid)) {
-noptable = noptypes[i].noptable;
-break;
-}
-}
-return noptable;
+if (boot_cpu_has(X86_FEATURE_K8))
+return k8_nops;
+else if (boot_cpu_has(X86_FEATURE_K7))
+return k7_nops;
+else if (boot_cpu_has(X86_FEATURE_NOPL))
+return p6_nops;
+else
+return intel_nops;
 }
 
 #endif /* CONFIG_X86_64 */
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index 80ab20d..0785b3c 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
&lt; at &gt;&lt; at &gt; -13,6 +13,7 &lt; at &gt;&lt; at &gt;
 #include &lt;asm/mtrr.h&gt;
 #include &lt;asm/mce.h&gt;
 #include &lt;asm/pat.h&gt;
+#include &lt;asm/asm.h&gt;
 #ifdef CONFIG_X86_LOCAL_APIC
 #include &lt;asm/mpspec.h&gt;
 #include &lt;asm/apic.h&gt;
&lt; at &gt;&lt; at &gt; -341,6 +342,35 &lt; at &gt;&lt; at &gt; static void __init early_cpu_detect(void)
 early_get_cap(c);
 }
 
+/*
+ * The NOPL instruction is supposed to exist on all CPUs with
+ * family &gt;= 6, unfortunately, that's not true in practice because
+ * of early VIA chips and (more importantly) broken virtualizers that
+ * are not easy to detect.  Hence, probe for it based on first
+ * principles.
+ */
+static void __cpuinit detect_nopl(struct cpuinfo_x86 *c)
+{
+const u32 nopl_signature = 0x888c53b1; /* Random number */
+u32 has_nopl = nopl_signature;
+
+clear_cpu_cap(c, X86_FEATURE_NOPL);
+if (c-&gt;x86 &gt;= 6) {
+asm volatile("\n"
+     "1:      .byte 0x0f,0x1f,0xc0\n" /* nopl %eax */
+     "2:\n"
+     "        .section .fixup,\"ax\"\n"
+     "3:      xor %0,%0\n"
+     "        jmp 2b\n"
+     "        .previous\n"
+     _ASM_EXTABLE(1b,3b)
+     : "+a" (has_nopl));
+
+if (has_nopl == nopl_signature)
+set_cpu_cap(c, X86_FEATURE_NOPL);
+}
+}
+
 static void __cpuinit generic_identify(struct cpuinfo_x86 *c)
 {
 u32 tfms, xlvl;
&lt; at &gt;&lt; at &gt; -395,8 +425,8 &lt; at &gt;&lt; at &gt; static void __cpuinit generic_identify(struct cpuinfo_x86 *c)
 }
 
 init_scattered_cpuid_features(c);
+detect_nopl(c);
 }
-
 }
 
 static void __cpuinit squash_the_stupid_serial_number(struct cpuinfo_x86 *c)
diff --git a/arch/x86/kernel/cpu/common_64.c b/arch/x86/kernel/cpu/common_64.c
index dd6e3f1..c3afba5 100644
--- a/arch/x86/kernel/cpu/common_64.c
+++ b/arch/x86/kernel/cpu/common_64.c
&lt; at &gt;&lt; at &gt; -18,6 +18,7 &lt; at &gt;&lt; at &gt;
 #include &lt;asm/mtrr.h&gt;
 #include &lt;asm/mce.h&gt;
 #include &lt;asm/pat.h&gt;
+#include &lt;asm/asm.h&gt;
 #include &lt;asm/numa.h&gt;
 #ifdef CONFIG_X86_LOCAL_APIC
 #include &lt;asm/mpspec.h&gt;
&lt; at &gt;&lt; at &gt; -215,6 +216,39 &lt; at &gt;&lt; at &gt; static void __init early_cpu_support_print(void)
 }
 }
 
+/*
+ * The NOPL instruction is supposed to exist on all CPUs with
+ * family &gt;= 6, unfortunately, that's not true in practice because
+ * of early VIA chips and (more importantly) broken virtualizers that
+ * are not easy to detect.  Hence, probe for it based on first
+ * principles.
+ *
+ * Note: no 64-bit chip is known to lack these, but put the code here
+ * for consistency with 32 bits, and to make it utterly trivial to
+ * diagnose the problem should it ever surface.
+ */
+static void __cpuinit detect_nopl(struct cpuinfo_x86 *c)
+{
+const u32 nopl_signature = 0x888c53b1; /* Random number */
+u32 has_nopl = nopl_signature;
+
+clear_cpu_cap(c, X86_FEATURE_NOPL);
+if (c-&gt;x86 &gt;= 6) {
+asm volatile("\n"
+     "1:      .byte 0x0f,0x1f,0xc0\n" /* nopl %eax */
+     "2:\n"
+     "        .section .fixup,\"ax\"\n"
+     "3:      xor %0,%0\n"
+     "        jmp 2b\n"
+     "        .previous\n"
+     _ASM_EXTABLE(1b,3b)
+     : "+a" (has_nopl));
+
+if (has_nopl == nopl_signature)
+set_cpu_cap(c, X86_FEATURE_NOPL);
+}
+}
+
 static void __cpuinit early_identify_cpu(struct cpuinfo_x86 *c);
 
 void __init early_cpu_init(void)
&lt; at &gt;&lt; at &gt; -313,6 +347,8 &lt; at &gt;&lt; at &gt; static void __cpuinit early_identify_cpu(struct cpuinfo_x86 *c)
 c-&gt;x86_phys_bits = eax &amp; 0xff;
 }
 
+detect_nopl(c);
+
 if (c-&gt;x86_vendor != X86_VENDOR_UNKNOWN &amp;&amp;
     cpu_devs[c-&gt;x86_vendor]-&gt;c_early_init)
 cpu_devs[c-&gt;x86_vendor]-&gt;c_early_init(c);
diff --git a/arch/x86/kernel/cpu/feature_names.c b/arch/x86/kernel/cpu/feature_names.c
index e43ad4a..c901779 100644
--- a/arch/x86/kernel/cpu/feature_names.c
+++ b/arch/x86/kernel/cpu/feature_names.c
&lt; at &gt;&lt; at &gt; -39,7 +39,8 &lt; at &gt;&lt; at &gt; const char * const x86_cap_flags[NCAPINTS*32] = {
 NULL, NULL, NULL, NULL,
 "constant_tsc", "up", NULL, "arch_perfmon",
 "pebs", "bts", NULL, NULL,
-"rep_good", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+"rep_good", NULL, NULL, NULL,
+"nopl", NULL, NULL, NULL,
 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
 
 /* Intel-defined (#2) */
diff --git a/include/asm-x86/cpufeature.h b/include/asm-x86/cpufeature.h
index 762f6a6..9489283 100644
--- a/include/asm-x86/cpufeature.h
+++ b/include/asm-x86/cpufeature.h
&lt; at &gt;&lt; at &gt; -72,14 +72,15 &lt; at &gt;&lt; at &gt;
 #define X86_FEATURE_UP(3*32+ 9) /* smp kernel running on up */
 #define X86_FEATURE_FXSAVE_LEAK (3*32+10) /* FXSAVE leaks FOP/FIP/FOP */
 #define X86_FEATURE_ARCH_PERFMON (3*32+11) /* Intel Architectural PerfMon */
-#define X86_FEATURE_PEBS(3*32+12)  /* Precise-Event Based Sampling */
-#define X86_FEATURE_BTS(3*32+13)  /* Branch Trace Store */
-#define X86_FEATURE_SYSCALL32(3*32+14)  /* syscall in ia32 userspace */
-#define X86_FEATURE_SYSENTER32(3*32+15)  /* sysenter in ia32 userspace */
+#define X86_FEATURE_PEBS(3*32+12) /* Precise-Event Based Sampling */
+#define X86_FEATURE_BTS(3*32+13) /* Branch Trace Store */
+#define X86_FEATURE_SYSCALL32(3*32+14) /* syscall in ia32 userspace */
+#define X86_FEATURE_SYSENTER32(3*32+15) /* sysenter in ia32 userspace */
 #define X86_FEATURE_REP_GOOD(3*32+16) /* rep microcode works well on this CPU */
 #define X86_FEATURE_MFENCE_RDTSC (3*32+17) /* Mfence synchronizes RDTSC */
 #define X86_FEATURE_LFENCE_RDTSC (3*32+18) /* Lfence synchronizes RDTSC */
-#define X86_FEATURE_11AP(3*32+19)  /* Bad local APIC aka 11AP */
+#define X86_FEATURE_11AP(3*32+19) /* Bad local APIC aka 11AP */
+#define X86_FEATURE_NOPL(3*32+20) /* The NOPL (0F 1F) instructions */
 
 /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
 #define X86_FEATURE_XMM3(4*32+ 0) /* Streaming SIMD Extensions-3 */
diff --git a/include/asm-x86/required-features.h b/include/asm-x86/required-features.h
index adec887..5c2ff4b 100644
--- a/include/asm-x86/required-features.h
+++ b/include/asm-x86/required-features.h
&lt; at &gt;&lt; at &gt; -41,6 +41,12 &lt; at &gt;&lt; at &gt;
 # define NEED_3DNOW0
 #endif
 
+#if defined(CONFIG_X86_P6_NOP) || defined(CONFIG_X86_64)
+# define NEED_NOPL(1&lt;&lt;(X86_FEATURE_NOPL &amp; 31))
+#else
+# define NEED_NOPL0
+#endif
+
 #ifdef CONFIG_X86_64
 #define NEED_PSE0
 #define NEED_MSR(1&lt;&lt;(X86_FEATURE_MSR &amp; 31))
&lt; at &gt;&lt; at &gt; -67,7 +73,7 &lt; at &gt;&lt; at &gt;
 #define REQUIRED_MASK1(NEED_LM|NEED_3DNOW)
 
 #define REQUIRED_MASK20
-#define REQUIRED_MASK30
+#define REQUIRED_MASK3(NEED_NOPL)
 #define REQUIRED_MASK40
 #define REQUIRED_MASK50
 #define REQUIRED_MASK60
</description>
    <dc:creator>H. Peter Anvin</dc:creator>
    <dc:date>2008-09-06T02:22:31</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730500">
    <title>[RFC 0/4] Using HPET in MSI mode and setting up per CPU HPET timers</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730500</link>
    <description>
Patchset that uses HPET timers in MSI mode (when supported) and sets up per
CPU HPET timers. This removes the dependency on IRQ0 timer broadcast with LAPIC
stopping in deep C-state, on platforms that support HPET MSI mode.

On my test system with dual core CPU, the number of timer related interrupts
(HPET_MSI + IRQ0 + LAPIC) comes down from 180 to 95 over a period of 10s,
with these patches.
This is on an idle system with tickless enabled and when system is idle.

Patches against tip.

</description>
    <dc:creator>venkatesh.pallipadi&lt; at &gt;intel.com</dc:creator>
    <dc:date>2008-09-06T01:02:14</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730495">
    <title>[PATCH] Add missing macro argument for devm_release_* family</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730495</link>
    <description>From: ext Hiroshi DOYU &lt;Hiroshi.DOYU&lt; at &gt;nokia.com&gt;

Signed-off-by: Hiroshi DOYU &lt;Hiroshi.DOYU&lt; at &gt;nokia.com&gt;
---
 include/linux/ioport.h |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/linux/ioport.h b/include/linux/ioport.h
index 22d2115..c813c63 100644
--- a/include/linux/ioport.h
+++ b/include/linux/ioport.h
&lt; at &gt;&lt; at &gt; -158,9 +158,9 &lt; at &gt;&lt; at &gt; extern struct resource * __devm_request_region(struct device *dev,
 struct resource *parent, resource_size_t start,
 resource_size_t n, const char *name);
 
-#define devm_release_region(start,n) \
+#define devm_release_region(dev,start,n) \
 __devm_release_region(dev, &amp;ioport_resource, (start), (n))
-#define devm_release_mem_region(start,n) \
+#define devm_release_mem_region(dev,start,n) \
 __devm_release_region(dev, &amp;iomem_resource, (start), (n))
 
 extern void __devm_release_region(struct device *dev, struct resource *parent,
</description>
    <dc:creator>Hiroshi DOYU</dc:creator>
    <dc:date>2008-09-06T01:00:23</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730482">
    <title>[PATCH 0/5] x86: signal works for unification</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730482</link>
    <description>Hi,

this patch series is for future unification of signal.c.
These patches make common functions similar in signal_32|64.c.

Could you please review them?

thanks,
Hiroshi Shimamoto
</description>
    <dc:creator>Hiroshi Shimamoto</dc:creator>
    <dc:date>2008-09-05T23:22:41</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.linux.kernel/730477">
    <title>sort-of regression due to "kconfig: speed up all*config +randconfig"</title>
    <link>http://comments.gmane.org/gmane.linux.kernel/730477</link>
    <description>Sam, allmodconfig automatic testing is on fire!

I use KCONFIG_ALLCONFIG= heavily to pin some config options to N and
now CONFIG_MODULES aren't set to y after allmodconfig.

Step to reproduce:

rm .config
rm 1
touch 1
make KCONFIG_ALLCONFIG=1 allmodconfig &gt;/dev/null
grep CONFIG_MODULES .config

CONFIG_MODULES is =n after this patch, which is strange given definition
of allmodconfig.

If KCONFIG_ALLCONFIG= is removed, MODULES are back to =y.


f443d2eccf077afd8a839cc7ed66cc4d520c5f05 is first bad commit
commit f443d2eccf077afd8a839cc7ed66cc4d520c5f05
Author: Sam Ravnborg &lt;sam&lt; at &gt;ravnborg.org&gt;
Date:   Mon Jun 30 22:45:38 2008 +0200

    kconfig: speed up all*config + randconfig
    
    Drop the chatty mode when we generate the all*config, randconfig
    configurations.
    Ths speeds up the process considerably and noone looked
    at the output anyway.
    This patch uses the conf_set_all_new_symbols() function
    just added to kconfig.
    
    Signed-off-by: Sam Ravnborg &lt;sam&lt; at &gt;ravnborg.org&gt;
    Cc: Roman Zippel &lt;zippel&lt; at &gt;linux-m68k.org&gt;

:040000 040000 abd92c139f2ed97f93b1c9475023f713103f11f3 509069e7fb8fc2e2139f65b14b136febd20ac102 Mscripts

</description>
    <dc:creator>Alexey Dobriyan</dc:creator>
    <dc:date>2008-09-05T22:50:47</dc:date>
  </item>
  <textinput about="http://search.gmane.org/?group=$group=gmane.linux.kernel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.linux.kernel</link>
  </textinput>
</rdf:RDF>
