LINUX.ORG.RU

Странная ошибка ядра линукс на MIPS платформе.

 , ,


0

2

Привет, уважаемые форумчане, пробую собрать ядро с возможностью загрузки рутфс с микро сд карты, но получаю очень странную ошибку при загрузке ядра. Может кто-нибудь помочь? Спасибо.

Starting kernel …

[ 0.000000] Linux version 4.14.222 (oleh@oleh-Lenovo-G500) (gcc version 8.4.0 (Buildroot 2020.02.11)) #1 PREEMPT Sun Feb 28 14:21:46 EET 2021
[ 0.000000] Board has DDR2
[ 0.000000] Analog PMU set to hw control
[ 0.000000] Digital PMU set to hw control
[ 0.000000] SoC Type: MediaTek MT7688 ver:1 eco:2
[ 0.000000] bootconsole [early0] enabled
[ 0.000000] CPU0 revision is: 00019655 (MIPS 24KEc)
[ 0.000000] MIPS: machine is Onion Omega2+
[ 0.000000] Determined physical RAM map:
[ 0.000000] memory: 08000000 @ 00000000 (usable)
[ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[ 0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000000000000-0x0000000007ffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x0000000007ffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff]
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 32480
[ 0.000000] Kernel command line: console=ttyS0,115200 root=/dev/mmcblk0p1 rootdelay=5
[ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.000000] Writing ErrCtl register=00037b5e
[ 0.000000] Readback ErrCtl register=00037b5e
[ 0.000000] Memory: 123036K/131072K available (3850K kernel code, 238K rwdata, 1284K rodata, 1212K init, 103K bss, 8036K reserved, 0K cma-reserved)
[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] Preemptible hierarchical RCU implementation.
[ 0.000000] Tasks RCU enabled.
[ 0.000000] NR_IRQS: 256
[ 0.000000] intc: using register map from devicetree
[ 0.000000] CPU Clock: 580MHz
[ 0.000000] timer_probe: no matching timers found
[ 0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6590553264 ns
[ 0.000012] sched_clock: 32 bits at 290MHz, resolution 3ns, wraps every 7405115902ns
[ 0.007692] Console: colour dummy device 80x25
[ 0.011954] Calibrating delay loop… 385.84 BogoMIPS (lpj=1929216)
[ 0.073526] pid_max: default: 32768 minimum: 301
[ 0.078253] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.084611] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.093419] Hierarchical SRCU implementation.
[ 0.098909] devtmpfs: initialized
[ 0.104805] random: get_random_u32 called from bucket_table_alloc+0x214/0x24c with crng_init=0
[ 0.113845] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.123725] futex hash table entries: 256 (order: -1, 3072 bytes)
[ 0.129741] pinctrl core: initialized pinctrl subsystem
[ 0.135638] NET: Registered protocol family 16
[ 0.203879] usbcore: registered new interface driver usbfs
[ 0.211024] usbcore: registered new interface driver hub
[ 0.216545] usbcore: registered new device driver usb
[ 0.224092] clocksource: Switched to clocksource MIPS
[ 0.266019] NET: Registered protocol family 2
[ 0.271957] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.279113] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.285410] TCP: Hash tables configured (established 1024 bind 1024)
[ 0.291690] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.297411] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.303731] NET: Registered protocol family 1
[ 0.311125] workingset: timestamp_bits=14 max_order=15 bucket_order=1
[ 0.354540] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[ 0.361638] io scheduler noop registered
[ 0.365904] io scheduler deadline registered
[ 0.370735] io scheduler cfq registered (default)
[ 0.375579] io scheduler mq-deadline registered
[ 0.379896] io scheduler kyber registered
[ 0.387543] Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
[ 0.397766] console [ttyS0] disabled
[ 0.401796] 10000c00.uartlite: ttyS0 at MMIO 0x10000c00 (irq = 28, base_baud = 2500000) is a 16550A
[ 0.410702] console [ttyS0] enabled
[ 0.410702] console [ttyS0] enabled
[ 0.417757] bootconsole [early0] disabled
[ 0.417757] bootconsole [early0] disabled
[ 0.427408] 10000d00.uart1: ttyS1 at MMIO 0x10000d00 (irq = 29, base_baud = 2500000) is a 16550A
[ 0.438118] 10000e00.uart2: ttyS2 at MMIO 0x10000e00 (irq = 30, base_baud = 2500000) is a 16550A
[ 0.448643] ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver
[ 0.455792] ehci-platform: EHCI generic platform driver
[ 0.471556] phy phy-10120000.usb-phy.0: remote usb device wakeup disabled
[ 0.478569] phy phy-10120000.usb-phy.0: UTMI 16bit 30MHz
[ 0.483980] ehci-platform 101c0000.ehci: EHCI Host Controller
[ 0.489917] ehci-platform 101c0000.ehci: new USB bus registered, assigned bus number 1
[ 0.498173] ehci-platform 101c0000.ehci: irq 26, io mem 0x101c0000
[ 0.534118] ehci-platform 101c0000.ehci: USB 2.0 started, EHCI 1.00
[ 0.541812] hub 1-0:1.0: USB hub found
[ 0.546061] hub 1-0:1.0: 1 port detected
[ 0.551294] IR NEC protocol handler initialized
[ 0.556406] IR RC5(x/sz) protocol handler initialized
[ 0.561536] IR RC6 protocol handler initialized
[ 0.566225] IR JVC protocol handler initialized
[ 0.570819] IR Sony protocol handler initialized
[ 0.575633] IR SANYO protocol handler initialized
[ 0.580406] IR Sharp protocol handler initialized
[ 0.585227] IR MCE Keyboard/mouse protocol handler initialized
[ 0.591141] IR XMP protocol handler initialized
[ 0.596873] MTK MSDC device init.
[ 0.654792] mtk-sd: MediaTek MT6575 MSDC Driver
[ 0.660725] sdhci: Secure Digital Host Controller Interface driver
[ 0.669140] sdhci: Copyright(c) Pierre Ossman
[ 0.673638] sdhci-pltfm: SDHCI platform and OF driver helper
[ 0.680487] usbcore: registered new interface driver usbhid
[ 0.686805] usbhid: USB HID core driver
[ 0.694382] NET: Registered protocol family 17
[ 0.701368] Waiting 5 sec before mounting root device…
[ 0.793922] mmc0: new high speed SD card at address b368
[ 0.800730] mmcblk0: mmc0:b368 SMI 487 MiB
[ 0.807841] mmcblk0: p1
[ 1.214137] usb 1-1: new high-speed USB device number 2 using ehci-platform
[ 2.034130] usb 1-1: device descriptor read/64, error -71
[ 2.156121] random: fast init done
[ 3.934127] usb 1-1: device descriptor read/64, error -71
[ 5.784131] Reserved instruction in kernel code[#1]:
[ 5.789181] CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.222 #1
[ 5.795183] task: 87c28000 task.stack: 87c26000
[ 5.799770] $ 0 : 00000000 00000000 00000000 87c27e61
[ 5.805079] $ 4 : 0000002f 00000000 00000000 ffffffc2
[ 5.810384] $ 8 : 87800014 00000000 80510828 00000000
[ 5.815689] $12 : 8051082c fffffffe 80680000 74706972
[ 5.820996] $16 : 8055f49b 8055f491 87c27e58 80505150
[ 5.826303] $20 : 805411c4 80670000 00000008 80670000
[ 5.831609] $24 : 00000000 80006ecc
[ 5.836915] $28 : 87c26000 87c27e40 8055d440 800007b8
[ 5.842225] Hi : 002c1b1b
[ 5.845141] Lo : f5dae4f0
[ 5.848075] epc : 80000800 name_to_dev_t+0x350/0x440
[ 5.853286] ra : 800007b8 name_to_dev_t+0x308/0x440
[ 5.858490] Status: 11008403 KERNEL EXL IE
[ 5.862741] Cause : 00800028 (ExcCode 0a)
[ 5.866804] PrId : 00019655 (MIPS 24KEc)
[ 5.870871] Process swapper (pid: 1, threadinfo=87c26000, task=87c28000, tls=00000000)
[ 5.878890] Stack : 8055d460 80560000 80530000 8055d460 80505150 805411c4 62636d6d 70306b6c
[ 5.887380] 00000031 80560000 804d2d2c 80560000 00000008 8055d460 80505150 80066b88
[ 5.895866] 87c27e61 87d748c0 80560000 80560000 8055d460 80542634 80670000 00000005
[ 5.904352] 87dd3680 87dd3080 805411c4 80670000 00000008 80670000 00000008 80541f24
[ 5.912839] 00000000 80524ae0 80505150 00000000 00000007 00000007 00000000 805411c4
[ 5.921324] …
[ 5.923804] Call Trace:
[ 5.926286] [<80000800>] name_to_dev_t+0x350/0x440
[ 5.931160] [<80542634>] prepare_namespace+0x12c/0x1fc
[ 5.936375] [<80541f24>] kernel_init_freeable+0x1c0/0x21c
[ 5.941860] [<803bcc00>] kernel_init+0x14/0x110
[ 5.946462] [<800050cc>] ret_from_kernel_thread+0x14/0x1c
[ 5.951938] Code: 14400031 00000000 00002825 <736d656d> 3d657a69 6e690030 64727469 6174735f 303d7472
[ 5.961844]
[ 5.963417] usb 1-1: new high-speed USB device number 3 using ehci-platform
[ 5.970499] —[ end trace c1ba1fa4d31de600 ]—
[ 5.975262] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[ 5.975262]
[ 5.984532] Rebooting in 10 seconds..



Последнее исправление: AbiDen (всего исправлений: 1)

80000800: 0c0808ac jal 802022b0 <blk_lookup_devt>

Если верить дампу, то вот тут ошибка, но непонятно почему.

AbiDen
() автор топика

Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

Достаточно распространенная ошибка, несинхронизация обычно происходит, когда ядро не может прочитать свое корневое устройство.
Используешь initramfs с этим ядром? В противном случае ты должен встроить драйвер носителя и драйвер файловой системы непосредственно в ядро, а не загружать его как модули. Я думаю ответ надо искать в boot log

e000xf000h
()
Последнее исправление: e000xf000h (всего исправлений: 4)
Ответ на: комментарий от e000xf000h

Спасибо за ответ. Я использую драйвер как часть ядра, и делаю задержку rootwait, при инициализации контроллера сд, показывается раздел, но до загрузки не доходит через неверную инструкцию непонятно почему.

AbiDen
() автор топика

[ 5.784131] Reserved instruction in kernel code[#1]:

Ядро, скорее всего, собрано не совсем для того процессора, на котором оно выполняется.

Upd 1: или оно валится на каком-то BUG() (не знаю, как в MIPS’ах организован аналог ud2).

post-factum ★★★★★
()
Последнее исправление: post-factum (всего исправлений: 1)
Ответ на: комментарий от AbiDen

Есть подозрение что эта инструкция может быть намеренно использована в чем-то вроде BUG_ON, т.е. как trap

[ 3.934127] usb 1-1: device descriptor read/64, error -71

Может сюда копнуть?

anonymous
()
Ответ на: комментарий от post-factum

Я что-то не очень смог сходу декодировать 0x736d656d, на break или tne это не похоже, по крайней мере согласно [1] и [2].

[1] https://www.eg.bucknell.edu/~csci320/mips_web/

[2] https://elixir.bootlin.com/linux/latest/source/arch/mips/include/asm/bug.h#L22

post-factum ★★★★★
()
Последнее исправление: post-factum (всего исправлений: 1)
Ответ на: комментарий от anonymous

надо rootwait

если с rootwait у тебя зависнет в ожидании корневой - значит фс для корневой (ext2/3/4) собрана модулем или вообще не собрана, драйвер корневой фс должен быть слинкован статически

anonymous
()
Ответ на: комментарий от e000xf000h

В том и проблема, что до файловой системы оно не доходит, валится при получении дескриптора раздела в функции name_to_dev_t, а именно: 80000800: 0c0808ac jal 802022b0 <blk_lookup_devt>. Спасибо.

AbiDen
() автор топика
Ответ на: комментарий от anonymous

Тут, проблема явно не в этом, пробовал и так и так, валится на инструкции 80000800: 0c0808ac jal 802022b0 <blk_lookup_devt>. Спасибо.

AbiDen
() автор топика
Ответ на: комментарий от post-factum

Спасибо за ответ. Если верить дампу ядра, то проблема в этой инструкции: 80000800: 0c0808ac jal 802022b0 <blk_lookup_devt>.

AbiDen
() автор топика
Ответ на: комментарий от AbiDen

Заюзай faddr2line и посмотри, какая это строчка в исходниках. Мне кажется, там может быть просто BUG()/BUG_ON().

post-factum ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.