All of lore.kernel.org
 help / color / mirror / Atom feed
* every millicsecond interrupt in xenomai domain on a am355x board can cause something wrong?
@ 2018-11-29  8:03 梁权
  2018-11-29 11:14 ` Jan Kiszka
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: 梁权 @ 2018-11-29  8:03 UTC (permalink / raw)
  To: xenomai

hi,
i'm work on a customed board with TI am335X; i have installed xenomai 3 on it correcttly , and can run the latency test.
On this board, an interrupt which cannot be masked and delayed will be generated every millicsecond by a FPGA ; 
to  handler this interrupt immediately, i register  the interrupt handler in xenomai domain.Also there is a QT applictation running on the board;  and here is the problem i encounter:
if i open the interrupt and run the QT application simultaneously, the QT application will get wrong like this after a few minutes(but the linux is still running fine):
[ 1601.496828] Unhandled fault: page domain fault (0x01b) at 0xb6fa135c
[ 1601.503233] pgd = c5ea4000
[ 1601.505947] [b6fa135c] *pgd=8571e831, *pte=80be818f, *ppte=80be8a3e
[ 1601.512291] Internal error: : 1b [#2] PREEMPT ARM
[ 1601.517019] Modules linked in: motionDrv(O) FPGA(O)
[ 1601.521930] CPU: 0 PID: 882 Comm: HMI_V2 Tainted: G      D    O    4.14.67-gd315a9bb00 #104
[ 1601.530317] Hardware name: Generic AM33XX (Flattened Device Tree)
[ 1601.536418] I-pipe domain: Linux
[ 1601.539651] task: c5537600 task.stack: c52f4000
[ 1601.544226] PC is at __und_svc+0x70/0x84
[ 1601.548160] LR is at __und_svc+0x68/0x84
[ 1601.552095] pc : [<c010cef0>]    lr : [<c010cee8>]    psr: 60000193
[ 1601.558409] sp : c52f5fa8  ip : 20000193  fp : 32450e8c
[ 1601.563624] r10: b6fb8dc8  r9 : c52f4000  r8 : 0000001a
[ 1601.568870] r7 : c52f5fdc  r6 : ffffffff  r5 : 60000113  r4 : b6fa1360
[ 1601.575428] r3 : c0c901c0  r2 : 20000193  r1 : c52f5fa8  r0 : 00000000
[ 1601.581986] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment none
[ 1601.589245] Control: 10c5387d  Table: 85ea4019  DAC: 00000051
[ 1601.595010] Process HMI_V2 (pid: 882, stack limit = 0xc52f4218)
[ 1601.600957] Stack: (0xc52f5fa8 to 0xc52f6000)
[ 1601.605319] 5fa0:                   00000000 0000021b 000003eb b616f100 00000004 00000000
[ 1601.613554] 5fc0: b5400708 b6fb3550 0000001a 00000000 b6fb8dc8 32450e8c bedfd7b8 c52f5ff8
[ 1601.621759] 5fe0: b6fa135a b6fa1360 60000113 ffffffff 00000055 bf000000 00000000 00000000
[ 1601.629964] Backtrace: invalid frame pointer 0x32450e8c
[ 1601.635210] Code: e1a0100d eb0265e0 e3500000 1a000006 (e5140004) 
[ 1601.641340] ---[ end trace 0eef451faa9b7a24 ]---
or like this:
 Unable to handle kernel paging request at virtual address e5bcfe84
[ 1789.775575] pgd = c5ef0000
[ 1789.778320] [e5bcfe84] *pgd=00000000
[ 1789.781919] Internal error: Oops: 80000005 [#4] PREEMPT ARM
[ 1789.787500] Modules linked in: motionDrv(O) FPGA(O)
[ 1789.792442] CPU: 0 PID: 1135 Comm: HMI_V2 Tainted: G      D    O    4.14.67-gd315a9bb00 #104
[ 1789.800890] Hardware name: Generic AM33XX (Flattened Device Tree)
[ 1789.807021] I-pipe domain: Linux
[ 1789.810254] task: c5423600 task.stack: c5e14000
[ 1789.814799] PC is at 0xe5bcfe84
[ 1789.817971] LR is at 0xb57a00fb
[ 1789.821112] pc : [<e5bcfe84>]    lr : [<b57a00fb>]    psr: 000f0113
[ 1789.827395] sp : c5e15ff8  ip : b59b1cdc  fp : 0016e634
[ 1789.832642] r10: 0016e636  r9 : 0000000a  r8 : bec38350
[ 1789.837888] r7 : 0031c7e8  r6 : bec38218  r5 : bec38204  r4 : 008c2a38
[ 1789.844445] r3 : 00000000  r2 : 00000000  r1 : 0000003a  r0 : 00000001
[ 1789.851003] Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[ 1789.858171] Control: 10c5387d  Table: 85ef0019  DAC: 00000055
[ 1789.863935] Process HMI_V2 (pid: 1135, stack limit = 0xc5e14218)
[ 1789.869975] Stack: (0xc5e15ff8 to 0xc5e16000)
[ 1789.874336] 5fe0:                                                       00000000 00000000
[ 1789.882541] Backtrace: invalid frame pointer 0x0016e634
[ 1789.887787] Code: bad PC value
[ 1789.890868] ---[ end trace 0eef451faa9b7a26 ]---
i don't think it is something wrong with the QT application; becase if i shut down the every millicsecond interrupt,
 it can run fine for 24 hours or more. And i use the 'top' command to check the QT application , found that
 it only occupy %2~%3 cpu usage, and its physical memory consumption is about 40M, the system still get 35M memory free.
 here is  the isr of the interrupt, i just do very simple things:
 static int int1msHandler(rtdm_irq_t *irq_handle)
 {
*(unsigned int *)(intc_reg_base + OFFSET_INTC_CONTROL) = 0x1;//enable new IRQ generation
  times1ms++; //just for test
  //udd_notify_event(&device);
  return RTDM_IRQ_HANDLED;
 }
so  it is possible that the xenomai domain interrupt is too frequently that the linux domain system call cannot be handle somtimes ? and how to slove this problem?
and here is my board info: linux 4.14 + ipipe-core-4.14.71-arm-4.patch + xenomai3.0.7 ; the am3352 is runing at 800M HZ frequency 
 Any help or clue are OK.
Thanks,
liang





--

----------------------------------------------
          梁权
THANKS & BR!


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2018-12-05  4:17 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-29  8:03 every millicsecond interrupt in xenomai domain on a am355x board can cause something wrong? 梁权
2018-11-29 11:14 ` Jan Kiszka
2018-11-29 15:15   ` 梁权
2018-11-29 15:25     ` Jan Kiszka
2018-11-29 15:58       ` 梁权
2018-11-29 14:34 ` Philippe Gerum
2018-11-29 15:27   ` 梁权
2018-11-29 15:39     ` Greg Gallagher
2018-11-29 15:50       ` 梁权
2018-11-29 16:40 ` Philippe Gerum
2018-11-30 16:44   ` 梁权
2018-12-02  7:07     ` 梁权
2018-12-02 10:00       ` Philippe Gerum
2018-12-05  4:17         ` 梁权

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.