From owner-svn-src-all@freebsd.org Sat Sep 3 17:06:56 2016 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C3C99BCED93; Sat, 3 Sep 2016 17:06:56 +0000 (UTC) (envelope-from jmcneill@invisible.ca) Received: from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net [217.70.183.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8EBF8E43; Sat, 3 Sep 2016 17:06:56 +0000 (UTC) (envelope-from jmcneill@invisible.ca) Received: from mfilter35-d.gandi.net (mfilter35-d.gandi.net [217.70.178.166]) by relay3-d.mail.gandi.net (Postfix) with ESMTP id DFA86A80D7; Sat, 3 Sep 2016 19:06:53 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mfilter35-d.gandi.net Received: from relay3-d.mail.gandi.net ([IPv6:::ffff:217.70.183.195]) by mfilter35-d.gandi.net (mfilter35-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id EehAjvPaI2Bs; Sat, 3 Sep 2016 19:06:52 +0200 (CEST) X-Originating-IP: 156.57.52.82 Received: from dis (stjhnbsu1kw-156057052082.dhcp-dynamic.FibreOp.nb.bellaliant.net [156.57.52.82]) (Authenticated sender: jmcneill@invisible.ca) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 12041A80CE; Sat, 3 Sep 2016 19:06:50 +0200 (CEST) Date: Sat, 3 Sep 2016 14:06:37 -0300 (ADT) From: Jared McNeill To: Oliver Pinter cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r305354 - head/sys/arm/allwinner In-Reply-To: Message-ID: References: <201609031528.u83FS91u017461@repo.freebsd.org> User-Agent: Alpine 2.11 (DEB 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Sep 2016 17:06:56 -0000 Hi Oliver -- It's really just a serial number. The Allwinner A20 datasheet refers to it as a root key, later ones such as A83T refer to it as chip ID. U-Boot uses the same process to generate MAC addresses for all Allwinner boards. Cheers, Jared On Sat, 3 Sep 2016, Oliver Pinter wrote: > Hi! > > On 9/3/16, Jared McNeill wrote: >> Author: jmcneill >> Date: Sat Sep 3 15:28:09 2016 >> New Revision: 305354 >> URL: https://svnweb.freebsd.org/changeset/base/305354 >> >> Log: >> Use the root key in the Security ID EFUSE (when valid) to generate a >> MAC address instead of creating a random one each boot. > > Could you please describe a little more about this root key? What is > it? What's the main purpose? Is is a crypto root key? > >> >> Modified: >> head/sys/arm/allwinner/if_awg.c >> >> Modified: head/sys/arm/allwinner/if_awg.c >> ============================================================================== >> --- head/sys/arm/allwinner/if_awg.c Sat Sep 3 15:26:28 2016 (r305353) >> +++ head/sys/arm/allwinner/if_awg.c Sat Sep 3 15:28:09 2016 (r305354) >> @@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$"); >> #include >> >> #include >> +#include >> #include >> #include >> >> @@ -1277,6 +1278,7 @@ awg_get_eaddr(device_t dev, uint8_t *ead >> { >> struct awg_softc *sc; >> uint32_t maclo, machi, rnd; >> + u_char rootkey[16]; >> >> sc = device_get_softc(dev); >> >> @@ -1285,9 +1287,19 @@ awg_get_eaddr(device_t dev, uint8_t *ead >> >> if (maclo == 0xffffffff && machi == 0xffff) { >> /* MAC address in hardware is invalid, create one */ >> - rnd = arc4random(); >> - maclo = 0x00f2 | (rnd & 0xffff0000); >> - machi = rnd & 0xffff; >> + if (aw_sid_get_rootkey(rootkey) == 0 && >> + (rootkey[3] | rootkey[12] | rootkey[13] | rootkey[14] | >> + rootkey[15]) != 0) { >> + /* MAC address is derived from the root key in SID */ >> + maclo = (rootkey[13] << 24) | (rootkey[12] << 16) | >> + (rootkey[3] << 8) | 0x02; >> + machi = (rootkey[15] << 8) | rootkey[14]; >> + } else { >> + /* Create one */ >> + rnd = arc4random(); >> + maclo = 0x00f2 | (rnd & 0xffff0000); >> + machi = rnd & 0xffff; >> + } >> } >> >> eaddr[0] = maclo & 0xff; >> _______________________________________________ >> svn-src-head@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/svn-src-head >> To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org" >> > >