Commit c99c4d0c authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'amd-drm-next-5.14-2021-05-19' of...

Merge tag 'amd-drm-next-5.14-2021-05-19' of https://gitlab.freedesktop.org/agd5f/linux into drm-next

amd-drm-next-5.14-2021-05-19:

amdgpu:
- Aldebaran updates
- More LTTPR display work
- Vangogh updates
- SDMA 5.x GCR fixes
- RAS fixes
- PCIe ASPM support
- Modifier fixes
- Enable TMZ on Renoir
- Buffer object code cleanup
- Display overlay fixes
- Initial support for multiple eDP panels
- Initial SR-IOV support for Aldebaran
- DP link training refactor
- Misc code cleanups and bug fixes
- SMU regression fixes for variable sized arrays
- MAINTAINERS fixes for amdgpu

amdkfd:
- Initial SR-IOV support for Aldebaran
- Topology fixes
- Initial HMM SVM support
- Misc code cleanups and bug fixes

radeon:
- Misc code cleanups and bug fixes
- SMU regression fixes for variable sized arrays
- Flickering fix for Oland with multiple 4K displays

UAPI:
- amdgpu: Drop AMDGPU_GEM_CREATE_SHADOW flag.
  This was always a kernel internal flag and userspace use of it has always been blocked.
  It's no longer needed so remove it.
- amdkgd: HMM SVM support
  Overview: https://patchwork.freedesktop.org/series/85562/
  Porposed userspace: https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/tree/fxkamd/hmm-wip



Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210520031258.231896-1-alexander.deucher@amd.com
parents 2ba04785 2bb5b5f6
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -878,7 +878,7 @@ M: Harry Wentland <harry.wentland@amd.com>
M:	Leo Li <sunpeng.li@amd.com>
M:	Leo Li <sunpeng.li@amd.com>
L:	amd-gfx@lists.freedesktop.org
L:	amd-gfx@lists.freedesktop.org
S:	Supported
S:	Supported
T:	git git://people.freedesktop.org/~agd5f/linux
T:	git https://gitlab.freedesktop.org/agd5f/linux.git
F:	drivers/gpu/drm/amd/display/
F:	drivers/gpu/drm/amd/display/
AMD FAM15H PROCESSOR POWER MONITORING DRIVER
AMD FAM15H PROCESSOR POWER MONITORING DRIVER
@@ -954,7 +954,7 @@ AMD POWERPLAY
M:	Evan Quan <evan.quan@amd.com>
M:	Evan Quan <evan.quan@amd.com>
L:	amd-gfx@lists.freedesktop.org
L:	amd-gfx@lists.freedesktop.org
S:	Supported
S:	Supported
T:	git git://people.freedesktop.org/~agd5f/linux
T:	git https://gitlab.freedesktop.org/agd5f/linux.git
F:	drivers/gpu/drm/amd/pm/powerplay/
F:	drivers/gpu/drm/amd/pm/powerplay/
AMD SEATTLE DEVICE TREE SUPPORT
AMD SEATTLE DEVICE TREE SUPPORT
+1 −1
Original line number Original line Diff line number Diff line
@@ -56,7 +56,7 @@ amdgpu-y += amdgpu_device.o amdgpu_kms.o \
	amdgpu_gmc.o amdgpu_mmhub.o amdgpu_xgmi.o amdgpu_csa.o amdgpu_ras.o amdgpu_vm_cpu.o \
	amdgpu_gmc.o amdgpu_mmhub.o amdgpu_xgmi.o amdgpu_csa.o amdgpu_ras.o amdgpu_vm_cpu.o \
	amdgpu_vm_sdma.o amdgpu_discovery.o amdgpu_ras_eeprom.o amdgpu_nbio.o \
	amdgpu_vm_sdma.o amdgpu_discovery.o amdgpu_ras_eeprom.o amdgpu_nbio.o \
	amdgpu_umc.o smu_v11_0_i2c.o amdgpu_fru_eeprom.o amdgpu_rap.o \
	amdgpu_umc.o smu_v11_0_i2c.o amdgpu_fru_eeprom.o amdgpu_rap.o \
	amdgpu_fw_attestation.o amdgpu_securedisplay.o
	amdgpu_fw_attestation.o amdgpu_securedisplay.o amdgpu_hdp.o


amdgpu-$(CONFIG_PROC_FS) += amdgpu_fdinfo.o
amdgpu-$(CONFIG_PROC_FS) += amdgpu_fdinfo.o


+2 −1
Original line number Original line Diff line number Diff line
@@ -1075,7 +1075,8 @@ struct amdgpu_device {


	atomic_t			throttling_logging_enabled;
	atomic_t			throttling_logging_enabled;
	struct ratelimit_state		throttling_logging_rs;
	struct ratelimit_state		throttling_logging_rs;
	uint32_t			ras_features;
	uint32_t                        ras_hw_enabled;
	uint32_t                        ras_enabled;


	bool                            in_pci_err_recovery;
	bool                            in_pci_err_recovery;
	struct pci_saved_state          *pci_state;
	struct pci_saved_state          *pci_state;
+6 −6
Original line number Original line Diff line number Diff line
@@ -76,7 +76,7 @@ struct amdgpu_atif {
/**
/**
 * amdgpu_atif_call - call an ATIF method
 * amdgpu_atif_call - call an ATIF method
 *
 *
 * @handle: acpi handle
 * @atif: acpi handle
 * @function: the ATIF function to execute
 * @function: the ATIF function to execute
 * @params: ATIF function params
 * @params: ATIF function params
 *
 *
@@ -166,7 +166,6 @@ static void amdgpu_atif_parse_functions(struct amdgpu_atif_functions *f, u32 mas
/**
/**
 * amdgpu_atif_verify_interface - verify ATIF
 * amdgpu_atif_verify_interface - verify ATIF
 *
 *
 * @handle: acpi handle
 * @atif: amdgpu atif struct
 * @atif: amdgpu atif struct
 *
 *
 * Execute the ATIF_FUNCTION_VERIFY_INTERFACE ATIF function
 * Execute the ATIF_FUNCTION_VERIFY_INTERFACE ATIF function
@@ -240,8 +239,7 @@ static acpi_handle amdgpu_atif_probe_handle(acpi_handle dhandle)
/**
/**
 * amdgpu_atif_get_notification_params - determine notify configuration
 * amdgpu_atif_get_notification_params - determine notify configuration
 *
 *
 * @handle: acpi handle
 * @atif: acpi handle
 * @n: atif notification configuration struct
 *
 *
 * Execute the ATIF_FUNCTION_GET_SYSTEM_PARAMETERS ATIF function
 * Execute the ATIF_FUNCTION_GET_SYSTEM_PARAMETERS ATIF function
 * to determine if a notifier is used and if so which one
 * to determine if a notifier is used and if so which one
@@ -304,7 +302,7 @@ static int amdgpu_atif_get_notification_params(struct amdgpu_atif *atif)
/**
/**
 * amdgpu_atif_query_backlight_caps - get min and max backlight input signal
 * amdgpu_atif_query_backlight_caps - get min and max backlight input signal
 *
 *
 * @handle: acpi handle
 * @atif: acpi handle
 *
 *
 * Execute the QUERY_BRIGHTNESS_TRANSFER_CHARACTERISTICS ATIF function
 * Execute the QUERY_BRIGHTNESS_TRANSFER_CHARACTERISTICS ATIF function
 * to determine the acceptable range of backlight values
 * to determine the acceptable range of backlight values
@@ -363,7 +361,7 @@ static int amdgpu_atif_query_backlight_caps(struct amdgpu_atif *atif)
/**
/**
 * amdgpu_atif_get_sbios_requests - get requested sbios event
 * amdgpu_atif_get_sbios_requests - get requested sbios event
 *
 *
 * @handle: acpi handle
 * @atif: acpi handle
 * @req: atif sbios request struct
 * @req: atif sbios request struct
 *
 *
 * Execute the ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS ATIF function
 * Execute the ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS ATIF function
@@ -899,6 +897,8 @@ void amdgpu_acpi_fini(struct amdgpu_device *adev)
/**
/**
 * amdgpu_acpi_is_s0ix_supported
 * amdgpu_acpi_is_s0ix_supported
 *
 *
 * @adev: amdgpu_device_pointer
 *
 * returns true if supported, false if not.
 * returns true if supported, false if not.
 */
 */
bool amdgpu_acpi_is_s0ix_supported(struct amdgpu_device *adev)
bool amdgpu_acpi_is_s0ix_supported(struct amdgpu_device *adev)
+17 −9
Original line number Original line Diff line number Diff line
@@ -75,6 +75,7 @@ struct amdgpu_amdkfd_fence {
	struct mm_struct *mm;
	struct mm_struct *mm;
	spinlock_t lock;
	spinlock_t lock;
	char timeline_name[TASK_COMM_LEN];
	char timeline_name[TASK_COMM_LEN];
	struct svm_range_bo *svm_bo;
};
};


struct amdgpu_kfd_dev {
struct amdgpu_kfd_dev {
@@ -148,7 +149,8 @@ int amdgpu_queue_mask_bit_to_set_resource_bit(struct amdgpu_device *adev,
					int queue_bit);
					int queue_bit);


struct amdgpu_amdkfd_fence *amdgpu_amdkfd_fence_create(u64 context,
struct amdgpu_amdkfd_fence *amdgpu_amdkfd_fence_create(u64 context,
								struct mm_struct *mm);
				struct mm_struct *mm,
				struct svm_range_bo *svm_bo);
#if IS_ENABLED(CONFIG_HSA_AMD)
#if IS_ENABLED(CONFIG_HSA_AMD)
bool amdkfd_fence_check_mm(struct dma_fence *f, struct mm_struct *mm);
bool amdkfd_fence_check_mm(struct dma_fence *f, struct mm_struct *mm);
struct amdgpu_amdkfd_fence *to_amdgpu_amdkfd_fence(struct dma_fence *f);
struct amdgpu_amdkfd_fence *to_amdgpu_amdkfd_fence(struct dma_fence *f);
@@ -234,22 +236,27 @@ uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct kgd_dev *dst, struct kgd_dev *s
	})
	})


/* GPUVM API */
/* GPUVM API */
#define drm_priv_to_vm(drm_priv)					\
	(&((struct amdgpu_fpriv *)					\
		((struct drm_file *)(drm_priv))->driver_priv)->vm)

int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct kgd_dev *kgd,
int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct kgd_dev *kgd,
					struct file *filp, u32 pasid,
					struct file *filp, u32 pasid,
					void **vm, void **process_info,
					void **process_info,
					struct dma_fence **ef);
					struct dma_fence **ef);
void amdgpu_amdkfd_gpuvm_release_process_vm(struct kgd_dev *kgd, void *vm);
void amdgpu_amdkfd_gpuvm_release_process_vm(struct kgd_dev *kgd, void *drm_priv);
uint64_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *vm);
uint64_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *drm_priv);
int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
		struct kgd_dev *kgd, uint64_t va, uint64_t size,
		struct kgd_dev *kgd, uint64_t va, uint64_t size,
		void *vm, struct kgd_mem **mem,
		void *drm_priv, struct kgd_mem **mem,
		uint64_t *offset, uint32_t flags);
		uint64_t *offset, uint32_t flags);
int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
		struct kgd_dev *kgd, struct kgd_mem *mem, uint64_t *size);
		struct kgd_dev *kgd, struct kgd_mem *mem, void *drm_priv,
		uint64_t *size);
int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
		struct kgd_dev *kgd, struct kgd_mem *mem, void *vm);
		struct kgd_dev *kgd, struct kgd_mem *mem, void *drm_priv);
int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
		struct kgd_dev *kgd, struct kgd_mem *mem, void *vm);
		struct kgd_dev *kgd, struct kgd_mem *mem, void *drm_priv);
int amdgpu_amdkfd_gpuvm_sync_memory(
int amdgpu_amdkfd_gpuvm_sync_memory(
		struct kgd_dev *kgd, struct kgd_mem *mem, bool intr);
		struct kgd_dev *kgd, struct kgd_mem *mem, bool intr);
int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct kgd_dev *kgd,
int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct kgd_dev *kgd,
@@ -260,7 +267,7 @@ int amdgpu_amdkfd_gpuvm_get_vm_fault_info(struct kgd_dev *kgd,
					      struct kfd_vm_fault_info *info);
					      struct kfd_vm_fault_info *info);
int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd,
int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd,
				      struct dma_buf *dmabuf,
				      struct dma_buf *dmabuf,
				      uint64_t va, void *vm,
				      uint64_t va, void *drm_priv,
				      struct kgd_mem **mem, uint64_t *size,
				      struct kgd_mem **mem, uint64_t *size,
				      uint64_t *mmap_offset);
				      uint64_t *mmap_offset);
int amdgpu_amdkfd_get_tile_config(struct kgd_dev *kgd,
int amdgpu_amdkfd_get_tile_config(struct kgd_dev *kgd,
@@ -270,6 +277,7 @@ void amdgpu_amdkfd_gpuvm_init_mem_limits(void);
void amdgpu_amdkfd_gpuvm_destroy_cb(struct amdgpu_device *adev,
void amdgpu_amdkfd_gpuvm_destroy_cb(struct amdgpu_device *adev,
				struct amdgpu_vm *vm);
				struct amdgpu_vm *vm);
void amdgpu_amdkfd_unreserve_memory_limit(struct amdgpu_bo *bo);
void amdgpu_amdkfd_unreserve_memory_limit(struct amdgpu_bo *bo);
void amdgpu_amdkfd_reserve_system_mem(uint64_t size);
#else
#else
static inline
static inline
void amdgpu_amdkfd_gpuvm_init_mem_limits(void)
void amdgpu_amdkfd_gpuvm_init_mem_limits(void)
Loading