Re: hwrng on 82801EB/ER (ICH5/ICH5R) fails rngtest checks

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

 



On 7/26/06, Michael Buesch <[email protected]> wrote:
On Wednesday 26 July 2006 16:52, gmu 2k6 wrote:
> On 7/26/06, Michael Buesch <[email protected]> wrote:
> > On Wednesday 26 July 2006 16:21, gmu 2k6 wrote:
> > > it just outputs this and stops with 2.6.18-rc2-HEAD (see dmesg for hashcode or
> > > whatever that is which is appended as localversion)
> > >
> > > svn:~# hexdump /dev/hwrng
> > > 0000000 ffff ffff ffff ffff ffff ffff ffff ffff
> > > *
> > >
> > > with 2.6.17.6:
> > > svn:~# hexdump /dev/hwrng
> > > 0000000 ffff ffff ffff ffff ffff ffff ffff ffff
> > > *
> > >
> > > this was without any rng-tools installed and no rngd running of course.
> >
> > Hm, so I would say the hardware either broken, or intel
> > changed the way to read the random data from it. But I doubt they
> > would change something like this on the ICH5.
> >
> > Who wrote the ICH driver? Jeff? Philipp?
> > What do you think?
>
> IIRC it was Jeff.

"What do you think?" was more a question to Jeff or Philipp ;)



But could you try the following patch on top of latest git?
It's just a random test, but I think it's worth trying.
Let's see if it works around the issue.

Index: linux-2.6/drivers/char/hw_random/intel-rng.c
===================================================================
--- linux-2.6.orig/drivers/char/hw_random/intel-rng.c   2006-06-27 17:48:13.000000000 +0200
+++ linux-2.6/drivers/char/hw_random/intel-rng.c        2006-07-26 17:27:03.000000000 +0200
@@ -104,9 +104,14 @@
        int err = -EIO;

        hw_status = hwstatus_get(mem);
+       hw_status = hwstatus_set(mem, hw_status & ~INTEL_RNG_ENABLED);
+       hw_status = hwstatus_set(mem, hw_status | INTEL_RNG_ENABLED);
+#if 0
+       hw_status = hwstatus_get(mem);
        /* turn RNG h/w on, if it's off */
        if ((hw_status & INTEL_RNG_ENABLED) == 0)
                hw_status = hwstatus_set(mem, hw_status | INTEL_RNG_ENABLED);
+#endif
        if ((hw_status & INTEL_RNG_ENABLED) == 0) {
                printk(KERN_ERR PFX "cannot enable RNG, aborting\n");
                goto out;

well as it didn't work, are you sure it was not intended to be more like this:
@@ -104,9 +104,14 @@
      int err = -EIO;

      hw_status = hwstatus_get(mem);
+       hw_status = hwstatus_set(mem, hw_status & ~INTEL_RNG_ENABLED);
+       hw_status = hwstatus_set(mem, hw_status | INTEL_RNG_ENABLED);
+#if 0
      /* turn RNG h/w on, if it's off */
      if ((hw_status & INTEL_RNG_ENABLED) == 0)
              hw_status = hwstatus_set(mem, hw_status | INTEL_RNG_ENABLED);
+#endif
      if ((hw_status & INTEL_RNG_ENABLED) == 0) {
              printk(KERN_ERR PFX "cannot enable RNG, aborting\n");
              goto out;

?
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux