Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754223AbcKYM5O (ORCPT ); Fri, 25 Nov 2016 07:57:14 -0500 Received: from mx1.redhat.com ([209.132.183.28]:60820 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753052AbcKYM5G (ORCPT ); Fri, 25 Nov 2016 07:57:06 -0500 From: Vitaly Kuznetsov To: devel@linuxdriverproject.org Cc: linux-kernel@vger.kernel.org, "K. Y. Srinivasan" , Haiyang Zhang , Dexuan Cui , Stephen Hemminger Subject: [PATCH 5/7] hv: check all present cpus in vmbus_wait_for_unload() Date: Fri, 25 Nov 2016 13:48:41 +0100 Message-Id: <1480078123-17582-6-git-send-email-vkuznets@redhat.com> In-Reply-To: <1480078123-17582-1-git-send-email-vkuznets@redhat.com> References: <1480078123-17582-1-git-send-email-vkuznets@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Fri, 25 Nov 2016 12:48:55 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1185 Lines: 33 It should never happen, but let's get prepared to receiving a confirmation for VMBus unload on an offlined CPU. As we allocate all structures for all present CPUs now it's safe. Signed-off-by: Vitaly Kuznetsov --- drivers/hv/channel_mgmt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/hv/channel_mgmt.c b/drivers/hv/channel_mgmt.c index 1bc1d479..5011c95 100644 --- a/drivers/hv/channel_mgmt.c +++ b/drivers/hv/channel_mgmt.c @@ -674,7 +674,7 @@ static void vmbus_wait_for_unload(void) if (completion_done(&vmbus_connection.unload_event)) break; - for_each_online_cpu(cpu) { + for_each_present_cpu(cpu) { page_addr = hv_context.synic_message_page[cpu]; msg = (struct hv_message *)page_addr + VMBUS_MESSAGE_SINT; @@ -700,7 +700,7 @@ static void vmbus_wait_for_unload(void) * maybe-pending messages on all CPUs to be able to receive new * messages after we reconnect. */ - for_each_online_cpu(cpu) { + for_each_present_cpu(cpu) { page_addr = hv_context.synic_message_page[cpu]; msg = (struct hv_message *)page_addr + VMBUS_MESSAGE_SINT; msg->header.message_type = HVMSG_NONE; -- 2.7.4