From nobody Mon Mar 20 20:47:53 2023 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 4PgRdP3mdVz40DvQ; Mon, 20 Mar 2023 20:47:53 +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 4PgRdP1xqgz3kg0; Mon, 20 Mar 2023 20:47:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1679345273; 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=yCPFO/VKdCQRRU7ZRfMna44fKSFwlS47a2WSgmWRbNs=; b=rXySzQPqPjdSfJ90OQHTqdkX4GfqI1hrt0mBGv+o59f33s4S/FFPp3IZkzTSr551vT2NsJ +libYDRy5h/2s3lOclq3HM+BI2pwR5COOSX3HcevdMVWv8Mvpu0X1kzuyt8rDof+oaO9km BmZoFJDAMeOPPIEWxgh2HRG8iNTl0gWhTKDohJDBna3X8nhfOq+fjWj4Qsme4OEQT7LuM1 YQ0F7KfZtWnNLiHmVnkE71w0urEuk9D5NDO1w4JDeedVFeLLDLUChNQbCDAOAr/QV5Fxsp 2SGhPmtZgWpQxoIVDiHF0/4Fe2f7Da5oyCE8Sl9ntqvAqTocB5bKOVolP7ukuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1679345273; 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=yCPFO/VKdCQRRU7ZRfMna44fKSFwlS47a2WSgmWRbNs=; b=IH+huZg6E0k65NdP1cwECnB3Foqaup/n0hQb8+7Tl5c5/Y3Okn73j6cZeQsA5H3hfXyaHb zbWyuQjNFaIMB8/q6nMv4HTIgopNw30qeuhybGI80qA4rG/dY5BehytndW/JXAUHLiC+Id tm5tf7hLGTbG3XiIfGflg7FbZVMGLyHXzjJjeTi4pUJDZWiFz0nuJuGssqn53i2GjQBojj Ln7QgUUeOa0oC6Mg6L7US/zxqlu5v6UzIl2GjMdvuYyRSo4CGJzZahW/mJB/FjzlxSxIjY H5Y416xWEv+bYIaklgRas01mP+nt1KJQkOriSbwx/2mTMvy6+cGvcVPsBBQSAQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1679345273; a=rsa-sha256; cv=none; b=fHkyDLKs9M3eJUCgWDUitZkDoU73vSbbgXMCRJk/VxL4DwVT0dfa1BWUL243dwEY//xRPH 62AbCD4cY7xij/RyD6GuT++que47TmqVKbxkG+dH/vIRh/3c51Nzfpdks94hAQvwE7H+3W Yfn2BAtlG0eIvkMOPciOZWgapLXbJc6kboCMj/qRU02zyOJt0vuStLWZR/UdnD2Olz6XZi Yv+bcMRM/h9vIFb2k74Y2J/J+KjZykN2lZdlTxBPYkpr3RMT+F4ROGffn9X452vTAmSyeD 4xog+eFF5r0GOWhV+FXLEnMf9FHfzNs1A2G1+0wmkEOvhjoHb7n2kBVSoz7Dxw== 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 4PgRdP11QzzlG5; Mon, 20 Mar 2023 20:47:53 +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 32KKlrlK083374; Mon, 20 Mar 2023 20:47:53 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 32KKlrbx083372; Mon, 20 Mar 2023 20:47:53 GMT (envelope-from git) Date: Mon, 20 Mar 2023 20:47:53 GMT Message-Id: <202303202047.32KKlrbx083372@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: =?utf-8?Q?Jean-S=C3=A9bastien=20P=C3=A9dron?= Subject: git: d780c6a6abb5 - main - x86/pci_early_quirks: Support Intel 11th+ gen 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: dumbbell X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d780c6a6abb5275c8c7219539553d51ac94a023e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by dumbbell: URL: https://cgit.FreeBSD.org/src/commit/?id=d780c6a6abb5275c8c7219539553d51ac94a023e commit d780c6a6abb5275c8c7219539553d51ac94a023e Author: Jean-Sébastien Pédron AuthorDate: 2023-03-13 14:28:22 +0000 Commit: Jean-Sébastien Pédron CommitDate: 2023-03-20 20:47:36 +0000 x86/pci_early_quirks: Support Intel 11th+ gen Newer Intel CPUs/iGPUs use a new method to determine the base address of the stolen memory. This code was ported from Linux. Reviewed by: manu Approved by: manu Differential Revision: https://reviews.freebsd.org/D39057 --- sys/x86/pci/pci_early_quirks.c | 26 ++++++++++++ sys/x86/pci/pci_early_quirks.h | 95 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+) diff --git a/sys/x86/pci/pci_early_quirks.c b/sys/x86/pci/pci_early_quirks.c index 29788cdd19d4..b9de1d78e022 100644 --- a/sys/x86/pci/pci_early_quirks.c +++ b/sys/x86/pci/pci_early_quirks.c @@ -71,6 +71,19 @@ intel_stolen_base_gen3(int bus, int slot, int func) return (val); } +static vm_paddr_t +intel_stolen_base_gen11(int bus, int slot, int func) +{ + uint32_t ctrl; + vm_paddr_t val; + + ctrl = pci_cfgregread(bus, slot, func, INTEL_GEN11_BSM_DW0, 4); + val = ctrl & INTEL_BSM_MASK; + val |= (uint64_t)pci_cfgregread( + bus, slot, func, INTEL_GEN11_BSM_DW1, 4) << 32; + return (val); +} + static vm_paddr_t intel_stolen_size_gen3(int bus, int slot, int func) { @@ -201,6 +214,11 @@ static const struct intel_stolen_ops intel_stolen_ops_chv = { .size = intel_stolen_size_chv, }; +static const struct intel_stolen_ops intel_stolen_ops_gen11 = { + .base = intel_stolen_base_gen11, + .size = intel_stolen_size_gen9, +}; + static const struct pci_device_id intel_ids[] = { INTEL_I915G_IDS(&intel_stolen_ops_gen3), INTEL_I915GM_IDS(&intel_stolen_ops_gen3), @@ -228,6 +246,14 @@ static const struct pci_device_id intel_ids[] = { INTEL_CFL_IDS(&intel_stolen_ops_gen9), INTEL_GLK_IDS(&intel_stolen_ops_gen9), INTEL_CNL_IDS(&intel_stolen_ops_gen9), + INTEL_ICL_11_IDS(&intel_stolen_ops_gen11), + INTEL_EHL_IDS(&intel_stolen_ops_gen11), + INTEL_JSL_IDS(&intel_stolen_ops_gen11), + INTEL_TGL_12_IDS(&intel_stolen_ops_gen11), + INTEL_RKL_IDS(&intel_stolen_ops_gen11), + INTEL_ADLS_IDS(&intel_stolen_ops_gen11), + INTEL_ADLP_IDS(&intel_stolen_ops_gen11), + INTEL_RPLS_IDS(&intel_stolen_ops_gen11), }; /* diff --git a/sys/x86/pci/pci_early_quirks.h b/sys/x86/pci/pci_early_quirks.h index fcb8e3ab1f1e..5267a5b3e303 100644 --- a/sys/x86/pci/pci_early_quirks.h +++ b/sys/x86/pci/pci_early_quirks.h @@ -39,6 +39,8 @@ #define PCI_CLASS_VGA 0x0300 #define INTEL_BSM 0x5c +#define INTEL_GEN11_BSM_DW0 0xc0 +#define INTEL_GEN11_BSM_DW1 0xc4 #define INTEL_BSM_MASK (-(1u << 20)) #define INTEL_GMCH_CTRL 0x52 @@ -477,4 +479,97 @@ INTEL_VGA_DEVICE(0x8A71, info), \ INTEL_VGA_DEVICE(0x8A70, info) +/* EHL */ +#define INTEL_EHL_IDS(info) \ + INTEL_VGA_DEVICE(0x4541, info), \ + INTEL_VGA_DEVICE(0x4551, info), \ + INTEL_VGA_DEVICE(0x4555, info), \ + INTEL_VGA_DEVICE(0x4557, info), \ + INTEL_VGA_DEVICE(0x4571, info) + +/* JSL */ +#define INTEL_JSL_IDS(info) \ + INTEL_VGA_DEVICE(0x4E51, info), \ + INTEL_VGA_DEVICE(0x4E55, info), \ + INTEL_VGA_DEVICE(0x4E57, info), \ + INTEL_VGA_DEVICE(0x4E61, info), \ + INTEL_VGA_DEVICE(0x4E71, info) + +/* TGL */ +#define INTEL_TGL_12_GT1_IDS(info) \ + INTEL_VGA_DEVICE(0x9A60, info), \ + INTEL_VGA_DEVICE(0x9A68, info), \ + INTEL_VGA_DEVICE(0x9A70, info) + +#define INTEL_TGL_12_GT2_IDS(info) \ + INTEL_VGA_DEVICE(0x9A40, info), \ + INTEL_VGA_DEVICE(0x9A49, info), \ + INTEL_VGA_DEVICE(0x9A59, info), \ + INTEL_VGA_DEVICE(0x9A78, info), \ + INTEL_VGA_DEVICE(0x9AC0, info), \ + INTEL_VGA_DEVICE(0x9AC9, info), \ + INTEL_VGA_DEVICE(0x9AD9, info), \ + INTEL_VGA_DEVICE(0x9AF8, info) + +#define INTEL_TGL_12_IDS(info) \ + INTEL_TGL_12_GT1_IDS(info), \ + INTEL_TGL_12_GT2_IDS(info) + +/* RKL */ +#define INTEL_RKL_IDS(info) \ + INTEL_VGA_DEVICE(0x4C80, info), \ + INTEL_VGA_DEVICE(0x4C8A, info), \ + INTEL_VGA_DEVICE(0x4C8B, info), \ + INTEL_VGA_DEVICE(0x4C8C, info), \ + INTEL_VGA_DEVICE(0x4C90, info), \ + INTEL_VGA_DEVICE(0x4C9A, info) + +/* DG1 */ +#define INTEL_DG1_IDS(info) \ + INTEL_VGA_DEVICE(0x4905, info), \ + INTEL_VGA_DEVICE(0x4906, info), \ + INTEL_VGA_DEVICE(0x4907, info), \ + INTEL_VGA_DEVICE(0x4908, info), \ + INTEL_VGA_DEVICE(0x4909, info) + +/* ADL-S */ +#define INTEL_ADLS_IDS(info) \ + INTEL_VGA_DEVICE(0x4680, info), \ + INTEL_VGA_DEVICE(0x4682, info), \ + INTEL_VGA_DEVICE(0x4688, info), \ + INTEL_VGA_DEVICE(0x468A, info), \ + INTEL_VGA_DEVICE(0x4690, info), \ + INTEL_VGA_DEVICE(0x4692, info), \ + INTEL_VGA_DEVICE(0x4693, info) + +/* ADL-P */ +#define INTEL_ADLP_IDS(info) \ + INTEL_VGA_DEVICE(0x46A0, info), \ + INTEL_VGA_DEVICE(0x46A1, info), \ + INTEL_VGA_DEVICE(0x46A2, info), \ + INTEL_VGA_DEVICE(0x46A3, info), \ + INTEL_VGA_DEVICE(0x46A6, info), \ + INTEL_VGA_DEVICE(0x46A8, info), \ + INTEL_VGA_DEVICE(0x46AA, info), \ + INTEL_VGA_DEVICE(0x462A, info), \ + INTEL_VGA_DEVICE(0x4626, info), \ + INTEL_VGA_DEVICE(0x4628, info), \ + INTEL_VGA_DEVICE(0x46B0, info), \ + INTEL_VGA_DEVICE(0x46B1, info), \ + INTEL_VGA_DEVICE(0x46B2, info), \ + INTEL_VGA_DEVICE(0x46B3, info), \ + INTEL_VGA_DEVICE(0x46C0, info), \ + INTEL_VGA_DEVICE(0x46C1, info), \ + INTEL_VGA_DEVICE(0x46C2, info), \ + INTEL_VGA_DEVICE(0x46C3, info) + +/* RPL-S */ +#define INTEL_RPLS_IDS(info) \ + INTEL_VGA_DEVICE(0xA780, info), \ + INTEL_VGA_DEVICE(0xA781, info), \ + INTEL_VGA_DEVICE(0xA782, info), \ + INTEL_VGA_DEVICE(0xA783, info), \ + INTEL_VGA_DEVICE(0xA788, info), \ + INTEL_VGA_DEVICE(0xA789, info) + #endif /* _PCI_EARLY_QUIRKS_H_ */