Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp1091151imm; Fri, 22 Jun 2018 10:09:24 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIQeUIrXaOJ2ndZQa8MdxQ13WdRQBRVMQ+7iRVjsG3YYLxe+dPHSqBOtIIeaLPQOkXXSbvA X-Received: by 2002:a62:b90f:: with SMTP id z15-v6mr2664814pfe.254.1529687364568; Fri, 22 Jun 2018 10:09:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529687364; cv=none; d=google.com; s=arc-20160816; b=QUGbwr1peq8hienjH/cgTGU4/UhchF1vYaEKADjSITm4SxxblU3FQ3QwsuqMf/N5iP gzAtz8WOodfN7Yij/B4WtXuRqkcAroUJjYCXqPPabvGELfof9YHiLjrwFe/ne30BeEHM LZjh+YXMabyBL1+q78NXy/i+xsbLwsu4yo0ZNa6nXFC+4CVCi3CK7CmvsJUq3U/VhBGU jrapTlnQIrNX44QQwCre03Fi7fPKgQjTkSPJ7W5nz2f502mPSkAU/oEYEk+zdN7t1otJ 0fXg5hQI8fg88lKdeZ3NHukaq9fHklp1IKeQnES0TzrathMTh0YGWWUTMkrPBAbedPtd hlnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=1XNWoGoXRuvAEhZU8/Wvpd5PyC/MuivWVe+vccr+uPM=; b=hlA1lRnK7Y1ZK5RSismRf3lQBXdXtVO7vehauWDqfsQ2YTiqQUF9z0DACmIng66ONj HZni2EN0fs0PgucMDOcp24srrr+VPwOSdouacBS7NaadbrshIiqgk8hbXnFQjRv55p+R 2/ml15ndBXQDtNBJPgzzPmxbZnqhRHxIzTh5iyZhkSpzBOOFns+956nJNdFrs8FJ5wsK 2YnYdMsWlq8oJ076WCbu5PwRysMVI+bkq1UGdKfwheFfBpgpiO/1VlSG8eBNqKWWqDz0 KMNMiXdwg1Psmtf8YUHNLwUP9/tVUDVMITDrfOP04s/YOPbYyWMYD6kntM1GNZahXq+8 7ZbQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h1-v6si6617225pgs.221.2018.06.22.10.09.09; Fri, 22 Jun 2018 10:09:24 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933927AbeFVRHs (ORCPT + 99 others); Fri, 22 Jun 2018 13:07:48 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:35430 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754677AbeFVRGc (ORCPT ); Fri, 22 Jun 2018 13:06:32 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6F0E1406E81E; Fri, 22 Jun 2018 17:06:32 +0000 (UTC) Received: from vitty.brq.redhat.com (unknown [10.43.2.155]) by smtp.corp.redhat.com (Postfix) with ESMTP id B3AD71C59F; Fri, 22 Jun 2018 17:06:30 +0000 (UTC) From: Vitaly Kuznetsov To: x86@kernel.org Cc: devel@linuxdriverproject.org, linux-kernel@vger.kernel.org, "K. Y. Srinivasan" , Haiyang Zhang , Stephen Hemminger , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Tianyu Lan , "Michael Kelley (EOSG)" Subject: [PATCH 2/4] x86/hyper-v: use 'fast' hypercall for HVCALL_SEND_IPI Date: Fri, 22 Jun 2018 19:06:23 +0200 Message-Id: <20180622170625.30688-3-vkuznets@redhat.com> In-Reply-To: <20180622170625.30688-1-vkuznets@redhat.com> References: <20180622170625.30688-1-vkuznets@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Fri, 22 Jun 2018 17:06:32 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Fri, 22 Jun 2018 17:06:32 +0000 (UTC) for IP:'10.11.54.5' DOMAIN:'int-mx05.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'vkuznets@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Current Hyper-V TLFS (v5.0b) claims that HvCallSendSyntheticClusterIpi hypercall can't be 'fast' (passing parameters through registers) but apparently this is not true, Windows always uses 'fast' version. We can do the same in Linux too. Signed-off-by: Vitaly Kuznetsov --- arch/x86/hyperv/hv_apic.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/arch/x86/hyperv/hv_apic.c b/arch/x86/hyperv/hv_apic.c index f68855499391..90055f89223b 100644 --- a/arch/x86/hyperv/hv_apic.c +++ b/arch/x86/hyperv/hv_apic.c @@ -128,10 +128,8 @@ static bool __send_ipi_mask_ex(const struct cpumask *mask, int vector) static bool __send_ipi_mask(const struct cpumask *mask, int vector) { int cur_cpu, vcpu; - struct ipi_arg_non_ex **arg; - struct ipi_arg_non_ex *ipi_arg; + struct ipi_arg_non_ex ipi_arg; int ret = 1; - unsigned long flags; if (cpumask_empty(mask)) return true; @@ -145,16 +143,8 @@ static bool __send_ipi_mask(const struct cpumask *mask, int vector) if ((ms_hyperv.hints & HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED)) return __send_ipi_mask_ex(mask, vector); - local_irq_save(flags); - arg = (struct ipi_arg_non_ex **)this_cpu_ptr(hyperv_pcpu_input_arg); - - ipi_arg = *arg; - if (unlikely(!ipi_arg)) - goto ipi_mask_done; - - ipi_arg->vector = vector; - ipi_arg->reserved = 0; - ipi_arg->cpu_mask = 0; + ipi_arg.vector = vector; + ipi_arg.cpu_mask = 0; for_each_cpu(cur_cpu, mask) { vcpu = hv_cpu_number_to_vp_number(cur_cpu); @@ -165,13 +155,13 @@ static bool __send_ipi_mask(const struct cpumask *mask, int vector) if (vcpu >= 64) goto ipi_mask_done; - __set_bit(vcpu, (unsigned long *)&ipi_arg->cpu_mask); + __set_bit(vcpu, (unsigned long *)&ipi_arg.cpu_mask); } - ret = hv_do_hypercall(HVCALL_SEND_IPI, ipi_arg, NULL); + ret = hv_do_fast_hypercall16(HVCALL_SEND_IPI, ipi_arg.vector, + ipi_arg.cpu_mask); ipi_mask_done: - local_irq_restore(flags); return ((ret == 0) ? true : false); } -- 2.14.4