nemu 支持多核吗?
qqli579 opened this issue · 1 comments
qqli579 commented
启动2个core的时候stall在了下面:
[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[ 0.000000] Linux version 4.18.0-14486-g655055af981b-dirty (hukun@model-1) (gcc version 13.2.0 (gc891d8dc23e)) #190 SMP Tue Apr 16 14:39:20 CST 2024
[ 0.000000] bootconsole [early0] enabled
[ 0.000000] Initial ramdisk at: 0x(____ptrval____) (3623511 bytes)
[ 0.000000] Zone ranges:
[ 0.000000] DMA32 empty
[ 0.000000] Normal [mem 0x0000000080200000-0x000000047fffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080200000-0x000000047fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000047fffffff]
[ 0.000000] software IO TLB [mem 0x46dffd000-0x471ffd000] (64MB) mapped at [(____ptrval____)-(____ptrval____)]
[ 0.000000] elf_hwcap is 0x112d
[ 0.000000] percpu: Embedded 17 pages/cpu @(____ptrval____) s30040 r8192 d31400 u69632
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 4136455
[ 0.000000] Kernel command line: root=/dev/mmcblk0 rootfstype=ext4 ro rootwait earlycon
[ 0.000000] Dentry cache hash table entries: 2097152 (order: 12, 16777216 bytes)
[ 0.000000] Inode-cache hash table entries: 1048576 (order: 11, 8388608 bytes)
[ 0.000000] Sorting __ex_table...
[ 0.000000] Memory: 16444740K/16775168K available (3551K kernel code, 206K rwdata, 2105K rodata, 3709K init, 778K bss, 330428K reserved, 0K cma-reserved)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
[ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
[ 0.000000] Console: colour dummy device 80x25
[ 0.000000] console [hvc0] enabled
[ 0.000000] console [hvc0] enabled
[ 0.000000] bootconsole [early0] disabled
[ 0.000000] bootconsole [early0] disabled
[ 0.000000] Calibrating delay loop (skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=10000)
[ 0.000000] pid_max: default: 32768 minimum: 301
[ 0.000000] Mount-cache hash table entries: 32768 (order: 6, 262144 bytes)
[ 0.000000] Mountpoint-cache hash table entries: 32768 (order: 6, 262144 bytes)
[ 0.010000] Hierarchical SRCU implementation.
[ 0.030000] smp: Bringing up secondary CPUs ...
platform.dtsi如下:
/dts-v1/;
/ {
L18: soc {
L2: clint@2000000 {
compatible = "riscv,clint0";
interrupts-extended = <&L4 3 &L4 7 &L5 3 &L5 7>;
reg = <0x0 0x38000000 0x0 0x10000>;
reg-names = "control";
clock-frequency-mhz = <500>;
};
L14: serial@60000000 {
compatible = "xilinx,uartlite";
//interrupt-parent = <&L1>;
interrupts = <3>;
reg = <0x0 0x40600000 0x0 0x1000>;
reg-names = "control";
};
sdhci: mmc {
compatible = "nemu-sdhost";
reg = <0x0 0x40002000 0x0 0x1000>;
};
};
chosen {
bootargs = "root=/dev/mmcblk0 rootfstype=ext4 ro rootwait earlycon";
};
L11: memory@100000000 {
device_type = "memory";
reg = <0x0 0x80000000 0x4 0x0000000>;
};
};
system.dts如下:
/dts-v1/;
/include/ "platform.dtsi"
/ {
#address-cells = <2>;
#size-cells = <2>;
compatible = "freechips,rocketchip-unknown-dev";
model = "freechips,rocketchip-unknown";
L19: cpus {
#address-cells = <1>;
#size-cells = <0>;
timebase-frequency = <1000000>;
L6: cpu@0 {
clock-frequency = <0>;
compatible = "UCAS,COOSCA1.0", "riscv";
d-cache-block-size = <64>;
d-cache-sets = <64>;
d-cache-size = <16384>;
d-tlb-sets = <1>;
d-tlb-size = <32>;
device_type = "cpu";
i-cache-block-size = <64>;
i-cache-sets = <64>;
i-cache-size = <16384>;
i-tlb-sets = <1>;
i-tlb-size = <32>;
mmu-type = "riscv,sv39";
next-level-cache = <&L11>;
reg = <0x0>;
riscv,isa = "rv64imafdc";
status = "okay";
timebase-frequency = <1000000>;
tlb-split;
L4: interrupt-controller {
#interrupt-cells = <1>;
compatible = "riscv,cpu-intc";
interrupt-controller;
};
};
L7: cpu@1 {
clock-frequency = <0>;
compatible = "UCAS,COOSCA1.0", "riscv";
d-cache-block-size = <64>;
d-cache-sets = <64>;
d-cache-size = <16384>;
d-tlb-sets = <1>;
d-tlb-size = <32>;
device_type = "cpu";
i-cache-block-size = <64>;
i-cache-sets = <64>;
i-cache-size = <16384>;
i-tlb-sets = <1>;
i-tlb-size = <32>;
mmu-type = "riscv,sv39";
next-level-cache = <&L11>;
reg = <0x1>;
riscv,isa = "rv64imafdc";
status = "okay";
timebase-frequency = <1000000>;
tlb-split;
L5: interrupt-controller {
#interrupt-cells = <1>;
compatible = "riscv,cpu-intc";
interrupt-controller;
};
};
};
L18: soc {
#address-cells = <2>;
#size-cells = <2>;
compatible = "freechips,rocketchip-unknown-soc", "simple-bus";
ranges;
L3: debug-controller@0 {
compatible = "sifive,debug-013", "riscv,debug-013";
interrupts-extended = <&L4 65535 &L5 65535>;
reg = <0x0 0x0 0x0 0x1000>;
reg-names = "control";
};
};
};
nemu 是否支持多核?
sashimi-yzh commented
这里是教学版本的NEMU, 我们不提供多核的支持, 你可以参考或询问香山团队维护的NEMU