mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
71871aa6df
Host methods exist to do at least some of what we need, but we are not currently pushing replay/cancels through a channel like UVM does as it's not clear whether it's necessary in our case (UVM also updates PTEs with the GPU). UVM also pushes a software method for fault cancels on Pascal, seemingly because the host methods don't appear to be sufficient. If/when we want to push the replay/cancel on the GPU, we can re-purpose the cancellation code here to implement that swmthd. Keep it simple for now, until we figure out exactly what we need here. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
93 lines
2.4 KiB
C
93 lines
2.4 KiB
C
#ifndef __NVIF_IF000C_H__
|
|
#define __NVIF_IF000C_H__
|
|
struct nvif_vmm_v0 {
|
|
__u8 version;
|
|
__u8 page_nr;
|
|
__u8 managed;
|
|
__u8 pad03[5];
|
|
__u64 addr;
|
|
__u64 size;
|
|
__u8 data[];
|
|
};
|
|
|
|
#define NVIF_VMM_V0_PAGE 0x00
|
|
#define NVIF_VMM_V0_GET 0x01
|
|
#define NVIF_VMM_V0_PUT 0x02
|
|
#define NVIF_VMM_V0_MAP 0x03
|
|
#define NVIF_VMM_V0_UNMAP 0x04
|
|
#define NVIF_VMM_V0_PFNMAP 0x05
|
|
#define NVIF_VMM_V0_PFNCLR 0x06
|
|
#define NVIF_VMM_V0_MTHD(i) ((i) + 0x80)
|
|
|
|
struct nvif_vmm_page_v0 {
|
|
__u8 version;
|
|
__u8 index;
|
|
__u8 shift;
|
|
__u8 sparse;
|
|
__u8 vram;
|
|
__u8 host;
|
|
__u8 comp;
|
|
__u8 pad07[1];
|
|
};
|
|
|
|
struct nvif_vmm_get_v0 {
|
|
__u8 version;
|
|
#define NVIF_VMM_GET_V0_ADDR 0x00
|
|
#define NVIF_VMM_GET_V0_PTES 0x01
|
|
#define NVIF_VMM_GET_V0_LAZY 0x02
|
|
__u8 type;
|
|
__u8 sparse;
|
|
__u8 page;
|
|
__u8 align;
|
|
__u8 pad05[3];
|
|
__u64 size;
|
|
__u64 addr;
|
|
};
|
|
|
|
struct nvif_vmm_put_v0 {
|
|
__u8 version;
|
|
__u8 pad01[7];
|
|
__u64 addr;
|
|
};
|
|
|
|
struct nvif_vmm_map_v0 {
|
|
__u8 version;
|
|
__u8 pad01[7];
|
|
__u64 addr;
|
|
__u64 size;
|
|
__u64 memory;
|
|
__u64 offset;
|
|
__u8 data[];
|
|
};
|
|
|
|
struct nvif_vmm_unmap_v0 {
|
|
__u8 version;
|
|
__u8 pad01[7];
|
|
__u64 addr;
|
|
};
|
|
|
|
struct nvif_vmm_pfnmap_v0 {
|
|
__u8 version;
|
|
__u8 page;
|
|
__u8 pad02[6];
|
|
__u64 addr;
|
|
__u64 size;
|
|
#define NVIF_VMM_PFNMAP_V0_ADDR 0xfffffffffffff000ULL
|
|
#define NVIF_VMM_PFNMAP_V0_ADDR_SHIFT 12
|
|
#define NVIF_VMM_PFNMAP_V0_APER 0x00000000000000f0ULL
|
|
#define NVIF_VMM_PFNMAP_V0_HOST 0x0000000000000000ULL
|
|
#define NVIF_VMM_PFNMAP_V0_VRAM 0x0000000000000010ULL
|
|
#define NVIF_VMM_PFNMAP_V0_W 0x0000000000000002ULL
|
|
#define NVIF_VMM_PFNMAP_V0_V 0x0000000000000001ULL
|
|
#define NVIF_VMM_PFNMAP_V0_NONE 0x0000000000000000ULL
|
|
__u64 phys[];
|
|
};
|
|
|
|
struct nvif_vmm_pfnclr_v0 {
|
|
__u8 version;
|
|
__u8 pad01[7];
|
|
__u64 addr;
|
|
__u64 size;
|
|
};
|
|
#endif
|