Received: by 2002:a05:7412:5112:b0:fa:6e18:a558 with SMTP id fm18csp465349rdb; Tue, 23 Jan 2024 05:19:33 -0800 (PST) X-Google-Smtp-Source: AGHT+IFyAHY8c2pgg4l0489ma0NKdFgViFNiHaolG2auP8puwlyauwAggFY0iA9nDSylCskO/+TC X-Received: by 2002:a05:620a:1723:b0:783:a93f:9f7f with SMTP id az35-20020a05620a172300b00783a93f9f7fmr1503874qkb.88.1706015973658; Tue, 23 Jan 2024 05:19:33 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706015973; cv=pass; d=google.com; s=arc-20160816; b=Yr6F3YL1iASXSogFQEGK4VJZjagbSGO6fCpx23DcnZv63G6JPDiW6U1BR84d2/iHbs eylqTdrvTwKiJgiVeYdPNLoi3KivzJWWE1UDGhhWw/X1pLAdE6esHaPR6NAQUWx4UgGS 7KKvMe1+lsX9EiwfgabRtvaVxLZLfERYm+nymHF+3hcXZLzAdyWslo59JIDedph1N9dt f6pTGfvCeQmGmjF41RmEKPxSL8HtuDVp0Jxj0aLkFI1nPO+wPw/XIHeledeeg0Rodoki rbYDPkhpGhzhu5FZuIX6eRvQTEkkp+29wLa8DYfkt5szKNzrw3oNmXQQSgwloDZTysDA d0EA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=date:mime-version:list-unsubscribe:list-subscribe:list-id :precedence:references:subject:cc:to:from:dkim-signature :dkim-signature:message-id; bh=kMpbD1VU1nu86eLTMCHECRFHSSIbIijtpAP8E+y+cAc=; fh=Te0fDPJ/sd+7p881M6fa/oF213lBbJvGdEFWr/TLqNA=; b=ESryPvN2PTRd/O5gqPEHHRmhd0ONMOdjXFZoz762rR6jv9VqDbbbNCoR2So2CAdN+q MfKkql/j9IJqr04UiQR3exftsx2BfxS7JLGVFNWF3lTZbHMFrYGQZNndpGYLJxmvuh+a iqlP9WTh80z6dt/9Hb19gb3A3HL1dXBnztFdmORy8O2wSjY6h7HydX8BdHJUDeH0lcLx tu4WQTxVRPKuHwU83hGVhuGp14SffYy+12pUgPXaVlsrJ0jA800ZLenrHWr75F40zOMP HUlgIwhAd/LjzBkm0L6pCPRA32h2pzsWAkbtCgIFf47HIMT4KqQ4mlLx2PiJj567hcQX G6dA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=vZ9RCMwl; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e; arc=pass (i=1 spf=pass spfdomain=linutronix.de dkim=pass dkdomain=linutronix.de dmarc=pass fromdomain=linutronix.de); spf=pass (google.com: domain of linux-kernel+bounces-35351-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-35351-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id o25-20020a05620a229900b007839eec53c9si4337018qkh.91.2024.01.23.05.19.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Jan 2024 05:19:33 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-35351-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=vZ9RCMwl; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e; arc=pass (i=1 spf=pass spfdomain=linutronix.de dkim=pass dkdomain=linutronix.de dmarc=pass fromdomain=linutronix.de); spf=pass (google.com: domain of linux-kernel+bounces-35351-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-35351-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 9E6391C2757E for ; Tue, 23 Jan 2024 13:18:37 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 93DA5633F4; Tue, 23 Jan 2024 13:11:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="vZ9RCMwl"; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="scjIdNdh" Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6BCE063124 for ; Tue, 23 Jan 2024 13:11:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706015466; cv=none; b=aH5s9VsKg6SZxTSw7fzYzpFqDdnNxOHjeaXF/Pef9+StTYUMIDHGO6dR9IC+b9STG2mY5WGAUtLMT67V2pVx3pMQfBgGHQO4C93riZk8h4LwWLsF+R8pFHo4Na27HAgaixD6A4uVmt/9amrT69yENqKRIinT2upezQNEa6cEuWo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706015466; c=relaxed/simple; bh=2wV7ykerxk1/jQA/W/5bsZ8RwfdIrkcxyTy4F0//EiM=; h=Message-ID:From:To:Cc:Subject:References:MIME-Version: Content-Type:Date; b=buYwDVoxjXEtxAREpmJZoVhshId50eWgtaZ2BBBl2bsD5EEl6rBmpVQ9SUxEDsOcG8gZEKObWfgTptGRXdH3xbh7E4l12Z5cONty/eA7nImH+RIlKQJa4Ate8qFO1pkjDuKR+uWv5vi4Eib6MKCFuCcp3D2MY2Ap+9iEiKZuU54= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=vZ9RCMwl; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=scjIdNdh; arc=none smtp.client-ip=193.142.43.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de Message-ID: <20240118123649.004729855@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1706015463; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=kMpbD1VU1nu86eLTMCHECRFHSSIbIijtpAP8E+y+cAc=; b=vZ9RCMwlv2xR3Su3DwRWadenZREgrkyTjimh+GLRXeVelaPiZSHdvc7g49JNPqXvM+oQk/ 4bd1nRqM+orgW8DE67VCxGFqc6SHdb20ZGv1rXXGFKRWi9BgsOg/mY2vinHX2BnjxTdLRD 0zuCVKQlgU5ToOesDNfkYZE6t/i8ircClAMC5heSiEWogZ18/USs0h/yxV3Do+QDlY93OZ oio9cvWri8ihyNmzXZPAm7QYndpiCYnChU2D+AsJXIBPWGNb7aSMG4ZGg0XAVBMGVjI595 DB0nhmJkL8r7U+icqsETrxAPJlsR1yOE5CqEzwZ53uh/XR1nHHEkj7Urfm10xA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1706015463; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=kMpbD1VU1nu86eLTMCHECRFHSSIbIijtpAP8E+y+cAc=; b=scjIdNdhyTN0nIAf8DAJEiprw5v7CK0zkgP8+4nx91HKkGkLRMHNTJEe3XyJFYatmx2IcH PDD5e/zcs0EcaqBg== From: Thomas Gleixner To: LKML Cc: x86@kernel.org, Tom Lendacky , Andrew Cooper , Arjan van de Ven , Huang Rui , Juergen Gross , Dimitri Sivanich , Sohil Mehta , K Prateek Nayak , Kan Liang , Zhang Rui , "Paul E. McKenney" , Feng Tang , Andy Shevchenko , Michael Kelley , "Peter Zijlstra (Intel)" Subject: [patch v2 08/30] x86/xen/smp_pv: Register fake APICs References: <20240118123127.055361964@linutronix.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Date: Tue, 23 Jan 2024 14:11:02 +0100 (CET) From: Thomas Gleixner XENPV does not use the APIC. It's just piggy packing on the infrastructure and fiddles with global variables as it sees fit. These global variables are going away, so let XENPV register pseudo APIC IDs to keep the accounting correct and keep up the illusion that XEN/PV is something sane. Signed-off-by: Thomas Gleixner --- arch/x86/xen/smp_pv.c | 35 +++++++++-------------------------- 1 file changed, 9 insertions(+), 26 deletions(-) --- --- a/arch/x86/xen/smp_pv.c +++ b/arch/x86/xen/smp_pv.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -150,34 +151,16 @@ int xen_smp_intr_init_pv(unsigned int cp static void __init xen_pv_smp_config(void) { - int i, rc; - unsigned int subtract = 0; + u32 apicid = 0; + int i; - num_processors = 0; - disabled_cpus = 0; - for (i = 0; i < nr_cpu_ids; i++) { - rc = HYPERVISOR_vcpu_op(VCPUOP_is_up, i, NULL); - if (rc >= 0) { - num_processors++; - set_cpu_possible(i, true); - } else { - set_cpu_possible(i, false); - set_cpu_present(i, false); - subtract++; - } + topology_register_boot_apic(apicid++); + + for (i = 1; i < nr_cpu_ids; i++) { + if (HYPERVISOR_vcpu_op(VCPUOP_is_up, i, NULL) < 0) + break; + topology_register_apic(apicid++, CPU_ACPIID_INVALID, true); } -#ifdef CONFIG_HOTPLUG_CPU - /* This is akin to using 'nr_cpus' on the Linux command line. - * Which is OK as when we use 'dom0_max_vcpus=X' we can only - * have up to X, while nr_cpu_ids is greater than X. This - * normally is not a problem, except when CPU hotplugging - * is involved and then there might be more than X CPUs - * in the guest - which will not work as there is no - * hypercall to expand the max number of VCPUs an already - * running guest has. So cap it up to X. */ - if (subtract) - set_nr_cpu_ids(nr_cpu_ids - subtract); -#endif /* Pretend to be a proper enumerated system */ smp_found_config = 1; }