Thread (1 message) 1 message, 1 author, 2014-03-21

Re: [PATCH v2] eal_common_cpuflags: Fix %rbx corruption, and simplify the code

From: Neil Horman <hidden>
Date: 2014-03-21 17:48:39

On Fri, Mar 21, 2014 at 08:03:34AM -0700, H. Peter Anvin wrote:
On 03/21/2014 07:49 AM, Neil Horman wrote:
quoted
From: "H. Peter Anvin" <hpa-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>

Neil Horman reported that on x86-64 the upper half of %rbx would get
clobbered when the code was compiled PIC or PIE, because the
i386-specific code to preserve %ebx was incorrectly compiled.

However, the code is really way more complex than it needs to be.  For
one thing, the CPUID instruction only needs %eax (leaf) and %ecx
(subleaf) as parameters, and since we are testing for bits, we might
as well list the bits explicitly.  Furthermore, we can use an array
rather than doing a switch statement inside a structure.

Reported-by: Neil Horman <redacted>
Signed-off-by: H. Peter Anvin <hpa-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
Tested-by: Neil Horman <redacted>
Thank you for dealing with this!

On the subject of my other email... are C99 initializers acceptable in
dpdk?  If so, I think making that change, too, would be a good idea.
I'll have to defer this to others, I'm not sure what the accepted initalization
method is.  I'm guessing their fine, as both icc and gcc allow them and those
are the supported compilers for dpdk, but I'd like to hear someone in the
maintainership comment.

Best
Neil
	-hpa

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help