lkml.org 
[lkml]   [2015]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch 1/4] hotplug: Prevent alloc/free of irq descriptors during cpu up/down
On Tue, 14 Jul 2015, Boris Ostrovsky wrote:
> On 07/14/2015 11:44 AM, Thomas Gleixner wrote:
> > On Tue, 14 Jul 2015, Boris Ostrovsky wrote:
> > > > Prevent allocation and freeing of interrupt descriptors accross cpu
> > > > hotplug.
> > >
> > > This breaks Xen guests that allocate interrupt descriptors in .cpu_up().
> > And where exactly does XEN allocate those descriptors?
>
> xen_cpu_up()
> xen_setup_timer()
> bind_virq_to_irqhandler()
> bind_virq_to_irq()
> xen_allocate_irq_dynamic()
> xen_allocate_irqs_dynamic()
> irq_alloc_descs()
>
>
> There is also a similar pass via xen_cpu_up() -> xen_smp_intr_init()

Sigh.

>
> >
> > > Any chance this locking can be moved into arch code?
> > No.

The issue here is that all architectures need that protection and just
Xen does irq allocations in cpu_up.

So moving that protection into architecture code is not really an
option.

> > > Otherwise we will need to have something like arch_post_cpu_up()
> > > after the lock is released.

I'm not sure, that this will work. You probably want to do this in the
cpu prepare stage, i.e. before calling __cpu_up().

I have to walk the dogs now. Will look into it later tonight.

> > > (The patch doesn't appear to have any side effects for the down path since
> > > Xen
> > > guests deallocate descriptors in __cpu_die()).
> > Exact place please.
>
> Whose place? Where descriptors are deallocated?
>
> __cpu_die()
> xen_cpu_die()
> xen_teardown_timer()
> unbind_from_irqhandler()
> unbind_from_irq()
> __unbind_from_irq()
> xen_free_irq()
> irq_free_descs()
> free_desc()

Right, that's outside the lock held region.

Thanks,

tglx


\
 
 \ /
  Last update: 2015-07-14 19:41    [W:0.117 / U:0.204 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site