Patchwork SSE & SSE2

login
register
about
Submitter Myles Watson
Date 2010-03-16 16:31:37
Message ID <2831fecf1003160931s736f8ac4v88310e7b8a7b93c5@mail.gmail.com>
Download mbox | patch
Permalink /patch/1072/
State Rejected
Headers show

Comments

Myles Watson - 2010-03-16 16:31:37
This patch selects SSE & SSE2 in the socket if one exists (except for AMD
since there are many sockets for two models).

The reasoning is that sockets can support multiple models of CPUS for intel,
and SSE & SSE2 settings need to be based on the least capable CPU.

It's all correct as far as Google tells me.

Socket PGA370 - SSE but not SSE2 (supports PIII)
Slot 1 - SSE but not SSE2
Slot 2 - SSE but not SSE2
Via C3 - SSE but not SSE2
Via C7 - SSE and SSE2
Qemu - not SSE2 (I don't know about SSE, so I didn't set it)
Geode - not SSE or SSE2
intel ep80579 SSE and SSE2
Socket 441 SSE and SSE2
Socket mPGA479M SSE and SSE2
Socket mPGA604 SSE and SSE2
Socket BGA956 MMX and SSE and SSE2
Socket mFCPGA478 MMX and SSE and SSE2
Socket mPGA478 MMX and SSE and SSE2
Socket mPGA603 MMX and SSE and SSE2

some intel model_f?x Kconfig files weren't being sourced in
src/cpu/intel/Kconfig

Signed-off-by: Myles Watson <mylesgw@gmail.com>

Thanks,
Myles
Joseph Smith - 2010-03-16 17:00:23
On Tue, 16 Mar 2010 10:31:37 -0600, Myles Watson <mylesgw@gmail.com> wrote:
> This patch selects SSE & SSE2 in the socket if one exists (except for AMD
> since there are many sockets for two models).
> 
> The reasoning is that sockets can support multiple models of CPUS for
> intel,
> and SSE & SSE2 settings need to be based on the least capable CPU.
> 
> It's all correct as far as Google tells me.
> 
> Socket PGA370 - SSE but not SSE2 (supports PIII)
> Slot 1 - SSE but not SSE2
> Slot 2 - SSE but not SSE2
> Via C3 - SSE but not SSE2
> Via C7 - SSE and SSE2
> Qemu - not SSE2 (I don't know about SSE, so I didn't set it)
> Geode - not SSE or SSE2
> intel ep80579 SSE and SSE2
> Socket 441 SSE and SSE2
> Socket mPGA479M SSE and SSE2
> Socket mPGA604 SSE and SSE2
> Socket BGA956 MMX and SSE and SSE2
> Socket mFCPGA478 MMX and SSE and SSE2
> Socket mPGA478 MMX and SSE and SSE2
> Socket mPGA603 MMX and SSE and SSE2
> 
Yes this looks correct.

> some intel model_f?x Kconfig files weren't being sourced in
> src/cpu/intel/Kconfig
> 
> Signed-off-by: Myles Watson <mylesgw@gmail.com>
> 
Acked-by: Joseph Smith <joe@settoplinux.org>
Stefan Reinauer - 2010-03-16 23:24:55
On 3/16/10 6:00 PM, Joseph Smith wrote:
>> Socket PGA370 - SSE but not SSE2 (supports PIII)
>> Slot 1 - SSE but not SSE2
>> Slot 2 - SSE but not SSE2
>> Via C3 - SSE but not SSE2
>> Via C7 - SSE and SSE2
>> Qemu - not SSE2 (I don't know about SSE, so I didn't set it)
>> Geode - not SSE or SSE2
>> intel ep80579 SSE and SSE2
>> Socket 441 SSE and SSE2
>> Socket mPGA479M SSE and SSE2
>> Socket mPGA604 SSE and SSE2
>> Socket BGA956 MMX and SSE and SSE2
>> Socket mFCPGA478 MMX and SSE and SSE2
>> Socket mPGA478 MMX and SSE and SSE2
>> Socket mPGA603 MMX and SSE and SSE2
>>
>>     
> Yes this looks correct.
>
>   
Nope. Not at all.

>> some intel model_f?x Kconfig files weren't being sourced in
>> src/cpu/intel/Kconfig
>>
>> Signed-off-by: Myles Watson <mylesgw@gmail.com>
>>
>>     
> Acked-by: Joseph Smith <joe@settoplinux.org>
>   

Please don't commit... N-Ack/Veto by me!

See other mail in a minute or two.
Stefan Reinauer - 2010-03-16 23:29:45
On 3/16/10 5:31 PM, Myles Watson wrote:
> This patch selects SSE & SSE2 in the socket if one exists (except for
> AMD since there are many sockets for two models).
>
> The reasoning is that sockets can support multiple models of CPUS for
> intel, and SSE & SSE2 settings need to be based on the least capable CPU.
>
> It's all correct as far as Google tells me.
Not as far as Wikipedia is concerned. I think we should be careful as
this easily breaks the code in very nasty places (especially SSE chooses
the registers for ROMCC, so this definitely breaks some boards)

The settings have to be the most conservative, not the best possible.
That means if there is a single CPU for a socket that does not have SSE,
SSE has to be off for that socket. Choosing SSE to be on because there
is a single CPU for that socket that has SSE will break other systems.


http://de.wikipedia.org/wiki/Streaming_SIMD_Extensions

> Slot 1 - SSE but not SSE2
Slot 1 is used by Pentium II, but only Pentium III has SSE.
Also, Celeron only has SSE starting from Coppermine. Covington and
Mendocino don't have SSE.
> Slot 2 - SSE but not SSE2
I think this is also wrong. Slot2 was then Xeon slot, but it also
started with Pentium II based CPUs, which do NOT have SSE.
> Via C3 - SSE but not SSE2
Only Nehemiah and newer have SSE. All Samuel, Samuel2, Ezra and Ezra-T
CPUs don't.
http://de.wikipedia.org/wiki/VIA_C3


I stopped after checking three of the ones you changed, because all
three are wrong.. I think the code should not be changed. It's likely
that the whole table you were using to do the matching was not
describing what we need but instead the "socket capabilities" (i.e. the
biggest feature set usable with that socket)

Stefan
Joseph Smith - 2010-03-16 23:34:05
On 03/16/2010 07:29 PM, Stefan Reinauer wrote:
> On 3/16/10 5:31 PM, Myles Watson wrote:
>> This patch selects SSE&  SSE2 in the socket if one exists (except for
>> AMD since there are many sockets for two models).
>>
>> The reasoning is that sockets can support multiple models of CPUS for
>> intel, and SSE&  SSE2 settings need to be based on the least capable CPU.
>>
>> It's all correct as far as Google tells me.
> Not as far as Wikipedia is concerned. I think we should be careful as
> this easily breaks the code in very nasty places (especially SSE chooses
> the registers for ROMCC, so this definitely breaks some boards)
>
> The settings have to be the most conservative, not the best possible.
> That means if there is a single CPU for a socket that does not have SSE,
> SSE has to be off for that socket. Choosing SSE to be on because there
> is a single CPU for that socket that has SSE will break other systems.
>
>
> http://de.wikipedia.org/wiki/Streaming_SIMD_Extensions
>
>> Slot 1 - SSE but not SSE2
> Slot 1 is used by Pentium II, but only Pentium III has SSE.
> Also, Celeron only has SSE starting from Coppermine. Covington and
> Mendocino don't have SSE.
>> Slot 2 - SSE but not SSE2
> I think this is also wrong. Slot2 was then Xeon slot, but it also
> started with Pentium II based CPUs, which do NOT have SSE.
>> Via C3 - SSE but not SSE2
> Only Nehemiah and newer have SSE. All Samuel, Samuel2, Ezra and Ezra-T
> CPUs don't.
> http://de.wikipedia.org/wiki/VIA_C3
>
>
> I stopped after checking three of the ones you changed, because all
> three are wrong.. I think the code should not be changed. It's likely
> that the whole table you were using to do the matching was not
> describing what we need but instead the "socket capabilities" (i.e. the
> biggest feature set usable with that socket)
>
Well then we are going to need a different solution......
Stefan Reinauer - 2010-03-16 23:39:23
On 3/17/10 12:34 AM, Joseph Smith wrote:
> On 03/16/2010 07:29 PM, Stefan Reinauer wrote:
>> On 3/16/10 5:31 PM, Myles Watson wrote:
>>> This patch selects SSE&  SSE2 in the socket if one exists (except for
>>> AMD since there are many sockets for two models).
>>>
>>> The reasoning is that sockets can support multiple models of CPUS for
>>> intel, and SSE&  SSE2 settings need to be based on the least capable
>>> CPU.
>>>
>>> It's all correct as far as Google tells me.
>> Not as far as Wikipedia is concerned. I think we should be careful as
>> this easily breaks the code in very nasty places (especially SSE chooses
>> the registers for ROMCC, so this definitely breaks some boards)
>>
>> The settings have to be the most conservative, not the best possible.
>> That means if there is a single CPU for a socket that does not have SSE,
>> SSE has to be off for that socket. Choosing SSE to be on because there
>> is a single CPU for that socket that has SSE will break other systems.
>>
>>
>> http://de.wikipedia.org/wiki/Streaming_SIMD_Extensions
>>
>>> Slot 1 - SSE but not SSE2
>> Slot 1 is used by Pentium II, but only Pentium III has SSE.
>> Also, Celeron only has SSE starting from Coppermine. Covington and
>> Mendocino don't have SSE.
>>> Slot 2 - SSE but not SSE2
>> I think this is also wrong. Slot2 was then Xeon slot, but it also
>> started with Pentium II based CPUs, which do NOT have SSE.
>>> Via C3 - SSE but not SSE2
>> Only Nehemiah and newer have SSE. All Samuel, Samuel2, Ezra and Ezra-T
>> CPUs don't.
>> http://de.wikipedia.org/wiki/VIA_C3
>>
>>
>> I stopped after checking three of the ones you changed, because all
>> three are wrong.. I think the code should not be changed. It's likely
>> that the whole table you were using to do the matching was not
>> describing what we need but instead the "socket capabilities" (i.e. the
>> biggest feature set usable with that socket)
>>
> Well then we are going to need a different solution......

I think the code as it is works just fine. Ok, the warnings should be
silenced, but that's about it.

If someone is developing support for a new chipset and is using romcc
(which is the only reason one would need SSE to be set), they'll find
out what the best possible setting for their slot is, to avoid register
pressure :) If the code compiles, there is not (much) gain in enabling
SSE even if your CPU supports it.

As for SSE2, the only time this is used is for increasing the speed of
ram_check() which is normally not run.

So if you guys think this needs fixing, go ahead, but please don't break
things because it makes Kconfig look nicer. We just went into that trap
for ROMCC itself a day ago.

Stefan
Joseph Smith - 2010-03-17 00:02:11
On 03/16/2010 07:39 PM, Stefan Reinauer wrote:
> On 3/17/10 12:34 AM, Joseph Smith wrote:
>> On 03/16/2010 07:29 PM, Stefan Reinauer wrote:
>>> On 3/16/10 5:31 PM, Myles Watson wrote:
>>>> This patch selects SSE&   SSE2 in the socket if one exists (except for
>>>> AMD since there are many sockets for two models).
>>>>
>>>> The reasoning is that sockets can support multiple models of CPUS for
>>>> intel, and SSE&   SSE2 settings need to be based on the least capable
>>>> CPU.
>>>>
>>>> It's all correct as far as Google tells me.
>>> Not as far as Wikipedia is concerned. I think we should be careful as
>>> this easily breaks the code in very nasty places (especially SSE chooses
>>> the registers for ROMCC, so this definitely breaks some boards)
>>>
>>> The settings have to be the most conservative, not the best possible.
>>> That means if there is a single CPU for a socket that does not have SSE,
>>> SSE has to be off for that socket. Choosing SSE to be on because there
>>> is a single CPU for that socket that has SSE will break other systems.
>>>
>>>
>>> http://de.wikipedia.org/wiki/Streaming_SIMD_Extensions
>>>
>>>> Slot 1 - SSE but not SSE2
>>> Slot 1 is used by Pentium II, but only Pentium III has SSE.
>>> Also, Celeron only has SSE starting from Coppermine. Covington and
>>> Mendocino don't have SSE.
>>>> Slot 2 - SSE but not SSE2
>>> I think this is also wrong. Slot2 was then Xeon slot, but it also
>>> started with Pentium II based CPUs, which do NOT have SSE.
>>>> Via C3 - SSE but not SSE2
>>> Only Nehemiah and newer have SSE. All Samuel, Samuel2, Ezra and Ezra-T
>>> CPUs don't.
>>> http://de.wikipedia.org/wiki/VIA_C3
>>>
>>>
>>> I stopped after checking three of the ones you changed, because all
>>> three are wrong.. I think the code should not be changed. It's likely
>>> that the whole table you were using to do the matching was not
>>> describing what we need but instead the "socket capabilities" (i.e. the
>>> biggest feature set usable with that socket)
>>>
>> Well then we are going to need a different solution......
>
> I think the code as it is works just fine. Ok, the warnings should be
> silenced, but that's about it.
>
> If someone is developing support for a new chipset and is using romcc
> (which is the only reason one would need SSE to be set), they'll find
> out what the best possible setting for their slot is, to avoid register
> pressure :) If the code compiles, there is not (much) gain in enabling
> SSE even if your CPU supports it.
>
> As for SSE2, the only time this is used is for increasing the speed of
> ram_check() which is normally not run.
>
> So if you guys think this needs fixing, go ahead, but please don't break
> things because it makes Kconfig look nicer. We just went into that trap
> for ROMCC itself a day ago.
>
Sorry my bad your right. I thought the whole point was to get rid of 
SSE2 build warnings on model_6xx cpu's that don't support SSE2.
Myles Watson - 2010-03-17 00:05:53
> -----Original Message-----
> From: coreboot-bounces+mylesgw=gmail.com@coreboot.org [mailto:coreboot-
> bounces+mylesgw=gmail.com@coreboot.org] On Behalf Of Stefan Reinauer
> Sent: Tuesday, March 16, 2010 5:39 PM
> To: Joseph Smith
> Cc: coreboot@coreboot.org
> Subject: Re: [coreboot] [Patch] SSE & SSE2
> 
> On 3/17/10 12:34 AM, Joseph Smith wrote:
> > On 03/16/2010 07:29 PM, Stefan Reinauer wrote:
> >> On 3/16/10 5:31 PM, Myles Watson wrote:
> >>> This patch selects SSE&  SSE2 in the socket if one exists (except for
> >>> AMD since there are many sockets for two models).
> >>>
> >>> The reasoning is that sockets can support multiple models of CPUS for
> >>> intel, and SSE&  SSE2 settings need to be based on the least capable
> >>> CPU.
> >>>
> >>> It's all correct as far as Google tells me.
> >> Not as far as Wikipedia is concerned. I think we should be careful as
> >> this easily breaks the code in very nasty places (especially SSE
> chooses
> >> the registers for ROMCC, so this definitely breaks some boards)
> >>
> >> The settings have to be the most conservative, not the best possible.
> >> That means if there is a single CPU for a socket that does not have
> SSE,
> >> SSE has to be off for that socket. Choosing SSE to be on because there
> >> is a single CPU for that socket that has SSE will break other systems.
> >>
> >>
> >> http://de.wikipedia.org/wiki/Streaming_SIMD_Extensions
> >>
> >>> Slot 1 - SSE but not SSE2
> >> Slot 1 is used by Pentium II, but only Pentium III has SSE.
> >> Also, Celeron only has SSE starting from Coppermine. Covington and
> >> Mendocino don't have SSE.
> >>> Slot 2 - SSE but not SSE2
> >> I think this is also wrong. Slot2 was then Xeon slot, but it also
> >> started with Pentium II based CPUs, which do NOT have SSE.
I was looking at model numbers supported by Coreboot and the associated
sockets.  According to the table I was reading, socket_6xx means P4 so it
has SSE and SSE2.  

> >>> Via C3 - SSE but not SSE2
> >> Only Nehemiah and newer have SSE. All Samuel, Samuel2, Ezra and Ezra-T
> >> CPUs don't.
> >> http://de.wikipedia.org/wiki/VIA_C3
> >>
> >>
> >> I stopped after checking three of the ones you changed, because all
> >> three are wrong.. I think the code should not be changed. It's likely
> >> that the whole table you were using to do the matching was not
> >> describing what we need but instead the "socket capabilities" (i.e. the
> >> biggest feature set usable with that socket)
I understood that, but I guess I was looking in the wrong places.

I still think we should source all of the models for the intel CPUs.

> >>
> > Well then we are going to need a different solution......
> 
> I think the code as it is works just fine. Ok, the warnings should be
> silenced, but that's about it.
The easiest way is to have SSE and SSE2 default to n.  Then there will be no
warnings, and people can enable them when they need them.

It's confusing to have SSE and SSE2 settings in some of the models, but not
others.
 
> If someone is developing support for a new chipset and is using romcc
> (which is the only reason one would need SSE to be set), they'll find
> out what the best possible setting for their slot is, to avoid register
> pressure :) If the code compiles, there is not (much) gain in enabling
> SSE even if your CPU supports it.

I agree.

> As for SSE2, the only time this is used is for increasing the speed of
> ram_check() which is normally not run.
Yep.

> So if you guys think this needs fixing, go ahead, but please don't break
> things because it makes Kconfig look nicer. We just went into that trap
> for ROMCC itself a day ago.

:)

Thanks for the review.

Myles
Joseph Smith - 2010-03-17 00:28:11
> I was looking at model numbers supported by Coreboot and the associated
> sockets.  According to the table I was reading, socket_6xx means P4 so it
> has SSE and SSE2.
>
It is a little grey....
model_6xx is a big clump of PII, Celeron, and PIII's. According to Intel 
docs the P6 family includes Pentium Pro, PentiumII, Celeron, and PIII 
processors. P4 and XEON are the first of the IA-32 family.

>
> I still think we should source all of the models for the intel CPUs.
>
Yes I never liked how the model_6xx is all clumped togethor. I think 
they should be seperated by family/model. But that may be for another day...
Stefan Reinauer - 2010-03-17 00:59:51
On 3/17/10 1:05 AM, Myles Watson wrote:

> I understood that, but I guess I was looking in the wrong places.
>
> I still think we should source all of the models for the intel CPUs.
>
>   
Hah, sorry I forgot about that hunk.... 5231

>>>>         
>>> Well then we are going to need a different solution......
>>>       
>> I think the code as it is works just fine. Ok, the warnings should be
>> silenced, but that's about it.
>>     
> The easiest way is to have SSE and SSE2 default to n.  Then there will be no
> warnings, and people can enable them when they need them.
>   

I think you mentioned that a warning is generally good if people don't
set this explicitly... So maybe we should just fix what we know for sure
(most likely those with no SSE and SSE2) and wait for people to fix this
while they come along these CPUs/sockets... If nobody does, the warning
is maybe not critical for them ;)

> It's confusing to have SSE and SSE2 settings in some of the models, but not
> others. 
Yes. Since one socket can choose multiple cpus, it must go in the socket
to be safe (otherwise a SSE enabled CPU might break a socket with a
non-SSE enabled CPU), but there are also CPU models that don't come in
sockets... "Fake" sockets? Better solution? Set it in the CPU for those,
with a comment?

Stefan
Myles Watson - 2010-03-17 02:15:37
> 
> > I understood that, but I guess I was looking in the wrong places.
> >
> > I still think we should source all of the models for the intel CPUs.
> >
> >
> Hah, sorry I forgot about that hunk.... 5231

Thanks.

> >>>>
> >>> Well then we are going to need a different solution......
> >>>
> >> I think the code as it is works just fine. Ok, the warnings should be
> >> silenced, but that's about it.
> >>
> > The easiest way is to have SSE and SSE2 default to n.  Then there will
> be no
> > warnings, and people can enable them when they need them.
> >
> 
> I think you mentioned that a warning is generally good if people don't
> set this explicitly...
:)

> So maybe we should just fix what we know for sure
> (most likely those with no SSE and SSE2) and wait for people to fix this
> while they come along these CPUs/sockets... If nobody does, the warning
> is maybe not critical for them ;)
Sure.  That does seem like the best way.

> > It's confusing to have SSE and SSE2 settings in some of the models, but
> not
> > others.
> Yes. Since one socket can choose multiple cpus, it must go in the socket
> to be safe (otherwise a SSE enabled CPU might break a socket with a
> non-SSE enabled CPU), but there are also CPU models that don't come in
> sockets... "Fake" sockets? 

> Better solution? Set it in the CPU for those,
> with a comment?
That's my vote.

Thanks,
Myles

Patch

Index: svn/src/cpu/amd/model_gx1/Kconfig
===================================================================
--- svn.orig/src/cpu/amd/model_gx1/Kconfig
+++ svn/src/cpu/amd/model_gx1/Kconfig
@@ -31,3 +31,12 @@  config DCACHE_RAM_SIZE
 	default 0x01000
 	depends on CPU_AMD_GX1
 
+config SSE
+	bool
+	default n
+	depends on CPU_AMD_GX1
+
+config SSE2
+	bool
+	default n
+	depends on CPU_AMD_GX1
Index: svn/src/cpu/amd/model_gx2/Kconfig
===================================================================
--- svn.orig/src/cpu/amd/model_gx2/Kconfig
+++ svn/src/cpu/amd/model_gx2/Kconfig
@@ -30,3 +30,12 @@  config DCACHE_RAM_SIZE
 	default 0x01000
 	depends on CPU_AMD_GX2
 
+config SSE
+	bool
+	default n
+	depends on CPU_AMD_GX2
+
+config SSE2
+	bool
+	default n
+	depends on CPU_AMD_GX2
Index: svn/src/cpu/amd/model_lx/Kconfig
===================================================================
--- svn.orig/src/cpu/amd/model_lx/Kconfig
+++ svn/src/cpu/amd/model_lx/Kconfig
@@ -11,3 +11,12 @@  config DCACHE_RAM_SIZE
 	default 0x8000
 	depends on CPU_AMD_LX
 
+config SSE
+	bool
+	default n
+	depends on CPU_AMD_LX
+
+config SSE2
+	bool
+	default n
+	depends on CPU_AMD_LX
Index: svn/src/cpu/amd/sc520/Kconfig
===================================================================
--- svn.orig/src/cpu/amd/sc520/Kconfig
+++ svn/src/cpu/amd/sc520/Kconfig
@@ -10,3 +10,13 @@  config HAVE_INIT_TIMER
 	bool
 	default n
 	depends on CPU_AMD_SC520
+
+config SSE
+	bool
+	default n
+	depends on CPU_AMD_SC520
+
+config SSE2
+	bool
+	default n
+	depends on CPU_AMD_SC520
Index: svn/src/cpu/emulation/qemu-x86/Kconfig
===================================================================
--- svn.orig/src/cpu/emulation/qemu-x86/Kconfig
+++ svn/src/cpu/emulation/qemu-x86/Kconfig
@@ -1,3 +1,7 @@ 
 config CPU_EMULATION_QEMU_X86
 	bool
 
+config SSE2
+	bool
+	default n
+	depends on CPU_EMULATION_QEMU_X86
Index: svn/src/cpu/intel/slot_1/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/slot_1/Kconfig
+++ svn/src/cpu/intel/slot_1/Kconfig
@@ -20,6 +20,7 @@ 
 
 config CPU_INTEL_SLOT_1
 	bool
+	select SSE
 
 config DCACHE_RAM_BASE
 	hex
@@ -31,3 +32,7 @@  config DCACHE_RAM_SIZE
 	default 0x01000
 	depends on CPU_INTEL_SLOT_1
 
+config SSE2
+	bool
+	default n
+	depends on CPU_INTEL_SLOT_1
Index: svn/src/cpu/intel/slot_2/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/slot_2/Kconfig
+++ svn/src/cpu/intel/slot_2/Kconfig
@@ -20,6 +20,7 @@ 
 
 config CPU_INTEL_SLOT_2
 	bool
+	select SSE
 
 config DCACHE_RAM_BASE
 	hex
@@ -31,3 +32,7 @@  config DCACHE_RAM_SIZE
 	default 0x01000
 	depends on CPU_INTEL_SLOT_2
 
+config SSE2
+	bool
+	default n
+	depends on CPU_INTEL_SLOT_2
Index: svn/src/cpu/intel/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/Kconfig
+++ svn/src/cpu/intel/Kconfig
@@ -2,6 +2,11 @@  source src/cpu/intel/model_69x/Kconfig
 source src/cpu/intel/model_6dx/Kconfig
 source src/cpu/intel/model_6ex/Kconfig
 source src/cpu/intel/model_6fx/Kconfig
+source src/cpu/intel/model_f0x/Kconfig
+source src/cpu/intel/model_f1x/Kconfig
+source src/cpu/intel/model_f2x/Kconfig
+source src/cpu/intel/model_f3x/Kconfig
+source src/cpu/intel/model_f4x/Kconfig
 source src/cpu/intel/model_1067x/Kconfig
 source src/cpu/intel/model_106cx/Kconfig
 
Index: svn/src/cpu/intel/socket_PGA370/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/socket_PGA370/Kconfig
+++ svn/src/cpu/intel/socket_PGA370/Kconfig
@@ -21,4 +21,10 @@ 
 config CPU_INTEL_SOCKET_PGA370
 	bool
 	select MMX
+	select SSE
 	select UDELAY_TSC
+
+config SSE2
+	bool
+	default n
+	depends on CPU_INTEL_SOCKET_PGA370
Index: svn/src/cpu/via/model_c3/Kconfig
===================================================================
--- svn.orig/src/cpu/via/model_c3/Kconfig
+++ svn/src/cpu/via/model_c3/Kconfig
@@ -2,3 +2,9 @@  config CPU_VIA_C3
 	bool
 	select UDELAY_TSC
 	select MMX
+	select SSE
+
+config SSE2
+	bool
+	default n
+	depends on CPU_VIA_C3
Index: svn/src/cpu/intel/ep80579/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/ep80579/Kconfig
+++ svn/src/cpu/intel/ep80579/Kconfig
@@ -1,2 +1,5 @@ 
 config CPU_INTEL_EP80579
 	bool
+	select MMX
+	select SSE
+	select SSE2
Index: svn/src/cpu/intel/model_1067x/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/model_1067x/Kconfig
+++ svn/src/cpu/intel/model_1067x/Kconfig
@@ -1,4 +1,3 @@ 
 config CPU_INTEL_CORE2
 	bool
 	select SMP
-	select SSE2
Index: svn/src/cpu/intel/model_106cx/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/model_106cx/Kconfig
+++ svn/src/cpu/intel/model_106cx/Kconfig
@@ -1,4 +1,3 @@ 
 config CPU_INTEL_ATOM_230
 	bool
 	select SMP
-	select SSE2
Index: svn/src/cpu/intel/model_6ex/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/model_6ex/Kconfig
+++ svn/src/cpu/intel/model_6ex/Kconfig
@@ -1,4 +1,3 @@ 
 config CPU_INTEL_CORE
 	bool
 	select SMP
-	select SSE2
Index: svn/src/cpu/intel/model_6fx/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/model_6fx/Kconfig
+++ svn/src/cpu/intel/model_6fx/Kconfig
@@ -1,4 +1,3 @@ 
 config CPU_INTEL_CORE2
 	bool
 	select SMP
-	select SSE2
Index: svn/src/cpu/intel/model_f0x/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/model_f0x/Kconfig
+++ svn/src/cpu/intel/model_f0x/Kconfig
@@ -1,4 +1,3 @@ 
 config CPU_INTEL_MODEL_F0X
 	bool
 	select SMP
-	select SSE2
Index: svn/src/cpu/intel/model_f1x/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/model_f1x/Kconfig
+++ svn/src/cpu/intel/model_f1x/Kconfig
@@ -1,4 +1,3 @@ 
 config CPU_INTEL_MODEL_F1X
 	bool
 	select SMP
