From 9e3e4a5df5b6ff106bcbf30273cdb0de9af7e02e Mon Sep 17 00:00:00 2001 From: codefiles <11915375+codefiles@users.noreply.github.com> Date: Sun, 24 Sep 2023 05:18:52 -0400 Subject: Refactor microcode (#2099) --- archinstall/lib/hardware.py | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'archinstall/lib/hardware.py') diff --git a/archinstall/lib/hardware.py b/archinstall/lib/hardware.py index 85f903e1..56d3bc7b 100644 --- a/archinstall/lib/hardware.py +++ b/archinstall/lib/hardware.py @@ -10,6 +10,32 @@ from .networking import list_interfaces, enrich_iface_types from .output import debug +class CpuVendor(Enum): + AuthenticAMD = 'amd' + GenuineIntel = 'intel' + _Unknown = 'unknown' + + @classmethod + def get_vendor(cls, name: str) -> 'CpuVendor': + if vendor := getattr(cls, name, None): + return vendor + else: + debug(f"Unknown CPU vendor '{name}' detected.") + return cls._Unknown + + def _has_microcode(self) -> bool: + match self: + case CpuVendor.AuthenticAMD | CpuVendor.GenuineIntel: + return True + case _: + return False + + def get_ucode(self) -> Optional[Path]: + if self._has_microcode(): + return Path(self.value + '-ucode.img') + return None + + class GfxPackage(Enum): IntelMediaDriver = 'intel-media-driver' LibvaIntelDriver = 'libva-intel-driver' @@ -180,8 +206,10 @@ class SysInfo: return any('intel' in x.lower() for x in SysInfo._graphics_devices()) @staticmethod - def cpu_vendor() -> Optional[str]: - return _sys_info.cpu_info.get('vendor_id', None) + def cpu_vendor() -> Optional[CpuVendor]: + if vendor := _sys_info.cpu_info.get('vendor_id'): + return CpuVendor.get_vendor(vendor) + return None @staticmethod def cpu_model() -> Optional[str]: -- cgit v1.2.3-54-g00ecf