Kworker causing freezes

Hello folks,
I'm currently troubleshooting an issue with my copy of Zorin OS 17 Pro. It seems a kworker process is occasionally causing my PC to freeze. I can get the freeze to reliably occur when I switch between a couple of tabs in Firefox, then switch to a tab which has YouTube playing a video. The perf report returned this as its top items:

Perf Report
  • 15.96% 0.00% swapper [kernel.kallsyms] [k] secondary_startup_64_no_verify
  • 15.95% 0.03% swapper [kernel.kallsyms] [k] cpu_startup_entry
  • 15.83% 0.14% swapper [kernel.kallsyms] [k] do_idle
  • 14.92% 0.00% swapper [kernel.kallsyms] [k] start_secondary
  • 13.96% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] ret_from_fork_asm
  • 13.96% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] ret_from_fork
  • 13.96% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] kthread
  • 13.96% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] worker_thread
  • 13.95% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] process_one_work
  • 13.93% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] commit_work
  • 13.93% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] commit_tail
  • 13.90% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] amdgpu_dm_atomic_commit_tail
  • 13.80% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] amdgpu_dm_commit_planes.constprop.0
  • 13.67% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] dcn3_update_clocks
  • 13.67% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] dcn30_smu_set_hard_min_by_freq
  • 13.65% 0.10% kworker/u32:6-f [kernel.kallsyms] [k] dcn30_smu_send_msg_with_param
  • 13.50% 0.13% swapper [kernel.kallsyms] [k] cpuidle_idle_call
  • 13.36% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] dc_update_planes_and_stream
  • 13.34% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] commit_planes_for_stream
  • 13.25% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] dcn30_prepare_bandwidth
  • 13.25% 0.00% kworker/u32:6-f [kernel.kallsyms] [k] dcn20_prepare_bandwidth
  • 13.24% 6.98% kworker/u32:6-f [kernel.kallsyms] [k] delay_halt_mwaitx
  • 12.37% 0.53% kworker/u32:6-f [kernel.kallsyms] [k] delay_halt.part.0
  • 12.32% 0.06% kworker/u32:6-f [kernel.kallsyms] [k] __const_udelay
  • 12.31% 5.74% kworker/u32:6-f [kernel.kallsyms] [k] delay_halt
  • 12.00% 0.05% swapper [kernel.kallsyms] [k] call_cpuidle
  • 11.94% 0.03% swapper [kernel.kallsyms] [k] cpuidle_enter
  • 11.76% 0.20% swapper [kernel.kallsyms] [k] cpuidle_enter_state
  • 5.08% 0.06% swapper [kernel.kallsyms] [k] acpi_idle_enter
  • 4.62% 0.05% swapper [kernel.kallsyms] [k] acpi_idle_enter_bm
  • 4.01% 0.04% swapper [kernel.kallsyms] [k] acpi_read_bit_register
  • 3.87% 3.81% swapper [kernel.kallsyms] [k] acpi_os_read_port
  • 3.39% 0.02% conky [kernel.kallsyms] [k] entry_SYSCALL_64_after_hwframe
  • 3.37% 0.04% conky [kernel.kallsyms] [k] do_syscall_64
  • 3.02% 0.00% gnome-shell [unknown] [k] 0000000000000000
  • 2.44% 0.02% swapper [kernel.kallsyms] [k] acpi_hw_register_read
  • 2.27% 0.03% swapper [kernel.kallsyms] [k] asm_sysvec_apic_timer_interrupt
  • 2.23% 0.02% swapper [kernel.kallsyms] [k] sysvec_apic_timer_interrupt
  • 2.14% 0.02% gnome-shell [kernel.kallsyms] [k] entry_SYSCALL_64_after_hwframe
  • 2.12% 0.04% gnome-shell [kernel.kallsyms] [k] do_syscall_64
  • 2.11% 0.05% swapper [kernel.kallsyms] [k] asm_sysvec_call_function_single
  • 1.92% 0.06% swapper [kernel.kallsyms] [k] sysvec_call_function_single
  • 1.60% 0.02% swapper [kernel.kallsyms] [k] irq_exit_rcu
  • 1.56% 0.05% swapper [kernel.kallsyms] [k] __irq_exit_rcu
  • 1.54% 0.03% swapper [kernel.kallsyms] [k] schedule_idle
  • 1.53% 0.24% swapper [kernel.kallsyms] [k] __schedule
  • 1.51% 0.05% swapper [kernel.kallsyms] [k] acpi_hw_read
  • 1.49% 0.09% swapper [kernel.kallsyms] [k] __flush_smp_call_function_queue
  • 1.44% 0.05% swapper [kernel.kallsyms] [k] sched_ttwu_pending
  • 1.39% 0.04% kworker/u32:6-f [kernel.kallsyms] [k] dm_read_reg_func
  • 1.38% 0.02% swapper [kernel.kallsyms] [k] __do_softirq
  • 1.38% 0.03% swapper [kernel.kallsyms] [k] __sysvec_call_function_single
  • 1.36% 0.00% swapper [kernel.kallsyms] [k] asm_common_interrupt
  • 1.36% 0.01% swapper [kernel.kallsyms] [k] common_interrupt
  • 1.35% 0.09% kworker/u32:6-f [kernel.kallsyms] [k] amdgpu_cgs_read_register
  • 1.34% 0.02% swapper [kernel.kallsyms] [k] generic_smp_call_function_single_interrupt
  • 1.32% 0.02% conky libc.so.6 [.] seteuid
  • 1.31% 0.03% kworker/u32:6-f [kernel.kallsyms] [k] amdgpu_device_rreg
  • 1.29% 0.06% swapper [kernel.kallsyms] [k] ttwu_do_activate
  • 1.28% 0.00% Isolated Web Co [unknown] [.] 0000000000000000
  • 1.20% 0.00% conky [kernel.kallsyms] [k] __x64_sys_openat
  • 1.18% 0.01% gnome-shell libc.so.6 [.] recvmmsg
  • 1.18% 0.03% conky [kernel.kallsyms] [k] do_sys_openat2
  • 1.16% 0.01% swapper [kernel.kallsyms] [k] __sysvec_apic_timer_interrupt
  • 1.16% 0.06% swapper [kernel.kallsyms] [k] enqueue_task
  • 1.13% 0.04% swapper [kernel.kallsyms] [k] hrtimer_interrupt
  • 1.13% 0.59% swapper [kernel.kallsyms] [k] srso_alias_safe_ret
  • 1.10% 0.39% swapper [kernel.kallsyms] [k] menu_select
  • 1.09% 0.03% swapper [kernel.kallsyms] [k] cpuidle_select
  • 1.08% 0.00% gnome-shell [unknown] [k] 0x0000000100000006
  • 1.07% 0.00% conky libc.so.6 [.] 0x0000785ea791481c

The delay_halt symbols seems to be the likely culprits of the freezing, but trying to get any information on them has yielded few relevant results on Google. Any help on this would be much appreciated.

Have you checked the log app after a freeze?