From nobody Tue Feb 10 06:07:49 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1654527317; cv=none; d=zohomail.com; s=zohoarc; b=Fh70Wp10iTXBz0NfOFkpDb7sXOxtpH7mXj9LzLmD6M1S1JhJaVW9htW/6l2C7ps5ln95+MD3N7/jdpK6uwG3xaNCxekyll70DtL/uyfe7dXIwfJjGGeOo89XHL7WSn8RFWNGPUOMuVToekoTC/7pkdOmlYWn1/3rJNuzeXPE4Xc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1654527317; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0Lrvdmzz0T81NDthejZxcrRFndwFvF+/chJqMFxJ2sI=; b=Qj2tL5S1H0qKwDULHyRpHd+l/6k0v0WSyQYhqmOJ0fLse18itctK8KFf5JH7EICIrankezzfszC2hLaCIdzlKOqxypwuDR3ckuRttW6OWPOyDH3TDwosPm+XP3BkutNlau2g+7INP1dLQ6PvafkawMCBds7IEVrjacSYiA4/Oh8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1654527317414281.0476803212166; Mon, 6 Jun 2022 07:55:17 -0700 (PDT) Received: from localhost ([::1]:56976 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nyE8S-00089h-6L for importer@patchew.org; Mon, 06 Jun 2022 10:55:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:51110) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nyDrA-0002Do-RI for qemu-devel@nongnu.org; Mon, 06 Jun 2022 10:37:24 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]:47286) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nyDr8-0000bW-Vb for qemu-devel@nongnu.org; Mon, 06 Jun 2022 10:37:24 -0400 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-659-pWklu4ZDM7q8yuDv1ZglhA-1; Mon, 06 Jun 2022 10:37:21 -0400 Received: by mail-wr1-f69.google.com with SMTP id m18-20020adff392000000b0021848a78a53so350080wro.19 for ; Mon, 06 Jun 2022 07:37:21 -0700 (PDT) Received: from goa-sendmail ([93.56.169.184]) by smtp.gmail.com with ESMTPSA id c9-20020adfe749000000b002108ab90e5asm15652885wrn.58.2022.06.06.07.37.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Jun 2022 07:37:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1654526242; 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: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0Lrvdmzz0T81NDthejZxcrRFndwFvF+/chJqMFxJ2sI=; b=Wcu9QOZ0s17qeCGHJFV1HkAa6wIklmV82j4SeMHu5rwHaUqNQzyjPYKF1xCQ2i5VwVosve NXU6rvHUMxfkicW9hgnjR4pCUPgm2DEP4tkhtdDz5fV0cEbqoQ/X5m5G1B1TbjBKpBm3xh Sy7uk++nW8c3ZsL+JJ4A8hwHxiHao4U= X-MC-Unique: pWklu4ZDM7q8yuDv1ZglhA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0Lrvdmzz0T81NDthejZxcrRFndwFvF+/chJqMFxJ2sI=; b=waMTnde5YYw3f5zN7j5U97Iiaxzj5eqPM8eIOQpqIF1Y1Zs4yAB9qAmhZP2juSUR9L NMQdVMQ6oeNRs637LA6BSGlsMLmaeKcPn1KxJL0pMbcmLTmmU01QsMeznKWctdNBuY0f 2cMXnfCggvDl4uz3ZZOBi+n3f+4OSourkjQmXhwUEMwFIU11Gdx7dkn0N8jHCen19FTy q6HXHf55shWNpgkJVjnBQPFis7fBuEkeNCnUxPg2SIzBGFh0rM+A5b3zYhxucVE52tfC YDT8uGpSYcXK9wpbOvWW5Y/7Skod+r+oi5RiGUmEVVjkNThBSP5akt1lqHgXCkfe1so+ /6+w== X-Gm-Message-State: AOAM530D77eyaGGuaWHpZsiI5L8AUxtiZiam6gITZ8e8fEOhSiD26fLY ADRo+jPIb1phkXaqtTL/xcIM/NTslqNV1jjIwZmSFOZdvQfYqP8DGhOjD5hghF/4e32oty1y6IZ fwhzQSvdiDS1n1y4IrmLm8PsIskITUBgHRqNWlvoET0T97MPGTqQT4YYdzMKii8mQSTs= X-Received: by 2002:a05:600c:4e4d:b0:397:5009:bcf1 with SMTP id e13-20020a05600c4e4d00b003975009bcf1mr52168806wmq.66.1654526239251; Mon, 06 Jun 2022 07:37:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw5lOX0YqmvEtZHIssRajiSmdSgZoarJMLaMxsThWPFjxdASCibEcuhe8xqyf8488o0uy3oiQ== X-Received: by 2002:a05:600c:4e4d:b0:397:5009:bcf1 with SMTP id e13-20020a05600c4e4d00b003975009bcf1mr52168755wmq.66.1654526238720; Mon, 06 Jun 2022 07:37:18 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Cc: Igor Mammedov Subject: [PULL 17/29] x86: cpu: fixup number of addressable IDs for logical processors sharing cache Date: Mon, 6 Jun 2022 16:36:32 +0200 Message-Id: <20220606143644.1151112-18-pbonzini@redhat.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220606143644.1151112-1-pbonzini@redhat.com> References: <20220606143644.1151112-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -21 X-Spam_score: -2.2 X-Spam_bar: -- X-Spam_report: (-2.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1654527318563100001 Content-Type: text/plain; charset="utf-8" From: Igor Mammedov When QEMU is started with '-cpu host,host-cache-info=3Don', it will passthrough host's number of logical processors sharing cache and number of processor cores in the physical package. QEMU already fixes up the later to correctly reflect number of configured cores for VM, however number of logical processors sharing cache is still comes from host CPU, which confuses guest started with: -machine q35,accel=3Dkvm \ -cpu host,host-cache-info=3Don,l3-cache=3Doff \ -smp 20,sockets=3D2,dies=3D1,cores=3D10,threads=3D1 \ -numa node,nodeid=3D0,memdev=3Dram-node0 \ -numa node,nodeid=3D1,memdev=3Dram-node1 \ -numa cpu,socket-id=3D0,node-id=3D0 \ -numa cpu,socket-id=3D1,node-id=3D1 on 2 socket Xeon 4210R host with 10 cores per socket with CPUID[04H]: ... --- cache 3 --- cache type =3D unified cache (3) cache level =3D 0x3 (3) self-initializing cache level =3D true fully associative cache =3D false maximum IDs for CPUs sharing cache =3D 0x1f (31) maximum IDs for cores in pkg =3D 0xf (15) ... that doesn't match number of logical processors VM was configured with and as result RHEL 9.0 guest complains: sched: CPU #10's llc-sibling CPU #0 is not on the same node! [node: 1 != =3D 0]. Ignoring dependency. WARNING: CPU: 10 PID: 0 at arch/x86/kernel/smpboot.c:421 topology_sane.i= sra.0+0x67/0x80 ... Call Trace: set_cpu_sibling_map+0x176/0x590 start_secondary+0x5b/0x150 secondary_startup_64_no_verify+0xc2/0xcb Fix it by capping max number of logical processors to vcpus/socket as it was configured, which fixes the issue. Signed-off-by: Igor Mammedov Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=3D2088311 Message-Id: <20220524151020.2541698-3-imammedo@redhat.com> Signed-off-by: Paolo Bonzini --- target/i386/cpu.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 94cc4a8700..6a57ef13af 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -5284,10 +5284,22 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index= , uint32_t count, /* cache info: needed for Core compatibility */ if (cpu->cache_info_passthrough) { x86_cpu_get_cache_cpuid(index, count, eax, ebx, ecx, edx); - /* QEMU gives out its own APIC IDs, never pass down bits 31..2= 6. */ - *eax &=3D ~0xFC000000; - if ((*eax & 31) && cs->nr_cores > 1) { - *eax |=3D (pow2ceil(cs->nr_cores) - 1) << 26; + /* + * QEMU has its own number of cores/logical cpus, + * set 24..14, 31..26 bit to configured values + */ + if (*eax & 31) { + int host_vcpus_per_cache =3D 1 + ((*eax & 0x3FFC000) >> 14= ); + int vcpus_per_socket =3D env->nr_dies * cs->nr_cores * + cs->nr_threads; + if (cs->nr_cores > 1) { + *eax &=3D ~0xFC000000; + *eax |=3D (pow2ceil(cs->nr_cores) - 1) << 26; + } + if (host_vcpus_per_cache > vcpus_per_socket) { + *eax &=3D ~0x3FFC000; + *eax |=3D (pow2ceil(vcpus_per_socket) - 1) << 14; + } } } else if (cpu->vendor_cpuid_only && IS_AMD_CPU(env)) { *eax =3D *ebx =3D *ecx =3D *edx =3D 0; --=20 2.36.1