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);
 }
 
 /*

Reply via email to