From: Avi Kivity on
On 02/24/2010 11:41 AM, Jan Kiszka wrote:
> Thomas Gleixner wrote:
>
>> On Tue, 23 Feb 2010, Jan Kiszka wrote:
>>
>>
>>> Thomas Gleixner wrote:
>>>
>>>> The i8254/i8259 locks need to be real spinlocks on preempt-rt. Convert
>>>> them to raw_spinlock. No change for !RT kernels.
>>>>
>>> Doesn't fly for -rt anymore: pic_irq_update runs under this raw lock and
>>> calls kvm_vcpu_kick which tries to wake_up some thread -> scheduling
>>> while atomic.
>>>
>> Hmm, a wakeup itself is fine. Is that code waking a wake queue ?
>>
> Yes, it's a wake queue.
>

So what's the core issue? Is the lock_t in the wait_queue a sleeping mutex?

> This restores the deferred VCPU kicking before 956f97cf. We need this
> over -rt as wake_up* requires non-atomic context in this configuration.
>
>

Seems sane, will apply once I understand why the current code fails.

--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Jan Kiszka on
Avi Kivity wrote:
> On 02/24/2010 11:41 AM, Jan Kiszka wrote:
>> Thomas Gleixner wrote:
>>
>>> On Tue, 23 Feb 2010, Jan Kiszka wrote:
>>>
>>>
>>>> Thomas Gleixner wrote:
>>>>
>>>>> The i8254/i8259 locks need to be real spinlocks on preempt-rt. Convert
>>>>> them to raw_spinlock. No change for !RT kernels.
>>>>>
>>>> Doesn't fly for -rt anymore: pic_irq_update runs under this raw lock and
>>>> calls kvm_vcpu_kick which tries to wake_up some thread -> scheduling
>>>> while atomic.
>>>>
>>> Hmm, a wakeup itself is fine. Is that code waking a wake queue ?
>>>
>> Yes, it's a wake queue.
>>
>
> So what's the core issue? Is the lock_t in the wait_queue a sleeping mutex?

Yep.

Jan

--
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Avi Kivity on
On 02/24/2010 11:54 AM, Jan Kiszka wrote:
> Avi Kivity wrote:
>
>> On 02/24/2010 11:41 AM, Jan Kiszka wrote:
>>
>>> Thomas Gleixner wrote:
>>>
>>>
>>>> On Tue, 23 Feb 2010, Jan Kiszka wrote:
>>>>
>>>>
>>>>
>>>>> Thomas Gleixner wrote:
>>>>>
>>>>>
>>>>>> The i8254/i8259 locks need to be real spinlocks on preempt-rt. Convert
>>>>>> them to raw_spinlock. No change for !RT kernels.
>>>>>>
>>>>>>
>>>>> Doesn't fly for -rt anymore: pic_irq_update runs under this raw lock and
>>>>> calls kvm_vcpu_kick which tries to wake_up some thread -> scheduling
>>>>> while atomic.
>>>>>
>>>>>
>>>> Hmm, a wakeup itself is fine. Is that code waking a wake queue ?
>>>>
>>>>
>>> Yes, it's a wake queue.
>>>
>>>
>> So what's the core issue? Is the lock_t in the wait_queue a sleeping mutex?
>>
> Yep.
>

I see. Won't we hit the same issue when we call pic functions from
atomic context during the guest entry sequence?

--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Avi Kivity on
On 02/24/2010 12:13 PM, Jan Kiszka wrote:
>
>
>> I see. Won't we hit the same issue when we call pic functions from
>> atomic context during the guest entry sequence?
>>
>>
> If there are such call paths, for sure. What concrete path(s) do you
> have in mind?
>
>

vcpu_enter_guest() -> inject_pending_event() ->
kvm_cpu_{has,get}_interrupt() -> various pic functions if you're unlucky.

--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Jan Kiszka on
Avi Kivity wrote:
> On 02/24/2010 11:54 AM, Jan Kiszka wrote:
>> Avi Kivity wrote:
>>
>>> On 02/24/2010 11:41 AM, Jan Kiszka wrote:
>>>
>>>> Thomas Gleixner wrote:
>>>>
>>>>
>>>>> On Tue, 23 Feb 2010, Jan Kiszka wrote:
>>>>>
>>>>>
>>>>>
>>>>>> Thomas Gleixner wrote:
>>>>>>
>>>>>>
>>>>>>> The i8254/i8259 locks need to be real spinlocks on preempt-rt. Convert
>>>>>>> them to raw_spinlock. No change for !RT kernels.
>>>>>>>
>>>>>>>
>>>>>> Doesn't fly for -rt anymore: pic_irq_update runs under this raw lock and
>>>>>> calls kvm_vcpu_kick which tries to wake_up some thread -> scheduling
>>>>>> while atomic.
>>>>>>
>>>>>>
>>>>> Hmm, a wakeup itself is fine. Is that code waking a wake queue ?
>>>>>
>>>>>
>>>> Yes, it's a wake queue.
>>>>
>>>>
>>> So what's the core issue? Is the lock_t in the wait_queue a sleeping mutex?
>>>
>> Yep.
>>
>
> I see. Won't we hit the same issue when we call pic functions from
> atomic context during the guest entry sequence?
>

If there are such call paths, for sure. What concrete path(s) do you
have in mind?

Jan

--
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/