From nobody Mon Jan 17 16:22:16 2022 X-Original-To: dev-commits-src-all@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 38EE8196D566; Mon, 17 Jan 2022 16:22:17 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Jcxy03jKTz3DY2; Mon, 17 Jan 2022 16:22:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1642436536; 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=GL3Nc0QDESuWCpbTtzoTEzk38iaKRIr7ZJHF4ZV04oo=; b=pibuyw1k7u7+hIYxacVg37yXl46eRq0va1wgZ+W9pAZsC+LH1jVanr79D/httjfR1x8edq hxQjoB39Y7Blv5zraZVFGK4KjzfThKCluM6dldKa9b2i/bRkUUIfKjjbHl3uWrXESfaOWh l35iBbZ+c3lmFqp1n+WYZwewhyAHcdc+wEIpPqi0JCXlC24ecgWKRPdWiKri5LTXsXq7uF TNydN6vvzWbu3uwv4k5FEjWLwTkSChb5+zo4jvWqrXUSs/qi+CzRHvRnkY8p3Q41DtT9PF vi95Opw8LUFhv/gtrPt3ARipmd4nWlvzdnjRrOVAX0HMrLx79Qq9TIHvU27qDQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4D397111BE; Mon, 17 Jan 2022 16:22:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 20HGMG6P018560; Mon, 17 Jan 2022 16:22:16 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 20HGMGBm018551; Mon, 17 Jan 2022 16:22:16 GMT (envelope-from git) Date: Mon, 17 Jan 2022 16:22:16 GMT Message-Id: <202201171622.20HGMGBm018551@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Emmanuel Vadot Subject: git: 5775540d36dd - stable/13 - bhyve: add more slop to 64 bit BARs List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: manu X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 5775540d36ddb7d4d5d0cd26d2365ca84060aec5 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1642436536; 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=GL3Nc0QDESuWCpbTtzoTEzk38iaKRIr7ZJHF4ZV04oo=; b=a/imtLtZbB/pAX2zuvvIAqAuC4Q/I/ws0u+dChteFHfB1t3djLNC0N0z9V2DgteNYl1jQw 1zB25t2tdMQJONKG7qIn1VJmt0AI12po/gOJwXRZTtxx8DNwjRE2QGlBAxF1hu4NdH/M44 bBqQu/u7Fq3TwimcgeDl3iPfTQ/bFvbMk/Oc0ZVS1JVZj5Az7Q3vhVDoupwBIH/+9sOiYF ilu4SzmRRptPX7k0gShZt3WxGc5KWh+WQpRbPTba0W0k1AdRGJpw6s6ZJVPiY2K4GOmcYn nDfyB4/PAL/7Ys+56LtqZXhxUo3mNMKun4taHFqBANeMXzh+/4ZVayuqvMXHFA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1642436536; a=rsa-sha256; cv=none; b=H2sDJcNGDSLlNy8rbkdhZD4LKXbL2R8VKUzyfQ+1B9IISpndWxVDy9BaBXf4D3WPxylRUf D6Cs6P+EhyWc2cMs5xonJOAh5qJ2nRdMAy2M0HPjMbZYS5/vhrDzIqBhdjNqK/oO3HZ4vg 4vNCUwb4igx6j7wmADPFWcDxlp2IsCGSB/bW4MGemjZEi2EUjvuZ1mp+qvvsuhjFsg3eq8 +XbFxdJa5ca4UJG8cLxomjBVqK8S5HziPgFehhtr8pxmIBVkPTOuW06rhwp3Spm7YxD/NK 901HK7Wp9prA00TuOdSJ3lB7Lv3VvHRZR8js2oiM+w04Zh1voIr/wPP4z4Xd+Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by manu: URL: https://cgit.FreeBSD.org/src/commit/?id=5775540d36ddb7d4d5d0cd26d2365ca84060aec5 commit 5775540d36ddb7d4d5d0cd26d2365ca84060aec5 Author: Corvin Köhne AuthorDate: 2022-01-03 13:19:39 +0000 Commit: Emmanuel Vadot CommitDate: 2022-01-17 12:53:22 +0000 bhyve: add more slop to 64 bit BARs Bhyve allocates small 64 bit BARs below 4 GB and generates ACPI tables based on this allocation. If the guest decides to relocate those BARs above 4 GB, it could lead to mismatching ACPI tables. Especially when using OVMF with enabled bus enumeration it could cause issues. OVMF relocates all 64 bit BARs above 4 GB. The guest OS may be unable to recover from this situation and disables some PCI devices because their BARs are located outside of the MMIO space reported by ACPI. Avoid this situation by giving the guest more space for relocating BARs. Let's be paranoid. The available space for BARs below 4 GB is 512 MB large. Use a slop of 512 MB. It'll allow the guest to relocate all BARs below 4 GB to an address above 4 GB. We could run into issues when we exceeding the memlimit above 4 GB. However, this space has a size of 32 GB. Even when using many PCI device with large BARs like framebuffer or when using multiple PCI busses, it's very unlikely that we run out of space due to the large slop. Additionally, this situation will occur on startup and not at runtime which is much better. Reviewed by: markj MFC after: 2 weeks Sponsored by: Beckhoff Automation GmbH & Co. KG Differential Revision: https://reviews.freebsd.org/D33118 (cherry picked from commit 7d55d295086e0f568b42c89604fad3e47633b2ed) --- usr.sbin/bhyve/pci_emul.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/usr.sbin/bhyve/pci_emul.c b/usr.sbin/bhyve/pci_emul.c index 4365cda234b3..e9c88922b0ef 100644 --- a/usr.sbin/bhyve/pci_emul.c +++ b/usr.sbin/bhyve/pci_emul.c @@ -1218,7 +1218,8 @@ pci_ecfg_base(void) } #define BUSIO_ROUNDUP 32 -#define BUSMEM_ROUNDUP (1024 * 1024) +#define BUSMEM32_ROUNDUP (1024 * 1024) +#define BUSMEM64_ROUNDUP (512 * 1024 * 1024) int init_pci(struct vmctx *ctx) @@ -1320,14 +1321,14 @@ init_pci(struct vmctx *ctx) pci_emul_iobase = roundup2(pci_emul_iobase, BUSIO_ROUNDUP); bi->iolimit = pci_emul_iobase; - pci_emul_membase32 += BUSMEM_ROUNDUP; + pci_emul_membase32 += BUSMEM32_ROUNDUP; pci_emul_membase32 = roundup2(pci_emul_membase32, - BUSMEM_ROUNDUP); + BUSMEM32_ROUNDUP); bi->memlimit32 = pci_emul_membase32; - pci_emul_membase64 += BUSMEM_ROUNDUP; + pci_emul_membase64 += BUSMEM64_ROUNDUP; pci_emul_membase64 = roundup2(pci_emul_membase64, - BUSMEM_ROUNDUP); + BUSMEM64_ROUNDUP); bi->memlimit64 = pci_emul_membase64; }