Long, Qin [mailto:qin.l...@intel.com] wrote:

]Sent: Saturday, June 20, 2015 01:45 PM
]To: edk2-devel@lists.sourceforge.net
]Subject: Re: [edk2] [PATCH 1/2] SecurityPkg: Add RandLib from existing RngDxe 
code
]
]Scott,
]
]Yes,  there are apparent bugs in these IA32 version assembly codes. And looks 
they were duplicated from X64 ]codes with simple replacement.  And yes, it's 
me. I only validated X64 platform at that time, and missed ]any double-check on 
IA32 codes.

No problem, thanks for explaining. That is what I suspected. 

]For Intel CPU check, the reference comes from the DRNG software implementation 
guide 
](https://software.intel.com/sites/default/files/managed/4d/91/DRNG_Software_Implementation_Guide_2.0.pdf).
 ]I am not sure why this kind of checking was still placed in sample code. I am 
fine to remove those vendor ]checking if ECX feature flag is enough.

Sure enough. I see it. While it looks like the Intel reference code is
pretty well written overall, I would vote for removing the vendor check.
>From what I can find, AMD family 16h processors are the only non-Intel
processors that set bit 30 of the cupid function1 feature flags. AMD
documents bit 30 as RDRAND instruction support, exactly as Intel does.
If there is any incompatibility with AMD's implementation, it will be
up to AMD engineers to fix it.

Thanks,
Scott
  

]Best Regards & Thanks,
]LONG, Qin
]
]-----Original Message-----
]From: Scott Duplichan [mailto:sc...@notabs.org] 
]Sent: Saturday, June 20, 2015 10:25 AM
]To: edk2-devel@lists.sourceforge.net
]Subject: Re: [edk2] [PATCH 1/2] SecurityPkg: Add RandLib from existing RngDxe 
code
]
]El-Haj-Mahmoud, Samer [mailto:samer.el-haj-mahm...@hp.com] wrote:

]Sent: Friday, June 19, 2015 04:12 PM
]To: edk2-devel@lists.sourceforge.net
]Subject: Re: [edk2] [PATCH 1/2] SecurityPkg: Add RandLib from existing RngDxe 
code 
] 
]Scott, 
] 
]The code refactoring the Jonathan did is simply moving the existing code from 
RngDxe to the new RandLib. He ]did not change any of the existing code, so your 
comments apply to the existing EDK2 implementation.
]
]Hello Samer,
]
]OK, I see. I diffed without applying patch 2 of 2. On the other hand,
]there is that annoying principle of 'you touch it you own it'. Anyway,
]either I am misreading the code, or the 32-bit build will corrupt memory
]by writing the return value of asm functions to the wrong address.
]
]With Jonathan's change, it is possible for others to provide multiple 
implementations of RandLib to support ]any processors (including non-Intel CPUs 
that support rdrand, as well as other processors that may not ]necessarily have 
a similar instruction).
]
]RDRAND works like many other x86 instruction set options. A processor
]reports support for the instruction with CPUID function 1 ecx feature
]flags. An unnecessary check for vendor=Intel can be viewed as an
]"Artificial Performance Impairment" to non-Intel processors. The Intel
]C compiler used to place the same unneeded vendor=Intel check in binaries
]it generated. On November 11, 2009, Intel agreed to stop doing this:
]http://download.intel.com/pressroom/legal/AMD_settlement_agreement.pdf
]
]As for making an AMD version of this code, I don't think it would get
]past code review because it would be an exact duplicate of the existing
]code (except for the vendor=Intel check). EDK2 doesn't check vendor=Intel
]anywhere else, even though it checks other cupid feature flags. For
]example, ArchDebugSupport.c determines support for debug extensions using
]a cpuid feature flag check and no cpuid vendor check. Same for MtrrLib.c
]when it checks for mtrr support.
]
]Thanks,
]Scott

]Thanks,
]--Samer


------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel


------------------------------------------------------------------------------
Monitor 25 network devices or servers for free with OpManager!
OpManager is web-based network management software that monitors 
network devices and physical & virtual servers, alerts via email & sms 
for fault. Monitor 25 devices for free with no restriction. Download now
http://ad.doubleclick.net/ddm/clk/292181274;119417398;o
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to