ardangelo / beepy-gen

Raspberry Pi OS gen scripts - Beepy fork
BSD 3-Clause "New" or "Revised" License
6 stars 0 forks source link

On 64 bit OS, holding the [Berry] key for one second throws error. #1

Open markatlnk opened 4 months ago

markatlnk commented 4 months ago

dmesg shows the following:

Unable to handle kernel paging request at virtual address 0011a844007cbbd0 [ 512.394701] Mem abort info: [ 512.394838] ESR = 0x0000000096000004 [ 512.394940] EC = 0x25: DABT (current EL), IL = 32 bits [ 512.395069] SET = 0, FnV = 0 [ 512.395156] EA = 0, S1PTW = 0 [ 512.395244] FSC = 0x04: level 0 translation fault [ 512.395362] Data abort info: [ 512.395444] ISV = 0, ISS = 0x00000004 [ 512.395624] CM = 0, WnR = 0 [ 512.395710] [0011a844007cbbd0] address between user and kernel address ranges [ 512.395874] Internal error: Oops: 0000000096000004 [#3] PREEMPT SMP [ 512.396015] Modules linked in: cmac algif_hash aes_arm64 aes_generic algif_skcipher af_alg bnep hci_uart btbcm bluetooth ecdh_generic ecc libaes 8021q garp stp llc vc4 brcmfmac snd_soc_hdmi_codec drm_display_helper cec brcmutil snd_soc_core cfg80211 snd_compress snd_pcm_dmaengine raspberrypi_hwmon rfkill i2c_bcm2835 bcm2835_codec(C) bcm2835_v4l2(C) bcm2835_isp(C) snd_bcm2835(C) v4l2_mem2mem bcm2835_mmal_vchiq(C) snd_pcm videobuf2_dma_contig videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common snd_timer spi_bcm2835 snd videodev mc vc_sm_cma(C) uio_pdrv_genirq uio beepy_kbd(O) sharp_drm(O) drm_dma_helper drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops i2c_dev drm fuse drm_panel_orientation_quirks backlight ip_tables x_tables ipv6 [ 512.410059] CPU: 0 PID: 707 Comm: symbol-overlay Tainted: G D C O 6.1.21-v8+ #1642 [ 512.410089] Hardware name: Raspberry Pi Zero 2 W Rev 1.0 (DT) [ 512.410098] pstate: a0000005 (NzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 512.410114] pc : memcpy+0x110/0x230 [ 512.410139] lr : kmemdup+0x58/0x70 [ 512.410157] sp : ffffffc008b6bb80 [ 512.424705] x29: ffffffc008b6bb80 x28: ffffffc008b6bd18 x27: 0000000000000004 [ 512.424739] x26: ffffff8006ffea00 x25: ffffff8004f12a00 x24: 0011a844007cbbd0 [ 512.424761] x23: 0000000000000000 x22: 00000000ffffff6c x21: 0011a844007cbbd0 [ 512.431503] x20: 000000000000e740 x19: ffffff8007bc0000 x18: 0000000000000000 [ 512.431532] x17: 0000000000000000 x16: ffffffe98d68aab8 x15: 00000000ffe9a804 [ 512.431554] x14: ffee573c073f4430 x13: 0000000000000000 x12: ffffffe98e91cb10 [ 512.431577] x11: ffffffe98e91cae0 x10: fffffffe001ef408 x9 : ffffffe98d6f7208 [ 512.431599] x8 : 0000000000000068 x7 : ffffffc008b6c000 x6 : ffffffc008b68000 [ 512.431621] x5 : ffffff8007bce740 x4 : 0011a844007da310 x3 : ffffffe98e759000 [ 512.431643] x2 : 000000000000e740 x1 : 0011a844007cbbd0 x0 : ffffff8007bc0000 [ 512.431667] Call trace: [ 512.431674] memcpy+0x110/0x230 [ 512.431695] drm_add_overlay+0x68/0xb4 [sharp_drm] [ 512.431736] sharp_memory_ioctl_ov_add+0x30/0x50 [sharp_drm] [ 512.431770] drm_ioctl_kernel+0xc8/0x180 [drm] [ 512.432213] drm_ioctl+0x210/0x418 [drm] [ 512.432558] drm_compat_ioctl+0xec/0x100 [drm] [ 512.432910] __arm64_compat_sys_ioctl+0x168/0x180 [ 512.432932] invoke_syscall+0x4c/0x110 [ 512.432952] el0_svc_common.constprop.3+0xfc/0x120 [ 512.432971] do_el0_svc_compat+0x24/0x48 [ 512.432989] el0_svc_compat+0x30/0x88 [ 512.433007] el0t_32_sync_handler+0xe4/0x100 [ 512.433025] el0t_32_sync+0x190/0x194 [ 512.433047] Code: cb01000e b4fffc2e eb0201df 540004a3 (a940342c) [ 512.433058] ---[ end trace 0000000000000000 ]--- root@pi33:/home/mark#

ardangelo commented 4 months ago

Seems to be a problem with calling the 64-bit overlay interface via ioctl from 32-bit userspace application. I rebuilt the symbol overlay utility for arm64, that fixes the ioctl issues in the overlay. Currently figuring out how to best to get arm64 packages distributed.

markatlnk commented 4 months ago

One more hint.

Here is the log level after I reboot. root@pi33:/home/mark# cat /proc/sys/kernel/printk 3 4 1 3

I am log in through wifi and ssh.

Now holding the berry button for the second I get:

root@pi33:/home/mark# Message from syslogd@pi33 at Apr 24 21:09:13 ... kernel:[ 2162.866783] Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP

Message from syslogd@pi33 at Apr 24 21:09:13 ... kernel:[ 2162.953113] Code: cb01000e b4fffc2e eb0201df 540004a3 (a940342c)

Now when I look at the log level, I get.

root@pi33:/home/mark# cat /proc/sys/kernel/printk 15 4 1 3

It sets the log level to 15 so from that point on I get messages on the display until I set the log level back down.

ardangelo commented 4 months ago

I have added 64-bit arm64 builds of all the Beepy packages to the PPA repo. This fixes the symbol overlay crash we were seeing when holding Berry on 64-bit. You will probably need to purge the 32-bit armhf packages first, then install the arm64 versions.