Lenovo ThinkPad T14 Gen3 (Intel)
From Gentoo Wiki
Following article aims to make the Lenovo ThinkPad T14 Gen3 (21AH) usable on Gentoo.
Hardware information
lscpu
root #
lscpu
Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 46 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 16 On-line CPU(s) list: 0-15 Vendor ID: GenuineIntel BIOS Vendor ID: Intel(R) Corporation Model name: 12th Gen Intel(R) Core(TM) i7-1270P BIOS Model name: 12th Gen Intel(R) Core(TM) i7-1270P None CPU @ 2.2GHz BIOS CPU family: 198 CPU family: 6 Model: 154 Thread(s) per core: 2 Core(s) per socket: 12 Socket(s): 1 Stepping: 3 CPU(s) scaling MHz: 63% CPU max MHz: 4800.0000 CPU min MHz: 400.0000 BogoMIPS: 4993.00 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdse ed adx smap clflushopt clwb intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves split_lock_detect avx_vnni dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp hwp_pkg_req hfi vnmi umip pku osp ke waitpkg gfni vaes vpclmulqdq tme rdpid movdiri movdir64b fsrm md_clear serialize pconfig arch_lbr ibt flush_l1d arch_capabilities
lspci
root #
lspci -nnk
00:00.0 Host bridge [0600]: Intel Corporation Device [8086:4621] (rev 02) Subsystem: Lenovo Device [17aa:22e8] Kernel driver in use: igen6_edac Kernel modules: igen6_edac 00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-P Integrated Graphics Controller [8086:46a6] (rev 0c) Subsystem: Lenovo Alder Lake-P Integrated Graphics Controller [17aa:22e8] Kernel driver in use: i915 Kernel modules: i915 00:04.0 Signal processing controller [1180]: Intel Corporation Alder Lake Innovation Platform Framework Processor Participant [8086:461d] (rev 02) Subsystem: Lenovo Alder Lake Innovation Platform Framework Processor Participant [17aa:22e8] Kernel driver in use: proc_thermal_pci Kernel modules: processor_thermal_device_pci 00:06.0 PCI bridge [0604]: Intel Corporation 12th Gen Core Processor PCI Express x4 Controller #0 [8086:464d] (rev 02) Subsystem: Lenovo 12th Gen Core Processor PCI Express x4 Controller [17aa:22e8] Kernel driver in use: pcieport 00:07.0 PCI bridge [0604]: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #0 [8086:466e] (rev 02) Subsystem: Lenovo Alder Lake-P Thunderbolt 4 PCI Express Root Port [17aa:22e8] Kernel driver in use: pcieport 00:07.2 PCI bridge [0604]: Intel Corporation Alder Lake-P Thunderbolt 4 PCI Express Root Port #2 [8086:462f] (rev 02) Subsystem: Lenovo Alder Lake-P Thunderbolt 4 PCI Express Root Port [17aa:22e8] Kernel driver in use: pcieport 00:0a.0 Signal processing controller [1180]: Intel Corporation Platform Monitoring Technology [8086:467d] (rev 01) Subsystem: Lenovo Platform Monitoring Technology [17aa:22e8] Kernel driver in use: intel_vsec Kernel modules: intel_vsec 00:0d.0 USB controller [0c03]: Intel Corporation Alder Lake-P Thunderbolt 4 USB Controller [8086:461e] (rev 02) Subsystem: Lenovo Alder Lake-P Thunderbolt 4 USB Controller [17aa:22e8] Kernel driver in use: xhci_hcd 00:0d.2 USB controller [0c03]: Intel Corporation Alder Lake-P Thunderbolt 4 NHI #0 [8086:463e] (rev 02) Subsystem: Lenovo Alder Lake-P Thunderbolt 4 NHI [17aa:22e8] Kernel driver in use: thunderbolt Kernel modules: thunderbolt 00:0d.3 USB controller [0c03]: Intel Corporation Alder Lake-P Thunderbolt 4 NHI #1 [8086:466d] (rev 02) Subsystem: Lenovo Alder Lake-P Thunderbolt 4 NHI [17aa:22e8] Kernel driver in use: thunderbolt Kernel modules: thunderbolt 00:14.0 USB controller [0c03]: Intel Corporation Alder Lake PCH USB 3.2 xHCI Host Controller [8086:51ed] (rev 01) Subsystem: Lenovo Alder Lake PCH USB 3.2 xHCI Host Controller [17aa:22e8] Kernel driver in use: xhci_hcd 00:14.2 RAM memory [0500]: Intel Corporation Alder Lake PCH Shared SRAM [8086:51ef] (rev 01) Subsystem: Lenovo Alder Lake PCH Shared SRAM [17aa:22e8] 00:14.3 Network controller [0280]: Intel Corporation Alder Lake-P PCH CNVi WiFi [8086:51f0] (rev 01) Subsystem: Intel Corporation Alder Lake-P PCH CNVi WiFi [8086:0090] Kernel driver in use: iwlwifi Kernel modules: iwlwifi 00:15.0 Serial bus controller [0c80]: Intel Corporation Alder Lake PCH Serial IO I2C Controller #0 [8086:51e8] (rev 01) Subsystem: Lenovo Alder Lake PCH Serial IO I2C Controller [17aa:22e8] Kernel driver in use: intel-lpss 00:16.0 Communication controller [0780]: Intel Corporation Alder Lake PCH HECI Controller [8086:51e0] (rev 01) Subsystem: Lenovo Alder Lake PCH HECI Controller [17aa:22e8] Kernel driver in use: mei_me Kernel modules: mei_me 00:1f.0 ISA bridge [0601]: Intel Corporation Alder Lake PCH eSPI Controller [8086:5182] (rev 01) Subsystem: Lenovo Alder Lake PCH eSPI Controller [17aa:22e8] 00:1f.3 Audio device [0403]: Intel Corporation Alder Lake PCH-P High Definition Audio Controller [8086:51c8] (rev 01) Subsystem: Lenovo Alder Lake PCH-P High Definition Audio Controller [17aa:22e8] Kernel driver in use: snd_hda_intel Kernel modules: snd_hda_intel, snd_sof_pci_intel_tgl 00:1f.4 SMBus [0c05]: Intel Corporation Alder Lake PCH-P SMBus Host Controller [8086:51a3] (rev 01) Subsystem: Lenovo Alder Lake PCH-P SMBus Host Controller [17aa:22e8] Kernel driver in use: i801_smbus Kernel modules: i2c_i801 00:1f.5 Serial bus controller [0c80]: Intel Corporation Alder Lake-P PCH SPI Controller [8086:51a4] (rev 01) Subsystem: Lenovo Alder Lake-P PCH SPI Controller [17aa:22e8] 00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (16) I219-LM [8086:1a1e] (rev 01) Subsystem: Lenovo Ethernet Connection (16) I219-LM [17aa:22e8] Kernel driver in use: e1000e Kernel modules: e1000e 02:00.0 Non-Volatile memory controller [0108]: Samsung Electronics Co Ltd NVMe SSD Controller PM9B1 [144d:a80b] (rev 02) Subsystem: Samsung Electronics Co Ltd NVMe SSD Controller PM9B1 [144d:a80b] Kernel driver in use: nvme Kernel modules: nvme
lsusb
root #
lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 003: ID 174f:1812 Syntek Integrated Camera Bus 003 Device 002: ID 27c6:6594 Shenzhen Goodix Technology Co.,Ltd. Goodix USB2.0 MISC Bus 003 Device 005: ID 8087:0033 Intel Corp. Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Installation
UEFI updates
EFI updates can be done through Linux according to the driver list
Legacy boot
I haven't really looked into it, but I didn't much find a way to boot anything using Legacy boot (if you did, update this part)
Firmware
The sys-kernel/linux-firmware package is required as it provides the firmware for the Intel iRIS driver.
Kernel
As of kernel version 6.4.x, everything is functional, except for the sound and NVMe which they need a GRUB modification.
# Add this line to reduce NVMe failures, since latency is not matched by default between hardware and software!
GRUB_CMDLINE_LINUX="nvme_core.default_ps_max_latency_us=0"
# Add this line to enable audio...
GRUB_CMDLINE_LINUX_DEFAULT="snd_hda_intel.dmic_detect=0"
Then update GRUB's configuration:
root #
grub-mkconfig -o /boot/grub/grub.cfg
Configuration
Compiler settings
More info is available at:
# O2 for super-safe output
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=alderlake -O2 -pipe"
CXXFLAGS="${CFLAGS}"
FCFLAGS="${CFLAGS}"
FFLAGS="${CFLAGS}"
MAKEOPTS="-j8"
Packages settings
For more info: CPU_FLAGS_X86
# Obtained via cpuid2cpuflags
CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt rdrand sha sse sse2 sse3 sse4_1 sse4_2 ssse3"
USE flags
VIDEO_CARDS="intel"
# Input devices
INPUT_DEVICES="libinput"
# Useflags
USE="libinput -xvmc -vdpau -cuda -radeonsi -amdgpu"