* content.
*/
#define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12)
+/* Flag that BO is shared coherently between multiple devices or CPU threads.
+ * May depend on GPU instructions to flush caches explicitly
+ *
+ * This influences the choice of MTYPE in the PTEs on GFXv9 and later GPUs and
+ * may override the MTYPE selected in AMDGPU_VA_OP_MAP.
+ */
+#define AMDGPU_GEM_CREATE_COHERENT (1 << 13)
+/* Flag that BO should not be cached by GPU. Coherent without having to flush
+ * GPU caches explicitly
+ *
+ * This influences the choice of MTYPE in the PTEs on GFXv9 and later GPUs and
+ * may override the MTYPE selected in AMDGPU_VA_OP_MAP.
+ */
+#define AMDGPU_GEM_CREATE_UNCACHED (1 << 14)
struct drm_amdgpu_gem_create_in {
/** the requested memory size */
#define AMDGPU_INFO_FW_MES_KIQ 0x19
/* Subquery id: Query MES firmware version */
#define AMDGPU_INFO_FW_MES 0x1a
+ /* Subquery id: Query IMU firmware version */
+ #define AMDGPU_INFO_FW_IMU 0x1b
/* number of bytes moved for TTM migration */
#define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
#define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_SCLK 0x8
/* Subquery id: Query GPU stable pstate memory clock */
#define AMDGPU_INFO_SENSOR_STABLE_PSTATE_GFX_MCLK 0x9
+ /* Subquery id: Query GPU peak pstate shader clock */
+ #define AMDGPU_INFO_SENSOR_PEAK_PSTATE_GFX_SCLK 0xa
+ /* Subquery id: Query GPU peak pstate memory clock */
+ #define AMDGPU_INFO_SENSOR_PEAK_PSTATE_GFX_MCLK 0xb
/* Number of VRAM page faults on CPU access. */
#define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E
#define AMDGPU_INFO_VRAM_LOST_COUNTER 0x1F
__u32 enabled_rb_pipes_mask;
__u32 num_rb_pipes;
__u32 num_hw_gfx_contexts;
- __u32 _pad;
+ /* PCIe version (the smaller of the GPU and the CPU/motherboard) */
+ __u32 pcie_gen;
__u64 ids_flags;
/** Starting virtual address for UMDs. */
__u64 virtual_address_offset;
__u32 gs_prim_buffer_depth;
/* max gs wavefront per vgt*/
__u32 max_gs_waves_per_vgt;
- __u32 _pad1;
+ /* PCIe number of lanes (the smaller of the GPU and the CPU/motherboard) */
+ __u32 pcie_num_lanes;
/* always on cu bitmap */
__u32 cu_ao_bitmap[4][4];
/** Starting high virtual address for UMDs. */
__u32 pa_sc_tile_steering_override;
/* disabled TCCs */
__u64 tcc_disabled_mask;
+ __u64 min_engine_clock;
+ __u64 min_memory_clock;
};
struct drm_amdgpu_info_hw_ip {
struct drm_amdgpu_heap_info gtt;
};
struct drm_amdgpu_info_device {
- /** PCI Device ID */
- uint32_t device_id;
- /** Internal chip revision: A0, A1, etc.) */
- uint32_t chip_rev;
- uint32_t external_rev;
- /** Revision id in PCI Config space */
- uint32_t pci_rev;
- uint32_t family;
- uint32_t num_shader_engines;
- uint32_t num_shader_arrays_per_engine;
- /* in KHz */
- uint32_t gpu_counter_freq;
- uint64_t max_engine_clock;
- uint64_t max_memory_clock;
- /* cu information */
- uint32_t cu_active_number;
- /* NOTE: cu_ao_mask is INVALID, DON'T use it */
- uint32_t cu_ao_mask;
- uint32_t cu_bitmap[4][4];
- /** Render backend pipe mask. One render backend is CB+DB. */
- uint32_t enabled_rb_pipes_mask;
- uint32_t num_rb_pipes;
- uint32_t num_hw_gfx_contexts;
- uint32_t _pad;
- uint64_t ids_flags;
- /** Starting virtual address for UMDs. */
- uint64_t virtual_address_offset;
- /** The maximum virtual address */
- uint64_t virtual_address_max;
- /** Required alignment of virtual addresses. */
- uint32_t virtual_address_alignment;
- /** Page table entry - fragment size */
- uint32_t pte_fragment_size;
- uint32_t gart_page_size;
- /** constant engine ram size*/
- uint32_t ce_ram_size;
- /** video memory type info*/
- uint32_t vram_type;
- /** video memory bit width*/
- uint32_t vram_bit_width;
- /* vce harvesting instance */
- uint32_t vce_harvest_config;
- /* gfx double offchip LDS buffers */
- uint32_t gc_double_offchip_lds_buf;
- /* NGG Primitive Buffer */
- uint64_t prim_buf_gpu_addr;
- /* NGG Position Buffer */
- uint64_t pos_buf_gpu_addr;
- /* NGG Control Sideband */
- uint64_t cntl_sb_buf_gpu_addr;
- /* NGG Parameter Cache */
- uint64_t param_buf_gpu_addr;
- uint32_t prim_buf_size;
- uint32_t pos_buf_size;
- uint32_t cntl_sb_buf_size;
- uint32_t param_buf_size;
- /* wavefront size*/
- uint32_t wave_front_size;
- /* shader visible vgprs*/
- uint32_t num_shader_visible_vgprs;
- /* CU per shader array*/
- uint32_t num_cu_per_sh;
- /* number of tcc blocks*/
- uint32_t num_tcc_blocks;
- /* gs vgt table depth*/
- uint32_t gs_vgt_table_depth;
- /* gs primitive buffer depth*/
- uint32_t gs_prim_buffer_depth;
- /* max gs wavefront per vgt*/
- uint32_t max_gs_waves_per_vgt;
- uint32_t _pad1;
- /* always on cu bitmap */
- uint32_t cu_ao_bitmap[4][4];
- /** Starting high virtual address for UMDs. */
- uint64_t high_va_offset;
- /** The maximum high virtual address */
- uint64_t high_va_max;
- /* gfx10 pa_sc_tile_steering_override */
- uint32_t pa_sc_tile_steering_override;
- /* disabled TCCs */
- uint64_t tcc_disabled_mask;
+ /** PCI Device ID */
+ uint32_t device_id;
+ /** Internal chip revision: A0, A1, etc.) */
+ uint32_t chip_rev;
+ uint32_t external_rev;
+ /** Revision id in PCI Config space */
+ uint32_t pci_rev;
+ uint32_t family;
+ uint32_t num_shader_engines;
+ uint32_t num_shader_arrays_per_engine;
+ /* in KHz */
+ uint32_t gpu_counter_freq;
+ uint64_t max_engine_clock;
+ uint64_t max_memory_clock;
+ /* cu information */
+ uint32_t cu_active_number;
+ /* NOTE: cu_ao_mask is INVALID, DON'T use it */
+ uint32_t cu_ao_mask;
+ uint32_t cu_bitmap[4][4];
+ /** Render backend pipe mask. One render backend is CB+DB. */
+ uint32_t enabled_rb_pipes_mask;
+ uint32_t num_rb_pipes;
+ uint32_t num_hw_gfx_contexts;
+ /* PCIe version (the smaller of the GPU and the CPU/motherboard) */
+ uint32_t pcie_gen;
+ uint64_t ids_flags;
+ /** Starting virtual address for UMDs. */
+ uint64_t virtual_address_offset;
+ /** The maximum virtual address */
+ uint64_t virtual_address_max;
+ /** Required alignment of virtual addresses. */
+ uint32_t virtual_address_alignment;
+ /** Page table entry - fragment size */
+ uint32_t pte_fragment_size;
+ uint32_t gart_page_size;
+ /** constant engine ram size*/
+ uint32_t ce_ram_size;
+ /** video memory type info*/
+ uint32_t vram_type;
+ /** video memory bit width*/
+ uint32_t vram_bit_width;
+ /* vce harvesting instance */
+ uint32_t vce_harvest_config;
+ /* gfx double offchip LDS buffers */
+ uint32_t gc_double_offchip_lds_buf;
+ /* NGG Primitive Buffer */
+ uint64_t prim_buf_gpu_addr;
+ /* NGG Position Buffer */
+ uint64_t pos_buf_gpu_addr;
+ /* NGG Control Sideband */
+ uint64_t cntl_sb_buf_gpu_addr;
+ /* NGG Parameter Cache */
+ uint64_t param_buf_gpu_addr;
+ uint32_t prim_buf_size;
+ uint32_t pos_buf_size;
+ uint32_t cntl_sb_buf_size;
+ uint32_t param_buf_size;
+ /* wavefront size*/
+ uint32_t wave_front_size;
+ /* shader visible vgprs*/
+ uint32_t num_shader_visible_vgprs;
+ /* CU per shader array*/
+ uint32_t num_cu_per_sh;
+ /* number of tcc blocks*/
+ uint32_t num_tcc_blocks;
+ /* gs vgt table depth*/
+ uint32_t gs_vgt_table_depth;
+ /* gs primitive buffer depth*/
+ uint32_t gs_prim_buffer_depth;
+ /* max gs wavefront per vgt*/
+ uint32_t max_gs_waves_per_vgt;
+ /* PCIe number of lanes (the smaller of the GPU and the CPU/motherboard) */
+ uint32_t pcie_num_lanes;
+ /* always on cu bitmap */
+ uint32_t cu_ao_bitmap[4][4];
+ /** Starting high virtual address for UMDs. */
+ uint64_t high_va_offset;
+ /** The maximum high virtual address */
+ uint64_t high_va_max;
+ /* gfx10 pa_sc_tile_steering_override */
+ uint32_t pa_sc_tile_steering_override;
+ /* disabled TCCs */
+ uint64_t tcc_disabled_mask;
+ uint64_t min_engine_clock;
+ uint64_t min_memory_clock;
};
struct drm_amdgpu_info_hw_ip {
uint32_t hw_ip_version_major;