CPU Isolation with PREEMPT_RT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ingo,

When the kernel built with CONFIG_PREEMPT_RT_FULL and boot up with some
specific isolcpus, e.g. 'isolcpus=1,3', the system cannot enter the
user space and be blocked with the message,  "random: nonblocking pool
is initialized". Not all combinations of CPU isolation can cause this
issue. In my test on i.MX6Q, this might happen when isolcpus is set as
'1, 3', or '2, 3'.

I have tested CPU isolation on various kernels, 4.1.15-rt17,
4.4.12-rt19, 4.1.15,  and 4.4.0. This issue does not happen on
4.1.15 and 4.4.0. The following is the detail about the test
environment and kernel message for system blocking.

Test environment:
=============
Hardware: i.MX6Q
Kernel version: 4.1.15-rt17, 4.1.15, 4.4.12-rt19, 4.4.0
Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p2
rootwait rw nohz_full=3 isolcpus=1,3 nohz=on

Kernel message (fail to enter the user space):
=================================
Starting kernel ...

Booting Linux on physical CPU 0x0
Linux version 4.1.15-rt17-00056-g363236e (georgekang@georgekang-PC)
(gcc version 4.9.2 (Ubuntu/Linaro 4.9.2-10ubuntu10) ) #42 SMP PREEMPT
RT Tue Jun 21 18:57:00 CST 2016
CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
Machine model: Freescale i.MX6 Quad SABRE Smart Device Board
Memory policy: Data cache writealloc
PERCPU: Embedded 33 pages/cpu @bf751000 s103296 r8192 d23680 u135168
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 260096
Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk0p2
rootwait rw nohz_full=3 isolcpus=1,3 nohz=on
PID hash table entries: 4096 (order: 2, 16384 bytes)
Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 1032976K/1048576K available (3366K kernel code, 270K rwdata,
1028K rodata, 340K init, 358K bss, 15600K reserved, 0K cma-reserved)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0xc0800000 - 0xff000000   (1000 MB)
    lowmem  : 0x80000000 - 0xc0000000   (1024 MB)
    modules : 0x7f000000 - 0x80000000   (  16 MB)
      .text : 0x80008000 - 0x80452c6c   (4396 kB)
      .init : 0x80453000 - 0x804a8000   ( 340 kB)
      .data : 0x804a8000 - 0x804ebbc0   ( 271 kB)
       .bss : 0x804ebbc0 - 0x805455d4   ( 359 kB)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
Preemptible hierarchical RCU implementation.
RCU kthread priority: 1.
NR_IRQS:16 nr_irqs:16 16
L2C-310 erratum 769419 enabled
L2C-310 enabling early BRESP for Cortex-A9
L2C-310 full line of zeros enabled for Cortex-A9
L2C-310 ID prefetch enabled, offset 1 lines
L2C-310 dynamic clock gating enabled, standby mode enabled
L2C-310 cache controller enabled, 16 ways, 1024 kB
L2C-310: CACHE_ID 0x410000c7, AUX_CTRL 0x76470001
NO_HZ: Full dynticks CPUs: 3.
Offload RCU callbacks from all CPUs
Offload RCU callbacks from CPUs: 0-3.
Switching to timer-based delay loop, resolution 333ns
sched_clock: 32 bits at 3000kHz, resolution 333ns, wraps every 715827882841ns
clocksource mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff,
max_idle_ns: 637086815595 ns
Console: colour dummy device 80x30
Calibrating delay loop (skipped), value calculated using timer
frequency.. 6.00 BogoMIPS (lpj=12000)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 2048 (order: 1, 8192 bytes)
Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes)
CPU: Testing write buffer coherency: ok
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x10008200 - 0x10008234
CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
Brought up 4 CPUs
SMP: Total of 4 processors activated (24.00 BogoMIPS).
CPU: All CPU(s) started in SVC mode.
devtmpfs: initialized
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
clocksource jiffies: mask: 0xffffffff max_cycles: 0xffffffff,
max_idle_ns: 7645041785100000 ns
pinctrl core: initialized pinctrl subsystem
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
CPU identified as i.MX6Q, silicon rev 1.2
hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
hw-breakpoint: maximum watchpoint size is 4 bytes.
imx6q-pinctrl 20e0000.iomuxc: initialized IMX pinctrl driver
mxs-dma 110000.dma-apbh: initialized
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
i2c i2c-0: IMX I2C adapter registered
i2c i2c-0: can't use DMA
i2c i2c-1: IMX I2C adapter registered
i2c i2c-1: can't use DMA
i2c i2c-2: IMX I2C adapter registered
i2c i2c-2: can't use DMA
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti
<giometti@xxxxxxxx>
PTP clock support registered
Switched to clocksource mxc_timer1
NET: Registered protocol family 2
TCP established hash table entries: 8192 (order: 3, 32768 bytes)
TCP bind hash table entries: 8192 (order: 5, 229376 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
UDP hash table entries: 512 (order: 3, 32768 bytes)
UDP-Lite hash table entries: 512 (order: 3, 32768 bytes)
NET: Registered protocol family 1
CPU PMU: Failed to parse /soc/pmu/interrupt-affinity[0]
hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
futex hash table entries: 1024 (order: 4, 65536 bytes)
io scheduler noop registered
io scheduler deadline registered (default)
imx-weim 21b8000.weim: Driver registered.
imx-sdma 20ec000.sdma: failed to get firmware from device tree
imx-sdma 20ec000.sdma: initialized
2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 24, base_baud =
5000000) is a IMX
console [ttymxc0] enabled
random: nonblocking pool is initialized
===== end of kernel message  =================

Any suggestion about this issue?
Thanks,
-Kang
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux