>>> On 19.11.14 at 17:44, wrote:
> On Fri, Nov 14, 2014 at 11:11:46AM -0500, Konrad Rzeszutek Wilk wrote:
>> On Fri, Nov 14, 2014 at 03:13:42PM +, Jan Beulich wrote:
>> > >>> On 12.11.14 at 03:23, wrote:
>> > > +static void pt_pirq_softirq_reset(struct hvm_pirq_dpci *pirq_dpci)
>> > > +{
>> >
On Fri, Nov 14, 2014 at 11:11:46AM -0500, Konrad Rzeszutek Wilk wrote:
> On Fri, Nov 14, 2014 at 03:13:42PM +, Jan Beulich wrote:
> > >>> On 12.11.14 at 03:23, wrote:
> > > +static void pt_pirq_softirq_reset(struct hvm_pirq_dpci *pirq_dpci)
> > > +{
> > > +struct domain *d = pirq_dpci->dom
>>> On 14.11.14 at 17:11, wrote:
> On Fri, Nov 14, 2014 at 03:13:42PM +, Jan Beulich wrote:
>> >>> On 12.11.14 at 03:23, wrote:
>> > +static void pt_pirq_softirq_reset(struct hvm_pirq_dpci *pirq_dpci)
>> > +{
>> > +struct domain *d = pirq_dpci->dom;
>> > +
>> > +ASSERT(spin_is_locked(
On Fri, Nov 14, 2014 at 03:13:42PM +, Jan Beulich wrote:
> >>> On 12.11.14 at 03:23, wrote:
> > +static void pt_pirq_softirq_reset(struct hvm_pirq_dpci *pirq_dpci)
> > +{
> > +struct domain *d = pirq_dpci->dom;
> > +
> > +ASSERT(spin_is_locked(&d->event_lock));
> > +
> > +switch (
>>> On 12.11.14 at 03:23, wrote:
> +static void pt_pirq_softirq_reset(struct hvm_pirq_dpci *pirq_dpci)
> +{
> +struct domain *d = pirq_dpci->dom;
> +
> +ASSERT(spin_is_locked(&d->event_lock));
> +
> +switch ( cmpxchg(&pirq_dpci->state, 1 << STATE_SCHED, 0) )
> +{
> +case (1 <<
The existing tasklet mechanism has a single global
spinlock that is taken every-time the global list
is touched. And we use this lock quite a lot - when
we call do_tasklet_work which is called via an softirq
and from the idle loop. We take the lock on any
operation on the tasklet_list.
The problem