2008-02-27 21:16:43

by Hiroshi Shimamoto

[permalink] [raw]
Subject: [PATCH] x86: X86_HT always enable on X86_64 SMP

From: Hiroshi Shimamoto <[email protected]>

X86_HT is used for hyperthreading or multicore on 32-bit.
The X86_HT on 64-bit is different from 32-bit, it means hyperthreading only.
And X86_HT is not used on 64-bit except from cpu/initel_cacheinfo.c.

Unify X86_HT for hyperthreading or multicore.
Turn X86_HT on when X86_64 and SMP are enabled.

Signed-off-by: Hiroshi Shimamoto <[email protected]>
---
arch/x86/Kconfig | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 5bbb385..7168437 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -174,7 +174,7 @@ config X86_64_SMP
config X86_HT
bool
depends on SMP
- depends on (X86_32 && !(X86_VISWS || X86_VOYAGER)) || (X86_64 && !MK8)
+ depends on (X86_32 && !(X86_VISWS || X86_VOYAGER)) || X86_64
default y

config X86_BIOS_REBOOT
@@ -516,7 +516,7 @@ config NR_CPUS

config SCHED_SMT
bool "SMT (Hyperthreading) scheduler support"
- depends on (X86_64 && SMP) || (X86_32 && X86_HT)
+ depends on X86_HT
help
SMT scheduler support improves the CPU scheduler's decision making
when dealing with Intel Pentium 4 chips with HyperThreading at a
@@ -526,7 +526,7 @@ config SCHED_SMT
config SCHED_MC
def_bool y
prompt "Multi-core scheduler support"
- depends on (X86_64 && SMP) || (X86_32 && X86_HT)
+ depends on X86_HT
help
Multi-core scheduler support improves the CPU scheduler's decision
making when dealing with multi-core CPU chips at a cost of slightly
--
1.5.3.8


2008-02-27 21:28:21

by Adrian Bunk

[permalink] [raw]
Subject: Re: [PATCH] x86: X86_HT always enable on X86_64 SMP

On Wed, Feb 27, 2008 at 01:16:30PM -0800, Hiroshi Shimamoto wrote:
> From: Hiroshi Shimamoto <[email protected]>
>
> X86_HT is used for hyperthreading or multicore on 32-bit.
> The X86_HT on 64-bit is different from 32-bit, it means hyperthreading only.
> And X86_HT is not used on 64-bit except from cpu/initel_cacheinfo.c.
>
> Unify X86_HT for hyperthreading or multicore.
> Turn X86_HT on when X86_64 and SMP are enabled.

Please fix it properly instead - fiddling around with it the way you do
only asks for trouble in the future.

What we need are two different variables for:
- hyperthreading and
- multicore

> Signed-off-by: Hiroshi Shimamoto <[email protected]>
> ---
> arch/x86/Kconfig | 6 +++---
> 1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 5bbb385..7168437 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -174,7 +174,7 @@ config X86_64_SMP
> config X86_HT
> bool
> depends on SMP
> - depends on (X86_32 && !(X86_VISWS || X86_VOYAGER)) || (X86_64 && !MK8)
> + depends on (X86_32 && !(X86_VISWS || X86_VOYAGER)) || X86_64
> default y
>
> config X86_BIOS_REBOOT
> @@ -516,7 +516,7 @@ config NR_CPUS
>
> config SCHED_SMT
> bool "SMT (Hyperthreading) scheduler support"
> - depends on (X86_64 && SMP) || (X86_32 && X86_HT)
> + depends on X86_HT
> help
> SMT scheduler support improves the CPU scheduler's decision making
> when dealing with Intel Pentium 4 chips with HyperThreading at a
> @@ -526,7 +526,7 @@ config SCHED_SMT
> config SCHED_MC
> def_bool y
> prompt "Multi-core scheduler support"
> - depends on (X86_64 && SMP) || (X86_32 && X86_HT)
> + depends on X86_HT
> help
> Multi-core scheduler support improves the CPU scheduler's decision
> making when dealing with multi-core CPU chips at a cost of slightly

And any proper fix should result in SCHED_SMT and SCHED_MC getting
different dependencies.

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

2008-02-27 21:44:22

by H. Peter Anvin

[permalink] [raw]
Subject: Re: [PATCH] x86: X86_HT always enable on X86_64 SMP

Adrian Bunk wrote:
> On Wed, Feb 27, 2008 at 01:16:30PM -0800, Hiroshi Shimamoto wrote:
>> From: Hiroshi Shimamoto <[email protected]>
>>
>> X86_HT is used for hyperthreading or multicore on 32-bit.
>> The X86_HT on 64-bit is different from 32-bit, it means hyperthreading only.
>> And X86_HT is not used on 64-bit except from cpu/initel_cacheinfo.c.
>>
>> Unify X86_HT for hyperthreading or multicore.
>> Turn X86_HT on when X86_64 and SMP are enabled.
>
> Please fix it properly instead - fiddling around with it the way you do
> only asks for trouble in the future.
>
> What we need are two different variables for:
> - hyperthreading and
> - multicore
>

He does, and calls them SCHED_SMT and SCHED_MC respectively.

It's not particularly clear to me what X86_HT is meant to be used for
anymore at all.

-hpa

2008-02-27 21:59:35

by Adrian Bunk

[permalink] [raw]
Subject: Re: [PATCH] x86: X86_HT always enable on X86_64 SMP

On Wed, Feb 27, 2008 at 01:30:59PM -0800, H. Peter Anvin wrote:
> Adrian Bunk wrote:
>> On Wed, Feb 27, 2008 at 01:16:30PM -0800, Hiroshi Shimamoto wrote:
>>> From: Hiroshi Shimamoto <[email protected]>
>>>
>>> X86_HT is used for hyperthreading or multicore on 32-bit.
>>> The X86_HT on 64-bit is different from 32-bit, it means hyperthreading only.
>>> And X86_HT is not used on 64-bit except from cpu/initel_cacheinfo.c.
>>>
>>> Unify X86_HT for hyperthreading or multicore.
>>> Turn X86_HT on when X86_64 and SMP are enabled.
>>
>> Please fix it properly instead - fiddling around with it the way you do
>> only asks for trouble in the future.
>>
>> What we need are two different variables for:
>> - hyperthreading and
>> - multicore
>
> He does, and calls them SCHED_SMT and SCHED_MC respectively.

These are the already existing scheduler related variables that are
only a part of the X86_HT usages.

> It's not particularly clear to me what X86_HT is meant to be used for
> anymore at all.

grep through the source code and you find it is sometimes used for
hyperthreading and sometimes for multicore.

I don't care whether X86_HT gets splitted or perhaps even removed, but
any change to it should remove the status quo of it having two different
semantics.

> -hpa

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

2008-02-27 22:00:37

by Yinghai Lu

[permalink] [raw]
Subject: Re: [PATCH] x86: X86_HT always enable on X86_64 SMP

On Wed, Feb 27, 2008 at 1:30 PM, H. Peter Anvin <[email protected]> wrote:
> Adrian Bunk wrote:
> > On Wed, Feb 27, 2008 at 01:16:30PM -0800, Hiroshi Shimamoto wrote:
> >> From: Hiroshi Shimamoto <[email protected]>
> >>
> >> X86_HT is used for hyperthreading or multicore on 32-bit.
> >> The X86_HT on 64-bit is different from 32-bit, it means hyperthreading only.
> >> And X86_HT is not used on 64-bit except from cpu/initel_cacheinfo.c.
> >>
> >> Unify X86_HT for hyperthreading or multicore.
> >> Turn X86_HT on when X86_64 and SMP are enabled.
> >
> > Please fix it properly instead - fiddling around with it the way you do
> > only asks for trouble in the future.
> >
> > What we need are two different variables for:
> > - hyperthreading and
> > - multicore
> >
>
> He does, and calls them SCHED_SMT and SCHED_MC respectively.
>
> It's not particularly clear to me what X86_HT is meant to be used for
> anymore at all.

he made X86_HT can be enabled when only Opteron supported is enabled.

it should be stated in the comments.
YH

2008-02-27 22:17:13

by Hiroshi Shimamoto

[permalink] [raw]
Subject: Re: [PATCH] x86: X86_HT always enable on X86_64 SMP

