This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/DRA750:crossbar_MPU 和 GIC 之间的差异

Guru**** 2601915 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/648689/linux-dra750-difference-between-crossbar_mpu-and-gic

器件型号:DRA750

工具/软件:Linux

大家好、

我正在努力在基于处理器 SDK、Xen 4.10的 DRA75X 电路板上启动虚拟机监控程序。 Xen 已启动、但我的内核正在崩溃(dom0)。  

我得到、

of _IRQ_init:保留子级、但不保留父级
[0.000000] sched_clock:32位、100Hz 时、分辨率10000000ns、每21474836475000000ns 换行一次
[0.000000]控制台:彩色虚拟设备80x30
[0.000000]控制台[hvc0]已启用
[0.000000]控制台[hvc0]已启用
[0.000000]引导控制台[earlycon0]已禁用
[0.000000]引导控制台[earlycon0]已禁用
[0.000000]函数:OMAP2_gp_clockevent_init、位于374
[0.000000]函数:OMAP-dm_timer_init_one、位于267属性:ti、timer-alwon
[0.000000]函数:omap2_gp_clockevent_init 为378
[0.000000]------ [在此处剪切]-----
[0.000000] c0919d1c 中的内核错误[详细调试信息不可用]
[0.000000]内部错误:Oops -错误:0 [#1]抢占 SMP ARM
[0.000000]链接的模块:
[0.000000] CPU:0 PID:0 Comm:swapper/0未被污染4.4.4.84-g7e6588b179 #34
[0.000000]硬件名称:通用 DRA74X (平展器件树)
[0.000000]任务:c0969c38 ti:c0964000 task.ti:c0964000
[0.000000] PC 处于 OMAP2_gp_clockevent_init.constprop.3+0x84/0x124
[0.000000] LR 位于 console_unlock+0x260/0x554
[0.000000] PC:[ ] LR:[ ] PSR:a0000053
[0.000000] sp:c0965f50 ip:c0965e48 fp:c0965f74
[0.000000] R10:c0951e2c R9:c09b7000 R8:ffffff
[0.000000] r7:00000000 r6:ffffffffffed r5:c096bb80 r4:c09b7d94
[0.000000] r3:c0964000 r2:00000001 r1:60000053 r0:00000029
[0.000000]标志:FIQ 关闭模式 SVC_32 ISA ARM 段内核上的 NzCv IRQ
[0.000000]控制:30c5387d 表:80003000 DAC:fffffffd
[0.000000]处理 swapper/0 (pid:0、stack limit = 0xc0964210)
[0.000000]堆栈:(0xc0965f50至0xc0966000)
[0.000000] 5f40:00000001 c0965f60 c0965f74 c09b7040
[0.000000] 5f60:c09b7000 effff580 c0965f84 c0965f78 c0919e2c c0919ca4 c0965f9c c0965f88
[0.000000] 5f80:c0919e70 c0919e20 c09b7040 c09b7000 c0965ff4 c0965fa0 c090ed3c c0919e6c
[0.000000] 5fa0:FFFFFFFF ffFFFF 00000000 c090e6e8 ffFFFF 00000000 c0966400
[0.000000] 5fc0:00000000 c0951e2c 00000000 c09b7ad4 c0966488 c0951e28 c096af10 80007000
[0.000000] 5fe0:412fc0f2 00000000 c0965ff8 80008090 c090e994 00000000 00000000
[0.000000]回溯:
[0.000000][ ](OMAP2_gp_clockevent_init.constprop.3)、来自[ ](OMAP4_synct32k_timer_late_init+0x18/0x4c)
[0.000000] R6:eff580 R5:c09b7000 R4:c09b7040
[0.000000][ ](OMAP4_synct32k_timer_late_init)、来自[ ](omap5_realtime_timer_elim_init+0x10/0x194)
[0.000000][ ](omap5_realtime_timer_elim_init)、来自[ ](start_kernel+0x3b4/0x40c)
[0.000000] R5:c09b7000 R4:c09b7040
[0.000000][ ](start_kernel)从[<80008090>](0x80008090)
[0.000000] R10:00000000 R9:412fc0f2 R8:80007000 r7:c096af10 R6:c0951e28 R5:c0966488
[0.000000] R4:c09b7ad4
[0.000000]代码:e59f10a4 ebed6e5 e3560000 0a000000 (e7f001f2)
[0.000000]--[结束跟踪 cb88537fdc8fa200 ]-->
[0.000000]内核紧急情况-未同步:尝试终止空闲任务!
[0.000000]--[结束内核紧急状态-未同步:尝试终止空闲任务!

请注意、如果没有 Xen、设备引导正常、没有崩溃。

根据上述日志、我了解在加载父驱动程序之前正在进行 GPTIMER IRQ 注册。

在 dra7-dtsi 文件中、我将 GIC 视为计时器的父级。

GIC:中断控制器@48211000{
兼容="arm、cortex-a15-GIC";
中断控制器;
#interrupt-cells =<3>;
REG =<0x0 0x48211000 0x0 0x1000>、
0x0 0x48212000 0x0 0x1000>、
0x0 0x48214000 0x0 0x2000>、
0x0 0x48216000 0x0 0x2000>;
中断= ;
interrupt-parent =<&GIC>;
};

仅 对于计时器、父级是 GIC、而对于其余的计时器、父级中断是4.4内核的 dtsi 文件中的 cross_mpu。

当我将其与 GLSDK dtsi 文件中的3.14内核进行比较时、我会看到父级内核为 GIC。

3.14 - dra7.dtsi

兼容="ti、dra7xx";
interrupt-parent =<&GIC>;

有人能告诉我为什么架构发生了变化来处理 IRQ 吗?

如何解决此问题?

请提供您宝贵的意见。

谢谢、

Prabhuraj