LS1021a in AMP Configuration with Non-SMP Linux /RTOS

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

LS1021a in AMP Configuration with Non-SMP Linux /RTOS

1,007 Views
muhammadshafiqu
Contributor I


Hi,

I am trying to run LS1021a in AMP configuration with Linux running on one core (SMP disabled) and baremetal/RTOS running on other core. I am having difficulty in setting up SGIs (IPIs) between the two cores. Both of the cores can generate SGI to themselves but they are not able to raise SGI to other core. I have looked at the GIC distributor and CPU interface initialization, distributor is enabled and both of the CPU interfaces are being enabled. Is there anything else that I should look at? what can be the barriers to pass SGIs between the cores?

Best Regards,

Shafique

Labels (1)
Tags (1)
0 Kudos
2 Replies

752 Views
muhammadshafiqu
Contributor I

After going through the initialization I have figured out that by default Linux is booting in nonsec world and NSATT bit needs to be set to send IPI to it from the other side.

0 Kudos

752 Views
muhammadshafiqu
Contributor I

Hi,

Here is more information on Distributor and CPU Interface 0 initialization sequence that is running Linux. After the following initialization has run I am expecting Linux to be interrupted whenever CPU 1 writes to GICD_SGIR register. e.g. CPU 1 write of 0x0001000f to GICD_SGIR register should generate SGI 15 on CPU 0 but I do not see that happening. Do I need to do something else?

[When I write 0x0001000f from CPU 0 to GICD_SGIR - I do get SGI 15 - it is the cross call that is not working when I try to do the same write from CPU 1]

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CTRL) address af000000, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c08, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c0c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c10, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c14, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c18, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c1c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c20, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c24, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c28, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c2c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c30, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c34, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c38, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIGn) address af000c3c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIG + 0) address af000c00, value aaaaaaaa

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CONFIG + 4) address af000c04, value aaaaaaaa

[  +0.000000] Shafique: reading CPUMASK 00000001

[  +0.000000] Shafique: modified CPUMASK 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000820, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000824, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000828, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af00082c, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000830, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000834, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000838, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af00083c, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000840, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000844, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000848, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af00084c, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000850, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000854, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000858, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af00085c, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000860, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000864, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000868, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af00086c, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000870, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000874, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000878, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af00087c, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000880, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000884, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000888, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af00088c, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000890, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000894, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af000898, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af00089c, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008a0, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008a4, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008a8, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008ac, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008b0, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008b4, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008b8, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008bc, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008c0, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008c4, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008c8, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008cc, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008d0, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008d4, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008d8, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008dc, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008e0, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008e4, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008e8, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008ec, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008f0, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008f4, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008f8, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_TARGETn) address af0008fc, value 03030303

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000420, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000424, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000428, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af00042c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000430, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000434, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000438, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af00043c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000440, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000444, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000448, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af00044c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000450, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000454, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000458, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af00045c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000460, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000464, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000468, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af00046c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000470, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000474, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000478, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af00047c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000480, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000484, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000488, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af00048c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000490, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000494, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af000498, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af00049c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004a0, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004a4, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004a8, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004ac, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004b0, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004b4, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004b8, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004bc, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004c0, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004c4, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004c8, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004cc, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004d0, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004d4, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004d8, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004dc, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004e0, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004e4, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004e8, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004ec, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004f0, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004f4, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004f8, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PRIn) address af0004fc, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_ENABLE_CLEARn) address af000184, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_ENABLE_CLEARn) address af000188, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_ENABLE_CLEARn) address af00018c, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_ENABLE_CLEARn) address af000190, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_ENABLE_CLEARn) address af000194, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_ENABLE_CLEARn) address af000198, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_ENABLE_CLEARn) address af00019c, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_IGROUPn) address af000080, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_IGROUPn) address af000084, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_IGROUPn) address af000088, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_IGROUPn) address af00008c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_IGROUPn) address af000090, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_IGROUPn) address af000094, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_IGROUPn) address af000098, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_IGROUPn) address af00009c, value 00000000

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PENDING_CLEARn) address af000280, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PENDING_CLEARn) address af000284, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PENDING_CLEARn) address af000288, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PENDING_CLEARn) address af00028c, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PENDING_CLEARn) address af000290, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PENDING_CLEARn) address af000294, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PENDING_CLEARn) address af000298, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_PENDING_CLEARn) address af00029c, value ffffffff

[  +0.000000] Shafique: gic_dist_init writel_relaxed at (GIC_DIST_CTRL) address af000000, value 00000001

[  +0.000000] Shafique: gic_cpu_init writel_relaxed at (GIC_DIST_ENABLE_CLEAR) address af000180, value ffff0000

[  +0.000000] Shafique: gic_cpu_init writel_relaxed at (GIC_DIST_ENABLE_SET) address af000100, value 0000ffff

[  +0.000000] Shafique: gic_cpu_init writel_relaxed at (GIC_DIST_PRIn) address af000400, value 00000000

[  +0.000000] Shafique: gic_cpu_init writel_relaxed at (GIC_DIST_PRIn) address af000404, value 00000000

[  +0.000000] Shafique: gic_cpu_init writel_relaxed at (GIC_DIST_PRIn) address af000408, value 00000000

[  +0.000000] Shafique: gic_cpu_init writel_relaxed at (GIC_DIST_PRIn) address af00040c, value 00000000

[  +0.000000] Shafique: gic_cpu_init writel_relaxed at (GIC_DIST_PRIn) address af000410, value 00000000

[  +0.000000] Shafique: gic_cpu_init writel_relaxed at (GIC_DIST_PRIn) address af000414, value 00000000

[  +0.000000] Shafique: gic_cpu_init writel_relaxed at (GIC_DIST_PRIn) address af000418, value 00000000

[  +0.000000] Shafique: gic_cpu_init writel_relaxed at (GIC_DIST_PRIn) address af00041c, value 00000000

[  +0.000000] Shafique: gic_cpu_init writel_relaxed at (GIC_CPU_PRIMASK) address af002004, value 000000ff

[  +0.000000] Shafique: gic_cpu_init writel_relaxed at (GIC_CPU_CTRL) address af002000, value 00000001

0 Kudos