Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932136AbbG1MBT (ORCPT ); Tue, 28 Jul 2015 08:01:19 -0400 Received: from atrey.karlin.mff.cuni.cz ([195.113.26.193]:42652 "EHLO atrey.karlin.mff.cuni.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752487AbbG1MBQ (ORCPT ); Tue, 28 Jul 2015 08:01:16 -0400 Date: Tue, 28 Jul 2015 14:01:12 +0200 From: Pavel Machek To: "Lee, Chun-Yi" Cc: linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org, linux-pm@vger.kernel.org, "Rafael J. Wysocki" , Matthew Garrett , Len Brown , Josh Boyer , Vojtech Pavlik , Matt Fleming , Jiri Kosina , "H. Peter Anvin" , "Lee, Chun-Yi" Subject: Re: [RFC PATCH 04/16] x86/efi: Generating random number in EFI stub Message-ID: <20150728120112.GA9518@amd> References: <1437056730-15247-1-git-send-email-jlee@suse.com> <1437056730-15247-5-git-send-email-jlee@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1437056730-15247-5-git-send-email-jlee@suse.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1518 Lines: 55 Hi! > This patch adds the codes for generating random number array as the > HMAC key that will used by later EFI stub codes. > > The original codes in efi_random copied from aslr and add the codes > to accept input entropy and EFI debugging. In later patch will add > the codes to get random number by EFI protocol. The separate codes > can avoid impacting aslr function. > > Signed-off-by: Lee, Chun-Yi > +#define X86_FEATURE_EDX_TSC (1 << 4) > +#define X86_FEATURE_ECX_RDRAND (1 << 30) Can you pull it from existing includes somewhere? > +static bool rdrand_feature(void) > +{ > + return (cpuid_ecx(0x1) & X86_FEATURE_ECX_RDRAND); > +} > + > +static bool rdtsc_feature(void) > +{ > + return (cpuid_edx(0x1) & X86_FEATURE_EDX_TSC); > +} Are these helpers neccessary? > + if (rdrand_feature()) { > + efi_printk(sys_table, " RDRAND"); > + if (rdrand_long(&raw)) { > + random ^= raw; > + use_i8254 = false; > + } > + } > + > + if (rdtsc_feature()) { > + efi_printk(sys_table, " RDTSC"); > + rdtscll(raw); > + > + random ^= raw; > + use_i8254 = false; > + } You'll do two (expensive) cpuids calls here. -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/