Module Name: src Committed By: riastradh Date: Sun Dec 19 12:02:40 UTC 2021
Modified Files: src/sys/external/bsd/common/include/linux: printk.h src/sys/external/bsd/drm2/amdgpu: amdgpu_module.c files.amdgpu src/sys/external/bsd/drm2/dist/drm/amd/amdgpu: amdgpu.h amdgpu_bo_list.c amdgpu_cs.c amdgpu_fb.c amdgpu_fence.c amdgpu_gart.c amdgpu_gart.h amdgpu_gem.c amdgpu_gfx_v10_0.c amdgpu_gfx_v6_0.c amdgpu_gfx_v7_0.c amdgpu_gfx_v8_0.c amdgpu_gfx_v9_0.c amdgpu_gmc.c amdgpu_gmc_v10_0.c amdgpu_gmc_v6_0.c amdgpu_gmc_v7_0.c amdgpu_gmc_v8_0.c amdgpu_gmc_v9_0.c amdgpu_gtt_mgr.c amdgpu_ids.c amdgpu_ih.c amdgpu_irq.c amdgpu_jpeg_v1_0.c amdgpu_jpeg_v2_0.c amdgpu_jpeg_v2_5.c amdgpu_kms.c amdgpu_mes_v10_1.c amdgpu_navi10_reg_init.c amdgpu_navi12_reg_init.c amdgpu_navi14_reg_init.c amdgpu_nv.c amdgpu_rlc.h amdgpu_ttm.c amdgpu_ttm.h src/sys/external/bsd/drm2/dist/drm/amd/display/dc/basics: amdgpu_fixpt31_32.c src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio: amdgpu_hw_ddc.c amdgpu_hw_gpio.c amdgpu_hw_hpd.c src/sys/external/bsd/drm2/dist/drm/amd/display/dc/hdcp: amdgpu_hdcp_msg.c src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp: amdgpu_hdcp1_execution.c amdgpu_hdcp_ddc.c amdgpu_hdcp_log.c hdcp.h src/sys/external/bsd/drm2/dist/drm/amd/display/modules/inc: mod_hdcp.h src/sys/external/bsd/drm2/dist/drm/amd/powerplay: amdgpu_navi10_ppt.c src/sys/external/bsd/drm2/dist/drm/amd/powerplay/smumgr: amdgpu_fiji_smumgr.c amdgpu_iceland_smumgr.c src/sys/external/bsd/drm2/include/linux: dma-fence.h hash.h hashtable.h src/sys/external/bsd/drm2/include/uapi/linux: kfd_ioctl.h src/sys/external/bsd/drm2/linux: linux_dma_fence.c Log Message: amdgpu_fb.c amdgpu_fence.c amdgpu_gart.c amdgpu_fixpt31_32.c amdgpu_fiji_smumgr.c amdgpu_gem.c amdgpu_gfx_v10_0.c amdgpu_gfx_v6_0.c through amdgpu_gfx_v9_0.c amdgpu_gmc.c amdgpu_gmc_v6_0.c through amdgpu_gmc_v10_0.c amdgpu_gtt_mgr.c some amdgpu_h* files some amdgpu_i* files some amdgpu_j* files amdgpu_kms.c some amdgpu_m* and amdgpu_n* files To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/common/include/linux/printk.h cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/amdgpu/amdgpu_module.c cvs rdiff -u -r1.20 -r1.21 src/sys/external/bsd/drm2/amdgpu/files.amdgpu cvs rdiff -u -r1.6 -r1.7 \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu.h \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_cs.c cvs rdiff -u -r1.8 -r1.9 \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_bo_list.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gem.c cvs rdiff -u -r1.9 -r1.10 \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_fb.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_fence.c cvs rdiff -u -r1.5 -r1.6 \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gart.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v7_0.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v8_0.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_irq.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_kms.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gart.h \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v10_0.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v6_0.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v9_0.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v10_0.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v6_0.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v9_0.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gtt_mgr.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ids.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v1_0.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v2_0.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v2_5.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_mes_v10_1.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi10_reg_init.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi12_reg_init.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi14_reg_init.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_nv.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_rlc.h cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v7_0.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v8_0.c cvs rdiff -u -r1.7 -r1.8 \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ih.c \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ttm.c cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ttm.h cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/amd/display/dc/basics/amdgpu_fixpt31_32.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_ddc.c \ src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_gpio.c \ src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_hpd.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/amd/display/dc/hdcp/amdgpu_hdcp_msg.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp1_execution.c \ src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp_ddc.c \ src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp_log.c \ src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/hdcp.h cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/amd/display/modules/inc/mod_hdcp.h cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/amd/powerplay/amdgpu_navi10_ppt.c cvs rdiff -u -r1.2 -r1.3 \ src/sys/external/bsd/drm2/dist/drm/amd/powerplay/smumgr/amdgpu_fiji_smumgr.c \ src/sys/external/bsd/drm2/dist/drm/amd/powerplay/smumgr/amdgpu_iceland_smumgr.c cvs rdiff -u -r1.13 -r1.14 \ src/sys/external/bsd/drm2/include/linux/dma-fence.h cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/include/linux/hash.h cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/include/linux/hashtable.h cvs rdiff -u -r1.1 -r1.2 \ src/sys/external/bsd/drm2/include/uapi/linux/kfd_ioctl.h cvs rdiff -u -r1.18 -r1.19 src/sys/external/bsd/drm2/linux/linux_dma_fence.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/external/bsd/common/include/linux/printk.h diff -u src/sys/external/bsd/common/include/linux/printk.h:1.11 src/sys/external/bsd/common/include/linux/printk.h:1.12 --- src/sys/external/bsd/common/include/linux/printk.h:1.11 Sun Dec 19 11:38:37 2021 +++ src/sys/external/bsd/common/include/linux/printk.h Sun Dec 19 12:02:38 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: printk.h,v 1.11 2021/12/19 11:38:37 riastradh Exp $ */ +/* $NetBSD: printk.h,v 1.12 2021/12/19 12:02:38 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -58,6 +58,8 @@ #define KERN_DEBUG "kern debug: " #define KERN_CONT "" +#define printk_ratelimit() 0 /* XXX */ + struct va_format { const char *fmt; va_list *va; Index: src/sys/external/bsd/drm2/amdgpu/amdgpu_module.c diff -u src/sys/external/bsd/drm2/amdgpu/amdgpu_module.c:1.6 src/sys/external/bsd/drm2/amdgpu/amdgpu_module.c:1.7 --- src/sys/external/bsd/drm2/amdgpu/amdgpu_module.c:1.6 Sun Dec 19 12:01:48 2021 +++ src/sys/external/bsd/drm2/amdgpu/amdgpu_module.c Sun Dec 19 12:02:38 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_module.c,v 1.6 2021/12/19 12:01:48 riastradh Exp $ */ +/* $NetBSD: amdgpu_module.c,v 1.7 2021/12/19 12:02:38 riastradh Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_module.c,v 1.6 2021/12/19 12:01:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_module.c,v 1.7 2021/12/19 12:02:38 riastradh Exp $"); #include <sys/types.h> #include <sys/module.h> @@ -43,6 +43,7 @@ __KERNEL_RCSID(0, "$NetBSD: amdgpu_modul #include <drm/drm_drv.h> #include <drm/drm_sysctl.h> +#include <linux/idr.h> #include <linux/mutex.h> #include "amdgpu.h" @@ -59,6 +60,9 @@ MODULE(MODULE_CLASS_DRIVER, amdgpu, "drm extern struct drm_driver *const amdgpu_drm_driver; extern struct amdgpu_mgpu_info mgpu_info; +/* XXX Kludge to replace DEFINE_IDA in amdgpu_ids.c. */ +extern struct ida amdgpu_pasid_ida; + struct drm_sysctl_def amdgpu_def = DRM_SYSCTL_INIT(); static int @@ -74,6 +78,7 @@ amdgpu_init(void) amdgpu_drm_driver->driver_features |= DRIVER_MODESET; linux_mutex_init(&mgpu_info.mutex); + ida_init(&amdgpu_pasid_ida); #if notyet /* XXX amdgpu acpi */ amdgpu_register_atpx_handler(); @@ -108,6 +113,7 @@ amdgpu_fini(void) amdgpu_unregister_atpx_handler(); #endif + ida_destroy(&amdgpu_pasid_ida); linux_mutex_destroy(&mgpu_info.mutex); } Index: src/sys/external/bsd/drm2/amdgpu/files.amdgpu diff -u src/sys/external/bsd/drm2/amdgpu/files.amdgpu:1.20 src/sys/external/bsd/drm2/amdgpu/files.amdgpu:1.21 --- src/sys/external/bsd/drm2/amdgpu/files.amdgpu:1.20 Sun Dec 19 12:01:30 2021 +++ src/sys/external/bsd/drm2/amdgpu/files.amdgpu Sun Dec 19 12:02:38 2021 @@ -1,4 +1,4 @@ -# $NetBSD: files.amdgpu,v 1.20 2021/12/19 12:01:30 riastradh Exp $ +# $NetBSD: files.amdgpu,v 1.21 2021/12/19 12:02:38 riastradh Exp $ version 20180827 @@ -49,6 +49,10 @@ makeoptions amdgpu "CWARNFLAGS.amdgpu_ar # -Wtype-limits raises warnings about code that is careful to avoid # overflow in arithmetic, which is the opposite of helpful. &@!#* makeoptions amdgpu "CWARNFLAGS.amdgpu_bo_list.c"+="-Wno-type-limits" +makeoptions amdgpu "CWARNFLAGS.amdgpu_hw_ddc.c"+="-Wno-type-limits" +makeoptions amdgpu "CWARNFLAGS.amdgpu_hw_generic.c"+="-Wno-type-limits" +makeoptions amdgpu "CWARNFLAGS.amdgpu_hw_hpd.c"+="-Wno-type-limits" +makeoptions amdgpu "CWARNFLAGS.amdgpu_navi10_ppt.c"+="-Wno-type-limits" ifdef amd64 makeoptions amdgpu "COPTS.amdgpu_dcn20_resource.c"+="-mhard-float -msse -msse2" @@ -63,6 +67,8 @@ makeoptions amdgpu "COPTS.amdgpu_display makeoptions amdgpu "COPTS.amdgpu_display_rq_dlg_calc_20.c"+="-mhard-float -msse -msse2" makeoptions amdgpu "COPTS.amdgpu_display_rq_dlg_calc_20v2.c"+="-mhard-float -msse -msse2" makeoptions amdgpu "COPTS.amdgpu_display_rq_dlg_calc_21.c"+="-mhard-float -msse -msse2" +makeoptions amdgpu "COPTS.amdgpu_dml1_display_rq_dlg_calc.c"+="-mhard-float -msse -msse2" +makeoptions amdgpu "COPTS.amdgpu_dml_common_defs.c"+="-mhard-float -msse -msse2" endif # Local additions. Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu.h diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu.h:1.6 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu.h:1.7 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu.h:1.6 Sun Dec 19 11:35:06 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu.h Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu.h,v 1.6 2021/12/19 11:35:06 riastradh Exp $ */ +/* $NetBSD: amdgpu.h,v 1.7 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2008 Advanced Micro Devices, Inc. @@ -953,7 +953,7 @@ struct amdgpu_device { atomic64_t gart_pin_size; /* soc15 register offset based on ip, instance and segment */ - uint32_t *reg_offset[MAX_HWIP][HWIP_MAX_INSTANCE]; + const uint32_t *reg_offset[MAX_HWIP][HWIP_MAX_INSTANCE]; /* delayed work_func for deferring clockgating during resume */ struct delayed_work delayed_init_work; Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_cs.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_cs.c:1.6 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_cs.c:1.7 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_cs.c:1.6 Sun Dec 19 10:59:01 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_cs.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_cs.c,v 1.6 2021/12/19 10:59:01 riastradh Exp $ */ +/* $NetBSD: amdgpu_cs.c,v 1.7 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2008 Jerome Glisse. @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_cs.c,v 1.6 2021/12/19 10:59:01 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_cs.c,v 1.7 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/file.h> #include <linux/pagemap.h> @@ -479,16 +479,19 @@ static int amdgpu_cs_list_validate(struc list_for_each_entry(lobj, validated, tv.head) { struct amdgpu_bo *bo = ttm_to_amdgpu_bo(lobj->tv.bo); +#ifdef __NetBSD__ + struct vmspace *usermm; +#else struct mm_struct *usermm; +#endif usermm = amdgpu_ttm_tt_get_usermm(bo->tbo.ttm); -#ifdef __NetBSD__ /* XXX amdgpu userptr */ - if (usermm) - return -EPERM; +#ifdef __NetBSD__ + if (usermm && usermm != curproc->p_vmspace) #else if (usermm && usermm != current->mm) - return -EPERM; #endif + return -EPERM; if (amdgpu_ttm_tt_is_userptr(bo->tbo.ttm) && lobj->user_invalidated && lobj->user_pages) { Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_bo_list.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_bo_list.c:1.8 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_bo_list.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_bo_list.c:1.8 Sun Dec 19 10:59:01 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_bo_list.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_bo_list.c,v 1.8 2021/12/19 10:59:01 riastradh Exp $ */ +/* $NetBSD: amdgpu_bo_list.c,v 1.9 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2015 Advanced Micro Devices, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_bo_list.c,v 1.8 2021/12/19 10:59:01 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_bo_list.c,v 1.9 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/uaccess.h> @@ -100,7 +100,11 @@ int amdgpu_bo_list_create(struct amdgpu_ struct amdgpu_bo_list_entry *entry; struct drm_gem_object *gobj; struct amdgpu_bo *bo; +#ifdef __NetBSD__ + struct vmspace *usermm; +#else struct mm_struct *usermm; +#endif gobj = drm_gem_object_lookup(filp, info[i].bo_handle); if (!gobj) { Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gem.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gem.c:1.8 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gem.c:1.9 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gem.c:1.8 Sun Dec 19 09:59:38 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gem.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gem.c,v 1.8 2021/12/19 09:59:38 riastradh Exp $ */ +/* $NetBSD: amdgpu_gem.c,v 1.9 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2008 Advanced Micro Devices, Inc. @@ -28,7 +28,7 @@ * Jerome Glisse */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gem.c,v 1.8 2021/12/19 09:59:38 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gem.c,v 1.9 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/ktime.h> #include <linux/module.h> @@ -133,11 +133,19 @@ int amdgpu_gem_object_open(struct drm_ge struct amdgpu_fpriv *fpriv = file_priv->driver_priv; struct amdgpu_vm *vm = &fpriv->vm; struct amdgpu_bo_va *bo_va; +#ifdef __NetBSD__ + struct vmspace *mm; +#else struct mm_struct *mm; +#endif int r; mm = amdgpu_ttm_tt_get_usermm(abo->tbo.ttm); +#ifdef __NetBSD__ + if (mm && mm != curproc->p_vmspace) +#else if (mm && mm != current->mm) +#endif return -EPERM; if (abo->flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID && @@ -593,17 +601,17 @@ int amdgpu_gem_va_ioctl(struct drm_devic if (args->va_address < AMDGPU_VA_RESERVED_SIZE) { dev_dbg(pci_dev_dev(dev->pdev), - "va_address 0x%LX is in reserved area 0x%LX\n", - args->va_address, AMDGPU_VA_RESERVED_SIZE); + "va_address 0x%"PRIX64" is in reserved area 0x%"PRIX64"\n", + args->va_address, (uint64_t)AMDGPU_VA_RESERVED_SIZE); return -EINVAL; } if (args->va_address >= AMDGPU_GMC_HOLE_START && args->va_address < AMDGPU_GMC_HOLE_END) { dev_dbg(pci_dev_dev(dev->pdev), - "va_address 0x%LX is in VA hole 0x%LX-0x%LX\n", - args->va_address, AMDGPU_GMC_HOLE_START, - AMDGPU_GMC_HOLE_END); + "va_address 0x%"PRIX64" is in VA hole 0x%"PRIX64"-0x%"PRIX64"\n", + args->va_address, (uint64_t)AMDGPU_GMC_HOLE_START, + (uint64_t)AMDGPU_GMC_HOLE_END); return -EINVAL; } Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_fb.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_fb.c:1.9 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_fb.c:1.10 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_fb.c:1.9 Sun Dec 19 10:46:43 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_fb.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_fb.c,v 1.9 2021/12/19 10:46:43 riastradh Exp $ */ +/* $NetBSD: amdgpu_fb.c,v 1.10 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright © 2007 David Airlie @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_fb.c,v 1.9 2021/12/19 10:46:43 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_fb.c,v 1.10 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/module.h> #include <linux/pm_runtime.h> @@ -57,6 +57,8 @@ __KERNEL_RCSID(0, "$NetBSD: amdgpu_fb.c, the helper contains a pointer to amdgpu framebuffer baseclass. */ +#ifndef __NetBSD__ + static int amdgpufb_open(struct fb_info *info, int user) { @@ -80,7 +82,6 @@ amdgpufb_release(struct fb_info *info, i return 0; } -#ifndef __NetBSD__ static const struct fb_ops amdgpufb_ops = { .owner = THIS_MODULE, DRM_FB_HELPER_DEFAULT_OPS, @@ -90,6 +91,7 @@ static const struct fb_ops amdgpufb_ops .fb_copyarea = drm_fb_helper_cfb_copyarea, .fb_imageblit = drm_fb_helper_cfb_imageblit, }; + #endif @@ -213,17 +215,13 @@ static int amdgpufb_create(struct drm_fb { struct amdgpu_fbdev *rfbdev = (struct amdgpu_fbdev *)helper; struct amdgpu_device *adev = rfbdev->adev; -#ifndef __NetBSD__ struct fb_info *info; -#endif struct drm_framebuffer *fb = NULL; struct drm_mode_fb_cmd2 mode_cmd; struct drm_gem_object *gobj = NULL; struct amdgpu_bo *abo = NULL; int ret; -#ifndef __NetBSD__ unsigned long tmp; -#endif mode_cmd.width = sizes->surface_width; mode_cmd.height = sizes->surface_height; @@ -242,53 +240,48 @@ static int amdgpufb_create(struct drm_fb abo = gem_to_amdgpu_bo(gobj); -#ifdef __NetBSD__ - ret = amdgpu_framebuffer_init(adev->ddev, &rfbdev->rfb, &mode_cmd, gobj); +#ifndef __NetBSD__ + /* okay we have an object now allocate the framebuffer */ + info = drm_fb_helper_alloc_fbi(helper); + if (IS_ERR(info)) { + ret = PTR_ERR(info); + goto out; + } +#endif + + ret = amdgpu_display_framebuffer_init(adev->ddev, &rfbdev->rfb, + &mode_cmd, gobj); if (ret) { DRM_ERROR("failed to initialize framebuffer %d\n", ret); - goto out_unref; + goto out; } - (void)memset(rbo->kptr, 0, amdgpu_bo_size(rbo)); + fb = &rfbdev->rfb.base; + + /* setup helper */ + rfbdev->helper.fb = fb; +#ifdef __NetBSD__ { static const struct amdgpufb_attach_args zero_afa; struct amdgpufb_attach_args afa = zero_afa; + __USE(tmp); + __USE(info); + afa.afa_fb_helper = helper; afa.afa_fb_sizes = *sizes; - afa.afa_fb_ptr = rbo->kptr; + afa.afa_fb_ptr = amdgpu_bo_kptr(abo); afa.afa_fb_linebytes = mode_cmd.pitches[0]; helper->fbdev = config_found(adev->ddev->dev, &afa, NULL, CFARGS(.iattr = "amdgpufbbus")); if (helper->fbdev == NULL) { DRM_ERROR("failed to attach amdgpufb\n"); - goto out_unref; + goto out; } } - fb = &rfbdev->rfb.base; - rfbdev->helper.fb = fb; #else /* __NetBSD__ */ - /* okay we have an object now allocate the framebuffer */ - info = drm_fb_helper_alloc_fbi(helper); - if (IS_ERR(info)) { - ret = PTR_ERR(info); - goto out; - } - - ret = amdgpu_display_framebuffer_init(adev->ddev, &rfbdev->rfb, - &mode_cmd, gobj); - if (ret) { - DRM_ERROR("failed to initialize framebuffer %d\n", ret); - goto out; - } - - fb = &rfbdev->rfb.base; - - /* setup helper */ - rfbdev->helper.fb = fb; - info->fbops = &amdgpufb_ops; tmp = amdgpu_bo_gpu_offset(abo) - adev->gmc.vram_start; Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_fence.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_fence.c:1.9 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_fence.c:1.10 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_fence.c:1.9 Sun Dec 19 11:55:47 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_fence.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_fence.c,v 1.9 2021/12/19 11:55:47 riastradh Exp $ */ +/* $NetBSD: amdgpu_fence.c,v 1.10 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2009 Jerome Glisse. @@ -31,7 +31,7 @@ * Dave Airlie */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_fence.c,v 1.9 2021/12/19 11:55:47 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_fence.c,v 1.10 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/seq_file.h> #include <linux/atomic.h> @@ -422,7 +422,7 @@ int amdgpu_fence_driver_start_ring(struc ring->fence_drv.initialized = true; DRM_DEV_DEBUG(adev->dev, "fence driver on ring %s use gpu addr " - "0x%016"RPIx64", cpu addr 0x%p\n", ring->name, + "0x%016"PRIx64", cpu addr 0x%p\n", ring->name, ring->fence_drv.gpu_addr, ring->fence_drv.cpu_addr); return 0; } @@ -668,6 +668,7 @@ static void amdgpu_fence_free(struct rcu { struct dma_fence *f = container_of(rcu, struct dma_fence, rcu); struct amdgpu_fence *fence = to_amdgpu_fence(f); + dma_fence_destroy(f); kmem_cache_free(amdgpu_fence_slab, fence); } Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gart.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gart.c:1.5 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gart.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gart.c:1.5 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gart.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gart.c,v 1.5 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_gart.c,v 1.6 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2008 Advanced Micro Devices, Inc. @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gart.c,v 1.5 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gart.c,v 1.6 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/pci.h> #include <linux/vmalloc.h> @@ -273,6 +273,7 @@ static void amdgpu_gart_post_update(struct amdgpu_device *adev, unsigned gpu_pgstart, unsigned gpu_npages) { + unsigned i; if (adev->gart.ag_table_map != NULL) { const unsigned entsize = @@ -282,8 +283,10 @@ amdgpu_gart_post_update(struct amdgpu_de gpu_pgstart*entsize, gpu_npages*entsize, BUS_DMASYNC_PREWRITE); } - mb(); - amdgpu_gart_flush_gpu_tlb(adev, 0); + mb(); /* XXX why is bus_dmamap_sync not enough? */ + amdgpu_asic_flush_hdp(adev, NULL); + for (i = 0; i < adev->num_vmhubs; i++) + amdgpu_gmc_flush_gpu_tlb(adev, 0, i, 0); } #endif @@ -295,7 +298,7 @@ void amdgpu_gart_unbind(struct amdgpu_device *adev, uint64_t gpu_start, unsigned npages) { - const unsigned gpu_per_cpu = (PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE); + const unsigned gpu_per_cpu = AMDGPU_GPU_PAGES_IN_CPU_PAGE; const unsigned gpu_npages = (npages * gpu_per_cpu); const uint64_t gpu_pgstart = (gpu_start / AMDGPU_GPU_PAGE_SIZE); const uint64_t pgstart = (gpu_pgstart / gpu_per_cpu); @@ -313,17 +316,16 @@ amdgpu_gart_unbind(struct amdgpu_device amdgpu_gart_pre_update(adev, gpu_pgstart, gpu_npages); for (pgno = 0; pgno < npages; pgno++) { - if (adev->gart.pages[pgstart + pgno] == NULL) - continue; +#ifdef CONFIG_DRM_AMDGPU_GART_DEBUGFS adev->gart.pages[pgstart + pgno] = NULL; - adev->gart.pages_addr[pgstart + pgno] = adev->dummy_page.addr; +#endif if (adev->gart.ptr == NULL) continue; for (gpu_pgno = 0; gpu_pgno < gpu_per_cpu; gpu_pgno++) { - amdgpu_gart_set_pte_pde(adev, adev->gart.ptr, + amdgpu_gmc_set_pte_pde(adev, adev->gart.ptr, gpu_pgstart + gpu_per_cpu*pgno + gpu_pgno, - adev->dummy_page.addr, flags); + adev->dummy_page_addr, flags); } } amdgpu_gart_post_update(adev, gpu_pgstart, gpu_npages); @@ -422,7 +424,7 @@ int amdgpu_gart_bind(struct amdgpu_device *adev, uint64_t gpu_start, unsigned npages, struct page **pages, bus_dmamap_t dmamap, uint32_t flags) { - const unsigned gpu_per_cpu = (PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE); + const unsigned gpu_per_cpu = AMDGPU_GPU_PAGES_IN_CPU_PAGE; const unsigned gpu_npages = (npages * gpu_per_cpu); const uint64_t gpu_pgstart = (gpu_start / AMDGPU_GPU_PAGE_SIZE); const uint64_t pgstart = (gpu_pgstart / gpu_per_cpu); @@ -443,14 +445,15 @@ amdgpu_gart_bind(struct amdgpu_device *a const bus_addr_t addr = dmamap->dm_segs[pgno].ds_addr; KASSERT(dmamap->dm_segs[pgno].ds_len == PAGE_SIZE); - adev->gart.pages[pgstart + pgno] = pages[pgno]; - adev->gart.pages_addr[pgstart + pgno] = addr; +#ifdef CONFIG_DRM_AMDGPU_GART_DEBUGFS + adev->gart.pages[pgstart + pgno] = NULL; +#endif if (adev->gart.ptr == NULL) continue; for (gpu_pgno = 0; gpu_pgno < gpu_per_cpu; gpu_pgno++) { - amdgpu_gart_set_pte_pde(adev, adev->gart.ptr, + amdgpu_gmc_set_pte_pde(adev, adev->gart.ptr, gpu_pgstart + gpu_per_cpu*pgno + gpu_pgno, addr + gpu_pgno*AMDGPU_GPU_PAGE_SIZE, flags); } Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v7_0.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v7_0.c:1.5 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v7_0.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v7_0.c:1.5 Sun Dec 19 09:59:46 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v7_0.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gfx_v7_0.c,v 1.5 2021/12/19 09:59:46 riastradh Exp $ */ +/* $NetBSD: amdgpu_gfx_v7_0.c,v 1.6 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2014 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gfx_v7_0.c,v 1.5 2021/12/19 09:59:46 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gfx_v7_0.c,v 1.6 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/firmware.h> #include <linux/module.h> @@ -56,6 +56,8 @@ __KERNEL_RCSID(0, "$NetBSD: amdgpu_gfx_v #include "oss/oss_2_0_d.h" #include "oss/oss_2_0_sh_mask.h" +#include <linux/nbsd-namespace.h> + #define NUM_SIMD_PER_CU 0x4 /* missing from the gfx_7 IP headers */ #define GFX7_NUM_GFX_RINGS 1 @@ -4541,11 +4543,11 @@ static int gfx_v7_0_sw_fini(void *handle gfx_v7_0_mec_fini(adev); amdgpu_bo_free_kernel(&adev->gfx.rlc.clear_state_obj, &adev->gfx.rlc.clear_state_gpu_addr, - (void **)&adev->gfx.rlc.cs_ptr); + (void **)__UNVOLATILE(&adev->gfx.rlc.cs_ptr)); if (adev->gfx.rlc.cp_table_size) { amdgpu_bo_free_kernel(&adev->gfx.rlc.cp_table_obj, &adev->gfx.rlc.cp_table_gpu_addr, - (void **)&adev->gfx.rlc.cp_table_ptr); + (void **)__UNVOLATILE(&adev->gfx.rlc.cp_table_ptr)); } gfx_v7_0_free_microcode(adev); Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v8_0.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v8_0.c:1.5 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v8_0.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v8_0.c:1.5 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v8_0.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gfx_v8_0.c,v 1.5 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_gfx_v8_0.c,v 1.6 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2014 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gfx_v8_0.c,v 1.5 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gfx_v8_0.c,v 1.6 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/delay.h> #include <linux/kernel.h> @@ -2084,12 +2084,12 @@ static int gfx_v8_0_sw_fini(void *handle amdgpu_gfx_rlc_fini(adev); amdgpu_bo_free_kernel(&adev->gfx.rlc.clear_state_obj, &adev->gfx.rlc.clear_state_gpu_addr, - (void **)&adev->gfx.rlc.cs_ptr); + (void **)__UNVOLATILE(&adev->gfx.rlc.cs_ptr)); if ((adev->asic_type == CHIP_CARRIZO) || (adev->asic_type == CHIP_STONEY)) { amdgpu_bo_free_kernel(&adev->gfx.rlc.cp_table_obj, &adev->gfx.rlc.cp_table_gpu_addr, - (void **)&adev->gfx.rlc.cp_table_ptr); + (void **)__UNVOLATILE(&adev->gfx.rlc.cp_table_ptr)); } gfx_v8_0_free_microcode(adev); Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_irq.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_irq.c:1.5 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_irq.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_irq.c:1.5 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_irq.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_irq.c,v 1.5 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_irq.c,v 1.6 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2008 Advanced Micro Devices, Inc. @@ -45,7 +45,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_irq.c,v 1.5 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_irq.c,v 1.6 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/irq.h> #include <linux/pci.h> @@ -253,6 +253,7 @@ int amdgpu_irq_init(struct amdgpu_device adev->irq.msi_enabled = false; if (amdgpu_msi_ok(adev)) { +#ifndef __NetBSD__ /* XXX amdgpu msix */ int nvec = pci_msix_vec_count(adev->pdev); unsigned int flags; @@ -267,6 +268,7 @@ int amdgpu_irq_init(struct amdgpu_device adev->irq.msi_enabled = true; dev_dbg(adev->dev, "amdgpu: using MSI/MSI-X.\n"); } +#endif } if (!amdgpu_device_has_dc_support(adev)) { @@ -322,8 +324,10 @@ void amdgpu_irq_fini(struct amdgpu_devic if (adev->irq.installed) { drm_irq_uninstall(adev->ddev); adev->irq.installed = false; +#ifndef __NetBSD__ /* XXX amdgpu msix */ if (adev->irq.msi_enabled) pci_free_irq_vectors(adev->pdev); +#endif if (!amdgpu_device_has_dc_support(adev)) flush_work(&adev->hotplug_work); } @@ -422,7 +426,7 @@ void amdgpu_irq_dispatch(struct amdgpu_d bool handled = false; int r; - entry.iv_entry = (const uint32_t *)&ih->ring[ring_index]; + entry.iv_entry = (const uint32_t *)__UNVOLATILE(&ih->ring[ring_index]); amdgpu_ih_decode_iv(adev, &entry); trace_amdgpu_iv(ih - &adev->irq.ih, &entry); @@ -436,8 +440,10 @@ void amdgpu_irq_dispatch(struct amdgpu_d } else if (src_id >= AMDGPU_MAX_IRQ_SRC_ID) { DRM_DEBUG("Invalid src_id in IV: %d\n", src_id); +#ifndef __NetBSD__ /* XXX amdgpu irq */ } else if (adev->irq.virq[src_id]) { generic_handle_irq(irq_find_mapping(adev->irq.domain, src_id)); +#endif } else if (!adev->irq.client[client_id].sources) { DRM_DEBUG("Unregistered interrupt client_id: %d src_id: %d\n", @@ -604,6 +610,8 @@ bool amdgpu_irq_enabled(struct amdgpu_de return !!atomic_read(&src->enabled_types[type]); } +#ifndef __NetBSD__ /* XXX amdgpu irq */ + /* XXX: Generic IRQ handling */ static void amdgpu_irq_mask(struct irq_data *irqd) { @@ -709,3 +717,5 @@ unsigned amdgpu_irq_create_mapping(struc return adev->irq.virq[src_id]; } + +#endif Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_kms.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_kms.c:1.5 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_kms.c:1.6 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_kms.c:1.5 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_kms.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_kms.c,v 1.5 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_kms.c,v 1.6 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2008 Advanced Micro Devices, Inc. @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_kms.c,v 1.5 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_kms.c,v 1.6 2021/12/19 12:02:39 riastradh Exp $"); #include "amdgpu.h" #include <drm/drm_debugfs.h> @@ -205,7 +205,7 @@ int amdgpu_driver_load_kms(struct drm_de out: if (r) { /* balance pm_runtime_get_sync in amdgpu_driver_unload_kms */ - if (adev->rmmio && adev->runpm) + if (adev->rmmio_size && adev->runpm) pm_runtime_put_noidle(dev->dev); amdgpu_driver_unload_kms(dev); } Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gart.h diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gart.h:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gart.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gart.h:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gart.h Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gart.h,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_gart.h,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2017 Advanced Micro Devices, Inc. @@ -42,6 +42,10 @@ struct amdgpu_bo; #define AMDGPU_GPU_PAGES_IN_CPU_PAGE (PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE) struct amdgpu_gart { +#ifdef __NetBSD__ + bus_dma_segment_t ag_table_seg; + bus_dmamap_t ag_table_map; +#endif struct amdgpu_bo *bo; /* CPU kmapped address of gart table */ void *ptr; Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v10_0.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v10_0.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v10_0.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v10_0.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v10_0.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gfx_v10_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_gfx_v10_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gfx_v10_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gfx_v10_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/delay.h> #include <linux/kernel.h> @@ -52,6 +52,8 @@ __KERNEL_RCSID(0, "$NetBSD: amdgpu_gfx_v #include "gfx_v10_0.h" #include "nbio_v2_3.h" +#include <linux/nbsd-namespace.h> + /** * Navi10 has two graphic rings to share each graphic pipe. * 1. Primary ring @@ -608,15 +610,15 @@ static void gfx_v10_0_init_rlc_ext_micro adev->gfx.rlc_srlc_fw_version = le32_to_cpu(rlc_hdr->save_restore_list_cntl_ucode_ver); adev->gfx.rlc_srlc_feature_version = le32_to_cpu(rlc_hdr->save_restore_list_cntl_feature_ver); adev->gfx.rlc.save_restore_list_cntl_size_bytes = le32_to_cpu(rlc_hdr->save_restore_list_cntl_size_bytes); - adev->gfx.rlc.save_restore_list_cntl = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_cntl_offset_bytes); + adev->gfx.rlc.save_restore_list_cntl = (const u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_cntl_offset_bytes); adev->gfx.rlc_srlg_fw_version = le32_to_cpu(rlc_hdr->save_restore_list_gpm_ucode_ver); adev->gfx.rlc_srlg_feature_version = le32_to_cpu(rlc_hdr->save_restore_list_gpm_feature_ver); adev->gfx.rlc.save_restore_list_gpm_size_bytes = le32_to_cpu(rlc_hdr->save_restore_list_gpm_size_bytes); - adev->gfx.rlc.save_restore_list_gpm = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_gpm_offset_bytes); + adev->gfx.rlc.save_restore_list_gpm = (const u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_gpm_offset_bytes); adev->gfx.rlc_srls_fw_version = le32_to_cpu(rlc_hdr->save_restore_list_srm_ucode_ver); adev->gfx.rlc_srls_feature_version = le32_to_cpu(rlc_hdr->save_restore_list_srm_feature_ver); adev->gfx.rlc.save_restore_list_srm_size_bytes = le32_to_cpu(rlc_hdr->save_restore_list_srm_size_bytes); - adev->gfx.rlc.save_restore_list_srm = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_srm_offset_bytes); + adev->gfx.rlc.save_restore_list_srm = (const u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_srm_offset_bytes); adev->gfx.rlc.reg_list_format_direct_reg_list_length = le32_to_cpu(rlc_hdr->reg_list_format_direct_reg_list_length); } @@ -997,12 +999,12 @@ static void gfx_v10_0_rlc_fini(struct am /* clear state block */ amdgpu_bo_free_kernel(&adev->gfx.rlc.clear_state_obj, &adev->gfx.rlc.clear_state_gpu_addr, - (void **)&adev->gfx.rlc.cs_ptr); + (void **)__UNVOLATILE(&adev->gfx.rlc.cs_ptr)); /* jump table block */ amdgpu_bo_free_kernel(&adev->gfx.rlc.cp_table_obj, &adev->gfx.rlc.cp_table_gpu_addr, - (void **)&adev->gfx.rlc.cp_table_ptr); + (void **)__UNVOLATILE(&adev->gfx.rlc.cp_table_ptr)); } static int gfx_v10_0_rlc_init(struct amdgpu_device *adev) @@ -1254,7 +1256,7 @@ static int gfx_v10_0_gfx_ring_init(struc ring->doorbell_index = adev->doorbell_index.gfx_ring0 << 1; else ring->doorbell_index = adev->doorbell_index.gfx_ring1 << 1; - sprintf(ring->name, "gfx_%d.%d.%d", ring->me, ring->pipe, ring->queue); + snprintf(ring->name, sizeof(ring->name), "gfx_%d.%d.%d", ring->me, ring->pipe, ring->queue); irq_type = AMDGPU_CP_IRQ_GFX_ME0_PIPE0_EOP + ring->pipe; r = amdgpu_ring_init(adev, ring, 1024, @@ -1283,7 +1285,7 @@ static int gfx_v10_0_compute_ring_init(s ring->doorbell_index = (adev->doorbell_index.mec_ring0 + ring_id) << 1; ring->eop_gpu_addr = adev->gfx.mec.hpd_eop_gpu_addr + (ring_id * GFX10_MEC_HPD_SIZE); - sprintf(ring->name, "comp_%d.%d.%d", ring->me, ring->pipe, ring->queue); + snprintf(ring->name, sizeof(ring->name), "comp_%d.%d.%d", ring->me, ring->pipe, ring->queue); irq_type = AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP + ((ring->me - 1) * adev->gfx.mec.num_pipe_per_mec) @@ -2149,7 +2151,7 @@ static void gfx_v10_0_rlc_backdoor_autol FIRMWARE_ID_SDMA0_UCODE, fw_data, fw_size); gfx_v10_0_rlc_backdoor_autoload_copy_ucode(adev, FIRMWARE_ID_SDMA0_JT, - (uint32_t *)fw_data + + (const uint32_t *)fw_data + sdma_hdr->jt_offset, sdma_hdr->jt_size * 4); } else if (i == 1) { @@ -2157,7 +2159,7 @@ static void gfx_v10_0_rlc_backdoor_autol FIRMWARE_ID_SDMA1_UCODE, fw_data, fw_size); gfx_v10_0_rlc_backdoor_autoload_copy_ucode(adev, FIRMWARE_ID_SDMA1_JT, - (uint32_t *)fw_data + + (const uint32_t *)fw_data + sdma_hdr->jt_offset, sdma_hdr->jt_size * 4); } @@ -4321,7 +4323,7 @@ static u64 gfx_v10_0_ring_get_wptr_gfx(s /* XXX check if swapping is necessary on BE */ if (ring->use_doorbell) { - wptr = atomic64_read((atomic64_t *)&adev->wb.wb[ring->wptr_offs]); + wptr = atomic_load_relaxed(&adev->wb.wb[ring->wptr_offs]); } else { wptr = RREG32_SOC15(GC, 0, mmCP_RB0_WPTR); wptr += (u64)RREG32_SOC15(GC, 0, mmCP_RB0_WPTR_HI) << 32; @@ -4336,7 +4338,7 @@ static void gfx_v10_0_ring_set_wptr_gfx( if (ring->use_doorbell) { /* XXX check if swapping is necessary on BE */ - atomic64_set((atomic64_t *)&adev->wb.wb[ring->wptr_offs], ring->wptr); + atomic_store_relaxed(&adev->wb.wb[ring->wptr_offs], ring->wptr); WDOORBELL64(ring->doorbell_index, ring->wptr); } else { WREG32_SOC15(GC, 0, mmCP_RB0_WPTR, lower_32_bits(ring->wptr)); @@ -4355,7 +4357,7 @@ static u64 gfx_v10_0_ring_get_wptr_compu /* XXX check if swapping is necessary on BE */ if (ring->use_doorbell) - wptr = atomic64_read((atomic64_t *)&ring->adev->wb.wb[ring->wptr_offs]); + wptr = atomic_load_relaxed(&ring->adev->wb.wb[ring->wptr_offs]); else BUG(); return wptr; @@ -4367,7 +4369,7 @@ static void gfx_v10_0_ring_set_wptr_comp /* XXX check if swapping is necessary on BE */ if (ring->use_doorbell) { - atomic64_set((atomic64_t *)&adev->wb.wb[ring->wptr_offs], ring->wptr); + atomic_store_relaxed(&adev->wb.wb[ring->wptr_offs], ring->wptr); WDOORBELL64(ring->doorbell_index, ring->wptr); } else { BUG(); /* only DOORBELL method supported on gfx10 now */ Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v6_0.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v6_0.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v6_0.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v6_0.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v6_0.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gfx_v6_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_gfx_v6_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2015 Advanced Micro Devices, Inc. @@ -23,7 +23,7 @@ * */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gfx_v6_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gfx_v6_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/firmware.h> #include <linux/module.h> @@ -2410,7 +2410,7 @@ static int gfx_v6_0_rlc_init(struct amdg AMDGPU_GEM_DOMAIN_VRAM, &adev->gfx.rlc.clear_state_obj, &adev->gfx.rlc.clear_state_gpu_addr, - (void **)&adev->gfx.rlc.cs_ptr); + (void **)__UNVOLATILE(&adev->gfx.rlc.cs_ptr)); if (r) { dev_warn(adev->dev, "(%d) create RLC c bo failed\n", r); amdgpu_gfx_rlc_fini(adev); @@ -3117,7 +3117,7 @@ static int gfx_v6_0_sw_init(void *handle for (i = 0; i < adev->gfx.num_gfx_rings; i++) { ring = &adev->gfx.gfx_ring[i]; ring->ring_obj = NULL; - sprintf(ring->name, "gfx"); + snprintf(ring->name, sizeof(ring->name), "gfx"); r = amdgpu_ring_init(adev, ring, 1024, &adev->gfx.eop_irq, AMDGPU_CP_IRQ_GFX_ME0_PIPE0_EOP); if (r) @@ -3138,7 +3138,7 @@ static int gfx_v6_0_sw_init(void *handle ring->me = 1; ring->pipe = i; ring->queue = i; - sprintf(ring->name, "comp_%d.%d.%d", ring->me, ring->pipe, ring->queue); + snprintf(ring->name, sizeof(ring->name), "comp_%d.%d.%d", ring->me, ring->pipe, ring->queue); irq_type = AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP + ring->pipe; r = amdgpu_ring_init(adev, ring, 1024, &adev->gfx.eop_irq, irq_type); Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v9_0.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v9_0.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v9_0.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v9_0.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gfx_v9_0.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gfx_v9_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_gfx_v9_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2016 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gfx_v9_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gfx_v9_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/delay.h> #include <linux/kernel.h> @@ -55,6 +55,8 @@ __KERNEL_RCSID(0, "$NetBSD: amdgpu_gfx_v #include "gfx_v9_4.h" +#include <linux/nbsd-namespace.h> + #define GFX9_NUM_GFX_RINGS 1 #define GFX9_MEC_HPD_SIZE 4096 #define RLCG_UCODE_LOADING_START_ADDRESS 0x00002000L @@ -341,7 +343,7 @@ enum ta_ras_gfx_subblock { }; struct ras_gfx_subblock { - unsigned char *name; + const unsigned char *name; int ta_subblock; int hw_supported_error_type; int sw_supported_error_type; @@ -1093,15 +1095,15 @@ static void gfx_v9_0_init_rlc_ext_microc adev->gfx.rlc_srlc_fw_version = le32_to_cpu(rlc_hdr->save_restore_list_cntl_ucode_ver); adev->gfx.rlc_srlc_feature_version = le32_to_cpu(rlc_hdr->save_restore_list_cntl_feature_ver); adev->gfx.rlc.save_restore_list_cntl_size_bytes = le32_to_cpu(rlc_hdr->save_restore_list_cntl_size_bytes); - adev->gfx.rlc.save_restore_list_cntl = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_cntl_offset_bytes); + adev->gfx.rlc.save_restore_list_cntl = (const u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_cntl_offset_bytes); adev->gfx.rlc_srlg_fw_version = le32_to_cpu(rlc_hdr->save_restore_list_gpm_ucode_ver); adev->gfx.rlc_srlg_feature_version = le32_to_cpu(rlc_hdr->save_restore_list_gpm_feature_ver); adev->gfx.rlc.save_restore_list_gpm_size_bytes = le32_to_cpu(rlc_hdr->save_restore_list_gpm_size_bytes); - adev->gfx.rlc.save_restore_list_gpm = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_gpm_offset_bytes); + adev->gfx.rlc.save_restore_list_gpm = (const u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_gpm_offset_bytes); adev->gfx.rlc_srls_fw_version = le32_to_cpu(rlc_hdr->save_restore_list_srm_ucode_ver); adev->gfx.rlc_srls_feature_version = le32_to_cpu(rlc_hdr->save_restore_list_srm_feature_ver); adev->gfx.rlc.save_restore_list_srm_size_bytes = le32_to_cpu(rlc_hdr->save_restore_list_srm_size_bytes); - adev->gfx.rlc.save_restore_list_srm = (u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_srm_offset_bytes); + adev->gfx.rlc.save_restore_list_srm = (const u8 *)rlc_hdr + le32_to_cpu(rlc_hdr->save_restore_list_srm_offset_bytes); adev->gfx.rlc.reg_list_format_direct_reg_list_length = le32_to_cpu(rlc_hdr->reg_list_format_direct_reg_list_length); } @@ -2146,7 +2148,7 @@ static int gfx_v9_0_compute_ring_init(st ring->doorbell_index = (adev->doorbell_index.mec_ring0 + ring_id) << 1; ring->eop_gpu_addr = adev->gfx.mec.hpd_eop_gpu_addr + (ring_id * GFX9_MEC_HPD_SIZE); - sprintf(ring->name, "comp_%d.%d.%d", ring->me, ring->pipe, ring->queue); + snprintf(ring->name, sizeof(ring->name), "comp_%d.%d.%d", ring->me, ring->pipe, ring->queue); irq_type = AMDGPU_CP_IRQ_COMPUTE_MEC1_PIPE0_EOP + ((ring->me - 1) * adev->gfx.mec.num_pipe_per_mec) @@ -2242,9 +2244,9 @@ static int gfx_v9_0_sw_init(void *handle ring = &adev->gfx.gfx_ring[i]; ring->ring_obj = NULL; if (!i) - sprintf(ring->name, "gfx"); + snprintf(ring->name, sizeof(ring->name), "gfx"); else - sprintf(ring->name, "gfx_%d", i); + snprintf(ring->name, sizeof(ring->name), "gfx_%d", i); ring->use_doorbell = true; ring->doorbell_index = adev->doorbell_index.gfx_ring0 << 1; r = amdgpu_ring_init(adev, ring, 1024, @@ -2319,7 +2321,7 @@ static int gfx_v9_0_sw_fini(void *handle if (adev->asic_type == CHIP_RAVEN || adev->asic_type == CHIP_RENOIR) { amdgpu_bo_free_kernel(&adev->gfx.rlc.cp_table_obj, &adev->gfx.rlc.cp_table_gpu_addr, - (void **)&adev->gfx.rlc.cp_table_ptr); + (void **)__UNVOLATILE(&adev->gfx.rlc.cp_table_ptr)); } gfx_v9_0_free_microcode(adev); @@ -4853,7 +4855,7 @@ static u64 gfx_v9_0_ring_get_wptr_gfx(st /* XXX check if swapping is necessary on BE */ if (ring->use_doorbell) { - wptr = atomic64_read((atomic64_t *)&adev->wb.wb[ring->wptr_offs]); + wptr = atomic_load_relaxed(&adev->wb.wb[ring->wptr_offs]); } else { wptr = RREG32_SOC15(GC, 0, mmCP_RB0_WPTR); wptr += (u64)RREG32_SOC15(GC, 0, mmCP_RB0_WPTR_HI) << 32; @@ -4868,7 +4870,7 @@ static void gfx_v9_0_ring_set_wptr_gfx(s if (ring->use_doorbell) { /* XXX check if swapping is necessary on BE */ - atomic64_set((atomic64_t*)&adev->wb.wb[ring->wptr_offs], ring->wptr); + atomic_store_relaxed(&adev->wb.wb[ring->wptr_offs], ring->wptr); WDOORBELL64(ring->doorbell_index, ring->wptr); } else { WREG32_SOC15(GC, 0, mmCP_RB0_WPTR, lower_32_bits(ring->wptr)); @@ -5042,7 +5044,7 @@ static u64 gfx_v9_0_ring_get_wptr_comput /* XXX check if swapping is necessary on BE */ if (ring->use_doorbell) - wptr = atomic64_read((atomic64_t *)&ring->adev->wb.wb[ring->wptr_offs]); + wptr = atomic_load_relaxed(&ring->adev->wb.wb[ring->wptr_offs]); else BUG(); return wptr; @@ -5153,7 +5155,7 @@ static void gfx_v9_0_ring_set_wptr_compu /* XXX check if swapping is necessary on BE */ if (ring->use_doorbell) { - atomic64_set((atomic64_t*)&adev->wb.wb[ring->wptr_offs], ring->wptr); + atomic_store_relaxed(&adev->wb.wb[ring->wptr_offs], ring->wptr); WDOORBELL64(ring->doorbell_index, ring->wptr); } else{ BUG(); /* only DOORBELL method supported on gfx9 now */ Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gmc.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_gmc.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2018 Advanced Micro Devices, Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gmc.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gmc.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/io-64-nonatomic-lo-hi.h> @@ -35,6 +35,8 @@ __KERNEL_RCSID(0, "$NetBSD: amdgpu_gmc.c #include "amdgpu_ras.h" #include "amdgpu_xgmi.h" +#include <linux/nbsd-namespace.h> + /** * amdgpu_gmc_get_pde_for_bo - get the PDE for a BO * @@ -54,7 +56,11 @@ void amdgpu_gmc_get_pde_for_bo(struct am switch (bo->tbo.mem.mem_type) { case TTM_PL_TT: ttm = container_of(bo->tbo.ttm, struct ttm_dma_tt, ttm); +#ifdef __NetBSD__ + *addr = ttm->dma_address->dm_segs[0].ds_addr; +#else *addr = ttm->dma_address[0]; +#endif break; case TTM_PL_VRAM: *addr = amdgpu_bo_gpu_offset(bo); @@ -103,7 +109,9 @@ int amdgpu_gmc_set_pte_pde(struct amdgpu uint32_t gpu_page_idx, uint64_t addr, uint64_t flags) { +#ifndef __NetBSD__ void __iomem *ptr = (void *)cpu_pt_addr; +#endif uint64_t value; /* @@ -111,7 +119,12 @@ int amdgpu_gmc_set_pte_pde(struct amdgpu */ value = addr & 0x0000FFFFFFFFF000ULL; value |= flags; +#ifdef __NetBSD__ + /* Caller must issue appropriate bus_dmamap_sync before use. */ + ((uint64_t *)cpu_pt_addr)[gpu_page_idx] = value; +#else writeq(value, ptr + (gpu_page_idx * 8)); +#endif return 0; } @@ -127,15 +140,21 @@ uint64_t amdgpu_gmc_agp_addr(struct ttm_ { struct amdgpu_device *adev = amdgpu_ttm_adev(bo->bdev); struct ttm_dma_tt *ttm; + resource_size_t addr; if (bo->num_pages != 1 || bo->ttm->caching_state == tt_cached) return AMDGPU_BO_INVALID_OFFSET; ttm = container_of(bo->ttm, struct ttm_dma_tt, ttm); - if (ttm->dma_address[0] + PAGE_SIZE >= adev->gmc.agp_size) +#ifdef __NetBSD__ + addr = ttm->dma_address->dm_segs[0].ds_addr; +#else + addr = ttm->dma_address[0]; +#endif + if (addr + PAGE_SIZE >= adev->gmc.agp_size) return AMDGPU_BO_INVALID_OFFSET; - return adev->gmc.agp_start + ttm->dma_address[0]; + return adev->gmc.agp_start + addr; } /** @@ -162,7 +181,7 @@ void amdgpu_gmc_vram_location(struct amd mc->fb_start = mc->vram_start; mc->fb_end = mc->vram_end; } - dev_info(adev->dev, "VRAM: %lluM 0x%016llX - 0x%016llX (%lluM used)\n", + dev_info(adev->dev, "VRAM: %"PRIu64"M 0x%016"PRIX64" - 0x%016"PRIX64" (%"PRIu64"M used)\n", mc->mc_vram_size >> 20, mc->vram_start, mc->vram_end, mc->real_vram_size >> 20); } @@ -206,7 +225,7 @@ void amdgpu_gmc_gart_location(struct amd mc->gart_start &= ~(four_gb - 1); mc->gart_end = mc->gart_start + mc->gart_size - 1; - dev_info(adev->dev, "GART: %lluM 0x%016llX - 0x%016llX\n", + dev_info(adev->dev, "GART: %"PRIu64"M 0x%016"PRIX64" - 0x%016"PRIX64"\n", mc->gart_size >> 20, mc->gart_start, mc->gart_end); } @@ -254,7 +273,7 @@ void amdgpu_gmc_agp_location(struct amdg } mc->agp_end = mc->agp_start + mc->agp_size - 1; - dev_info(adev->dev, "AGP: %lluM 0x%016llX - 0x%016llX\n", + dev_info(adev->dev, "AGP: %"PRIu64"M 0x%016"PRIX64" - 0x%016"PRIX64"\n", mc->agp_size >> 20, mc->agp_start, mc->agp_end); } Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v10_0.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v10_0.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v10_0.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v10_0.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v10_0.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gmc_v10_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_gmc_v10_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -23,7 +23,7 @@ * */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gmc_v10_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gmc_v10_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/firmware.h> #include <linux/pci.h> @@ -169,7 +169,7 @@ static int gmc_v10_0_process_interrupt(s entry->src_id, entry->ring_id, entry->vmid, entry->pasid, task_info.process_name, task_info.tgid, task_info.task_name, task_info.pid); - dev_err(adev->dev, " in page starting at address 0x%016llx from client %d\n", + dev_err(adev->dev, " in page starting at address 0x%016"PRIx64" from client %d\n", addr, entry->client_id); if (!amdgpu_sriov_vf(adev)) { dev_err(adev->dev, @@ -819,7 +819,11 @@ static int gmc_v10_0_sw_init(void *handl */ adev->gmc.mc_mask = 0xffffffffffffULL; /* 48 bit MC */ +#ifdef __NetBSD__ + r = drm_limit_dma_space(adev->ddev, 0, DMA_BIT_MASK(44)); +#else r = dma_set_mask_and_coherent(adev->dev, DMA_BIT_MASK(44)); +#endif if (r) { printk(KERN_WARNING "amdgpu: No suitable DMA available.\n"); return r; Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v6_0.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v6_0.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v6_0.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v6_0.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v6_0.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gmc_v6_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_gmc_v6_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2014 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gmc_v6_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gmc_v6_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/firmware.h> #include <linux/module.h> @@ -67,7 +67,7 @@ MODULE_FIRMWARE("amdgpu/si58_mc.bin"); #define MC_SEQ_MISC0__MT__DDR3 0xB0000000 -static const u32 crtc_offsets[6] = +static const u32 crtc_offsets[6] __unused = { SI_CRTC0_REGISTER_OFFSET, SI_CRTC1_REGISTER_OFFSET, @@ -861,7 +861,11 @@ static int gmc_v6_0_sw_init(void *handle adev->gmc.mc_mask = 0xffffffffffULL; +#ifdef __NetBSD__ + r = drm_limit_dma_space(adev->ddev, 0, DMA_BIT_MASK(44)); +#else r = dma_set_mask_and_coherent(adev->dev, DMA_BIT_MASK(44)); +#endif if (r) { dev_warn(adev->dev, "amdgpu: No suitable DMA available.\n"); return r; Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v9_0.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v9_0.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v9_0.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v9_0.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v9_0.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gmc_v9_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_gmc_v9_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2016 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gmc_v9_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gmc_v9_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/firmware.h> #include <linux/pci.h> @@ -172,7 +172,7 @@ static const uint32_t ecc_umc_mcumc_ctrl (0x001d43e0 + 0x00001800), }; -static const uint32_t ecc_umc_mcumc_status_addrs[] = { +static const uint32_t ecc_umc_mcumc_status_addrs[] __unused = { (0x000143c2 + 0x00000000), (0x000143c2 + 0x00000800), (0x000143c2 + 0x00001000), @@ -361,7 +361,7 @@ static int gmc_v9_0_process_interrupt(st entry->src_id, entry->ring_id, entry->vmid, entry->pasid, task_info.process_name, task_info.tgid, task_info.task_name, task_info.pid); - dev_err(adev->dev, " in page starting at address 0x%016llx from client %d\n", + dev_err(adev->dev, " in page starting at address 0x%016"PRIx64" from client %d\n", addr, entry->client_id); if (!amdgpu_sriov_vf(adev)) { dev_err(adev->dev, @@ -1185,7 +1185,11 @@ static int gmc_v9_0_sw_init(void *handle */ adev->gmc.mc_mask = 0xffffffffffffULL; /* 48 bit MC */ +#ifdef __NetBSD__ + r = drm_limit_dma_space(adev->ddev, 0, DMA_BIT_MASK(44)); +#else r = dma_set_mask_and_coherent(adev->dev, DMA_BIT_MASK(44)); +#endif if (r) { printk(KERN_WARNING "amdgpu: No suitable DMA available.\n"); return r; Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gtt_mgr.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gtt_mgr.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gtt_mgr.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gtt_mgr.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gtt_mgr.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gtt_mgr.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_gtt_mgr.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2016 Advanced Micro Devices, Inc. @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gtt_mgr.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gtt_mgr.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "amdgpu.h" @@ -40,6 +40,8 @@ struct amdgpu_gtt_node { struct ttm_buffer_object *tbo; }; +#ifndef __NetBSD__ /* XXX amdgpu sysfs */ + /** * DOC: mem_info_gtt_total * @@ -81,6 +83,8 @@ static DEVICE_ATTR(mem_info_gtt_total, S static DEVICE_ATTR(mem_info_gtt_used, S_IRUGO, amdgpu_mem_info_gtt_used_show, NULL); +#endif + /** * amdgpu_gtt_mgr_init - init GTT manager and DRM MM * @@ -108,6 +112,9 @@ static int amdgpu_gtt_mgr_init(struct tt atomic64_set(&mgr->available, p_size); man->priv = mgr; +#ifdef __NetBSD__ /* XXX amdgpu sysfs */ + __USE(ret); +#else ret = device_create_file(adev->dev, &dev_attr_mem_info_gtt_total); if (ret) { DRM_ERROR("Failed to create device file mem_info_gtt_total\n"); @@ -118,6 +125,7 @@ static int amdgpu_gtt_mgr_init(struct tt DRM_ERROR("Failed to create device file mem_info_gtt_used\n"); return ret; } +#endif return 0; } @@ -137,11 +145,16 @@ static int amdgpu_gtt_mgr_fini(struct tt spin_lock(&mgr->lock); drm_mm_takedown(&mgr->mm); spin_unlock(&mgr->lock); + spin_lock_destroy(&mgr->lock); kfree(mgr); man->priv = NULL; +#ifdef __NetBSD__ /* XXX amdgpu sysfs */ + __USE(adev); +#else device_remove_file(adev->dev, &dev_attr_mem_info_gtt_total); device_remove_file(adev->dev, &dev_attr_mem_info_gtt_used); +#endif return 0; } @@ -349,7 +362,7 @@ static void amdgpu_gtt_mgr_debug(struct drm_mm_print(&mgr->mm, printer); spin_unlock(&mgr->lock); - drm_printf(printer, "man size:%llu pages, gtt available:%lld pages, usage:%lluMB\n", + drm_printf(printer, "man size:%"PRIu64" pages, gtt available:%"PRId64" pages, usage:%"PRIu64"MB\n", man->size, (u64)atomic64_read(&mgr->available), amdgpu_gtt_mgr_usage(man) >> 20); } Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ids.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ids.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ids.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ids.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ids.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_ids.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_ids.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2017 Advanced Micro Devices, Inc. @@ -23,7 +23,7 @@ * */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_ids.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_ids.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "amdgpu_ids.h" @@ -34,6 +34,8 @@ __KERNEL_RCSID(0, "$NetBSD: amdgpu_ids.c #include "amdgpu.h" #include "amdgpu_trace.h" +#include <linux/nbsd-namespace.h> + /* * PASID manager * @@ -43,7 +45,11 @@ __KERNEL_RCSID(0, "$NetBSD: amdgpu_ids.c * space. Therefore PASIDs are allocated using a global IDA. VMs are * looked up from the PASID per amdgpu_device. */ +#ifdef __NetBSD__ /* XXX */ +struct ida amdgpu_pasid_ida; +#else static DEFINE_IDA(amdgpu_pasid_ida); +#endif /* Helper to free pasid from a fence callback */ struct amdgpu_pasid_cb { Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v1_0.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v1_0.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v1_0.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v1_0.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v1_0.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_jpeg_v1_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_jpeg_v1_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_jpeg_v1_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_jpeg_v1_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "amdgpu.h" #include "amdgpu_jpeg.h" @@ -484,7 +484,7 @@ int jpeg_v1_0_sw_init(void *handle) return r; ring = &adev->jpeg.inst->ring_dec; - sprintf(ring->name, "jpeg_dec"); + snprintf(ring->name, sizeof(ring->name), "jpeg_dec"); r = amdgpu_ring_init(adev, ring, 512, &adev->jpeg.inst->irq, 0); if (r) return r; Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v2_0.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v2_0.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v2_0.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v2_0.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v2_0.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_jpeg_v2_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_jpeg_v2_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_jpeg_v2_0.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_jpeg_v2_0.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "amdgpu.h" #include "amdgpu_jpeg.h" @@ -110,7 +110,7 @@ static int jpeg_v2_0_sw_init(void *handl ring = &adev->jpeg.inst->ring_dec; ring->use_doorbell = true; ring->doorbell_index = (adev->doorbell_index.vcn.vcn_ring0_1 << 1) + 1; - sprintf(ring->name, "jpeg_dec"); + snprintf(ring->name, sizeof(ring->name), "jpeg_dec"); r = amdgpu_ring_init(adev, ring, 512, &adev->jpeg.inst->irq, 0); if (r) return r; Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v2_5.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v2_5.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v2_5.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v2_5.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_jpeg_v2_5.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_jpeg_v2_5.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_jpeg_v2_5.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_jpeg_v2_5.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_jpeg_v2_5.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "amdgpu.h" #include "amdgpu_jpeg.h" @@ -122,7 +122,7 @@ static int jpeg_v2_5_sw_init(void *handl ring = &adev->jpeg.inst[i].ring_dec; ring->use_doorbell = true; ring->doorbell_index = (adev->doorbell_index.vcn.vcn_ring0_1 << 1) + 1 + 8 * i; - sprintf(ring->name, "jpeg_dec_%d", i); + snprintf(ring->name, sizeof(ring->name), "jpeg_dec_%d", i); r = amdgpu_ring_init(adev, ring, 512, &adev->jpeg.inst[i].irq, 0); if (r) return r; Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_mes_v10_1.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_mes_v10_1.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_mes_v10_1.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_mes_v10_1.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_mes_v10_1.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_mes_v10_1.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_mes_v10_1.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_mes_v10_1.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_mes_v10_1.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/firmware.h> #include <linux/module.h> @@ -60,7 +60,7 @@ static int mes_v10_1_resume_gang(struct return 0; } -static const struct amdgpu_mes_funcs mes_v10_1_funcs = { +static const struct amdgpu_mes_funcs mes_v10_1_funcs __unused = { .add_hw_queue = mes_v10_1_add_hw_queue, .remove_hw_queue = mes_v10_1_remove_hw_queue, .suspend_gang = mes_v10_1_suspend_gang, Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi10_reg_init.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi10_reg_init.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi10_reg_init.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi10_reg_init.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi10_reg_init.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_navi10_reg_init.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_navi10_reg_init.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2018 Advanced Micro Devices, Inc. @@ -23,7 +23,7 @@ * */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_navi10_reg_init.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_navi10_reg_init.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "amdgpu.h" #include "nv.h" @@ -36,22 +36,22 @@ int navi10_reg_base_init(struct amdgpu_d int i; for (i = 0 ; i < MAX_INSTANCE ; ++i) { - adev->reg_offset[GC_HWIP][i] = (uint32_t *)(&(GC_BASE.instance[i])); - adev->reg_offset[HDP_HWIP][i] = (uint32_t *)(&(HDP_BASE.instance[i])); - adev->reg_offset[MMHUB_HWIP][i] = (uint32_t *)(&(MMHUB_BASE.instance[i])); - adev->reg_offset[ATHUB_HWIP][i] = (uint32_t *)(&(ATHUB_BASE.instance[i])); - adev->reg_offset[NBIO_HWIP][i] = (uint32_t *)(&(NBIO_BASE.instance[i])); - adev->reg_offset[MP0_HWIP][i] = (uint32_t *)(&(MP0_BASE.instance[i])); - adev->reg_offset[MP1_HWIP][i] = (uint32_t *)(&(MP1_BASE.instance[i])); - adev->reg_offset[VCN_HWIP][i] = (uint32_t *)(&(VCN_BASE.instance[i])); - adev->reg_offset[DF_HWIP][i] = (uint32_t *)(&(DF_BASE.instance[i])); - adev->reg_offset[DCE_HWIP][i] = (uint32_t *)(&(DCN_BASE.instance[i])); - adev->reg_offset[OSSSYS_HWIP][i] = (uint32_t *)(&(OSSSYS_BASE.instance[i])); - adev->reg_offset[SDMA0_HWIP][i] = (uint32_t *)(&(GC_BASE.instance[i])); - adev->reg_offset[SDMA1_HWIP][i] = (uint32_t *)(&(GC_BASE.instance[i])); - adev->reg_offset[SMUIO_HWIP][i] = (uint32_t *)(&(SMUIO_BASE.instance[i])); - adev->reg_offset[THM_HWIP][i] = (uint32_t *)(&(THM_BASE.instance[i])); - adev->reg_offset[CLK_HWIP][i] = (uint32_t *)(&(CLK_BASE.instance[i])); + adev->reg_offset[GC_HWIP][i] = (const uint32_t *)(&(GC_BASE.instance[i])); + adev->reg_offset[HDP_HWIP][i] = (const uint32_t *)(&(HDP_BASE.instance[i])); + adev->reg_offset[MMHUB_HWIP][i] = (const uint32_t *)(&(MMHUB_BASE.instance[i])); + adev->reg_offset[ATHUB_HWIP][i] = (const uint32_t *)(&(ATHUB_BASE.instance[i])); + adev->reg_offset[NBIO_HWIP][i] = (const uint32_t *)(&(NBIO_BASE.instance[i])); + adev->reg_offset[MP0_HWIP][i] = (const uint32_t *)(&(MP0_BASE.instance[i])); + adev->reg_offset[MP1_HWIP][i] = (const uint32_t *)(&(MP1_BASE.instance[i])); + adev->reg_offset[VCN_HWIP][i] = (const uint32_t *)(&(VCN_BASE.instance[i])); + adev->reg_offset[DF_HWIP][i] = (const uint32_t *)(&(DF_BASE.instance[i])); + adev->reg_offset[DCE_HWIP][i] = (const uint32_t *)(&(DCN_BASE.instance[i])); + adev->reg_offset[OSSSYS_HWIP][i] = (const uint32_t *)(&(OSSSYS_BASE.instance[i])); + adev->reg_offset[SDMA0_HWIP][i] = (const uint32_t *)(&(GC_BASE.instance[i])); + adev->reg_offset[SDMA1_HWIP][i] = (const uint32_t *)(&(GC_BASE.instance[i])); + adev->reg_offset[SMUIO_HWIP][i] = (const uint32_t *)(&(SMUIO_BASE.instance[i])); + adev->reg_offset[THM_HWIP][i] = (const uint32_t *)(&(THM_BASE.instance[i])); + adev->reg_offset[CLK_HWIP][i] = (const uint32_t *)(&(CLK_BASE.instance[i])); } return 0; Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi12_reg_init.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi12_reg_init.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi12_reg_init.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi12_reg_init.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi12_reg_init.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_navi12_reg_init.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_navi12_reg_init.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2018 Advanced Micro Devices, Inc. @@ -23,7 +23,7 @@ * */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_navi12_reg_init.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_navi12_reg_init.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "amdgpu.h" #include "nv.h" @@ -36,22 +36,22 @@ int navi12_reg_base_init(struct amdgpu_d /* HW has more IP blocks, only initialized the blocks needed by driver */ uint32_t i; for (i = 0 ; i < MAX_INSTANCE ; ++i) { - adev->reg_offset[GC_HWIP][i] = (uint32_t *)(&(GC_BASE.instance[i])); - adev->reg_offset[HDP_HWIP][i] = (uint32_t *)(&(HDP_BASE.instance[i])); - adev->reg_offset[MMHUB_HWIP][i] = (uint32_t *)(&(MMHUB_BASE.instance[i])); - adev->reg_offset[ATHUB_HWIP][i] = (uint32_t *)(&(ATHUB_BASE.instance[i])); - adev->reg_offset[NBIO_HWIP][i] = (uint32_t *)(&(NBIF0_BASE.instance[i])); - adev->reg_offset[MP0_HWIP][i] = (uint32_t *)(&(MP0_BASE.instance[i])); - adev->reg_offset[MP1_HWIP][i] = (uint32_t *)(&(MP1_BASE.instance[i])); - adev->reg_offset[VCN_HWIP][i] = (uint32_t *)(&(UVD0_BASE.instance[i])); - adev->reg_offset[DF_HWIP][i] = (uint32_t *)(&(DF_BASE.instance[i])); - adev->reg_offset[DCE_HWIP][i] = (uint32_t *)(&(DMU_BASE.instance[i])); - adev->reg_offset[OSSSYS_HWIP][i] = (uint32_t *)(&(OSSSYS_BASE.instance[i])); - adev->reg_offset[SDMA0_HWIP][i] = (uint32_t *)(&(GC_BASE.instance[i])); - adev->reg_offset[SDMA1_HWIP][i] = (uint32_t *)(&(GC_BASE.instance[i])); - adev->reg_offset[SMUIO_HWIP][i] = (uint32_t *)(&(SMUIO_BASE.instance[i])); - adev->reg_offset[THM_HWIP][i] = (uint32_t *)(&(THM_BASE.instance[i])); - adev->reg_offset[CLK_HWIP][i] = (uint32_t *)(&(CLK_BASE.instance[i])); + adev->reg_offset[GC_HWIP][i] = (const uint32_t *)(&(GC_BASE.instance[i])); + adev->reg_offset[HDP_HWIP][i] = (const uint32_t *)(&(HDP_BASE.instance[i])); + adev->reg_offset[MMHUB_HWIP][i] = (const uint32_t *)(&(MMHUB_BASE.instance[i])); + adev->reg_offset[ATHUB_HWIP][i] = (const uint32_t *)(&(ATHUB_BASE.instance[i])); + adev->reg_offset[NBIO_HWIP][i] = (const uint32_t *)(&(NBIF0_BASE.instance[i])); + adev->reg_offset[MP0_HWIP][i] = (const uint32_t *)(&(MP0_BASE.instance[i])); + adev->reg_offset[MP1_HWIP][i] = (const uint32_t *)(&(MP1_BASE.instance[i])); + adev->reg_offset[VCN_HWIP][i] = (const uint32_t *)(&(UVD0_BASE.instance[i])); + adev->reg_offset[DF_HWIP][i] = (const uint32_t *)(&(DF_BASE.instance[i])); + adev->reg_offset[DCE_HWIP][i] = (const uint32_t *)(&(DMU_BASE.instance[i])); + adev->reg_offset[OSSSYS_HWIP][i] = (const uint32_t *)(&(OSSSYS_BASE.instance[i])); + adev->reg_offset[SDMA0_HWIP][i] = (const uint32_t *)(&(GC_BASE.instance[i])); + adev->reg_offset[SDMA1_HWIP][i] = (const uint32_t *)(&(GC_BASE.instance[i])); + adev->reg_offset[SMUIO_HWIP][i] = (const uint32_t *)(&(SMUIO_BASE.instance[i])); + adev->reg_offset[THM_HWIP][i] = (const uint32_t *)(&(THM_BASE.instance[i])); + adev->reg_offset[CLK_HWIP][i] = (const uint32_t *)(&(CLK_BASE.instance[i])); } return 0; } Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi14_reg_init.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi14_reg_init.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi14_reg_init.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi14_reg_init.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_navi14_reg_init.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_navi14_reg_init.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_navi14_reg_init.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2018 Advanced Micro Devices, Inc. @@ -23,7 +23,7 @@ * */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_navi14_reg_init.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_navi14_reg_init.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "amdgpu.h" #include "nv.h" @@ -36,22 +36,22 @@ int navi14_reg_base_init(struct amdgpu_d int i; for (i = 0 ; i < MAX_INSTANCE ; ++i) { - adev->reg_offset[GC_HWIP][i] = (uint32_t *)(&(GC_BASE.instance[i])); - adev->reg_offset[HDP_HWIP][i] = (uint32_t *)(&(HDP_BASE.instance[i])); - adev->reg_offset[MMHUB_HWIP][i] = (uint32_t *)(&(MMHUB_BASE.instance[i])); - adev->reg_offset[ATHUB_HWIP][i] = (uint32_t *)(&(ATHUB_BASE.instance[i])); - adev->reg_offset[NBIO_HWIP][i] = (uint32_t *)(&(NBIF0_BASE.instance[i])); - adev->reg_offset[MP0_HWIP][i] = (uint32_t *)(&(MP0_BASE.instance[i])); - adev->reg_offset[MP1_HWIP][i] = (uint32_t *)(&(MP1_BASE.instance[i])); - adev->reg_offset[VCN_HWIP][i] = (uint32_t *)(&(UVD0_BASE.instance[i])); - adev->reg_offset[DF_HWIP][i] = (uint32_t *)(&(DF_BASE.instance[i])); - adev->reg_offset[DCE_HWIP][i] = (uint32_t *)(&(DMU_BASE.instance[i])); - adev->reg_offset[OSSSYS_HWIP][i] = (uint32_t *)(&(OSSSYS_BASE.instance[i])); - adev->reg_offset[SDMA0_HWIP][i] = (uint32_t *)(&(GC_BASE.instance[i])); - adev->reg_offset[SDMA1_HWIP][i] = (uint32_t *)(&(GC_BASE.instance[i])); - adev->reg_offset[SMUIO_HWIP][i] = (uint32_t *)(&(SMUIO_BASE.instance[i])); - adev->reg_offset[THM_HWIP][i] = (uint32_t *)(&(THM_BASE.instance[i])); - adev->reg_offset[CLK_HWIP][i] = (uint32_t *)(&(CLK_BASE.instance[i])); + adev->reg_offset[GC_HWIP][i] = (const uint32_t *)(&(GC_BASE.instance[i])); + adev->reg_offset[HDP_HWIP][i] = (const uint32_t *)(&(HDP_BASE.instance[i])); + adev->reg_offset[MMHUB_HWIP][i] = (const uint32_t *)(&(MMHUB_BASE.instance[i])); + adev->reg_offset[ATHUB_HWIP][i] = (const uint32_t *)(&(ATHUB_BASE.instance[i])); + adev->reg_offset[NBIO_HWIP][i] = (const uint32_t *)(&(NBIF0_BASE.instance[i])); + adev->reg_offset[MP0_HWIP][i] = (const uint32_t *)(&(MP0_BASE.instance[i])); + adev->reg_offset[MP1_HWIP][i] = (const uint32_t *)(&(MP1_BASE.instance[i])); + adev->reg_offset[VCN_HWIP][i] = (const uint32_t *)(&(UVD0_BASE.instance[i])); + adev->reg_offset[DF_HWIP][i] = (const uint32_t *)(&(DF_BASE.instance[i])); + adev->reg_offset[DCE_HWIP][i] = (const uint32_t *)(&(DMU_BASE.instance[i])); + adev->reg_offset[OSSSYS_HWIP][i] = (const uint32_t *)(&(OSSSYS_BASE.instance[i])); + adev->reg_offset[SDMA0_HWIP][i] = (const uint32_t *)(&(GC_BASE.instance[i])); + adev->reg_offset[SDMA1_HWIP][i] = (const uint32_t *)(&(GC_BASE.instance[i])); + adev->reg_offset[SMUIO_HWIP][i] = (const uint32_t *)(&(SMUIO_BASE.instance[i])); + adev->reg_offset[THM_HWIP][i] = (const uint32_t *)(&(THM_BASE.instance[i])); + adev->reg_offset[CLK_HWIP][i] = (const uint32_t *)(&(CLK_BASE.instance[i])); } return 0; Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_nv.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_nv.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_nv.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_nv.c:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_nv.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_nv.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_nv.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -23,7 +23,7 @@ * */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_nv.c,v 1.2 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_nv.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/firmware.h> #include <linux/slab.h> @@ -63,6 +63,8 @@ __KERNEL_RCSID(0, "$NetBSD: amdgpu_nv.c, #include "mes_v10_1.h" #include "mxgpu_nv.h" +#include <linux/nbsd-namespace.h> + static const struct amd_ip_funcs nv_common_ip_funcs; /* Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_rlc.h diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_rlc.h:1.2 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_rlc.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_rlc.h:1.2 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_rlc.h Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_rlc.h,v 1.2 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_rlc.h,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2014 Advanced Micro Devices, Inc. @@ -170,9 +170,9 @@ struct amdgpu_rlc { u32 *register_list_format; u32 *register_restore; - u8 *save_restore_list_cntl; - u8 *save_restore_list_gpm; - u8 *save_restore_list_srm; + const u8 *save_restore_list_cntl; + const u8 *save_restore_list_gpm; + const u8 *save_restore_list_srm; bool is_rlc_v2_1; Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v7_0.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v7_0.c:1.4 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v7_0.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v7_0.c:1.4 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v7_0.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gmc_v7_0.c,v 1.4 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_gmc_v7_0.c,v 1.5 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2014 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gmc_v7_0.c,v 1.4 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gmc_v7_0.c,v 1.5 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/firmware.h> #include <linux/module.h> @@ -1027,20 +1027,15 @@ static int gmc_v7_0_sw_init(void *handle */ adev->gmc.mc_mask = 0xffffffffffULL; /* 40 bit MC */ -#ifdef __NetBSD__ /* XXX post-merge audit - switch to DMA_BIT_MASK */ - adev->need_dma32 = false; - dma_bits = adev->need_dma32 ? 32 : 40; - - r = drm_limit_dma_space(adev->ddev, 0, __BITS(dma_bits - 1, 0)); - if (r) - DRM_ERROR("No suitable DMA available.\n"); +#ifdef __NetBSD__ + r = drm_limit_dma_space(adev->ddev, 0, DMA_BIT_MASK(40)); #else r = dma_set_mask_and_coherent(adev->dev, DMA_BIT_MASK(40)); +#endif if (r) { pr_warn("amdgpu: No suitable DMA available\n"); return r; } -#endif /* __NetBSD__ */ adev->need_swiotlb = drm_need_swiotlb(40); r = gmc_v7_0_init_microcode(adev); Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v8_0.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v8_0.c:1.4 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v8_0.c:1.5 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v8_0.c:1.4 Sat Dec 18 23:44:58 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_gmc_v8_0.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_gmc_v8_0.c,v 1.4 2021/12/18 23:44:58 riastradh Exp $ */ +/* $NetBSD: amdgpu_gmc_v8_0.c,v 1.5 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2014 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_gmc_v8_0.c,v 1.4 2021/12/18 23:44:58 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_gmc_v8_0.c,v 1.5 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/firmware.h> #include <linux/module.h> @@ -1148,7 +1148,7 @@ static int gmc_v8_0_sw_init(void *handle adev->gmc.mc_mask = 0xffffffffffULL; /* 40 bit MC */ #ifdef __NetBSD__ - r = drm_limit_dma_space(adev->ddev, 0, __BITS(39,0)); + r = drm_limit_dma_space(adev->ddev, 0, DMA_BIT_MASK(40)); #else r = dma_set_mask_and_coherent(adev->dev, DMA_BIT_MASK(40)); #endif Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ih.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ih.c:1.7 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ih.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ih.c:1.7 Sun Dec 19 11:26:25 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ih.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_ih.c,v 1.7 2021/12/19 11:26:25 riastradh Exp $ */ +/* $NetBSD: amdgpu_ih.c,v 1.8 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2014 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_ih.c,v 1.7 2021/12/19 11:26:25 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_ih.c,v 1.8 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/dma-mapping.h> @@ -126,7 +126,7 @@ fail3: __unused bus_dmamem_unmap(adev-> r = amdgpu_bo_create_kernel(adev, ih->ring_size, PAGE_SIZE, AMDGPU_GEM_DOMAIN_GTT, &ih->ring_obj, &ih->gpu_addr, - (void **)&ih->ring); + (void **)__UNVOLATILE(&ih->ring)); if (r) { amdgpu_device_wb_free(adev, rptr_offs); amdgpu_device_wb_free(adev, wptr_offs); @@ -173,7 +173,7 @@ void amdgpu_ih_ring_fini(struct amdgpu_d ih->ring = NULL; } else { amdgpu_bo_free_kernel(&ih->ring_obj, &ih->gpu_addr, - (void **)&ih->ring); + (void **)__UNVOLATILE(&ih->ring)); amdgpu_device_wb_free(adev, (ih->wptr_addr - ih->gpu_addr) / 4); amdgpu_device_wb_free(adev, (ih->rptr_addr - ih->gpu_addr) / 4); } Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ttm.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ttm.c:1.7 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ttm.c:1.8 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ttm.c:1.7 Sun Dec 19 10:56:50 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ttm.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_ttm.c,v 1.7 2021/12/19 10:56:50 riastradh Exp $ */ +/* $NetBSD: amdgpu_ttm.c,v 1.8 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2009 Jerome Glisse. @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_ttm.c,v 1.7 2021/12/19 10:56:50 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_ttm.c,v 1.8 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/dma-mapping.h> #include <linux/iommu.h> @@ -769,7 +769,11 @@ struct amdgpu_ttm_tt { struct drm_gem_object *gobj; u64 offset; uint64_t userptr; +#ifdef __NetBSD__ + struct proc *usertask; +#else struct task_struct *usertask; +#endif uint32_t userflags; #if IS_ENABLED(CONFIG_DRM_AMDGPU_USERPTR) struct hmm_range *range; @@ -1452,7 +1456,11 @@ int amdgpu_ttm_tt_set_userptr(struct ttm /** * amdgpu_ttm_tt_get_usermm - Return memory manager for ttm_tt object */ +#ifdef __NetBSD__ +struct vmspace *amdgpu_ttm_tt_get_usermm(struct ttm_tt *ttm) +#else struct mm_struct *amdgpu_ttm_tt_get_usermm(struct ttm_tt *ttm) +#endif { struct amdgpu_ttm_tt *gtt = (void *)ttm; @@ -1462,7 +1470,11 @@ struct mm_struct *amdgpu_ttm_tt_get_user if (gtt->usertask == NULL) return NULL; +#ifdef __NetBSD__ + return gtt->usertask->p_vmspace; +#else return gtt->usertask->mm; +#endif } /** Index: src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ttm.h diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ttm.h:1.3 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ttm.h:1.4 --- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ttm.h:1.3 Sun Dec 19 10:59:01 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_ttm.h Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_ttm.h,v 1.3 2021/12/19 10:59:01 riastradh Exp $ */ +/* $NetBSD: amdgpu_ttm.h,v 1.4 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2016 Advanced Micro Devices, Inc. @@ -138,7 +138,11 @@ void amdgpu_ttm_tt_set_user_pages(struct int amdgpu_ttm_tt_set_userptr(struct ttm_tt *ttm, uint64_t addr, uint32_t flags); bool amdgpu_ttm_tt_has_userptr(struct ttm_tt *ttm); +#ifdef __NetBSD__ +struct vmspace *amdgpu_ttm_tt_get_usermm(struct ttm_tt *ttm); +#else struct mm_struct *amdgpu_ttm_tt_get_usermm(struct ttm_tt *ttm); +#endif bool amdgpu_ttm_tt_affect_userptr(struct ttm_tt *ttm, unsigned long start, unsigned long end); bool amdgpu_ttm_tt_userptr_invalidated(struct ttm_tt *ttm, Index: src/sys/external/bsd/drm2/dist/drm/amd/display/dc/basics/amdgpu_fixpt31_32.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/display/dc/basics/amdgpu_fixpt31_32.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/display/dc/basics/amdgpu_fixpt31_32.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/display/dc/basics/amdgpu_fixpt31_32.c:1.2 Sat Dec 18 23:45:00 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/display/dc/basics/amdgpu_fixpt31_32.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_fixpt31_32.c,v 1.2 2021/12/18 23:45:00 riastradh Exp $ */ +/* $NetBSD: amdgpu_fixpt31_32.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2012-15 Advanced Micro Devices, Inc. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_fixpt31_32.c,v 1.2 2021/12/18 23:45:00 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_fixpt31_32.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "dm_services.h" #include "include/fixed31_32.h" @@ -51,10 +51,12 @@ static inline unsigned long long complet unsigned long long *remainder) { unsigned long long result; + uint64_t r64; ASSERT(divisor); - result = div64_u64_rem(dividend, divisor, remainder); + result = div64_u64_rem(dividend, divisor, &r64); + *remainder = r64; return result; } Index: src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_ddc.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_ddc.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_ddc.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_ddc.c:1.2 Sat Dec 18 23:45:04 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_ddc.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_hw_ddc.c,v 1.2 2021/12/18 23:45:04 riastradh Exp $ */ +/* $NetBSD: amdgpu_hw_ddc.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2012-15 Advanced Micro Devices, Inc. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_hw_ddc.c,v 1.2 2021/12/18 23:45:04 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_hw_ddc.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/delay.h> #include <linux/slab.h> @@ -112,7 +112,7 @@ static enum gpio_result set_config( msleep(3); } } else { - uint32_t reg2; + uint32_t reg2 __unused; uint32_t sda_pd_dis = 0; uint32_t scl_pd_dis = 0; Index: src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_gpio.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_gpio.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_gpio.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_gpio.c:1.2 Sat Dec 18 23:45:04 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_gpio.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_hw_gpio.c,v 1.2 2021/12/18 23:45:04 riastradh Exp $ */ +/* $NetBSD: amdgpu_hw_gpio.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2012-15 Advanced Micro Devices, Inc. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_hw_gpio.c,v 1.2 2021/12/18 23:45:04 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_hw_gpio.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "dm_services.h" #include "include/gpio_types.h" @@ -79,7 +79,7 @@ enum gpio_result dal_hw_gpio_get_value( const struct hw_gpio_pin *ptr, uint32_t *value) { - const struct hw_gpio *gpio = FROM_HW_GPIO_PIN(ptr); + const struct hw_gpio *gpio = const_container_of(ptr, struct hw_gpio, base); enum gpio_result result = GPIO_RESULT_OK; @@ -101,7 +101,7 @@ enum gpio_result dal_hw_gpio_set_value( const struct hw_gpio_pin *ptr, uint32_t value) { - struct hw_gpio *gpio = FROM_HW_GPIO_PIN(ptr); + const struct hw_gpio *gpio = const_container_of(ptr, struct hw_gpio, base); /* This is the public interface * where the input comes from client, not shifted yet Index: src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_hpd.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_hpd.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_hpd.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_hpd.c:1.2 Sat Dec 18 23:45:04 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/display/dc/gpio/amdgpu_hw_hpd.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_hw_hpd.c,v 1.2 2021/12/18 23:45:04 riastradh Exp $ */ +/* $NetBSD: amdgpu_hw_hpd.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2012-15 Advanced Micro Devices, Inc. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_hw_hpd.c,v 1.2 2021/12/18 23:45:04 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_hw_hpd.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/slab.h> @@ -73,7 +73,8 @@ static enum gpio_result get_value( const struct hw_gpio_pin *ptr, uint32_t *value) { - struct hw_hpd *hpd = HW_HPD_FROM_BASE(ptr); + const struct hw_gpio *gpio = const_container_of(ptr, struct hw_gpio, base); + const struct hw_hpd *hpd = const_container_of(gpio, struct hw_hpd, base); uint32_t hpd_delayed = 0; /* in Interrupt mode we ask for SENSE bit */ Index: src/sys/external/bsd/drm2/dist/drm/amd/display/dc/hdcp/amdgpu_hdcp_msg.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/display/dc/hdcp/amdgpu_hdcp_msg.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/display/dc/hdcp/amdgpu_hdcp_msg.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/display/dc/hdcp/amdgpu_hdcp_msg.c:1.2 Sat Dec 18 23:45:05 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/display/dc/hdcp/amdgpu_hdcp_msg.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_hdcp_msg.c,v 1.2 2021/12/18 23:45:05 riastradh Exp $ */ +/* $NetBSD: amdgpu_hdcp_msg.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_hdcp_msg.c,v 1.2 2021/12/18 23:45:05 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_hdcp_msg.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include <linux/slab.h> @@ -121,7 +121,7 @@ struct protection_properties { struct hdcp_protection_message *message_info); }; -static const struct protection_properties non_supported_protection = { +static const struct protection_properties non_supported_protection __unused = { .supported = false }; @@ -184,7 +184,7 @@ static bool hdmi_14_process_transaction( return result; } -static const struct protection_properties hdmi_14_protection = { +static const struct protection_properties hdmi_14_protection __unused = { .supported = true, .process_transaction = hdmi_14_process_transaction }; @@ -322,7 +322,7 @@ static bool dp_11_process_transaction( hdcp_cmd_is_read[message_info->msg_id]); } -static const struct protection_properties dp_11_protection = { +static const struct protection_properties dp_11_protection __unused = { .supported = true, .process_transaction = dp_11_process_transaction }; Index: src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp1_execution.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp1_execution.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp1_execution.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp1_execution.c:1.2 Sat Dec 18 23:45:07 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp1_execution.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_hdcp1_execution.c,v 1.2 2021/12/18 23:45:07 riastradh Exp $ */ +/* $NetBSD: amdgpu_hdcp1_execution.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_hdcp1_execution.c,v 1.2 2021/12/18 23:45:07 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_hdcp1_execution.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "hdcp.h" @@ -449,7 +449,7 @@ out: uint8_t mod_hdcp_execute_and_set( mod_hdcp_action func, uint8_t *flag, - enum mod_hdcp_status *status, struct mod_hdcp *hdcp, char *str) + enum mod_hdcp_status *status, struct mod_hdcp *hdcp, const char *str) { *status = func(hdcp); if (*status == MOD_HDCP_STATUS_SUCCESS && *flag != PASS) { Index: src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp_ddc.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp_ddc.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp_ddc.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp_ddc.c:1.2 Sat Dec 18 23:45:07 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp_ddc.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_hdcp_ddc.c,v 1.2 2021/12/18 23:45:07 riastradh Exp $ */ +/* $NetBSD: amdgpu_hdcp_ddc.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -26,11 +26,10 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_hdcp_ddc.c,v 1.2 2021/12/18 23:45:07 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_hdcp_ddc.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "hdcp.h" -#define MIN(a, b) ((a) < (b) ? (a) : (b)) #define HDCP_I2C_ADDR 0x3a /* 0x74 >> 1*/ #define KSV_READ_SIZE 0xf /* 0x6803b - 0x6802c */ #define HDCP_MAX_AUX_TRANSACTION_SIZE 16 Index: src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp_log.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp_log.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp_log.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp_log.c:1.2 Sat Dec 18 23:45:07 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/amdgpu_hdcp_log.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_hdcp_log.c,v 1.2 2021/12/18 23:45:07 riastradh Exp $ */ +/* $NetBSD: amdgpu_hdcp_log.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -27,7 +27,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_hdcp_log.c,v 1.2 2021/12/18 23:45:07 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_hdcp_log.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "hdcp.h" @@ -49,14 +49,14 @@ void mod_hdcp_dump_binary_message(uint8_ for (i = 0; i < msg_size; i++) { if (i % bytes_per_line == 0) buf[buf_pos++] = '\n'; - sprintf(&buf[buf_pos], "%02X ", msg[i]); + snprintf(&buf[buf_pos], sizeof(buf) - buf_pos, "%02X ", msg[i]); buf_pos += byte_size; } buf[buf_pos++] = '\0'; } } -char *mod_hdcp_status_to_str(int32_t status) +const char *mod_hdcp_status_to_str(int32_t status) { switch (status) { case MOD_HDCP_STATUS_SUCCESS: @@ -178,7 +178,7 @@ char *mod_hdcp_status_to_str(int32_t sta } } -char *mod_hdcp_state_id_to_str(int32_t id) +const char *mod_hdcp_state_id_to_str(int32_t id) { switch (id) { case HDCP_UNINITIALIZED: Index: src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/hdcp.h diff -u src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/hdcp.h:1.2 src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/hdcp.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/hdcp.h:1.2 Sat Dec 18 23:45:07 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/display/modules/hdcp/hdcp.h Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: hdcp.h,v 1.2 2021/12/18 23:45:07 riastradh Exp $ */ +/* $NetBSD: hdcp.h,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -291,7 +291,7 @@ enum mod_hdcp_hdcp2_dp_state_id { typedef enum mod_hdcp_status (*mod_hdcp_action)(struct mod_hdcp *hdcp); uint8_t mod_hdcp_execute_and_set( mod_hdcp_action func, uint8_t *flag, - enum mod_hdcp_status *status, struct mod_hdcp *hdcp, char *str); + enum mod_hdcp_status *status, struct mod_hdcp *hdcp, const char *str); enum mod_hdcp_status mod_hdcp_hdcp1_execution(struct mod_hdcp *hdcp, struct mod_hdcp_event_context *event_ctx, struct mod_hdcp_transition_input_hdcp1 *input); Index: src/sys/external/bsd/drm2/dist/drm/amd/display/modules/inc/mod_hdcp.h diff -u src/sys/external/bsd/drm2/dist/drm/amd/display/modules/inc/mod_hdcp.h:1.2 src/sys/external/bsd/drm2/dist/drm/amd/display/modules/inc/mod_hdcp.h:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/display/modules/inc/mod_hdcp.h:1.2 Sat Dec 18 23:45:07 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/display/modules/inc/mod_hdcp.h Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: mod_hdcp.h,v 1.2 2021/12/18 23:45:07 riastradh Exp $ */ +/* $NetBSD: mod_hdcp.h,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -289,10 +289,10 @@ enum mod_hdcp_status mod_hdcp_process_ev enum mod_hdcp_event event, struct mod_hdcp_output *output); /* called to convert enum mod_hdcp_status to c string */ -char *mod_hdcp_status_to_str(int32_t status); +const char *mod_hdcp_status_to_str(int32_t status); /* called to convert state id to c string */ -char *mod_hdcp_state_id_to_str(int32_t id); +const char *mod_hdcp_state_id_to_str(int32_t id); /* called to convert signal type to operation mode */ enum mod_hdcp_operation_mode mod_hdcp_signal_type_to_operation_mode( Index: src/sys/external/bsd/drm2/dist/drm/amd/powerplay/amdgpu_navi10_ppt.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/powerplay/amdgpu_navi10_ppt.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/powerplay/amdgpu_navi10_ppt.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/powerplay/amdgpu_navi10_ppt.c:1.2 Sat Dec 18 23:45:26 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/powerplay/amdgpu_navi10_ppt.c Sun Dec 19 12:02:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_navi10_ppt.c,v 1.2 2021/12/18 23:45:26 riastradh Exp $ */ +/* $NetBSD: amdgpu_navi10_ppt.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $ */ /* * Copyright 2019 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_navi10_ppt.c,v 1.2 2021/12/18 23:45:26 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_navi10_ppt.c,v 1.3 2021/12/19 12:02:39 riastradh Exp $"); #include "pp_debug.h" #include <linux/firmware.h> @@ -45,6 +45,10 @@ __KERNEL_RCSID(0, "$NetBSD: amdgpu_navi1 #include "asic_reg/mp/mp_11_0_sh_mask.h" +/* XXX *@!#^@&*!#& */ +#define sprintf(buf, fmt, ...) \ + snprintf(buf, (size_t)-1, fmt, ##__VA_ARGS__) + #define FEATURE_MASK(feature) (1ULL << feature) #define SMC_DPM_FEATURE ( \ FEATURE_MASK(FEATURE_DPM_PREFETCHER_BIT) | \ @@ -1189,7 +1193,7 @@ static int navi10_get_current_activity_p static bool navi10_is_dpm_running(struct smu_context *smu) { - int ret = 0; + int ret __unused = 0; uint32_t feature_mask[2]; unsigned long feature_enabled; ret = smu_feature_get_enabled_mask(smu, feature_mask, 2); Index: src/sys/external/bsd/drm2/dist/drm/amd/powerplay/smumgr/amdgpu_fiji_smumgr.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/powerplay/smumgr/amdgpu_fiji_smumgr.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/powerplay/smumgr/amdgpu_fiji_smumgr.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/powerplay/smumgr/amdgpu_fiji_smumgr.c:1.2 Sat Dec 18 23:45:27 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/powerplay/smumgr/amdgpu_fiji_smumgr.c Sun Dec 19 12:02:40 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_fiji_smumgr.c,v 1.2 2021/12/18 23:45:27 riastradh Exp $ */ +/* $NetBSD: amdgpu_fiji_smumgr.c,v 1.3 2021/12/19 12:02:40 riastradh Exp $ */ /* * Copyright 2015 Advanced Micro Devices, Inc. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_fiji_smumgr.c,v 1.2 2021/12/18 23:45:27 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_fiji_smumgr.c,v 1.3 2021/12/19 12:02:40 riastradh Exp $"); #include "pp_debug.h" #include "smumgr.h" @@ -1607,7 +1607,7 @@ static int fiji_populate_smc_uvd_level(s static int fiji_populate_smc_boot_level(struct pp_hwmgr *hwmgr, struct SMU73_Discrete_DpmTable *table) { - int result = 0; + int result __unused = 0; struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend); table->GraphicsBootLevel = 0; Index: src/sys/external/bsd/drm2/dist/drm/amd/powerplay/smumgr/amdgpu_iceland_smumgr.c diff -u src/sys/external/bsd/drm2/dist/drm/amd/powerplay/smumgr/amdgpu_iceland_smumgr.c:1.2 src/sys/external/bsd/drm2/dist/drm/amd/powerplay/smumgr/amdgpu_iceland_smumgr.c:1.3 --- src/sys/external/bsd/drm2/dist/drm/amd/powerplay/smumgr/amdgpu_iceland_smumgr.c:1.2 Sat Dec 18 23:45:27 2021 +++ src/sys/external/bsd/drm2/dist/drm/amd/powerplay/smumgr/amdgpu_iceland_smumgr.c Sun Dec 19 12:02:40 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: amdgpu_iceland_smumgr.c,v 1.2 2021/12/18 23:45:27 riastradh Exp $ */ +/* $NetBSD: amdgpu_iceland_smumgr.c,v 1.3 2021/12/19 12:02:40 riastradh Exp $ */ /* * Copyright 2016 Advanced Micro Devices, Inc. @@ -25,7 +25,7 @@ * */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: amdgpu_iceland_smumgr.c,v 1.2 2021/12/18 23:45:27 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: amdgpu_iceland_smumgr.c,v 1.3 2021/12/19 12:02:40 riastradh Exp $"); #include "pp_debug.h" #include <linux/types.h> @@ -2095,7 +2095,7 @@ int iceland_thermal_setup_fan_table(stru uint32_t t_diff1, t_diff2, pwm_diff1, pwm_diff2; uint16_t fdo_min, slope1, slope2; uint32_t reference_clock; - int res; + int res __unused; uint64_t tmp64; if (!phm_cap_enabled(hwmgr->platform_descriptor.platformCaps, PHM_PlatformCaps_MicrocodeFanControl)) Index: src/sys/external/bsd/drm2/include/linux/dma-fence.h diff -u src/sys/external/bsd/drm2/include/linux/dma-fence.h:1.13 src/sys/external/bsd/drm2/include/linux/dma-fence.h:1.14 --- src/sys/external/bsd/drm2/include/linux/dma-fence.h:1.13 Sun Dec 19 12:00:48 2021 +++ src/sys/external/bsd/drm2/include/linux/dma-fence.h Sun Dec 19 12:02:40 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: dma-fence.h,v 1.13 2021/12/19 12:00:48 riastradh Exp $ */ +/* $NetBSD: dma-fence.h,v 1.14 2021/12/19 12:02:40 riastradh Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -55,10 +55,10 @@ struct dma_fence { const struct dma_fence_ops *ops; int error; ktime_t timestamp; + struct rcu_head rcu; TAILQ_HEAD(, dma_fence_cb) f_callbacks; kcondvar_t f_cv; - struct rcu_head f_rcu; }; #define DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT 0 Index: src/sys/external/bsd/drm2/include/linux/hash.h diff -u src/sys/external/bsd/drm2/include/linux/hash.h:1.4 src/sys/external/bsd/drm2/include/linux/hash.h:1.5 --- src/sys/external/bsd/drm2/include/linux/hash.h:1.4 Sun Dec 19 09:48:06 2021 +++ src/sys/external/bsd/drm2/include/linux/hash.h Sun Dec 19 12:02:40 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: hash.h,v 1.4 2021/12/19 09:48:06 riastradh Exp $ */ +/* $NetBSD: hash.h,v 1.5 2021/12/19 12:02:40 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -50,4 +50,10 @@ hash_32(uint32_t value, unsigned int bit return (value * 0x61c88647) >> (32 - bits); } +static inline uint64_t +hash_64(uint64_t value, unsigned int bits) +{ + return (value * 0x61c8864680b583ebull) >> (64 - bits); +} + #endif /* _LINUX_HASH_H_ */ Index: src/sys/external/bsd/drm2/include/linux/hashtable.h diff -u src/sys/external/bsd/drm2/include/linux/hashtable.h:1.5 src/sys/external/bsd/drm2/include/linux/hashtable.h:1.6 --- src/sys/external/bsd/drm2/include/linux/hashtable.h:1.5 Mon Aug 27 06:39:27 2018 +++ src/sys/external/bsd/drm2/include/linux/hashtable.h Sun Dec 19 12:02:40 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: hashtable.h,v 1.5 2018/08/27 06:39:27 riastradh Exp $ */ +/* $NetBSD: hashtable.h,v 1.6 2021/12/19 12:02:40 riastradh Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -34,6 +34,7 @@ #include <sys/cdefs.h> +#include <linux/hash.h> #include <linux/list.h> #define DECLARE_HASHTABLE(name, bits) \ Index: src/sys/external/bsd/drm2/include/uapi/linux/kfd_ioctl.h diff -u src/sys/external/bsd/drm2/include/uapi/linux/kfd_ioctl.h:1.1 src/sys/external/bsd/drm2/include/uapi/linux/kfd_ioctl.h:1.2 --- src/sys/external/bsd/drm2/include/uapi/linux/kfd_ioctl.h:1.1 Sun Dec 19 10:56:23 2021 +++ src/sys/external/bsd/drm2/include/uapi/linux/kfd_ioctl.h Sun Dec 19 12:02:40 2021 @@ -0,0 +1,37 @@ +/* $NetBSD: kfd_ioctl.h,v 1.2 2021/12/19 12:02:40 riastradh Exp $ */ + +/*- + * Copyright (c) 2021 The NetBSD Foundation, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _LINUX_UAPI_KFD_IOCTL_H_ +#define _LINUX_UAPI_KFD_IOCTL_H_ + +enum { + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL = 0, + KFD_MMIO_REMAP_HDP_REG_FLUSH_CNTL = 4, +}; + +#endif /* _LINUX_UAPI_KFD_IOCTL_H_ */ Index: src/sys/external/bsd/drm2/linux/linux_dma_fence.c diff -u src/sys/external/bsd/drm2/linux/linux_dma_fence.c:1.18 src/sys/external/bsd/drm2/linux/linux_dma_fence.c:1.19 --- src/sys/external/bsd/drm2/linux/linux_dma_fence.c:1.18 Sun Dec 19 12:00:48 2021 +++ src/sys/external/bsd/drm2/linux/linux_dma_fence.c Sun Dec 19 12:02:40 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_dma_fence.c,v 1.18 2021/12/19 12:00:48 riastradh Exp $ */ +/* $NetBSD: linux_dma_fence.c,v 1.19 2021/12/19 12:02:40 riastradh Exp $ */ /*- * Copyright (c) 2018 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_dma_fence.c,v 1.18 2021/12/19 12:00:48 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_dma_fence.c,v 1.19 2021/12/19 12:02:40 riastradh Exp $"); #include <sys/atomic.h> #include <sys/condvar.h> @@ -120,6 +120,8 @@ dma_fence_reset(struct dma_fence *fence, * * Clean up memory initialized with dma_fence_init. This is meant * to be used after a fence release callback. + * + * XXX extension to Linux API */ void dma_fence_destroy(struct dma_fence *fence) @@ -134,7 +136,7 @@ dma_fence_destroy(struct dma_fence *fenc static void dma_fence_free_cb(struct rcu_head *rcu) { - struct dma_fence *fence = container_of(rcu, struct dma_fence, f_rcu); + struct dma_fence *fence = container_of(rcu, struct dma_fence, rcu); KASSERT(!dma_fence_referenced_p(fence)); @@ -160,7 +162,7 @@ dma_fence_free(struct dma_fence *fence) KASSERT(!dma_fence_referenced_p(fence)); - call_rcu(&fence->f_rcu, &dma_fence_free_cb); + call_rcu(&fence->rcu, &dma_fence_free_cb); } /*