-	select SSE2
Index: svn/src/cpu/intel/model_f2x/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/model_f2x/Kconfig
+++ svn/src/cpu/intel/model_f2x/Kconfig
@@ -1,4 +1,3 @@ 
 config CPU_INTEL_MODEL_F2X
 	bool
 	select SMP
-	select SSE2
Index: svn/src/cpu/intel/model_f3x/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/model_f3x/Kconfig
+++ svn/src/cpu/intel/model_f3x/Kconfig
@@ -1,4 +1,3 @@ 
 config CPU_INTEL_MODEL_F3X
 	bool
 	select SMP
-	select SSE2
Index: svn/src/cpu/intel/model_f4x/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/model_f4x/Kconfig
+++ svn/src/cpu/intel/model_f4x/Kconfig
@@ -1,4 +1,3 @@ 
 config CPU_INTEL_MODEL_F4X
 	bool
 	select SMP
-	select SSE2
Index: svn/src/cpu/intel/socket_441/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/socket_441/Kconfig
+++ svn/src/cpu/intel/socket_441/Kconfig
@@ -3,3 +3,4 @@  config CPU_INTEL_SOCKET_441
 	select CPU_INTEL_MODEL_106CX
 	select MMX
 	select SSE
+	select SSE2
Index: svn/src/cpu/intel/socket_mPGA479M/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/socket_mPGA479M/Kconfig
+++ svn/src/cpu/intel/socket_mPGA479M/Kconfig
@@ -4,3 +4,4 @@  config CPU_INTEL_SOCKET_MPGA479M
 	select CPU_INTEL_MODEL_6DX
 	select MMX
 	select SSE
+	select SSE2
Index: svn/src/cpu/intel/socket_mPGA604/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/socket_mPGA604/Kconfig
+++ svn/src/cpu/intel/socket_mPGA604/Kconfig
@@ -5,4 +5,5 @@  config CPU_INTEL_SOCKET_MPGA604
 	select CPU_INTEL_MODEL_F4X
 	select MMX
 	select SSE
+	select SSE2
 	select UDELAY_TSC
Index: svn/src/cpu/via/model_c7/Kconfig
===================================================================
--- svn.orig/src/cpu/via/model_c7/Kconfig
+++ svn/src/cpu/via/model_c7/Kconfig
@@ -2,4 +2,5 @@  config CPU_VIA_C7
 	bool
 	select UDELAY_TSC
 	select MMX
+	select SSE
 	select SSE2
Index: svn/src/cpu/intel/bga956/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/bga956/Kconfig
+++ svn/src/cpu/intel/bga956/Kconfig
@@ -1,3 +1,6 @@ 
 config CPU_INTEL_SOCKET_BGA956
 	bool
 	select CPU_INTEL_CORE2
+	select MMX
+	select SSE
+	select SSE2
Index: svn/src/cpu/intel/socket_mFCPGA478/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/socket_mFCPGA478/Kconfig
+++ svn/src/cpu/intel/socket_mFCPGA478/Kconfig
@@ -1,2 +1,5 @@ 
 config CPU_INTEL_SOCKET_MFCPGA478
 	bool
+	select MMX
+	select SSE
+	select SSE2
Index: svn/src/cpu/intel/socket_mPGA478/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/socket_mPGA478/Kconfig
+++ svn/src/cpu/intel/socket_mPGA478/Kconfig
@@ -2,3 +2,6 @@  config CPU_INTEL_SOCKET_MPGA478
 	bool
 	select CPU_INTEL_MODEL_69X
 	select CPU_INTEL_MODEL_6DX
+	select MMX
+	select SSE
+	select SSE2
Index: svn/src/cpu/intel/socket_mPGA603/Kconfig
===================================================================
--- svn.orig/src/cpu/intel/socket_mPGA603/Kconfig
+++ svn/src/cpu/intel/socket_mPGA603/Kconfig
@@ -3,3 +3,6 @@  config CPU_INTEL_SOCKET_MPGA603
 	select CPU_INTEL_MODEL_F0X
 	select CPU_INTEL_MODEL_F1X
 	select CPU_INTEL_MODEL_F2X
+	select MMX
+	select SSE
+	select SSE2