Den 2022-11-22 kl. 03:53, skrev Gundlupet Raju, Sandeep:
This channel might not give best answer I would suggest post your
question in Forums either in
https://support.xilinx.com/s/topic/0TO2E000000YKXZWA4/processor-system-design-and-axi?language=en_US
or
https://support.xilinx.com/s/topic/0TO2E000000YKXXWA4/embedded-linux?language=en_US
Some I've answered to best of my knowledge.
On 11/21/2022 1:18 PM, Ulf Samuelsson via lists.yoctoproject.org wrote:
We have a 4-core ZYNQMP and there is a single interrupt controller in
the PL.
We get a kernel crash when the device tree is processed for the PL.
[Sandeep]: Are you using meta-xilinx-tools layer and DTG to generate
the PL device-tree(pl.dtsi)?
Yes were are using a custom derivative of Petalinux.
It looks to me that xil_intc_start is called once per CPU, and it
works for the first CPU (CPU 0)
and fails for the second CPU (CPU 1).
xil_intc_start(0xffff00007fa82c80);
will call
xil_intc_initial_setup(0xffff00007fa82c80);
which will call
xintc_write(0xffff00007fa82c80, IER, 0);
We have
#define IER 0x08
and xintc_write will do:
iowrite32(data, irqc->base + reg (==0x8));
resulting in a kernel NULL pointer reference
* What do we need to do to get irqc->base to a non-NULL value?
==========================
The generated device-tree has an interrupt controller axi_intc_0
We have some questions:
We have a single interrupt controller.
* Do we need 4 interrupt controllers? I.E: one per CPU?
[Sandeep]: I assume your question is related to ARM GIC(Generic
Interrupt Controller).
https://github.com/Xilinx/device-tree-xlnx/blob/xlnx_rel_v2022.2/device_tree/data/kernel_dtsi/2022.2/zynqmp/zynqmp.dtsi#L437-L447
By default we enable all, if you need to tune then refer TRM
https://docs.xilinx.com/r/en-US/ug1085-zynq-ultrascale-trm/Interrupts?tocId=gYDqWCAnmw82sQbLb4TyTg
before making any changes.
It is the intc in the PL.
* Can the device-tree be tweaked to be content with a single
interrupt controller?
[Sandeep]: You can modify interrupt nodes what is your exact use case
of tuning ACPU GIC?
It is not the GIC, it is the interrupt controller in the PL handle by the
"drivers/irqchip/irq-xilinx-intc.c" driver
* The driver has a property "cpu-id" which is not in the generated
device tree.
Should that be used?
[Sandeep]; Which driver are you talking about GIC or AXI Intc?
* Is there an example device tree for a 4-CPU connected to a PL
[ 2.407050] of-fpga-region fpga-full: FPGA Region probed
[ 2.412480] irq-xilinx: /amba_pl@0/interrupt-controller@80090000:
num_irq=1, sw_irq=0, edge=0x0
[ 2.421186] Setup on no cpu_id: 0
[ 2.434533] xil_intc_start: irqc = [0]
[ 2.448276] xil_intc_start: irqc = [ffff00007fa70c80]
[ 2.463318] xil_intc_start: irqc = [ffff00007fa70c80]
[ 2.468360] xil_intc_initial_setup: Xilinx IRQC = 0xffff00007fa70c80
[ 2.484735] xil_intc_start: irqc = [1]
[ 2.498482] xil_intc_start: irqc = [ffff00007fa82c80]
[ 2.513524] xil_intc_start: irqc = [ffff00007fa82c80]
[ 2.518565] xil_intc_initial_setup: Xilinx IRQC = 0xffff00007fa82c80
[ 2.534923] Unable to handle kernel NULL pointer dereference at
virtual address 0000000000000008
[ 2.543697] Mem abort info:
[ 2.546479] ESR = 0x96000044
[ 2.549526] EC = 0x25: DABT (current EL), IL = 32 bits
[ 2.554830] SET = 0, FnV = 0
[ 2.557876] EA = 0, S1PTW = 0
[ 2.561010] FSC = 0x04: level 0 translation fault
[ 2.565880] Data abort info:
[ 2.568752] ISV = 0, ISS = 0x00000044
[ 2.572581] CM = 0, WnR = 1
[ 2.575541] [0000000000000008] user address but active_mm is swapper
[ 2.581889] Internal error: Oops: 96000044 [#1] SMP
[ 2.586757] Modules linked in:
[ 2.589805] CPU: 1 PID: 13 Comm: cpuhp/1 Not tainted
5.15.19-xilinx-v2022.1 #1
[ 2.597018] Hardware name: ZynqMP Signe RevA (DT)
[ 2.601713] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO -DIT -SSBS
BTYPE=--)
[ 2.608665] pc : xintc_write+0x24/0xbc
[ 2.612423] lr : xil_intc_initial_setup+0x7c/0x168
[ 2.617214] sp : ffff800009463d40
[ 2.620520] x29: ffff800009463d40 x28: 0000000000000000 x27:
0000000000000000
[ 2.627657] x26: 0000000000000000 x25: ffff0000019316c0 x24:
0000000000418958
[ 2.634792] x23: 0000000000000000 x22: 0000000000418958 x21:
0000000000000000
[ 2.641928] x20: ffff800008ce10a8 x19: ffff00007fa82c80 x18:
ffffffffffffffff
[ 2.649062] x17: 000000000000001d x16: 0000000000000004 x15:
0766077807300720
[ 2.656197] x14: 073d072007430751 x13: ffff800009205b28 x12:
0000000000000249
[ 2.663332] x11: 00000000000000c3 x10: ffff800009205b28 x9 :
ffff800009205b28
[ 2.670467] x8 : 00000000fffff7ff x7 : ffff800009231b28 x6 :
ffff800009231b28
[ 2.677602] x5 : 0000000000005ff4 x4 : 0000000000000000 x3 :
0000000000000000
[ 2.684737] x2 : 0000000000000000 x1 : 0000000000000008 x0 :
0000000000000008
[ 2.691874] Call trace:
[ 2.694312] xintc_write+0x24/0xbc
[ 2.697704] xil_intc_start+0xc4/0x10c
[ 2.701445] cpuhp_invoke_callback+0x104/0x20c
[ 2.705890] cpuhp_thread_fun+0x8c/0x194
[ 2.709804] smpboot_thread_fn+0x144/0x190
[ 2.713893] kthread+0x120/0x130
[ 2.717121] ret_from_fork+0x10/0x20
[ 2.720694] Code: 5400038c f9400000 8b010000 d50332bf (b9000002)
[ 2.726779] ---[ end trace 5701a8b913cda592 ]---
--
Best Regards
Ulf Samuelsson
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#5096):
https://lists.yoctoproject.org/g/meta-xilinx/message/5096
Mute This Topic: https://lists.yoctoproject.org/mt/95181231/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-xilinx/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-