Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Linux: Kernel

Re: udev races with 'arch_register_cpu' to write 1 to /sys/devices/system/cpu/cpu1/online (which is not yet created).

 

 

Linux kernel RSS feed   Index | Next | Previous | View Threaded


konrad.wilk at oracle

Apr 30, 2012, 8:37 AM

Post #1 of 7 (197 views)
Permalink
Re: udev races with 'arch_register_cpu' to write 1 to /sys/devices/system/cpu/cpu1/online (which is not yet created).

On Mon, Apr 30, 2012 at 11:36:23AM -0400, Konrad Rzeszutek Wilk wrote:
> Hey Greg,

Grr.. Incorrectly added LKML to it. Sorry about that.

>
> Hoping you can help with some guidance on how to fix this.
>
> The issue is with CPU hotplug is that when a CPU goes up
> it calls 'arch_register_cpu' which eventually calls
> register_cpu. That function does these two things:
>
> 251 error = device_register(&cpu->dev);
> 252 if (!error && cpu->hotpluggable)
> 253 register_cpu_control(cpu);
>
> and the device_register creates a nice little SysFS directory:
>
> /sys/devices/system/cpu/cpu2/ which at line 251 has the 'add' attribute
> but no 'online' attribute. udev then tries to echo 1 to the 'online'
> and it we get:
> udevd-work[2421]: error opening ATTR{/sys/devices/system/cpu/cpu2/online} for writing: No such file or directory
>
> Line 253 creates said 'online' and at that time udev [or the system admin]
> can write 1 to 'online' and the CPU goes up.
>
> So .. any thoughts? Is there some way to inhibit from uevent being sent
> until line 253 has run?
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


gregkh at linuxfoundation

Apr 30, 2012, 8:50 AM

Post #2 of 7 (195 views)
Permalink
Re: udev races with 'arch_register_cpu' to write 1 to /sys/devices/system/cpu/cpu1/online (which is not yet created). [In reply to]

On Mon, Apr 30, 2012 at 11:36:23AM -0400, Konrad Rzeszutek Wilk wrote:
> Hey Greg,
>
> Hoping you can help with some guidance on how to fix this.
>
> The issue is with CPU hotplug is that when a CPU goes up
> it calls 'arch_register_cpu' which eventually calls
> register_cpu. That function does these two things:
>
> 251 error = device_register(&cpu->dev);
> 252 if (!error && cpu->hotpluggable)
> 253 register_cpu_control(cpu);
>
> and the device_register creates a nice little SysFS directory:
>
> /sys/devices/system/cpu/cpu2/ which at line 251 has the 'add' attribute
> but no 'online' attribute. udev then tries to echo 1 to the 'online'
> and it we get:
> udevd-work[2421]: error opening ATTR{/sys/devices/system/cpu/cpu2/online} for writing: No such file or directory
>
> Line 253 creates said 'online' and at that time udev [or the system admin]
> can write 1 to 'online' and the CPU goes up.
>
> So .. any thoughts? Is there some way to inhibit from uevent being sent
> until line 253 has run?

Yes.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


gregkh at linuxfoundation

Apr 30, 2012, 8:51 AM

Post #3 of 7 (196 views)
Permalink
Re: udev races with 'arch_register_cpu' to write 1 to /sys/devices/system/cpu/cpu1/online (which is not yet created). [In reply to]

On Mon, Apr 30, 2012 at 11:50:18AM -0400, Greg KH wrote:
> On Mon, Apr 30, 2012 at 11:36:23AM -0400, Konrad Rzeszutek Wilk wrote:
> > Hey Greg,
> >
> > Hoping you can help with some guidance on how to fix this.
> >
> > The issue is with CPU hotplug is that when a CPU goes up
> > it calls 'arch_register_cpu' which eventually calls
> > register_cpu. That function does these two things:
> >
> > 251 error = device_register(&cpu->dev);
> > 252 if (!error && cpu->hotpluggable)
> > 253 register_cpu_control(cpu);
> >
> > and the device_register creates a nice little SysFS directory:
> >
> > /sys/devices/system/cpu/cpu2/ which at line 251 has the 'add' attribute
> > but no 'online' attribute. udev then tries to echo 1 to the 'online'
> > and it we get:
> > udevd-work[2421]: error opening ATTR{/sys/devices/system/cpu/cpu2/online} for writing: No such file or directory
> >
> > Line 253 creates said 'online' and at that time udev [or the system admin]
> > can write 1 to 'online' and the CPU goes up.
> >
> > So .. any thoughts? Is there some way to inhibit from uevent being sent
> > until line 253 has run?
>
> Yes.

Oh, I imagine you want to know _how_ to do it too, right? (sorry, I
couldn't resist...)

Make this a default attribute of the cpu device, and then it will be
created by the driver core before the uevent is sent to userspace.
That's what you are supposed to do in the first place, adding files "by
hand" is wrong, for this very reason.

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


konrad.wilk at oracle

Apr 30, 2012, 9:17 AM

Post #4 of 7 (195 views)
Permalink
Re: udev races with 'arch_register_cpu' to write 1 to /sys/devices/system/cpu/cpu1/online (which is not yet created). [In reply to]

On Mon, Apr 30, 2012 at 11:51:49AM -0400, Greg KH wrote:
> On Mon, Apr 30, 2012 at 11:50:18AM -0400, Greg KH wrote:
> > On Mon, Apr 30, 2012 at 11:36:23AM -0400, Konrad Rzeszutek Wilk wrote:
> > > Hey Greg,
> > >
> > > Hoping you can help with some guidance on how to fix this.
> > >
> > > The issue is with CPU hotplug is that when a CPU goes up
> > > it calls 'arch_register_cpu' which eventually calls
> > > register_cpu. That function does these two things:
> > >
> > > 251 error = device_register(&cpu->dev);
> > > 252 if (!error && cpu->hotpluggable)
> > > 253 register_cpu_control(cpu);
> > >
> > > and the device_register creates a nice little SysFS directory:
> > >
> > > /sys/devices/system/cpu/cpu2/ which at line 251 has the 'add' attribute
> > > but no 'online' attribute. udev then tries to echo 1 to the 'online'
> > > and it we get:
> > > udevd-work[2421]: error opening ATTR{/sys/devices/system/cpu/cpu2/online} for writing: No such file or directory
> > >
> > > Line 253 creates said 'online' and at that time udev [or the system admin]
> > > can write 1 to 'online' and the CPU goes up.
> > >
> > > So .. any thoughts? Is there some way to inhibit from uevent being sent
> > > until line 253 has run?
> >
> > Yes.
>
> Oh, I imagine you want to know _how_ to do it too, right? (sorry, I
> couldn't resist...)

Heh.
>
> Make this a default attribute of the cpu device, and then it will be
> created by the driver core before the uevent is sent to userspace.
> That's what you are supposed to do in the first place, adding files "by
> hand" is wrong, for this very reason.

OK, will prep up a patch shortly.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


imammedo at redhat

May 10, 2013, 9:34 AM

Post #5 of 7 (161 views)
Permalink
Re: udev races with 'arch_register_cpu' to write 1 to /sys/devices/system/cpu/cpu1/online (which is not yet created) [In reply to]

>On Mon, Apr 30, 2012 at 11:51:49AM -0400, Greg KH wrote:
>> On Mon, Apr 30, 2012 at 11:50:18AM -0400, Greg KH wrote:
>> > On Mon, Apr 30, 2012 at 11:36:23AM -0400, Konrad Rzeszutek Wilk wrote:
>> > > Hey Greg,
>> > >
>> > > Hoping you can help with some guidance on how to fix this.
>> > >
>> > > The issue is with CPU hotplug is that when a CPU goes up
>> > > it calls 'arch_register_cpu' which eventually calls
>> > > register_cpu. That function does these two things:
>> > >
>> > > 251 error = device_register(&cpu->dev);
>> > > 252 if (!error && cpu->hotpluggable)
>> > > 253 register_cpu_control(cpu);
>> > >
>> > > and the device_register creates a nice little SysFS directory:
>> > >
>> > > /sys/devices/system/cpu/cpu2/ which at line 251 has the 'add' attribute
>> > > but no 'online' attribute. udev then tries to echo 1 to the 'online'
>> > > and it we get:
>> > > udevd-work[2421]: error opening ATTR{/sys/devices/system/cpu/cpu2/online} for writing: No such file or directory
>> > >
>> > > Line 253 creates said 'online' and at that time udev [or the system admin]
>> > > can write 1 to 'online' and the CPU goes up.
>> > >
>> > > So .. any thoughts? Is there some way to inhibit from uevent being sent
>> > > until line 253 has run?
>> >
>> > Yes.
>>
>> Oh, I imagine you want to know _how_ to do it too, right? (sorry, I
>> couldn't resist...)
>
>Heh.
>>
>> Make this a default attribute of the cpu device, and then it will be
>> created by the driver core before the uevent is sent to userspace.
>> That's what you are supposed to do in the first place, adding files "by
>> hand" is wrong, for this very reason.
>
>OK, will prep up a patch shortly.

Hello Konrad,

Is there a posted/accepted patch or idea was dropped?


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


konrad.wilk at oracle

May 13, 2013, 6:31 AM

Post #6 of 7 (159 views)
Permalink
Re: udev races with 'arch_register_cpu' to write 1 to /sys/devices/system/cpu/cpu1/online (which is not yet created) [In reply to]

On Fri, May 10, 2013 at 06:34:34PM +0200, Igor Mammedov wrote:
> >On Mon, Apr 30, 2012 at 11:51:49AM -0400, Greg KH wrote:
> >> On Mon, Apr 30, 2012 at 11:50:18AM -0400, Greg KH wrote:
> >> > On Mon, Apr 30, 2012 at 11:36:23AM -0400, Konrad Rzeszutek Wilk wrote:
> >> > > Hey Greg,
> >> > >
> >> > > Hoping you can help with some guidance on how to fix this.
> >> > >
> >> > > The issue is with CPU hotplug is that when a CPU goes up
> >> > > it calls 'arch_register_cpu' which eventually calls
> >> > > register_cpu. That function does these two things:
> >> > >
> >> > > 251 error = device_register(&cpu->dev);
> >> > > 252 if (!error && cpu->hotpluggable)
> >> > > 253 register_cpu_control(cpu);
> >> > >
> >> > > and the device_register creates a nice little SysFS directory:
> >> > >
> >> > > /sys/devices/system/cpu/cpu2/ which at line 251 has the 'add' attribute
> >> > > but no 'online' attribute. udev then tries to echo 1 to the 'online'
> >> > > and it we get:
> >> > > udevd-work[2421]: error opening ATTR{/sys/devices/system/cpu/cpu2/online} for writing: No such file or directory
> >> > >
> >> > > Line 253 creates said 'online' and at that time udev [or the system admin]
> >> > > can write 1 to 'online' and the CPU goes up.
> >> > >
> >> > > So .. any thoughts? Is there some way to inhibit from uevent being sent
> >> > > until line 253 has run?
> >> >
> >> > Yes.
> >>
> >> Oh, I imagine you want to know _how_ to do it too, right? (sorry, I
> >> couldn't resist...)
> >
> >Heh.
> >>
> >> Make this a default attribute of the cpu device, and then it will be
> >> created by the driver core before the uevent is sent to userspace.
> >> That's what you are supposed to do in the first place, adding files "by
> >> hand" is wrong, for this very reason.
> >
> >OK, will prep up a patch shortly.
>
> Hello Konrad,
>
> Is there a posted/accepted patch or idea was dropped?

Hey Igor,

CC-ing here Chuck here who is looking at that. My recollection (and Chuck please
correct me if I am wrong) is that the idea Greg outlined won't work very well.
The reason is that making 'online' an attribute of 'struct dev' means that:
1) A lot of SysFS attributes that have no notion of online/offline (say ISA bus)
will now have.
2) The default action item (so function) to do something based on writting/reading
from 'online' will have to be overridden by the driver using it. Which means
another race - we can create an SysFS attribute but the default points to something
that does nothing.

Chuck, does that sound right?
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


gregkh at linuxfoundation

May 13, 2013, 7:25 AM

Post #7 of 7 (160 views)
Permalink
Re: udev races with 'arch_register_cpu' to write 1 to /sys/devices/system/cpu/cpu1/online (which is not yet created) [In reply to]

On Mon, May 13, 2013 at 09:31:28AM -0400, Konrad Rzeszutek Wilk wrote:
> On Fri, May 10, 2013 at 06:34:34PM +0200, Igor Mammedov wrote:
> > >On Mon, Apr 30, 2012 at 11:51:49AM -0400, Greg KH wrote:
> > >> On Mon, Apr 30, 2012 at 11:50:18AM -0400, Greg KH wrote:
> > >> > On Mon, Apr 30, 2012 at 11:36:23AM -0400, Konrad Rzeszutek Wilk wrote:
> > >> > > Hey Greg,
> > >> > >
> > >> > > Hoping you can help with some guidance on how to fix this.
> > >> > >
> > >> > > The issue is with CPU hotplug is that when a CPU goes up
> > >> > > it calls 'arch_register_cpu' which eventually calls
> > >> > > register_cpu. That function does these two things:
> > >> > >
> > >> > > 251 error = device_register(&cpu->dev);
> > >> > > 252 if (!error && cpu->hotpluggable)
> > >> > > 253 register_cpu_control(cpu);
> > >> > >
> > >> > > and the device_register creates a nice little SysFS directory:
> > >> > >
> > >> > > /sys/devices/system/cpu/cpu2/ which at line 251 has the 'add' attribute
> > >> > > but no 'online' attribute. udev then tries to echo 1 to the 'online'
> > >> > > and it we get:
> > >> > > udevd-work[2421]: error opening ATTR{/sys/devices/system/cpu/cpu2/online} for writing: No such file or directory
> > >> > >
> > >> > > Line 253 creates said 'online' and at that time udev [or the system admin]
> > >> > > can write 1 to 'online' and the CPU goes up.
> > >> > >
> > >> > > So .. any thoughts? Is there some way to inhibit from uevent being sent
> > >> > > until line 253 has run?
> > >> >
> > >> > Yes.
> > >>
> > >> Oh, I imagine you want to know _how_ to do it too, right? (sorry, I
> > >> couldn't resist...)
> > >
> > >Heh.
> > >>
> > >> Make this a default attribute of the cpu device, and then it will be
> > >> created by the driver core before the uevent is sent to userspace.
> > >> That's what you are supposed to do in the first place, adding files "by
> > >> hand" is wrong, for this very reason.
> > >
> > >OK, will prep up a patch shortly.
> >
> > Hello Konrad,
> >
> > Is there a posted/accepted patch or idea was dropped?
>
> Hey Igor,
>
> CC-ing here Chuck here who is looking at that. My recollection (and Chuck please
> correct me if I am wrong) is that the idea Greg outlined won't work very well.
> The reason is that making 'online' an attribute of 'struct dev' means that:
> 1) A lot of SysFS attributes that have no notion of online/offline (say ISA bus)
> will now have.

Then only create that attribute for busses that ask for it to be enabled.

> 2) The default action item (so function) to do something based on
> writting/reading from 'online' will have to be overridden by the
> driver using it. Which means another race - we can create an SysFS
> attribute but the default points to something that does nothing.

I don't understand this at all, how will there be a race exactly?

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Linux kernel RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.