diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-30 23:44:55 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-30 23:44:55 -0400 |
| commit | 1b7963baa31cf4399d6f2c9917272b2b42b55a4d (patch) | |
| tree | 998f8d9c78a9249afe83835cdb4341107c085a02 /kernel/gsp_phys_boot.h | |
| parent | cfd65b67ab7231f915b47d958ed4c98712a98d5b (diff) | |
| download | open-iov-1b7963baa31cf4399d6f2c9917272b2b42b55a4d.tar.gz open-iov-1b7963baa31cf4399d6f2c9917272b2b42b55a4d.zip | |
gsp-phys: boot-layout stage 3b - boot-argument pages, WPR meta and FB layout (no device writes)
Diffstat (limited to 'kernel/gsp_phys_boot.h')
| -rw-r--r-- | kernel/gsp_phys_boot.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/kernel/gsp_phys_boot.h b/kernel/gsp_phys_boot.h new file mode 100644 index 0000000..8ab203a --- /dev/null +++ b/kernel/gsp_phys_boot.h @@ -0,0 +1,52 @@ +#ifndef GSP_PHYS_BOOT_H +#define GSP_PHYS_BOOT_H + +#include <linux/types.h> +#include <linux/pci.h> +#include <linux/dma-mapping.h> + +/* + * Real-GSP boot bring-up stage 3b: boot-argument DMA memory and the computed + * WPR/FB layout. Allocated and filled by gsp_phys_boot.c while the module owns + * the physical GPU. Stage 3b writes no device registers; the WPR metadata page + * is filled in host memory only, ready for the later FWSEC/booter stages. + */ +struct gsp_phys_boot { + bool initialized; + + /* Boot-argument pages (DMA-coherent and GPU-addressable) */ + void *wpr_meta_va; + dma_addr_t wpr_meta_dma; + size_t wpr_meta_size; + void *libos_args_va; + dma_addr_t libos_args_dma; + size_t libos_args_size; + void *gsp_args_va; + dma_addr_t gsp_args_dma; + size_t gsp_args_size; + + /* Computed layout, FB byte offsets measured from the FB base */ + u64 fb_size; + u64 vga_workspace_offset; + u64 vga_workspace_size; + u64 gsp_fw_wpr_end; + u64 frts_offset; + u64 frts_size; + u64 boot_bin_offset; + u64 size_of_bootloader; + u64 gsp_fw_offset; + u64 size_of_radix3_elf; + u64 gsp_fw_heap_offset; + u64 gsp_fw_heap_size; + u64 gsp_fw_wpr_start; + u64 non_wpr_heap_offset; + u64 non_wpr_heap_size; + u64 gsp_fw_rsvd_start; +}; + +bool gsp_phys_layout_enabled(void); +int gsp_phys_boot_layout_init(struct gsp_phys_boot *boot, struct pci_dev *pdev, + u64 fw_image_size, resource_size_t usable_fb_size); +void gsp_phys_boot_layout_fini(struct gsp_phys_boot *boot, struct pci_dev *pdev); + +#endif /* GSP_PHYS_BOOT_H */ |
