* patch "x86: MOVE PCI IO ECS code to x86/pci" breaks CPU hotplug
@ 2008-08-21 12:45 Jan Beulich
2008-08-21 13:02 ` Ingo Molnar
0 siblings, 1 reply; 9+ messages in thread
From: Jan Beulich @ 2008-08-21 12:45 UTC (permalink / raw)
To: robert.richter, Ingo Molnar; +Cc: linux-kernel
Converting __cpuinit functions called out of init_amd() (and similar others)
to __init (and making them subject of xxx_initcall() handling isn't valid, as
they would no longer be called for hot plugged CPUs.
Further, since it's likely that in virtualized environments the MSR write
would at best be ignored, I'd also recommend using the fault-safe
accessors here *and* check that the bit actually got set before setting
PCI_HAS_IO_ECS (one would obviously have to BUG() when hot-plugged
CPUs fail to set the bit when those available at boot successfully did so).
Jan
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: patch "x86: MOVE PCI IO ECS code to x86/pci" breaks CPU hotplug
2008-08-21 12:45 patch "x86: MOVE PCI IO ECS code to x86/pci" breaks CPU hotplug Jan Beulich
@ 2008-08-21 13:02 ` Ingo Molnar
2008-08-21 13:16 ` Robert Richter
2008-08-21 13:19 ` Jan Beulich
0 siblings, 2 replies; 9+ messages in thread
From: Ingo Molnar @ 2008-08-21 13:02 UTC (permalink / raw)
To: Jan Beulich; +Cc: robert.richter, linux-kernel
* Jan Beulich <jbeulich@novell.com> wrote:
> Converting __cpuinit functions called out of init_amd() (and similar
> others) to __init (and making them subject of xxx_initcall() handling
> isn't valid, as they would no longer be called for hot plugged CPUs.
>
> Further, since it's likely that in virtualized environments the MSR
> write would at best be ignored, I'd also recommend using the
> fault-safe accessors here *and* check that the bit actually got set
> before setting PCI_HAS_IO_ECS (one would obviously have to BUG() when
> hot-plugged CPUs fail to set the bit when those available at boot
> successfully did so).
hm, which patch is this exactly, and in what tree? It's not upstream nor
in -tip.
Ingo
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: patch "x86: MOVE PCI IO ECS code to x86/pci" breaks CPU hotplug
2008-08-21 13:02 ` Ingo Molnar
@ 2008-08-21 13:16 ` Robert Richter
2008-08-22 6:05 ` Ingo Molnar
2008-08-21 13:19 ` Jan Beulich
1 sibling, 1 reply; 9+ messages in thread
From: Robert Richter @ 2008-08-21 13:16 UTC (permalink / raw)
To: Ingo Molnar; +Cc: Jan Beulich, linux-kernel
On 21.08.08 15:02:59, Ingo Molnar wrote:
>
> * Jan Beulich <jbeulich@novell.com> wrote:
>
> > Converting __cpuinit functions called out of init_amd() (and similar
> > others) to __init (and making them subject of xxx_initcall() handling
> > isn't valid, as they would no longer be called for hot plugged CPUs.
> >
> > Further, since it's likely that in virtualized environments the MSR
> > write would at best be ignored, I'd also recommend using the
> > fault-safe accessors here *and* check that the bit actually got set
> > before setting PCI_HAS_IO_ECS (one would obviously have to BUG() when
> > hot-plugged CPUs fail to set the bit when those available at boot
> > successfully did so).
>
> hm, which patch is this exactly, and in what tree? It's not upstream nor
> in -tip.
Probably this in the mainline kernel is meant:
commit 3a27dd1ce5de08e21e0266ddf00e6f1f843bfe8b
Author: Robert Richter <robert.richter@amd.com>
Date: Thu Jun 12 20:19:23 2008 +0200
x86: Move PCI IO ECS code to x86/pci
"Form follows function". Code is now where it belongs to.
Signed-off-by: Robert Richter <robert.richter@amd.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
The problem is code like this:
+static int __init enable_pci_io_ecs(void)
+{
+ /* assume all cpus from fam10h have IO ECS */
+ if (boot_cpu_data.x86 < 0x10)
+ return 0;
+ on_each_cpu(enable_pci_io_ecs_per_cpu, NULL, 1, 1);
+ pci_probe |= PCI_HAS_IO_ECS;
+ return 0;
+}
It is only called during the setup and if the cpu is enabled. I intend
to rewrite the cpu setup code using cpu notifiers.
-Robert
--
Advanced Micro Devices, Inc.
Operating System Research Center
email: robert.richter@amd.com
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: patch "x86: MOVE PCI IO ECS code to x86/pci" breaks CPU hotplug
2008-08-21 13:16 ` Robert Richter
@ 2008-08-22 6:05 ` Ingo Molnar
0 siblings, 0 replies; 9+ messages in thread
From: Ingo Molnar @ 2008-08-22 6:05 UTC (permalink / raw)
To: Robert Richter; +Cc: Jan Beulich, linux-kernel, Yinghai Lu
* Robert Richter <robert.richter@amd.com> wrote:
> On 21.08.08 15:02:59, Ingo Molnar wrote:
> >
> > * Jan Beulich <jbeulich@novell.com> wrote:
> >
> > > Converting __cpuinit functions called out of init_amd() (and similar
> > > others) to __init (and making them subject of xxx_initcall() handling
> > > isn't valid, as they would no longer be called for hot plugged CPUs.
> > >
> > > Further, since it's likely that in virtualized environments the MSR
> > > write would at best be ignored, I'd also recommend using the
> > > fault-safe accessors here *and* check that the bit actually got set
> > > before setting PCI_HAS_IO_ECS (one would obviously have to BUG() when
> > > hot-plugged CPUs fail to set the bit when those available at boot
> > > successfully did so).
> >
> > hm, which patch is this exactly, and in what tree? It's not upstream nor
> > in -tip.
>
> Probably this in the mainline kernel is meant:
>
> commit 3a27dd1ce5de08e21e0266ddf00e6f1f843bfe8b
> Author: Robert Richter <robert.richter@amd.com>
> Date: Thu Jun 12 20:19:23 2008 +0200
>
> x86: Move PCI IO ECS code to x86/pci
>
> "Form follows function". Code is now where it belongs to.
>
> Signed-off-by: Robert Richter <robert.richter@amd.com>
> Signed-off-by: Ingo Molnar <mingo@elte.hu>
>
> The problem is code like this:
>
> +static int __init enable_pci_io_ecs(void)
> +{
> + /* assume all cpus from fam10h have IO ECS */
> + if (boot_cpu_data.x86 < 0x10)
> + return 0;
> + on_each_cpu(enable_pci_io_ecs_per_cpu, NULL, 1, 1);
> + pci_probe |= PCI_HAS_IO_ECS;
> + return 0;
> +}
>
> It is only called during the setup and if the cpu is enabled. I intend
> to rewrite the cpu setup code using cpu notifiers.
ok. Unfortunately the revert looks quite non-trivial for v2.6.27. Could
we have some _really_ minimal fix for v2.6.27?
Ingo
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: patch "x86: MOVE PCI IO ECS code to x86/pci" breaks CPU hotplug
2008-08-21 13:02 ` Ingo Molnar
2008-08-21 13:16 ` Robert Richter
@ 2008-08-21 13:19 ` Jan Beulich
1 sibling, 0 replies; 9+ messages in thread
From: Jan Beulich @ 2008-08-21 13:19 UTC (permalink / raw)
To: Ingo Molnar; +Cc: robert.richter, linux-kernel
>>> Ingo Molnar <mingo@elte.hu> 21.08.08 15:02 >>>
>
>* Jan Beulich <jbeulich@novell.com> wrote:
>
>> Converting __cpuinit functions called out of init_amd() (and similar
>> others) to __init (and making them subject of xxx_initcall() handling
>> isn't valid, as they would no longer be called for hot plugged CPUs.
>>
>> Further, since it's likely that in virtualized environments the MSR
>> write would at best be ignored, I'd also recommend using the
>> fault-safe accessors here *and* check that the bit actually got set
>> before setting PCI_HAS_IO_ECS (one would obviously have to BUG() when
>> hot-plugged CPUs fail to set the bit when those available at boot
>> successfully did so).
>
>hm, which patch is this exactly, and in what tree? It's not upstream nor
>in -tip.
It is upstream:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=3a27dd1ce5de08e21e0266ddf00e6f1f843bfe8b
(and I just verified it didn't change between -rc3 and -rc4).
Jan
^ permalink raw reply [flat|nested] 9+ messages in thread
* patch "x86: MOVE PCI IO ECS code to x86/pci" breaks CPU hotplug
@ 2008-08-21 12:59 Jan Beulich
2008-08-21 13:29 ` Robert Richter
0 siblings, 1 reply; 9+ messages in thread
From: Jan Beulich @ 2008-08-21 12:59 UTC (permalink / raw)
To: robert.richter, Ingo Molnar; +Cc: linux-kernel
>Converting __cpuinit functions called out of init_amd() (and similar others)
>to __init (and making them subject of xxx_initcall() handling isn't valid, as
>they would no longer be called for hot plugged CPUs.
>
>Further, since it's likely that in virtualized environments the MSR write
>would at best be ignored, I'd also recommend using the fault-safe
>accessors here *and* check that the bit actually got set before setting
>PCI_HAS_IO_ECS (one would obviously have to BUG() when hot-plugged
>CPUs fail to set the bit when those available at boot successfully did so).
Even worse - this would even try to access the MSR on non-AMD CPUs
(currently probably prevented just by the fact that only AMD ones use
family values of 0x10 or higher).
Jan
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: patch "x86: MOVE PCI IO ECS code to x86/pci" breaks CPU hotplug
2008-08-21 12:59 Jan Beulich
@ 2008-08-21 13:29 ` Robert Richter
2008-08-21 16:25 ` Yinghai Lu
0 siblings, 1 reply; 9+ messages in thread
From: Robert Richter @ 2008-08-21 13:29 UTC (permalink / raw)
To: Jan Beulich; +Cc: Ingo Molnar, linux-kernel
On 21.08.08 13:59:33, Jan Beulich wrote:
> Even worse - this would even try to access the MSR on non-AMD CPUs
> (currently probably prevented just by the fact that only AMD ones use
> family values of 0x10 or higher).
Ups, really worse. Code was AMD specific before and became
generic. Will fix this.
-Robert
--
Advanced Micro Devices, Inc.
Operating System Research Center
email: robert.richter@amd.com
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: patch "x86: MOVE PCI IO ECS code to x86/pci" breaks CPU hotplug
2008-08-21 13:29 ` Robert Richter
@ 2008-08-21 16:25 ` Yinghai Lu
2008-08-21 16:46 ` Robert Richter
0 siblings, 1 reply; 9+ messages in thread
From: Yinghai Lu @ 2008-08-21 16:25 UTC (permalink / raw)
To: Robert Richter; +Cc: Jan Beulich, Ingo Molnar, linux-kernel
On Thu, Aug 21, 2008 at 6:29 AM, Robert Richter <robert.richter@amd.com> wrote:
> On 21.08.08 13:59:33, Jan Beulich wrote:
>> Even worse - this would even try to access the MSR on non-AMD CPUs
>> (currently probably prevented just by the fact that only AMD ones use
>> family values of 0x10 or higher).
>
> Ups, really worse. Code was AMD specific before and became
> generic. Will fix this.
>
it seems you didn't address the concern about hotplug as you promised
http://lkml.org/lkml/2008/6/13/151
YH
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: patch "x86: MOVE PCI IO ECS code to x86/pci" breaks CPU hotplug
2008-08-21 16:25 ` Yinghai Lu
@ 2008-08-21 16:46 ` Robert Richter
0 siblings, 0 replies; 9+ messages in thread
From: Robert Richter @ 2008-08-21 16:46 UTC (permalink / raw)
To: Yinghai Lu; +Cc: Jan Beulich, Ingo Molnar, linux-kernel
On 21.08.08 09:25:37, Yinghai Lu wrote:
> On Thu, Aug 21, 2008 at 6:29 AM, Robert Richter <robert.richter@amd.com> wrote:
> > On 21.08.08 13:59:33, Jan Beulich wrote:
> >> Even worse - this would even try to access the MSR on non-AMD CPUs
> >> (currently probably prevented just by the fact that only AMD ones use
> >> family values of 0x10 or higher).
> >
> > Ups, really worse. Code was AMD specific before and became
> > generic. Will fix this.
> >
>
> it seems you didn't address the concern about hotplug as you promised
>
> http://lkml.org/lkml/2008/6/13/151
Yinghai, I know. You made a comment on this in reply to the patch and
this is still an open issue. Really, will fix this. :-)
-Robert
--
Advanced Micro Devices, Inc.
Operating System Research Center
email: robert.richter@amd.com
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2008-08-22 6:05 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-21 12:45 patch "x86: MOVE PCI IO ECS code to x86/pci" breaks CPU hotplug Jan Beulich
2008-08-21 13:02 ` Ingo Molnar
2008-08-21 13:16 ` Robert Richter
2008-08-22 6:05 ` Ingo Molnar
2008-08-21 13:19 ` Jan Beulich
-- strict thread matches above, loose matches on Subject: below --
2008-08-21 12:59 Jan Beulich
2008-08-21 13:29 ` Robert Richter
2008-08-21 16:25 ` Yinghai Lu
2008-08-21 16:46 ` Robert Richter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox