From f9586b38ba171a10de093919cb2d00f0990cfced Mon Sep 17 00:00:00 2001 From: nimlgen <138685161+nimlgen@users.noreply.github.com> Date: Thu, 13 Nov 2025 20:44:58 +0800 Subject: [PATCH] system: pci mask and val (#13251) --- tinygrad/runtime/ops_amd.py | 2 +- tinygrad/runtime/ops_nv.py | 4 ++-- tinygrad/runtime/support/system.py | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tinygrad/runtime/ops_amd.py b/tinygrad/runtime/ops_amd.py index 3b0a2199da..c16311a58e 100644 --- a/tinygrad/runtime/ops_amd.py +++ b/tinygrad/runtime/ops_amd.py @@ -786,7 +786,7 @@ class PCIIface(PCIIfaceBase): gpus:ClassVar[list[str]] = [] def __init__(self, dev, dev_id): - super().__init__(dev, dev_id, vendor=0x1002, devices=[0x744c, 0x7480, 0x7550, 0x7590], bars=[0, 2, 5], vram_bar=0, + super().__init__(dev, dev_id, vendor=0x1002, devices=[(0xffff, [0x744c, 0x7480, 0x7550, 0x7590])], bars=[0, 2, 5], vram_bar=0, va_start=AMMemoryManager.va_allocator.base, va_size=AMMemoryManager.va_allocator.size) self._setup_adev(self.pci_dev) self.pci_dev.write_config(pci.PCI_COMMAND, self.pci_dev.read_config(pci.PCI_COMMAND, 2) | pci.PCI_COMMAND_MASTER, 2) diff --git a/tinygrad/runtime/ops_nv.py b/tinygrad/runtime/ops_nv.py index 8fe746a0f2..f4c0c997cf 100644 --- a/tinygrad/runtime/ops_nv.py +++ b/tinygrad/runtime/ops_nv.py @@ -456,8 +456,8 @@ class PCIIface(PCIIfaceBase): gpus:ClassVar[list[str]] = [] def __init__(self, dev, dev_id): - super().__init__(dev, dev_id, vendor=0x10de, devices=[0x2204, 0x2684, 0x2b85], bars=[0, 1], vram_bar=1, - va_start=NVMemoryManager.va_allocator.base, va_size=NVMemoryManager.va_allocator.size) + super().__init__(dev, dev_id, vendor=0x10de, devices=[(0xff00, [0x2200, 0x2400, 0x2500, 0x2600, 0x2700, 0x2800, 0x2b00, 0x2c00, 0x2d00, 0x2f00])], + bars=[0, 1], vram_bar=1, va_start=NVMemoryManager.va_allocator.base, va_size=NVMemoryManager.va_allocator.size) if not OSX: System.reserve_hugepages(64) self.pci_dev.write_config(pci.PCI_COMMAND, self.pci_dev.read_config(pci.PCI_COMMAND, 2) | pci.PCI_COMMAND_MASTER, 2) diff --git a/tinygrad/runtime/support/system.py b/tinygrad/runtime/support/system.py index 6ad514e851..26599018f0 100644 --- a/tinygrad/runtime/support/system.py +++ b/tinygrad/runtime/support/system.py @@ -93,12 +93,12 @@ class _System: if data is not None: sysmem_view[:len(data)] = data return sysmem_view, [p + i for p, sz in paddrs for i in range(0, sz, 0x1000)][:ceildiv(size, 0x1000)] - def pci_scan_bus(self, target_vendor:int, target_devices:list[int]) -> list[str]: + def pci_scan_bus(self, target_vendor:int, target_devices:list[tuple[int, list[int]]]) -> list[str]: result = [] for pcibus in FileIOInterface("/sys/bus/pci/devices").listdir(): vendor = int(FileIOInterface(f"/sys/bus/pci/devices/{pcibus}/vendor").read(), 16) device = int(FileIOInterface(f"/sys/bus/pci/devices/{pcibus}/device").read(), 16) - if vendor == target_vendor and device in target_devices: result.append(pcibus) + if vendor == target_vendor and any((device & mask) in devlist for mask, devlist in target_devices): result.append(pcibus) return sorted(result) def pci_setup_usb_bars(self, usb:ASM24Controller, gpu_bus:int, mem_base:int, pref_mem_base:int) -> dict[int, PCIBarInfo]: @@ -247,7 +247,7 @@ class LNXPCIIfaceBase: dev_impl:PCIDevImplBase gpus:ClassVar[list[str]] = [] - def __init__(self, dev, dev_id, vendor, devices, bars, vram_bar, va_start, va_size): + def __init__(self, dev, dev_id, vendor, devices:list[tuple[int, list[int]]], bars, vram_bar, va_start, va_size): if len((cls:=type(self)).gpus) == 0: cls.gpus = hcq_filter_visible_devices(System.pci_scan_bus(vendor, devices))