From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3B72DC433ED for ; Mon, 10 May 2021 03:00:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0AF98613D6 for ; Mon, 10 May 2021 03:00:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230215AbhEJDB4 (ORCPT ); Sun, 9 May 2021 23:01:56 -0400 Received: from mga05.intel.com ([192.55.52.43]:21244 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229670AbhEJDB4 (ORCPT ); Sun, 9 May 2021 23:01:56 -0400 IronPort-SDR: 6qd5Kxqh9nrymG/viMa26NW014kv8W0uhu9kGerF8fhXvP+feoRvsBJcZO1UgVKhSKWCPBH2KE mWqf6P+KYYtA== X-IronPort-AV: E=McAfee;i="6200,9189,9979"; a="284581979" X-IronPort-AV: E=Sophos;i="5.82,286,1613462400"; d="scan'208";a="284581979" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 May 2021 20:00:52 -0700 IronPort-SDR: uhZUQngbuGEQq0E1Bk7Pmkzto28JvYBFdcwQNt85aUpzZFrDhbnyklFDUPSNkQ4wyJETH7Xnd5 t9ejrt3/uhrg== X-IronPort-AV: E=Sophos;i="5.82,286,1613462400"; d="scan'208";a="435941124" Received: from lingshan-mobl5.ccr.corp.intel.com (HELO [10.254.212.136]) ([10.254.212.136]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 May 2021 20:00:49 -0700 Subject: Re: [PATCH] Revert "irqbypass: do not start cons/prod when failed connect" To: Jason Wang , mst@redhat.com, maz@kernel.org, alex.williamson@redhat.com Cc: kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, cohuck@redhat.com, stable@vger.kernel.org References: <20210508071152.722425-1-lingshan.zhu@intel.com> From: "Zhu, Lingshan" Message-ID: Date: Mon, 10 May 2021 11:00:46 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org 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 > > > Acked-by: Jason Wang > > 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 > > 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; >>   } >