From nobody Sat Mar 28 05:56:28 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fjRbK29W9z6XbWQ for ; Sat, 28 Mar 2026 05:56:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fjRbJ6RZTz3qK8 for ; Sat, 28 Mar 2026 05:56:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774677388; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=saGhouzWvVZFoPgjxC023S1wlUN+ZbUxvYB30Yh8y3Q=; b=I1qTdz0namTExbA124GG86uOs3vcWMsA0hEeJvEIzzvhljO/C0Rn6G7HyE4wNOXPlrA7oZ zW1DsL4MjS3xPmcAJ2A/WiGqNqEn/6IxdGqkQ55Eh83f0GccBXr2uBw9Iia8j2meIhItVe jb5/s15+sDTP8skAxafFkor6IFebTD7ZPMm+1pBvBgFgYEpnmRobsoIMNWe60Le+l+0FO8 cynwiDcZ1r0dFropZmJ6gPtj1YkVm7du1s8CZWDaFAvaAxG+xgzI8WP57aNxHl7IWw8BGe kg1ZhAYqNutjUlUPdoevM2d9ft1PGCEh7EBsQ07BW6mf9GY+OYwd1pF0JTiUtA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774677388; a=rsa-sha256; cv=none; b=aDft4zo6sooJny+gGm8x2J1g3GFKp7VSxwlJBflCOP+ohRFTIrv3xn0n+jWANB9/zOlWDQ AjcrWh16cFxcGZi5PLpGgRvCXlR7tac8dGL43gk2bVsK6hgewIrg+udWt1eUUoiUE1/XaO DrEmzO9XJGIuRQFsSj4t1wvw2eAjfu+v4pyEjDyl9RmZUp+pMkj1+oBtIE3XD+RcwuIu4s /xIkWznzcJJEVv6tRLpeN+C3O7x5VkPFOLVb+NaRqtxGDnG/MWsLsVVcG5ywx8H9znvazp nQ2wEaX6Tq+qITKEy8XqBsS1UAR/psiPqmbMg5K9w0gUwmEaO6QR8mqxgTDuMw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774677388; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=saGhouzWvVZFoPgjxC023S1wlUN+ZbUxvYB30Yh8y3Q=; b=kw77QWXmoMTHWYgB+5H5ypznI+KPf4o9Ff66TPVjlw55lXmqVXql7d1o/+n4a+lQB4JqwY gHZVubHIHq9FotkB79b3f18LGj7yqmF+NZExVTG92m+ymKMtCNDBGUVsmdnqtnSq97nYtz 2Or+HhDv6tf9TyNCN3RKwrUCF85PFB4LTNbwSRrEYqIfuse7eVATaoJNGI0r2/YZdLsqQV JwCjvjFkXQNFqFIoG9Z+ZmeTdEV+wp3RGrV7uj+g4r8l5DCJHubrDZOLZ0mKdBfhxBsuKq 3lDkM0WpjumDL1WCtHXMkM03qLPfc4o7QNv/nqyUUdpRtyOOFWG5jD3rNvj2ow== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fjRbJ5wdnz1CDw for ; Sat, 28 Mar 2026 05:56:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3e2c5 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 28 Mar 2026 05:56:28 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Colin Percival Subject: git: d9db6d759dfc - main - x86: Add stub for Extended Destination ID support List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: cperciva X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d9db6d759dfcf4a4559e66e777599bb3fa8ca14c Auto-Submitted: auto-generated Date: Sat, 28 Mar 2026 05:56:28 +0000 Message-Id: <69c76d8c.3e2c5.628c6a14@gitrepo.freebsd.org> The branch main has been updated by cperciva: URL: https://cgit.FreeBSD.org/src/commit/?id=d9db6d759dfcf4a4559e66e777599bb3fa8ca14c commit d9db6d759dfcf4a4559e66e777599bb3fa8ca14c Author: Colin Percival AuthorDate: 2026-03-16 23:37:04 +0000 Commit: Colin Percival CommitDate: 2026-03-28 05:54:00 +0000 x86: Add stub for Extended Destination ID support Without an IOMMU, the APIC standard only allows 8 bits of Destination ID for MSI messages, limiting us to 256 CPUs. While IOMMUs can allow for more than 256 CPUs to be supported, they are not necessarily desirable in virtualized environments. The Extended Destination ID standard authored by David Woodhouse uses 7 "Reserved" bits for the high bits of a 15-bit Extended Destination ID in order to address this: http://david.woodhou.se/ExtDestId.pdf Add a loader tunable machdep.apic_ext_dest_id to control the use of this feature; the default value (-1) means "autodetect" while 0 and 1 mean disabled and enabled respectively. Code to detect host support in Xen, Hyper-V, KVM, and Bhyve will come in future commits, as will the code to use this setting in msi_map and ioapic_program_intpin. Tested on: EC2 r8i.96xlarge MFC after: 3 weeks Sponsored by: Amazon Differential Revision: https://reviews.freebsd.org/D55890 --- sys/x86/include/apicvar.h | 1 + sys/x86/x86/local_apic.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/sys/x86/include/apicvar.h b/sys/x86/include/apicvar.h index 551f5527ac00..c2f4414ec8db 100644 --- a/sys/x86/include/apicvar.h +++ b/sys/x86/include/apicvar.h @@ -265,6 +265,7 @@ device_t ioapic_get_dev(u_int apic_id); extern int x2apic_mode; extern int lapic_eoi_suppression; +extern int apic_ext_dest_id; #ifdef _SYS_SYSCTL_H_ SYSCTL_DECL(_hw_apic); diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c index 888fd266d364..21934b41ea62 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -2086,6 +2086,17 @@ apic_setup_local(void *dummy __unused) } SYSINIT(apic_setup_local, SI_SUB_CPU, SI_ORDER_SECOND, apic_setup_local, NULL); +/* Are we in a VM which supports the Extended Destination ID standard? */ +int apic_ext_dest_id = -1; +SYSCTL_INT(_machdep, OID_AUTO, apic_ext_dest_id, CTLFLAG_RDTUN, &apic_ext_dest_id, 0, + "Use APIC Extended Destination IDs"); + +/* Detect support for Extended Destination IDs. */ +static void +detect_extended_dest_id(void) +{ +} + /* * Setup the I/O APICs. */ @@ -2097,6 +2108,10 @@ apic_setup_io(void *dummy __unused) if (best_enum == NULL) return; + /* Check hypervisor support for extended destination IDs. */ + if (apic_ext_dest_id == -1) + detect_extended_dest_id(); + /* * Local APIC must be registered before other PICs and pseudo PICs * for proper suspend/resume order.