Adrian Bunk wrote:
> On Wed, Feb 27, 2008 at 01:30:59PM -0800, H. Peter Anvin wrote:
>> Adrian Bunk wrote:
>>> On Wed, Feb 27, 2008 at 01:16:30PM -0800, Hiroshi Shimamoto wrote:
>>>> From: Hiroshi Shimamoto <[email protected]>
>>>>
>>>> X86_HT is used for hyperthreading or multicore on 32-bit.
>>>> The X86_HT on 64-bit is different from 32-bit, it means hyperthreading only.
>>>> And X86_HT is not used on 64-bit except from cpu/initel_cacheinfo.c.
>>>>
>>>> Unify X86_HT for hyperthreading or multicore.
>>>> Turn X86_HT on when X86_64 and SMP are enabled.
>>> Please fix it properly instead - fiddling around with it the way you do
>>> only asks for trouble in the future.
>>>
>>> What we need are two different variables for:
>>> - hyperthreading and
>>> - multicore
>> He does, and calls them SCHED_SMT and SCHED_MC respectively.
>
> These are the already existing scheduler related variables that are
> only a part of the X86_HT usages.
>
>> It's not particularly clear to me what X86_HT is meant to be used for
>> anymore at all.
>
> grep through the source code and you find it is sometimes used for
> hyperthreading and sometimes for multicore.
>
> I don't care whether X86_HT gets splitted or perhaps even removed, but
> any change to it should remove the status quo of it having two different
> semantics.

OK, you say "Don't mix two different semantics into one variable X86_HT", right?

Thanks,
Hiroshi Shimamoto

2008-02-27 22:31:32

by Hiroshi Shimamoto

[permalink] [raw]
Subject: Re: [PATCH] x86: X86_HT always enable on X86_64 SMP

Yinghai Lu wrote:
> On Wed, Feb 27, 2008 at 1:30 PM, H. Peter Anvin <[email protected]> wrote:
>> Adrian Bunk wrote:
>> > On Wed, Feb 27, 2008 at 01:16:30PM -0800, Hiroshi Shimamoto wrote:
>> >> From: Hiroshi Shimamoto <[email protected]>
>> >>
>> >> X86_HT is used for hyperthreading or multicore on 32-bit.
>> >> The X86_HT on 64-bit is different from 32-bit, it means hyperthreading only.
>> >> And X86_HT is not used on 64-bit except from cpu/initel_cacheinfo.c.
>> >>
>> >> Unify X86_HT for hyperthreading or multicore.
>> >> Turn X86_HT on when X86_64 and SMP are enabled.
>> >
>> > Please fix it properly instead - fiddling around with it the way you do
>> > only asks for trouble in the future.
>> >
>> > What we need are two different variables for:
>> > - hyperthreading and
>> > - multicore
>> >
>>
>> He does, and calls them SCHED_SMT and SCHED_MC respectively.
>>
>> It's not particularly clear to me what X86_HT is meant to be used for
>> anymore at all.
>
> he made X86_HT can be enabled when only Opteron supported is enabled.

yes on 64-bit. On 32-bit MK8 doesn't affect X86_HT.

2008-02-27 22:39:00

by Adrian Bunk

[permalink] [raw]
Subject: Re: [PATCH] x86: X86_HT always enable on X86_64 SMP

On Wed, Feb 27, 2008 at 02:16:56PM -0800, Hiroshi Shimamoto wrote:
> Adrian Bunk wrote:
> > On Wed, Feb 27, 2008 at 01:30:59PM -0800, H. Peter Anvin wrote:
> >> Adrian Bunk wrote:
> >>> On Wed, Feb 27, 2008 at 01:16:30PM -0800, Hiroshi Shimamoto wrote:
> >>>> From: Hiroshi Shimamoto <[email protected]>
> >>>>
> >>>> X86_HT is used for hyperthreading or multicore on 32-bit.
> >>>> The X86_HT on 64-bit is different from 32-bit, it means hyperthreading only.
> >>>> And X86_HT is not used on 64-bit except from cpu/initel_cacheinfo.c.
> >>>>
> >>>> Unify X86_HT for hyperthreading or multicore.
> >>>> Turn X86_HT on when X86_64 and SMP are enabled.
> >>> Please fix it properly instead - fiddling around with it the way you do
> >>> only asks for trouble in the future.
> >>>
> >>> What we need are two different variables for:
> >>> - hyperthreading and
> >>> - multicore
> >> He does, and calls them SCHED_SMT and SCHED_MC respectively.
> >
> > These are the already existing scheduler related variables that are
> > only a part of the X86_HT usages.
> >
> >> It's not particularly clear to me what X86_HT is meant to be used for
> >> anymore at all.
> >
> > grep through the source code and you find it is sometimes used for
> > hyperthreading and sometimes for multicore.
> >
> > I don't care whether X86_HT gets splitted or perhaps even removed, but
> > any change to it should remove the status quo of it having two different
> > semantics.
>
> OK, you say "Don't mix two different semantics into one variable X86_HT", right?

Exactly.

This mixing is not your fault since it's an older problem, but instead
of your suggested patch we should fix it properly.

> Thanks,
> Hiroshi Shimamoto

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed