Created attachment 218349 [details]
- FreeBSD 12.1-RELEASE-p6 #6 r362488M
- latest ports, amongst them drm-fbsd12.0-kmod-4.16.g20200221, drm-kmod-g20190710, gpu-firmware-kmod-g20200920
- CPU: AMD Phenom(tm) II X4 955 Processor (3210.75-MHz K8-class CPU)
- Chipset: "ATI Radeon HD 4290" (ChipID = 0x9714)
- Starting X via sddm
- Logging in
- Starting firefox
- Modify toolbar, drag one icon
- The machine panics
- This has been happening for a long time; from time to time I am checking whether it might be working again.
Created attachment 218350 [details]
Created attachment 218351 [details]
We have seen the radeon_gem_object_free + ttm_bo_cleanup_refs_or_queue trace before: bug 237544, bug 234760. Nice to get a report from someone who knows about kgdb :)
Would be great if you could:
- upgrade to a CURRENT kernel
- git clone https://github.com/freebsd/drm-kmod
- add 'KCONFIG+= DRM_DEBUG_MM' to kconfig.mk
- install the driver (make -jN, make install)
- try to reproduce
Current as in stable/12 or in head?
And in any case, just kernel + modules, no userland (that would be too heavy for this use case, which is "reliable zfs server")?
Will I be able to go back to releng/12.1 regarding zfs?
I basically just want to flip /boot/kernel and /boot/modules.
CURRENT == head, yes.
Of course you can keep 12 userland.
Regarding ZFS, just don't zpool upgrade. No upgrade will be done automatically.
Already working on it, will take some while as I also have to recompile all ports for head to be prepared for drm-kmod. Or can I just compile the git repo using the native tools, without any ports installed (all in a VM running head, before transferring the result to the machine in question)?
(See also https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=249957 ;-))
I have recompiled head @ r366217 and then all (my usual) ports @ r550470. Then cloned drm-kmod and set DRM_DEBUG_MM. uname -a shows, amongst others, "FreeBSD 13.0-CURRENT #0 r366217M".
Running make in drm-kmod yields the error below.
How can I proceed?
cc -O2 -pipe '-DKBUILD_MODNAME="drm"' '-DLINUXKPI_PARAM_PREFIX=drm_' -DDRM_SYSCTL_PARAM_PREFIX=_dri -DLINUXKPI_VERSION=50000 -DCONFIG_DRM_AMDGPU_CIK -DCONFIG_DRM_AMDGPU_SI -DCONFIG_DRM_AMD_DC -DCONFIG_DRM_AMD_DC_FBC -DCONFIG_DRM_AMD_POWERPLAY -DCONFIG_DRM_I915_ALPHA_SUPPORT -DCONFIG_DRM_I915_FORCE_PROBE='"*"' -DCONFIG_DRM_I915_CAPTURE_ERROR -DCONFIG_DRM_I915_SPIN_REQUEST=5 -DCONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250 -DCONFIG_DRM_LOAD_EDID_FIRMWARE -DCONFIG_DRM_MIPI_DSI -DCONFIG_DRM_PANEL_ORIENTATION_QUIRKS -DCONFIG_DRM_VMWGFX_FBCON -DCONFIG_DRM_DEBUG_MM -DCONFIG_DRM_FBDEV_EMULATION -DCONFIG_DRM_FBDEV_OVERALLOC=100 -DCONFIG_DRM_LEGACY -DCONFIG_DRM_VM -DCONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG -DCONFIG_BACKLIGHT_CLASS_DEVICE -DCONFIG_DMI -DCONFIG_FB -DCONFIG_MTRR -DCONFIG_PCI -DCONFIG_PM -DCONFIG_SMP -DCONFIG_ACPI -DCONFIG_ACPI_SLEEP -DCONFIG_AGP -DCONFIG_X86 -DCONFIG_X86_PAT -DCONFIG_64BIT -DCONFIG_AS_MOVNTDQA -DCONFIG_COMPAT -DCONFIG_X64_64 -DCONFIG_DRM_AMD_DC_DCN1_0 -DCONFIG_DRM_AMD_DC_DCN1_01 -DCONFIG_DRM_AMD_DC_DCN2_0 -DCONFIG_DRM_AMD_DC_DSC_SUPPORT -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE -nostdinc -I/usr/tmp/drm-kmod/linuxkpi/gplv2/include -I/auto/z/SRC/FreeBSD/head/sys/compat/linuxkpi/common/include -I/usr/tmp/drm-kmod/linuxkpi/dummy/include -I/usr/tmp/drm-kmod/drivers/gpu/drm -I/usr/tmp/drm-kmod/include -I/usr/tmp/drm-kmod/include/drm -I/usr/tmp/drm-kmod/include/uapi -I/usr/tmp/drm-kmod/drivers/gpu -include /usr/tmp/drm-kmod/drm/opt_global.h -I. -I/auto/z/SRC/FreeBSD/head/sys -I/auto/z/SRC/FreeBSD/head/sys/contrib/ck/include -fno-common -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fdebug-prefix-map=./machine=/auto/z/SRC/FreeBSD/head/sys/amd64/include -fdebug-prefix-map=./x86=/auto/z/SRC/FreeBSD/head/sys/x86/include -MD -MF.depend.drm_mm.o -MTdrm_mm.o -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -msoft-float -fno-asynchronous-unwind-tables -ffreestanding -fwrapv -fstack-protector -Wno-pointer-sign -Wno-format -Wno-format-zero-length -mno-aes -mno-avx -std=iso9899:1999 -c /usr/tmp/drm-kmod/drivers/gpu/drm/drm_mm.c -o drm_mm.o
/usr/tmp/drm-kmod/drivers/gpu/drm/drm_mm.c:112:6: error: implicit declaration of function 'stack_trace_save' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
n = stack_trace_save(entries, ARRAY_SIZE(entries), 1);
/usr/tmp/drm-kmod/drivers/gpu/drm/drm_mm.c:115:16: error: implicit declaration of function 'stack_depot_save' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
node->stack = stack_depot_save(entries, n, GFP_NOWAIT);
/usr/tmp/drm-kmod/drivers/gpu/drm/drm_mm.c:115:16: note: did you mean 'stack_trace_save'?
/usr/tmp/drm-kmod/drivers/gpu/drm/drm_mm.c:112:6: note: 'stack_trace_save' declared here
n = stack_trace_save(entries, ARRAY_SIZE(entries), 1);
/usr/tmp/drm-kmod/drivers/gpu/drm/drm_mm.c:136:16: error: implicit declaration of function 'stack_depot_fetch' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
nr_entries = stack_depot_fetch(node->stack, &entries);
/usr/tmp/drm-kmod/drivers/gpu/drm/drm_mm.c:137:3: error: implicit declaration of function 'stack_trace_snprint' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
stack_trace_snprint(buf, BUFSZ, entries, nr_entries, 0);
4 errors generated.
*** Error code 1
make: stopped in /usr/tmp/drm-kmod/drm
*** Error code 1
(In reply to Martin Birgmeier from comment #7)
oh, I guess we don't have everything for DRM_DEBUG_MM,
I'll see if we can avoid using the stack depot things and still get some of the debug assertions here.
For now you can just test without the debug thing.
> can I just compile the git repo using the native tools, without any ports installed (all in a VM running head, before transferring the result to the machine in question)?
Yeah I'm pretty sure all you need is that /usr/src should match the kernel you'll be running. Ports should not matter
Okay, just change
#if defined(CONFIG_DRM_DEBUG_MM) && defined(__linux__)
Created attachment 218482 [details]
boot messages with kernel from head@r366217
- Built kernel from head@r366217
- Built drm-kmod from 677e58f482149531cbe1ef30507c34be433edd09
- Replaced /boot/kernel and /boot/modules
- no zpools imported (not necessary for this test, as /usr/local is on / and that is UFS)
- no graphics - some microcode file seems to be missing?
(In reply to Martin Birgmeier from comment #10)
Right, you need to rebuild https://github.com/FreeBSDDesktop/kms-firmware for the new kernel too. Sorry, forgot to mention.
O.k. so the result now is negative - which is to say that there was no panic and therefore nothing that could be reported. I tried to tax it using firefox and scrolling and video playback, no untoward things happened (unlike with 12.1).
The system just worked (tm). ;-)
Except that it did not import the zfs pool, but I assume/hope this does not matter.
So where do we go from here? Will all this nice stuff be in 12.2? Or come as a ports update?
(In reply to Martin Birgmeier from comment #12)
Hm. If you want to stay on 12.x kernels you could try the drm-v5.0-fbsd12.1 branch that's on the FreeBSDDesktop github. It's not actively supported though. I think someone made the decision to stick with 4.16-fbsd12.0 for the whole 12.x series. Maybe time to rethink that if 5.0 fixes radeon..
But wait. I don't think you've tried manually building 4.16 on the 12 kernel.
Maybe the code is fine but the build in the official packages is somehow busted/mismatched.
(In reply to Greg V from comment #13)
There are regressions with the 5.0 release, where the console doesn't always update as it should, that's the reason we stuck with 4.16 for 12.
Feel free to try the 5.0 branch, but be aware that it is not supported.