/* Check whether the time interval has elapsed */
        if (!tdata->valid || time_after(jiffies, tdata->last_updated + HZ)) {
                rdmsr_on_cpu(tdata->cpu, tdata->status_reg, &eax, &edx);
-               tdata->valid = 0;
-               /* Check whether the data is valid */
-               if (eax & 0x80000000) {
-                       tdata->temp = tdata->tjmax -
-                                       ((eax >> 16) & 0x7f) * 1000;
-                       tdata->valid = 1;
-               }
+               /*
+                * Ignore the valid bit. In all observed cases the register
+                * value is either low or zero if the valid bit is 0.
+                * Return it instead of reporting an error which doesn't
+                * really help at all.
+                */
+               tdata->temp = tdata->tjmax - ((eax >> 16) & 0x7f) * 1000;
+               tdata->valid = 1;
                tdata->last_updated = jiffies;
        }
 
        mutex_unlock(&tdata->update_lock);
-       return tdata->valid ? sprintf(buf, "%d\n", tdata->temp) : -EAGAIN;
+       return sprintf(buf, "%d\n", tdata->temp);
 }
 
 struct tjmax_pci {