【发布时间】:2015-10-15 14:09:03
【问题描述】:
我按照How to make a multicore system using the RISC-V Rocket-chip processor 的说明为 FPGA(板:Xilinx ZC706)生成多核 Rocket,但 Linux 无法识别额外的内核。
我确信 Linux 与 SMP 配合得很好,因为当我用火箭芯片仿真器或 Spike ISA 仿真器替换 FPGA 时,它可以识别多核。
更新:应用多核修复提交后,riscv Linux 停止:
root@zynq:~# ./fesvr-zynq +disk=/nfs/root.bin bbl /nfs/linux-3.14.33/vmlinux
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
vvvvvvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrr vvvvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrr vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrrrr vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrrrr vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrrrr vvvvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrrrrr vvvvvvvvvvvvvvvvvvvvvv
rrrrrrrrrrrrr vvvvvvvvvvvvvvvvvvvvvv
rr vvvvvvvvvvvvvvvvvvvvvv
rr vvvvvvvvvvvvvvvvvvvvvvvv rr
rrrr vvvvvvvvvvvvvvvvvvvvvvvvvv rrrr
rrrrrr vvvvvvvvvvvvvvvvvvvvvv rrrrrr
rrrrrrrr vvvvvvvvvvvvvvvvvv rrrrrrrr
rrrrrrrrrr vvvvvvvvvvvvvv rrrrrrrrrr
rrrrrrrrrrrr vvvvvvvvvv rrrrrrrrrrrr
rrrrrrrrrrrrrr vvvvvv rrrrrrrrrrrrrr
rrrrrrrrrrrrrrrr vv rrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrr rrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrr rrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrr rrrrrrrrrrrrrrrrrrrrrr
INSTRUCTION SETS WANT TO BE FREE
****************Sometimes halt here************************
[ 0.000000] Linux version 3.14.33-g043bb5d (guanglin@guanglin-a11-linux) (gcc version 5.2.0 (GCC) ) #5 SMP Tue Oct 13 14:56:14 EDT 2015
[ 0.000000] Detected 0xfe00000 bytes of physical memory
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x00200000-0x0fffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x00200000-0x0fffffff]
[ 0.000000] PERCPU: Embedded 8 pages/cpu @ffffffff8062d000 s9432 r0 d23336 u32768
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 64135
[ 0.000000] Kernel command line: root=/dev/htifblk0
[ 0.000000] PID hash table entries: 1024 (order: 1, 8192 bytes)
[ 0.000000] Dentry cache hash table entries: 32768 (order: 6, 262144 bytes)
[ 0.000000] Inode-cache hash table entries: 16384 (order: 5, 131072 bytes)
[ 0.000000] Sorting __ex_table...
[ 0.000000] Memory: 253320K/260096K available (1898K kernel code, 119K rwdata, 368K rodata, 85K init, 221K bss, 6776K reserved)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=2.
[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[ 0.000000] NR_IRQS:2
[ 0.150000] Calibrating delay using timer specific routine.. 20.02 BogoMIPS (lpj=100145)
[ 0.150000] pid_max: default: 32768 minimum: 301
[ 0.150000] Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
[ 0.150000] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes)
[ 0.150000] Brought up 2 CPUs
[ 0.150000] devtmpfs: initialized
[ 0.150000] NET: Registered protocol family 16
[ 0.150000] bio: create slab <bio-0> at 0
[ 0.150000] Switched to clocksource riscv_clocksource
[ 0.150000] NET: Registered protocol family 2
[ 0.150000] TCP established hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.150000] TCP bind hash table entries: 2048 (order: 3, 32768 bytes)
[ 0.150000] TCP: Hash tables configured (established 2048 bind 2048)
[ 0.150000] TCP: reno registered
[ 0.150000] UDP hash table entries: 256 (order: 1, 8192 bytes)
[ 0.150000] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[ 0.150000] NET: Registered protocol family 1
[ 0.150000] futex hash table entries: 512 (order: 3, 32768 bytes)
[ 0.150000] io scheduler noop registered
[ 0.150000] io scheduler cfq registered (default)
[ 0.180000] htifcon htif1: detected console
[ 0.190000] console [htifcon0] enabled
[ 0.190000] htifblk htif2: detected disk
[ 0.190000] htifblk htif2: added htifblk0
[ 0.190000] TCP: cubic registered
****************Sometimes halt here************************
[ 0.190000] VFS: Mounted root (ext2 filesystem) readonly on device 254:0.
[ 0.190000] devtmpfs: mounted
[ 0.190000] Freeing unused kernel memory: 84K (ffffffff80000000 - ffffffff80015000)
/ #
/ #
/ # cd /
/ # cd /usr
/usr # echo abc
abc
/usr # ls
****************Sometimes halt here************************
【问题讨论】:
-
请不要张贴文字图片,尤其是文字图片的链接。首先,不是每个人都可以阅读图像中的文字,其次链接可能会消失,这可能会使您的问题变得毫无价值。而是将实际文本复制并粘贴到问题正文中。
-
好主意,谢谢。 @JoachimPileborg
-
SMP linux 在运行 ls 后有时会停止是一个错误(在尖峰下也会发生)。如果能调试就好了。
-
令人惊讶的是,我没有观察到 SMP Linux on Spike 的脆弱性。现在我看到 Spike SMP Linux 有时会停顿,但比 FPGA 少。 @user2548418