#8089 NORM 8.2.0 (: /dev/hwrng isn't random.

Zarro Boogs per Child bugtracker at laptop.org
Fri Sep 12 12:08:42 EDT 2008

#8089: /dev/hwrng isn't random.
   Reporter:  cscott               |       Owner:  cscott                 
       Type:  defect               |      Status:  new                    
   Priority:  normal               |   Milestone:  8.2.0 (was Update.2)   
  Component:  ofw - open firmware  |     Version:  not specified          
 Resolution:                       |    Keywords:  blocks?:8.2.0 cjbfor8.2
Next_action:  qa signoff           |    Verified:  0                      
  Blockedby:                       |    Blocking:  8024                   

Comment(by cscott):

 Slightly edited IRC transcript:
 (11:39:38 AM) CosmicPenguin: can you read a MSR for me really quickly?
 (11:39:48 AM) C. Scott Ananian: um, maybe?
 (11:39:58 AM) CosmicPenguin: 58002006
 (11:41:17 AM) C. Scott Ananian: ofw says '0', but I'm not sure I believe
 (11:41:43 AM) C. Scott Ananian: sorry, '3 0'
 (11:41:53 AM) CosmicPenguin: lemme see what that should be
 (11:41:58 AM) C. Scott Ananian: that's the result of '58002006 rdmsr'
 (11:42:12 AM) C. Scott Ananian: which seems to do 'rdmsr; push eax; push
 (11:43:33 AM) C. Scott Ananian: is there a secret 'cripple the hwrng for
 the convenience of the cia spooks' mode we have to turn off? ;-)
 (11:45:56 AM) CosmicPenguin: cscott: that should be 503
 (11:46:18 AM) CosmicPenguin: root at geodelx:/media/net# ./readmsr 0x58002006
 (11:46:21 AM) CosmicPenguin: 58002006: 00000000 00000503
 (11:46:22 AM) C. Scott Ananian: CosmicPenguin: so is this all
 Mitch_Bradley's fault?
 (11:46:32 AM) CosmicPenguin: No - Mitch probably didn't know
 (11:46:40 AM) C. Scott Ananian: aww
 (11:46:50 AM) CosmicPenguin: this isn't set in coreboot either, and
 probably nobody told him
 (11:47:11 AM) CosmicPenguin: I'm not 100% sure that bit 11 should be set,
 but go with that and I'm going to track down the BTS
 (11:47:17 AM) ***C. Scott Ananian speculates on cia conspiracy: no one is
 *supposed* to know =)
 (11:47:40 AM) CosmicPenguin: There are hundreds of MSRs on this system
 (11:47:48 AM) C. Scott Ananian: CosmicPenguin: thanks, can you paste the
 right values into trac #8089 and I'll re-assign it to Mitch?
 (11:47:57 AM) CosmicPenguin: cscott: you should try it first
 (11:48:10 AM) CosmicPenguin: you can set that value in OFW and then boot
 (11:48:25 AM) ***pgf has a really great MSR campstove
 (11:48:43 AM) CosmicPenguin: I am so glad you all find this so amusing
 (11:48:50 AM) dilinger: "my MSR is out of fuel"
 (11:48:55 AM) C. Scott Ananian: hmm, 'see wrmsr' says 'pop ecx; pop edx;
 pop eax; wrmsr'
 (11:49:16 AM) C. Scott Ananian: any chance you know what order i should
 put the 58002006, the 00000000, and the 00000503?
 (11:51:48 AM) C. Scott Ananian: er, almost.  the winner is 503 0 58002006
 (11:51:53 AM) CosmicPenguin: Confirmed - 5 is the right nibble there
 (11:52:19 AM) CosmicPenguin: "The RNG default state is with Noise, LFSR
 and Whitener disabled. In this state
 (11:52:22 AM) CosmicPenguin: the output is obviously not random. (many
 long strings of As and 5s)"
 (11:52:32 AM) C. Scott Ananian: CosmicPenguin: yes, that is certainly what
 i see
 (11:52:55 AM) CosmicPenguin: Dear people, this is why PRS is a good idea,
 (11:53:04 AM) C. Scott Ananian: PRS?
 (11:53:09 AM) CosmicPenguin: preferred register settings
 (11:53:13 AM) C. Scott Ananian: ah
 (11:53:21 AM) CosmicPenguin: We make a list of what all the registers in
 the whole system should be
 (11:53:22 AM) C. Scott Ananian: i'm chalking this up to a win for our
 automated tinderbox
 (11:53:34 AM) C. Scott Ananian: which reported the impossible happening,
 starting yesterday or so
 (11:54:29 AM) CosmicPenguin: Nice of the kernel to vet the results for us
 (11:54:43 AM) C. Scott Ananian: it's *dilinger's* fault!  i knew someone
 was to blame!
 (11:55:47 AM) dilinger: ok, i'll add a patch that causes the kernel to not
 boot if we ever see anything wrong w/ the RNG
 (11:56:00 AM) dilinger: take *that*, tinderbox!
 (11:56:51 AM) C. Scott Ananian: CosmicPenguin: confirmed: *much* more
 uniform histogram, thx.
 (11:56:59 AM) CosmicPenguin: excellent
 (12:00:36 PM) CosmicPenguin: Sounds like your histrogram program might
 find a home on the tinderbox.. :)
 (12:02:35 PM) C. Scott Ananian: CosmicPenguin: the tinderbox already has
 'python -c 'print "\n".join("%d" % ord(x) for x in open("/dev/hwrng").
 read(256))' | sort | uniq -c | wc -l '
 (12:02:47 PM) C. Scott Ananian: and checks that at least 64 unique numbers
 were generated
 (12:03:02 PM) C. Scott Ananian: i added that after the original 'all 0xff
 from the hwrng' debacle
 (12:03:06 PM) C. Scott Ananian: and it's what caught this one
 (12:03:14 PM) CosmicPenguin: nice
 (12:03:24 PM) CosmicPenguin: regression testing - what a concept

 So, in summary: OFW should set MSR 58002006 to 00000000.00000503

 That makes our hwrng, you know, like, *random*.

Ticket URL: <http://dev.laptop.org/ticket/8089#comment:22>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system

More information about the Bugs mailing list