Jump to content

SPI - kernel NULL pointer dereference


mboehmer

Recommended Posts

Hi,
just returned to start working on a FLIR Lepton camera, with Odroid C4, hooked up to SPI (faster than the C2).
WIth the official image from download page (Armbian 22.08 Jammy, kernel 5.10.144) I get the following message on console as soon as I try any access to spidev:

 

[   77.660325] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
[   77.666930] Mem abort info:
[   77.670400]   ESR = 0x86000004
[   77.673801]   EC = 0x21: IABT (current EL), IL = 32 bits
[   77.677915]   SET = 0, FnV = 0
[   77.681367]   EA = 0, S1PTW = 0
[   77.684796] user pgtable: 4k pages, 48-bit VAs, pgdp=000000000f26b000
[   77.690454] [0000000000000000] pgd=0000000000000000, p4d=0000000000000000
[   77.697196] Internal error: Oops: 86000004 [#1] PREEMPT SMP
[   77.702645] Modules linked in: spidev rfkill cpufreq_powersave cpufreq_conservative lz4hc lz4hc_compress lz4 snd_soc_hdmi_codec snd_soc_meson_axg_tdmout snd_soc_meson_axg_sound_card snd_soc_meson_g12a_tohdmitx panfrost snd_soc_meson_card_utils gpu_sched snd_soc_meson_codec_glue snd_soc_meson_axg_frddr snd_soc_meson_axg_fifo meson_gxbb_wdt meson_vdec(C) v4l2_mem2mem ir_nec_decoder videobuf2_dma_contig meson_rng dw_hdmi_i2s_audio videobuf2_memops videobuf2_v4l2 videobuf2_common meson_saradc videodev rc_odroid mc meson_ir rc_core snd_soc_meson_axg_tdm_interface snd_soc_meson_axg_tdm_formatter snd_soc_core ac97_bus snd_pcm_dmaengine snd_pcm snd_timer snd soundcore display_connector zram sch_fq_codel ramoops reed_solomon nfsd efi_pstore auth_rpcgss nfs_acl lockd grace sunrpc ip_tables x_tables autofs4 meson_gxl reset_meson_audio_arb rtc_meson_vrtc axg_audio sclk_div clk_phase dwmac_generic realtek dwmac_meson8b
[   77.810859] CPU: 2 PID: 3156 Comm: spidev_test Tainted: G         C        5.10.144-meson64 #22.08.2
[   77.819904] Hardware name: Hardkernel ODROID-C4 (DT)
[   77.824823] pstate: a0400009 (NzCv daif +PAN -UAO -TCO BTYPE=--)
[   77.830777] pc : 0x0
[   77.835509] lr : meson_spicc_pow2_determine_rate+0x2c/0x40
[   77.840340] sp : ffff800012eb3920
[   77.845116] x29: ffff800012eb3920 x28: 0000000000000000 
[   77.849906] x27: ffff000001170800 x26: 0000000000000000 
[   77.854808] x25: 0000000000000000 x24: ffff80001134cdf8 
[   77.860069] x23: 0000000000000002 x22: 0000000000000000 
[   77.865331] x21: ffff800012eb3a70 x20: ffff000000d75f00 
[   77.870594] x19: 0000000000000000 x18: 0000000000000000 
[   77.875854] x17: 0000000000000000 x16: 0000000000000000 
[   77.881115] x15: 0000aaaaaf3a3018 x14: 0000000000000000 
[   77.886376] x13: 0000000000000000 x12: 0000000000000000 
[   77.891637] x11: 0000000000000000 x10: 0000000000000054 
[   77.896898] x9 : 0000000000000001 x8 : 0000000000000001 
[   77.902159] x7 : 00000000ffffffbf x6 : 0000000000000000 
[   77.907421] x5 : 0000000000000000 x4 : ffff800012eb39c0 
[   77.912682] x3 : ffff800012eb3d30 x2 : 0000000000000000 
[   77.917943] x1 : ffff800012eb39c0 x0 : ffff00003f9c9e28 
[   77.923206] Call trace:
[   77.927258]  0x0
[   77.931291]  clk_core_determine_round_nolock.part.30+0x20/0x88
[   77.935568]  clk_core_round_rate_nolock+0x80/0x90
[   77.940226]  clk_mux_determine_rate_flags+0xdc/0x208
[   77.945145]  clk_mux_determine_rate+0x14/0x20
[   77.949456]  clk_core_determine_round_nolock.part.30+0x20/0x88
[   77.955234]  clk_core_round_rate_nolock+0x80/0x90
[   77.959889]  clk_core_set_rate_nolock+0x5c/0x1f0
[   77.964460]  clk_set_rate+0x38/0xa8
[   77.968504]  meson_spicc_transfer_one+0x88/0x300
[   77.972483]  spi_transfer_one_message+0x258/0x4c0
[   77.977139]  __spi_pump_messages+0x34c/0x570
[   77.981366]  __spi_sync+0x1e8/0x220
[   77.985297]  spi_sync+0x30/0x58
[   77.989235]  spidev_sync+0x48/0x80 [spidev]
[   77.993146]  spidev_message+0x2e0/0x400 [spidev]
[   77.997026]  spidev_ioctl+0x41c/0x848 [spidev]
[   78.001033]  __arm64_sys_ioctl+0xa8/0xe8
[   78.004914]  el0_svc_common.constprop.4+0x8c/0x180
[   78.009656]  do_el0_svc+0x24/0x90
[   78.013090]  el0_svc+0x14/0x20
[   78.016370]  el0_sync_handler+0x90/0xb8
[   78.019747]  el0_sync+0x160/0x180
[   78.023032] Code: bad PC value
[   78.026046] ---[ end trace b73c9916d0bfd2d6 ]---

 

This behaviour affects also simple programs like spidev_test from kernel archive.

 

I checked the hardkernel image (kernel 4.9) and there the problem is not existing.

Any ideas on that?

 

Thanks in advance, Michael

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines