On Mon, Feb 3, 2025 at 4:00 PM John Hubbard <jhubbard@xxxxxxxxxx> wrote: [..] > > >> + () > >> + )] > >> +); > >> + > >> +impl pci::Driver for NovaCore { > >> + type IdInfo = (); > >> + const ID_TABLE: pci::IdTable<Self::IdInfo> = &PCI_TABLE; > >> + > >> + fn probe(pdev: &mut pci::Device, _info: &Self::IdInfo) -> Result<Pin<KBox<Self>>> { > >> + dev_dbg!(pdev.as_ref(), "Probe Nova Core GPU driver.\n"); > >> + > >> + pdev.enable_device_mem()?; > >> + pdev.set_master(); > >> + > >> + let bar = pdev.iomap_region_sized::<BAR0_SIZE>(0, c_str!("nova-core"))?; > >> + > >> + let this = KBox::pin_init( > >> + try_pin_init!(Self { > >> + gpu <- Gpu::new(pdev, bar)?, > > Here. Try to construct a Gpu, which tries to construct a GpuSpec, which > fails out if Chipset is not listed, or if CardType (which should be > renamed to Architecture) is not listed. > > And only Turing+ GPUs are listed. Turing is the first GPU that has a > GSP unit. > > By the way, I have loaded this on a system with a Kepler GPU (pre-Turing), > and an Ampere GPU, and traced through actually loading NovaCore, and it > behaves as described above. Ah that makes sense, Thanks John! - Joel