[PATCH] Revert "irqbypass: do not start cons/prod when failed connect"
Zhu, Lingshan
lingshan.zhu at intel.com
Mon May 10 00:09:47 PDT 2021
On 5/10/2021 12:34 PM, Jason Wang wrote:
>
> 在 2021/5/10 上午11:00, Zhu, Lingshan 写道:
>>
>>
>> On 5/10/2021 10:43 AM, Jason Wang wrote:
>>>
>>> 在 2021/5/8 下午3:11, Zhu Lingshan 写道:
>>>> This reverts commit a979a6aa009f3c99689432e0cdb5402a4463fb88.
>>>>
>>>> The reverted commit may cause VM freeze on arm64 platform.
>>>> Because on arm64 platform, stop a consumer will suspend the VM,
>>>> the VM will freeze without a start consumer
>>>>
>>>> Signed-off-by: Zhu Lingshan <lingshan.zhu at intel.com>
>>>
>>>
>>> Acked-by: Jason Wang <jasowang at redhat.com>
>>>
>>> Please resubmit with the formal process of stable
>>> (stable-kernel-rules.rst).
>> sure, I will re-submit it to stable kernel once it is merged into
>> Linus tree.
>>
>> Thanks
>
>
> I think it's better to resubmit (option 1), see how
> stable-kernel-rules.rst said:
>
> ""
>
> :ref:`option_1` is **strongly** preferred, is the easiest and most
> common.
> :ref:`option_2` and :ref:`option_3` are more useful if the patch isn't
> deemed
> worthy at the time it is applied to a public git tree (for instance,
> because
> it deserves more regression testing first).
>
> """
>
> Thanks
OK, works for me, I will add cc stable, and resubmit it soon
Thanks!
>
>
>>>
>>> Thanks
>>>
>>>
>>>> ---
>>>> virt/lib/irqbypass.c | 16 ++++++----------
>>>> 1 file changed, 6 insertions(+), 10 deletions(-)
>>>>
>>>> diff --git a/virt/lib/irqbypass.c b/virt/lib/irqbypass.c
>>>> index c9bb3957f58a..28fda42e471b 100644
>>>> --- a/virt/lib/irqbypass.c
>>>> +++ b/virt/lib/irqbypass.c
>>>> @@ -40,21 +40,17 @@ static int __connect(struct irq_bypass_producer
>>>> *prod,
>>>> if (prod->add_consumer)
>>>> ret = prod->add_consumer(prod, cons);
>>>> - if (ret)
>>>> - goto err_add_consumer;
>>>> -
>>>> - ret = cons->add_producer(cons, prod);
>>>> - if (ret)
>>>> - goto err_add_producer;
>>>> + if (!ret) {
>>>> + ret = cons->add_producer(cons, prod);
>>>> + if (ret && prod->del_consumer)
>>>> + prod->del_consumer(prod, cons);
>>>> + }
>>>> if (cons->start)
>>>> cons->start(cons);
>>>> if (prod->start)
>>>> prod->start(prod);
>>>> -err_add_producer:
>>>> - if (prod->del_consumer)
>>>> - prod->del_consumer(prod, cons);
>>>> -err_add_consumer:
>>>> +
>>>> return ret;
>>>> }
>>>
>>
>
More information about the linux-arm-kernel
mailing list