# ============================================================================
# Open-IOV .gitignore
#
# Goals:
#   - No large binary objects in git (firmware blobs, VM images, Ghidra DBs)
#   - No build artifacts
#   - No vendor trees (NVIDIA OpenRM is pulled + patched by install.sh)
#   - No local QEMU-wrapper stacks (/, guest communication daemon) - the repo is
#     hypervisor-management neutral (works with libvirt, , raw QEMU, ...)
# ============================================================================

# ----------------------------------------------------------------------------
# Kernel / kbuild artifacts
# ----------------------------------------------------------------------------
*.o
*.o.d
.*.o.d
*.ko
*.mod
*.mod.c
*.mod.o
Module.symvers
modules.order
.*.cmd
.tmp_versions/
*.order
*.symvers

# ----------------------------------------------------------------------------
# Userspace build artifacts
# ----------------------------------------------------------------------------
*.so
*.so.*
*.a
*.pyc
__pycache__/
userspace/lib/libiov.so*
userspace/lib/libvgpu.so*
userspace/examples/example_vgpu
userspace/tests/*_test

# ----------------------------------------------------------------------------
# NVIDIA open-gpu-kernel-modules (vendor tree)
# Cloned at a pinned tag and patched by install.sh - see patches/nvidia/
# ----------------------------------------------------------------------------
/nvidia-open-gpu-kernel-modules/

# NVIDIA open-gpu-kernel-modules @ 570.144 (local checkout of the open kernel modules
# driver's exact wire protocol - used by kernel/gsp_rm_emulation.c)
/nvidia-570.144-reference/

# rmq build artifact (source stays)
tools/rmq/rmq

# ----------------------------------------------------------------------------
# GSP firmware blobs and decompiled GSP output
# (large, license-restricted NVIDIA binaries; analysis scripts/docs stay)
# ----------------------------------------------------------------------------
firmware/**/*.bin
firmware/**/decompiled/
firmware/**/decompiled_*.c

# ----------------------------------------------------------------------------
# Ghidra project databases (large binary DBs; analysis scripts stay tracked)
# ----------------------------------------------------------------------------
tools/ghidra/**/*.rep/
tools/ghidra/**/*.gpr
tools/ghidra/**/*.lock
tools/ghidra/**/*.lock~

# ----------------------------------------------------------------------------
# VM images and disk artifacts (large binaries)
# ----------------------------------------------------------------------------
*.iso
*.img
*.qcow2
*.qcow
*.vmdk
*.vdi
*.raw

# Compiled helper binaries (build from adjacent .c source instead)
tools/debug/nv2080_ctrl

# Prebuilt management tool binaries (not rebuilt from this tree)
/userspace/bin/

# ----------------------------------------------------------------------------
# Local QEMU-wrapper / VM-management layer (NOT part of the reproducible core)
# Bring your own wrapper: libvirt, /, plain qemu, etc.
# ----------------------------------------------------------------------------
/GVM-guest/
/libvf.io/
/scripts/vgpu_vm.py
/scripts/qemu_control.py
/scripts/qemu_harness.sh
# Local git-push helper (manages per-machine ssh-agent env; not portable)
/scripts/git-push-vgpu.sh

# ----------------------------------------------------------------------------
# Misc
# ----------------------------------------------------------------------------
*.log
*.tmp
.DS_Store
/core
vgcore.*
userspace/tests/test_vgpu_userspace

# Maintainer notes: study index (never commit)
ARCHAEOLOGY.md

# generated at runtime by tools/guest-diag/vmcycle.sh
tools/guest-diag/launch_qemu_rootport.run.sh

# Vendor SDK headers kept locally as study material (not published)
userspace/sdks/
