From patchwork Mon Aug 7 13:53:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Gleixner X-Patchwork-Id: 132096 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c44e:0:b0:3f2:4152:657d with SMTP id w14csp1495798vqr; Mon, 7 Aug 2023 07:36:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH5/yCToHsh21lETqy6DUaX2XvrDtMZf+I3pmmoDool4t4cHBAc3zH2roub4L8V+f67eVMB X-Received: by 2002:a05:6a20:9691:b0:137:9622:17b7 with SMTP id hp17-20020a056a20969100b00137962217b7mr7200554pzc.25.1691418965738; Mon, 07 Aug 2023 07:36:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691418965; cv=none; d=google.com; s=arc-20160816; b=1Cgmr3cAjplFx8x68vrvkq/35ZcIt58lXzAYeEqnHlCppQnxLVeIz+t/sDFdtxye1K +IpdsgR3DIKS6lRt2r2vbDH9hRNPvoW8Q/mg6RDtOmK4O8zgY+LKw8+kNyNhtCTa/78R geO7mLF4mSY3dSqR6yIRr9O4lPchlQO3LqAi7m1IX2o/ztpCWWgkPsOjyEv5Q+3wSmww 3zRxl07PDM3IkproX7CsoSReHyFuJdghk5sQnkk7LrPM7kw84r/Zr8DxU3jC/DBvNX0o kpYAbF1eRh0FdNc3ZH+Hf0V39dh6ig/7DtWub8qEv+jYsagwqAt50irGkm2WG2IyvdFS BRoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:mime-version:references:subject:cc:to:from :dkim-signature:dkim-signature:message-id; bh=SKlzH88G4hUFDWBSbGuVUg+96Wfddo4akvXYLyLOQ0U=; fh=/92WVKYrcN3rA268QXyKzVtm/UtxHeI2lnbU295XDiQ=; b=HAsIOOR1c2IYa/usAUyCigq3yG2i/cOcW8hx/HxEABbL5nZCaC/i/o3uyKRyRAouAB 2yHjMcHgBEcfyXoxSvswS+fh0mCR7YdZQstD3rpOVKejD87mKg/86tZdqPzdlEfQ3ANA VWJMNVgGzDo3IGPsfqEMTzRb9QsQHgAa9qwI/2FVms+VCQqJykCwb+kDgYj3Vb2l0MfF H32MVriyqcZDN7G01Z/d0He2e4M4ADXKHHHO5gHxQuaME27imuZENrLjWaIVsNS0pVJH 7Cmg3UI+A2JKMX3vzgjl8qKXsX1y6oHnzjuHgphffHqZyvbNRTLcI3kwYK6imgUaqKr7 wrJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=vrJ4kiRE; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e header.b=vGkLYQFg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p68-20020a634247000000b0055793097dbdsi5494587pga.453.2023.08.07.07.35.52; Mon, 07 Aug 2023 07:36:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=vrJ4kiRE; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e header.b=vGkLYQFg; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233384AbjHGNyg (ORCPT + 99 others); Mon, 7 Aug 2023 09:54:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41364 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234552AbjHGNx2 (ORCPT ); Mon, 7 Aug 2023 09:53:28 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B5E210D9 for ; Mon, 7 Aug 2023 06:53:22 -0700 (PDT) Message-ID: <20230807135028.004788526@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1691416401; 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=SKlzH88G4hUFDWBSbGuVUg+96Wfddo4akvXYLyLOQ0U=; b=vrJ4kiRElUPDhd5ikOKv+S14H4YOQL8Bp8OblgGZVQMv3oy1scK69+GIg1Cd0QmFtSkBe/ NhyxK6A2SLwbZ6O1bGmvjMKjcoV4pqXkY0ChqTjKARMu2S/1sp2TXquw8zpIbT4dE6BvvK 2okS/+bAHAHxo7JSmFdLqS+g9nl55jYhaJdN71Qg4pHuQy0fGlBweyDCQCidaWGkH9pbq8 IXUrHy8AhByBSJgX5cPfJtz0XflZYcyFYFE4TYa2H9t6x00swfYPNU6m+u5ZDft/CT8Xui c9zkphgAlQBCmXFtfYBx5Be86huRP+ifA45K3+lCKAz/lf5+piIDM0BGla9pig== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1691416401; 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=SKlzH88G4hUFDWBSbGuVUg+96Wfddo4akvXYLyLOQ0U=; b=vGkLYQFg9IyCb4CuMg3u0ak1In3y9Aw8zkFF315GdSQ+L2R/cmHuKyVVCQTOg2aGZXPirl hUVUl5QtH1GZHdCA== From: Thomas Gleixner To: LKML Cc: x86@kernel.org, Tom Lendacky , Andrew Cooper , Arjan van de Ven , Huang Rui , Juergen Gross , Dimitri Sivanich , Michael Kelley , Sohil Mehta , K Prateek Nayak , Kan Liang , Zhang Rui , "Paul E. McKenney" , Feng Tang , Andy Shevchenko Subject: [patch 30/53] x86/xen/smp_pv: Register fake APICs References: <20230807130108.853357011@linutronix.de> MIME-Version: 1.0 Date: Mon, 7 Aug 2023 15:53:20 +0200 (CEST) X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773581333577445266 X-GMAIL-MSGID: 1773581333577445266 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; }