Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp448814imu; Mon, 5 Nov 2018 03:38:52 -0800 (PST) X-Google-Smtp-Source: AJdET5elFcV5+hX0D1/4BCFI1d4NRW6mfnsdTZO+QSEmCmDSnB6H4f2UzvRu5HUss2+jNnFOjbo7 X-Received: by 2002:a63:7044:: with SMTP id a4mr19307983pgn.359.1541417932726; Mon, 05 Nov 2018 03:38:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541417932; cv=none; d=google.com; s=arc-20160816; b=Pqp3hFG+tBb8y32HTkRlb8RdCGEv4jehoxbw3T/T3tcoBSiJWy9iqWyoUvU7P0lJU6 qJeZrQcn5hSeM/VLclXNYHvGIWJ+VJkvFj0DzK5LjAEUGg798CexvUZQdMBc4jNSFdkd Hxo6ezogF+buVxaz+tIDp5idDEoxazfLQEUYejd8Rnv3fDxhzgeOg8SUx9L/hEiP6NTX p8DNRZ5k2srRh9MtnrlJL+O+4OCxfAc8FkBv2ej+IVmrM0epZXNxhtp0JQz+D8/vEVFe ddFKOdsHib8/Ewz169pSMfL0+KMKdfIdEnxY2gXd3X/35p5tTeozKKk3g/EoffrhCGV7 D3tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-disposition :content-transfer-encoding:mime-version:robot-unsubscribe:robot-id :git-commit-id:subject:to:references:in-reply-to:reply-to:cc :message-id:from:date; bh=RyTCdCfHdSsfeA4xZB9uCkup2CCAADSZ3vI1z6C/0YM=; b=JlL/TTaa1dQrW3kMx8gyMbAVV6xdrJaBoCQhjsVxLdA4W7M+/pkDGDR5Mc/TfdLHGI 51Z3HfEXZOWtUbjy+1svq3xxhOnfovZg8HYbL08//lTz20eMgHQyfYCVdJsV1rFDn91J g8db+Rn9eMakiRbgy/DxKGFoofTxg/xsM1oWCu5t1tPygavynU+V5a429FEAsaUMmlbi fs7/h2GJBZejhVF026+DhhE/rdd17UJCbCVkjOo7YIV3IfqrqfVKCMgPSRIpgSiMOSWA nR5HPjK2sBwAdqeQgAyMbmFZ6R6hARx8YBbw+prfjHRbHFJEQXG9IwU6xN7IMA2RKJvQ 33BQ== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r16-v6si41164262pgv.548.2018.11.05.03.38.37; Mon, 05 Nov 2018 03:38:52 -0800 (PST) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727332AbeKEU5c (ORCPT + 99 others); Mon, 5 Nov 2018 15:57:32 -0500 Received: from terminus.zytor.com ([198.137.202.136]:39535 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726319AbeKEU5c (ORCPT ); Mon, 5 Nov 2018 15:57:32 -0500 Received: from terminus.zytor.com (localhost [127.0.0.1]) by terminus.zytor.com (8.15.2/8.15.2) with ESMTPS id wA5BapER314610 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Mon, 5 Nov 2018 03:36:51 -0800 Received: (from tipbot@localhost) by terminus.zytor.com (8.15.2/8.15.2/Submit) id wA5Bapff314607; Mon, 5 Nov 2018 03:36:51 -0800 Date: Mon, 5 Nov 2018 03:36:51 -0800 X-Authentication-Warning: terminus.zytor.com: tipbot set sender to tipbot@zytor.com using -f From: tip-bot for Eial Czerwacki Message-ID: Cc: tglx@linutronix.de, mingo@kernel.org, hpa@zytor.com, eial@scalemp.com, jgross@suse.com, shai@scalemp.com, linux-kernel@vger.kernel.org Reply-To: linux-kernel@vger.kernel.org, shai@scalemp.com, jgross@suse.com, eial@scalemp.com, mingo@kernel.org, hpa@zytor.com, tglx@linutronix.de In-Reply-To: <1541404864-31603-1-git-send-email-eial@scalemp.com> References: <1541404864-31603-1-git-send-email-eial@scalemp.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/urgent] x86/vsmp: Remove dependency on pv_irq_ops Git-Commit-ID: 7f2d7f8190d856949d8aaab55d3902cd10ea1048 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline X-Spam-Status: No, score=-0.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DATE_IN_FUTURE_96_Q autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on terminus.zytor.com Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 7f2d7f8190d856949d8aaab55d3902cd10ea1048 Gitweb: https://git.kernel.org/tip/7f2d7f8190d856949d8aaab55d3902cd10ea1048 Author: Eial Czerwacki AuthorDate: Mon, 5 Nov 2018 10:01:04 +0200 Committer: Thomas Gleixner CommitDate: Mon, 5 Nov 2018 12:33:47 +0100 x86/vsmp: Remove dependency on pv_irq_ops vsmp dependency on pv_irq_ops has been removed some years ago, but the code still deals with pv_irq_ops. In short, "cap & ctl & (1 << 4)" is always returning 0, so all PARAVIRT/PARAVIRT_XXL code related to that can be removed. However, the rest of the code depends on CONFIG_PCI, so fix it accordingly. Rename set_vsmp_pv_ops to set_vsmp_ctl as the original name does not make sense anymore. [ tglx: Minor changelog tweaks ] Signed-off-by: Eial Czerwacki Signed-off-by: Thomas Gleixner Acked-by: Shai Fultheim Cc: Juergen Gross Link: https://lkml.kernel.org/r/1541404864-31603-1-git-send-email-eial@scalemp.com --- arch/x86/Kconfig | 1 - arch/x86/kernel/vsmp_64.c | 84 ++++------------------------------------------- 2 files changed, 7 insertions(+), 78 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index ba7e3464ee92..9d734f3c8234 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -525,7 +525,6 @@ config X86_VSMP bool "ScaleMP vSMP" select HYPERVISOR_GUEST select PARAVIRT - select PARAVIRT_XXL depends on X86_64 && PCI depends on X86_EXTENDED_PLATFORM depends on SMP diff --git a/arch/x86/kernel/vsmp_64.c b/arch/x86/kernel/vsmp_64.c index 1eae5af491c2..48625766c7a4 100644 --- a/arch/x86/kernel/vsmp_64.c +++ b/arch/x86/kernel/vsmp_64.c @@ -26,65 +26,8 @@ #define TOPOLOGY_REGISTER_OFFSET 0x10 -#if defined CONFIG_PCI && defined CONFIG_PARAVIRT_XXL -/* - * Interrupt control on vSMPowered systems: - * ~AC is a shadow of IF. If IF is 'on' AC should be 'off' - * and vice versa. - */ - -asmlinkage __visible unsigned long vsmp_save_fl(void) -{ - unsigned long flags = native_save_fl(); - - if (!(flags & X86_EFLAGS_IF) || (flags & X86_EFLAGS_AC)) - flags &= ~X86_EFLAGS_IF; - return flags; -} -PV_CALLEE_SAVE_REGS_THUNK(vsmp_save_fl); - -__visible void vsmp_restore_fl(unsigned long flags) -{ - if (flags & X86_EFLAGS_IF) - flags &= ~X86_EFLAGS_AC; - else - flags |= X86_EFLAGS_AC; - native_restore_fl(flags); -} -PV_CALLEE_SAVE_REGS_THUNK(vsmp_restore_fl); - -asmlinkage __visible void vsmp_irq_disable(void) -{ - unsigned long flags = native_save_fl(); - - native_restore_fl((flags & ~X86_EFLAGS_IF) | X86_EFLAGS_AC); -} -PV_CALLEE_SAVE_REGS_THUNK(vsmp_irq_disable); - -asmlinkage __visible void vsmp_irq_enable(void) -{ - unsigned long flags = native_save_fl(); - - native_restore_fl((flags | X86_EFLAGS_IF) & (~X86_EFLAGS_AC)); -} -PV_CALLEE_SAVE_REGS_THUNK(vsmp_irq_enable); - -static unsigned __init vsmp_patch(u8 type, void *ibuf, - unsigned long addr, unsigned len) -{ - switch (type) { - case PARAVIRT_PATCH(irq.irq_enable): - case PARAVIRT_PATCH(irq.irq_disable): - case PARAVIRT_PATCH(irq.save_fl): - case PARAVIRT_PATCH(irq.restore_fl): - return paravirt_patch_default(type, ibuf, addr, len); - default: - return native_patch(type, ibuf, addr, len); - } - -} - -static void __init set_vsmp_pv_ops(void) +#if defined CONFIG_PCI +static void __init set_vsmp_ctl(void) { void __iomem *address; unsigned int cap, ctl, cfg; @@ -109,28 +52,12 @@ static void __init set_vsmp_pv_ops(void) } #endif - if (cap & ctl & (1 << 4)) { - /* Setup irq ops and turn on vSMP IRQ fastpath handling */ - pv_ops.irq.irq_disable = PV_CALLEE_SAVE(vsmp_irq_disable); - pv_ops.irq.irq_enable = PV_CALLEE_SAVE(vsmp_irq_enable); - pv_ops.irq.save_fl = PV_CALLEE_SAVE(vsmp_save_fl); - pv_ops.irq.restore_fl = PV_CALLEE_SAVE(vsmp_restore_fl); - pv_ops.init.patch = vsmp_patch; - ctl &= ~(1 << 4); - } writel(ctl, address + 4); ctl = readl(address + 4); pr_info("vSMP CTL: control set to:0x%08x\n", ctl); early_iounmap(address, 8); } -#else -static void __init set_vsmp_pv_ops(void) -{ -} -#endif - -#ifdef CONFIG_PCI static int is_vsmp = -1; static void __init detect_vsmp_box(void) @@ -164,11 +91,14 @@ static int is_vsmp_box(void) { return 0; } +static void __init set_vsmp_ctl(void) +{ +} #endif static void __init vsmp_cap_cpus(void) { -#if !defined(CONFIG_X86_VSMP) && defined(CONFIG_SMP) +#if !defined(CONFIG_X86_VSMP) && defined(CONFIG_SMP) && defined(CONFIG_PCI) void __iomem *address; unsigned int cfg, topology, node_shift, maxcpus; @@ -221,6 +151,6 @@ void __init vsmp_init(void) vsmp_cap_cpus(); - set_vsmp_pv_ops(); + set_vsmp_ctl(); return; }