2007-02-05 07:48:29

by Ingo Molnar

[permalink] [raw]
Subject: v2.6.20-rt1, yum/rpm

i have released the v2.6.20-rt1 kernel, which can be downloaded from the
usual place:

http://redhat.com/~mingo/realtime-preempt/

more info about the -rt patchset can be found in the RT wiki:

http://rt.wiki.kernel.org

This is a fixes-only release. Since the -rt tree has been closely
tracking Linus' upstream kernel since -rc1, no new issues are expected -
please re-report if anything is still unfixed.

There are lots of changes relative to 2.6.19-rt6 (the last stable
release), but these are mostly fixes and other gradual improvements. KVM
is now enabled in the yum kernel on both i686 and x86_64 (and has been
enabled since around -rc1-rt1), the -rt tree tracks kvm-trunk (which is
a bit fresher than upstream KVM) and has a few additional paravirt
speedups implemented and enabled.

to build a 2.6.20-rt1 tree, the following patches should be applied:

http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2
http://redhat.com/~mingo/realtime-preempt/patch-2.6.20-rt1

the -rt YUM repository for Fedora Core 6 and 5, for architectures i686
and x86_64 can be activated via:

cd /etc/yum.repos.d
wget http://people.redhat.com/~mingo/realtime-preempt/rt.repo

yum install kernel-rt.x86_64 # on x86_64
yum install kernel-rt # on i686

yum update kernel-rt # refresh - or enable yum-updatesd

as usual, bugreports, fixes and suggestions are welcome,

Ingo


2007-02-05 09:50:21

by Serge Belyshev

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

Ingo Molnar <[email protected]> writes:

> i have released the v2.6.20-rt1 kernel, which can be downloaded from the
> usual place:

I did not find tarball with split patches there.
Could you please make it available somewhere via http or ftp?

2007-02-05 09:55:37

by Ingo Molnar

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm


* Serge Belyshev <[email protected]> wrote:

> Ingo Molnar <[email protected]> writes:
>
> > i have released the v2.6.20-rt1 kernel, which can be downloaded from
> > the usual place:
>
> I did not find tarball with split patches there. Could you please make
> it available somewhere via http or ftp?

it basically consists of the -hrt queue, the GTOD queue (both are
available in -mm) plus the rest of -rt in a mostly monolithic fashion. I
dont really want to post it in a queue form because most of the time
it's not bisectable, etc. It's really an internal thing - i do my
development on the full tree, so that's the primary source form anyway.

Ingo

2007-02-05 10:37:00

by Sunil Naidu

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

On 2/5/07, Ingo Molnar <[email protected]> wrote:
> i have released the v2.6.20-rt1 kernel, which can be downloaded from the
> usual place:

Clean boot for me with 2.6.20 & 2.6.20-rt1. There isn't any error
(like in 2.6.20-rc7-rt3).

But here is an interesting dmesg:

rcu_boost_dat: idx=1 b=0 ul=0 ub=0 boost: a=0 b=0
rcu_boost_dat block: 0 0 0 0?
rcu_boost_dat boost: 0! 0 0 0?
rcu_boost_dat unlock: 0? 0 0 0?

I didn'tunderstand this with ? Am I missing anything here or please
give some inputs.


Complete dmesg:-

Linux version 2.6.20-rt1-Topol (root@Typhoon) (gcc version 4.1.1
20070105 (Red Hat 4.1.1-51)) #1 SMP PREEMPT Mon Feb 5 15:28:07 IST
2007
BIOS-provided physical RAM map:
sanitize start
sanitize end
copy_e820_map() start: 0000000000000000 size: 000000000009fc00 end:
000000000009fc00 type: 1
copy_e820_map() type is E820_RAM
copy_e820_map() start: 000000000009fc00 size: 0000000000000400 end:
00000000000a0000 type: 2
copy_e820_map() start: 00000000000e6000 size: 000000000001a000 end:
0000000000100000 type: 2
copy_e820_map() start: 0000000000100000 size: 000000001f62f800 end:
000000001f72f800 type: 1
copy_e820_map() type is E820_RAM
copy_e820_map() start: 000000001f72f800 size: 0000000000000800 end:
000000001f730000 type: 4
copy_e820_map() start: 000000001f730000 size: 0000000000010000 end:
000000001f740000 type: 3
copy_e820_map() start: 000000001f740000 size: 00000000000b0000 end:
000000001f7f0000 type: 4
copy_e820_map() start: 000000001f7f0000 size: 0000000000010000 end:
000000001f800000 type: 2
copy_e820_map() start: 00000000e0000000 size: 0000000010000000 end:
00000000f0000000 type: 2
copy_e820_map() start: 00000000fed13000 size: 0000000000007000 end:
00000000fed1a000 type: 2
copy_e820_map() start: 00000000fed1c000 size: 0000000000084000 end:
00000000feda0000 type: 2
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000001f72f800 (usable)
BIOS-e820: 000000001f72f800 - 000000001f730000 (ACPI NVS)
BIOS-e820: 000000001f730000 - 000000001f740000 (ACPI data)
BIOS-e820: 000000001f740000 - 000000001f7f0000 (ACPI NVS)
BIOS-e820: 000000001f7f0000 - 000000001f800000 (reserved)
BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
BIOS-e820: 00000000fed13000 - 00000000fed1a000 (reserved)
BIOS-e820: 00000000fed1c000 - 00000000feda0000 (reserved)
503MB LOWMEM available.
found SMP MP-table at 000ff780
Entering add_active_range(0, 0, 128815) 0 entries of 256 used
Zone PFN ranges:
DMA 0 -> 4096
Normal 4096 -> 128815
early_node_map[1] active PFN ranges
0: 0 -> 128815
On node 0 totalpages: 128815
DMA zone: 32 pages used for memmap
DMA zone: 0 pages reserved
DMA zone: 4064 pages, LIFO batch:0
Normal zone: 974 pages used for memmap
Normal zone: 123745 pages, LIFO batch:31
DMI 2.3 present.
ACPI: RSDP (v000 ACPIAM ) @ 0x000f4eb0
ACPI: RSDT (v001 INTEL D915GAV 0x20060222 MSFT 0x00000097) @ 0x1f730000
ACPI: FADT (v002 INTEL D915GAV 0x20060222 MSFT 0x00000097) @ 0x1f730200
ACPI: MADT (v001 INTEL D915GAV 0x20060222 MSFT 0x00000097) @ 0x1f730390
ACPI: MCFG (v001 INTEL D915GAV 0x20060222 MSFT 0x00000097) @ 0x1f730400
ACPI: ASF! (v016 LEGEND I865PASF 0x00000001 INTL 0x02002026) @ 0x1f736050
ACPI: TCPA (v001 INTEL TBLOEMID 0x00000001 MSFT 0x00000097) @ 0x1f7360f0
ACPI: WDDT (v001 INTEL OEMWDDT 0x00000001 INTL 0x02002026) @ 0x1f736122
ACPI: DSDT (v001 INTEL D915GAV 0x00000001 INTL 0x02002026) @ 0x00000000
ACPI: PM-Timer IO Port: 0x408
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
Processor #0 15:4 APIC version 20
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
Processor #1 15:4 APIC version 20
ACPI: LAPIC_NMI (acpi_id[0x01] dfl dfl lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x02] dfl dfl lint[0x1])
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: IRQ0 used by override.
ACPI: IRQ2 used by override.
ACPI: IRQ9 used by override.
Enabling APIC mode: Flat. Using 1 I/O APICs
Using ACPI (MADT) for SMP configuration information
Allocating PCI resources starting at 20000000 (gap: 1f800000:c0800000)
Detected 3000.307 MHz processor.
Real-Time Preemption Support (C) 2004-2007 Ingo Molnar
Built 1 zonelists. Total pages: 127809
Kernel command line: ro root=LABEL=/1 rhgb quiet
mapped APIC to ffffd000 (fee00000)
mapped IOAPIC to ffffc000 (fec00000)
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
WARNING: experimental RCU implementation.
PID hash table entries: 2048 (order: 11, 8192 bytes)
Console: colour VGA+ 80x25
num_possible_cpus(): 2
CPU#0: allocated 2097152 bytes trace buffer.
CPU#0: allocated 2097152 bytes max-trace buffer.
CPU#1: allocated 2097152 bytes trace buffer.
CPU#1: allocated 2097152 bytes max-trace buffer.
allocated 4194304 bytes out-trace buffer.
tracer: a total of 12582912 bytes allocated.
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 492048k/515260k available (1931k kernel code, 22604k reserved,
748k data, 220k init, 0k highmem)
virtual kernel memory layout:
fixmap : 0xfffb7000 - 0xfffff000 ( 288 kB)
vmalloc : 0xe0000000 - 0xfffb5000 ( 511 MB)
lowmem : 0xc0000000 - 0xdf72f000 ( 503 MB)
.init : 0xc03a3000 - 0xc03da000 ( 220 kB)
.data : 0xc02e2c71 - 0xc039df34 ( 748 kB)
.text : 0xc0100000 - 0xc02e2c71 (1931 kB)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 6003.02 BogoMIPS (lpj=3001512)
Security Framework v1.0.0 initialized
SELinux: Initializing.
SELinux: Starting in permissive mode
selinux_register_security: Registering secondary module capability
Capability LSM initialized as secondary
Mount-cache hash table entries: 512
CPU: After generic identify, caps: bfebfbff 00100000 00000000 00000000
0000441d 00000000 00000000
monitor/mwait feature present.
using mwait in idle threads.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 1024K
CPU: Physical Processor ID: 0
CPU: After all inits, caps: bfebfbff 00100000 00000000 00003180
0000441d 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU0: Intel P4/Xeon Extended MCE MSRs (12) available
CPU0: Thermal monitoring enabled
Checking 'hlt' instruction... OK.
Freeing SMP alternatives: 10k freed
ACPI: Core revision 20060707
CPU0: Intel(R) Pentium(R) 4 CPU 3.00GHz stepping 01
Booting processor 1/1 eip 2000
Initializing CPU#1
Calibrating delay using timer specific routine.. 5999.34 BogoMIPS (lpj=2999670)
CPU: After generic identify, caps: bfebfbff 00100000 00000000 00000000
0000441d 00000000 00000000
monitor/mwait feature present.
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 1024K
CPU: Physical Processor ID: 0
CPU: After all inits, caps: bfebfbff 00100000 00000000 00003180
0000441d 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#1.
CPU1: Intel P4/Xeon Extended MCE MSRs (12) available
CPU1: Thermal monitoring enabled
CPU1: Intel(R) Pentium(R) 4 CPU 3.00GHz stepping 01
Total of 2 processors activated (12002.36 BogoMIPS).
ENABLING IO-APIC IRQs
..TIMER: vector=0x31 apic1=0 pin1=2 apic2=-1 pin2=-1
checking TSC synchronization [CPU#0 -> CPU#1]: passed.
Brought up 2 CPUs
migration_cost=84
Starting RCU priority booster
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: Using MMCONFIG
Setting up standard PCI resources
rcu_boost_dat: idx=1 b=0 ul=0 ub=0 boost: a=0 b=0
rcu_boost_dat block: 0 0 0 0?
rcu_boost_dat boost: 0! 0 0 0?
rcu_boost_dat unlock: 0? 0 0 0?
ACPI: Interpreter enabled
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
Boot video device is 0000:00:02.0
PCI quirk: region 0400-047f claimed by ICH6 ACPI/GPIO/TCO
PCI quirk: region 0500-053f claimed by ICH6 GPIO
PCI: Transparent bridge - 0000:00:1e.0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEGP._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P2._PRT]
ACPI: Power Resource [URP1] (off)
ACPI: Power Resource [FDDP] (off)
ACPI: Power Resource [LPTP] (off)
ACPI: Power Resource [URP2] (off)
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX1._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX2._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX3._PRT]
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX4._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 *5 6 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKF] (IRQs *3 4 5 6 7 9 10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 9 10 11 12 14 15) *0, disabled.
ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 *9 10 11 12 14 15)
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
pnp: PnP ACPI: found 13 devices
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report
NetLabel: Initializing
NetLabel: domain hash size = 128
NetLabel: protocols = UNLABELED CIPSOv4
NetLabel: unlabeled traffic allowed by default
pnp: 00:0b: ioport range 0x400-0x47f could not be reserved
pnp: 00:0b: ioport range 0x680-0x6ff has been reserved
pnp: 00:0b: ioport range 0x500-0x53f has been reserved
PCI: Ignore bogus resource 6 [0:0] of 0000:00:02.0
PCI: Bridge: 0000:00:01.0
IO window: disabled.
MEM window: ffa00000-ffafffff
PREFETCH window: cff00000-cfffffff
PCI: Bridge: 0000:00:1c.0
IO window: disabled.
MEM window: ff600000-ff6fffff
PREFETCH window: cfb00000-cfbfffff
PCI: Bridge: 0000:00:1c.1
IO window: disabled.
MEM window: ff700000-ff7fffff
PREFETCH window: cfc00000-cfcfffff
PCI: Bridge: 0000:00:1c.2
IO window: disabled.
MEM window: ff800000-ff8fffff
PREFETCH window: cfd00000-cfdfffff
PCI: Bridge: 0000:00:1c.3
IO window: disabled.
MEM window: ff900000-ff9fffff
PREFETCH window: cfe00000-cfefffff
PCI: Bridge: 0000:00:1e.0
IO window: b000-bfff
MEM window: ff500000-ff5fffff
PREFETCH window: cfa00000-cfafffff
ACPI: PCI Interrupt 0000:00:01.0[A] -> GSI 16 (level, low) -> IRQ 16
PCI: Setting latency timer of device 0000:00:01.0 to 64
ACPI: PCI Interrupt 0000:00:1c.0[A] -> GSI 17 (level, low) -> IRQ 17
PCI: Setting latency timer of device 0000:00:1c.0 to 64
ACPI: PCI Interrupt 0000:00:1c.1[B] -> GSI 16 (level, low) -> IRQ 16
PCI: Setting latency timer of device 0000:00:1c.1 to 64
ACPI: PCI Interrupt 0000:00:1c.2[C] -> GSI 18 (level, low) -> IRQ 18
PCI: Setting latency timer of device 0000:00:1c.2 to 64
ACPI: PCI Interrupt 0000:00:1c.3[D] -> GSI 19 (level, low) -> IRQ 19
PCI: Setting latency timer of device 0000:00:1c.3 to 64
PCI: Setting latency timer of device 0000:00:1e.0 to 64
NET: Registered protocol family 2
IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
TCP established hash table entries: 16384 (order: 7, 655360 bytes)
TCP bind hash table entries: 8192 (order: 6, 294912 bytes)
TCP: Hash tables configured (established 16384 bind 8192)
TCP reno registered
checking if image is initramfs... it is
Freeing initrd memory: 1459k freed
audit: initializing netlink socket (disabled)
audit(1170689521.499:1): initialized
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
SELinux: Registering netfilter hooks
io scheduler noop registered
io scheduler cfq registered (default)
PCI: Setting latency timer of device 0000:00:01.0 to 64
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:01.0:pcie00]
Allocate Port Service[0000:00:01.0:pcie03]
PCI: Setting latency timer of device 0000:00:1c.0 to 64
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:1c.0:pcie00]
Allocate Port Service[0000:00:1c.0:pcie02]
Allocate Port Service[0000:00:1c.0:pcie03]
PCI: Setting latency timer of device 0000:00:1c.1 to 64
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:1c.1:pcie00]
Allocate Port Service[0000:00:1c.1:pcie02]
Allocate Port Service[0000:00:1c.1:pcie03]
PCI: Setting latency timer of device 0000:00:1c.2 to 64
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:1c.2:pcie00]
Allocate Port Service[0000:00:1c.2:pcie02]
Allocate Port Service[0000:00:1c.2:pcie03]
PCI: Setting latency timer of device 0000:00:1c.3 to 64
assign_interrupt_mode Found MSI capability
Allocate Port Service[0000:00:1c.3:pcie00]
Allocate Port Service[0000:00:1c.3:pcie02]
Allocate Port Service[0000:00:1c.3:pcie03]
ACPI: Processor [CPU1] (supports 8 throttling states)
ACPI: Processor [CPU2] (supports 8 throttling states)
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Real Time Clock Driver v1.12ac
Non-volatile memory driver v1.2
Linux agpgart interface v0.101 (c) Dave Jones
agpgart: Detected an Intel 915G Chipset.
agpgart: Detected 7932K stolen memory.
agpgart: AGP aperture is 256M @ 0xd0000000
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
RAMDISK driver initialized: 16 RAM disks of 16384K size 4096 blocksize
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
ICH6: IDE controller at PCI slot 0000:00:1f.1
ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 18
ICH6: chipset revision 3
ICH6: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:pio, hdd:pio
Probing IDE interface ide0...
hda: HL-DT-ST DVDRAM GSA-4163B, ATAPI CD/DVD-ROM drive
hdb: HL-DT-ST GCE-8527B, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
Probing IDE interface ide1...
usbcore: registered new interface driver libusual
usbcore: registered new interface driver hiddev
usbcore: registered new interface driver usbhid
drivers/usb/input/hid-core.c: v2.6:USB HID core driver
PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
PNP: PS/2 controller doesn't have AUX irq; using default 12
serio: i8042 KBD port at 0x60,0x64 irq 1
serio: i8042 AUX port at 0x60,0x64 irq 12
mice: PS/2 mouse device common for all mice
input: AT Translated Set 2 keyboard as /class/input/input0
TCP cubic registered
Initializing XFRM netlink socket
NET: Registered protocol family 1
NET: Registered protocol family 17
Starting balanced_irq
Using IPI Shortcut mode
Freeing unused kernel memory: 220k freed
Time: tsc clocksource has been installed.
USB Universal Host Controller Interface driver v3.0
ACPI: PCI Interrupt 0000:00:1d.0[A] -> GSI 23 (level, low) -> IRQ 20
PCI: Setting latency timer of device 0000:00:1d.0 to 64
uhci_hcd 0000:00:1d.0: UHCI Host Controller
uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 1
uhci_hcd 0000:00:1d.0: irq 20, io base 0x0000c800
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
ACPI: PCI Interrupt 0000:00:1d.1[B] -> GSI 19 (level, low) -> IRQ 19
PCI: Setting latency timer of device 0000:00:1d.1 to 64
uhci_hcd 0000:00:1d.1: UHCI Host Controller
uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 2
uhci_hcd 0000:00:1d.1: irq 19, io base 0x0000cc00
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
ACPI: PCI Interrupt 0000:00:1d.2[C] -> GSI 18 (level, low) -> IRQ 18
PCI: Setting latency timer of device 0000:00:1d.2 to 64
uhci_hcd 0000:00:1d.2: UHCI Host Controller
uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 3
uhci_hcd 0000:00:1d.2: irq 18, io base 0x0000d000
usb usb3: configuration #1 chosen from 1 choice
hub 3-0:1.0: USB hub found
hub 3-0:1.0: 2 ports detected
Switched to high resolution mode on CPU 1
Switched to high resolution mode on CPU 0
ACPI: PCI Interrupt 0000:00:1d.3[D] -> GSI 16 (level, low) -> IRQ 16
PCI: Setting latency timer of device 0000:00:1d.3 to 64
uhci_hcd 0000:00:1d.3: UHCI Host Controller
uhci_hcd 0000:00:1d.3: new USB bus registered, assigned bus number 4
uhci_hcd 0000:00:1d.3: irq 16, io base 0x0000d400
usb usb4: configuration #1 chosen from 1 choice
hub 4-0:1.0: USB hub found
hub 4-0:1.0: 2 ports detected
usb 2-1: new low speed USB device using uhci_hcd and address 2
ohci_hcd: 2006 August 04 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
ACPI: PCI Interrupt 0000:00:1d.7[A] -> GSI 23 (level, low) -> IRQ 20
PCI: Setting latency timer of device 0000:00:1d.7 to 64
ehci_hcd 0000:00:1d.7: EHCI Host Controller
ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 5
ehci_hcd 0000:00:1d.7: debug port 1
PCI: cache line size of 128 is not supported by device 0000:00:1d.7
ehci_hcd 0000:00:1d.7: irq 20, io mem 0xff43bc00
ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb5: configuration #1 chosen from 1 choice
hub 5-0:1.0: USB hub found
hub 5-0:1.0: 8 ports detected
SCSI subsystem initialized
libata version 2.00 loaded.
ata_piix 0000:00:1f.2: version 2.00ac7
ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
ACPI: PCI Interrupt 0000:00:1f.2[B] -> GSI 19 (level, low) -> IRQ 19
PCI: Setting latency timer of device 0000:00:1f.2 to 64
ata1: SATA max UDMA/133 cmd 0xE800 ctl 0xE402 bmdma 0xD800 irq 19
ata2: SATA max UDMA/133 cmd 0xE000 ctl 0xDC02 bmdma 0xD808 irq 19
scsi0 : ata_piix
ATA: abnormal status 0x7F on port 0xE807
scsi1 : ata_piix
ata2.00: ATA-6, max UDMA/133, 312581808 sectors: LBA48 NCQ (depth 0/32)
ata2.00: ata2: dev 0 multi count 16
ata2.00: configured for UDMA/133
scsi 1:0:0:0: Direct-Access ATA ST3160827AS 3.42 PQ: 0 ANSI: 5
SCSI device sda: 312581808 512-byte hdwr sectors (160042 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: write cache: enabled, read cache: enabled, doesn't
support DPO or FUA
SCSI device sda: 312581808 512-byte hdwr sectors (160042 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: write cache: enabled, read cache: enabled, doesn't
support DPO or FUA
sda: sda1 sda2 sda3 < sda5 sda6 sda7 sda8<6>usb 2-1: new low speed
USB device using uhci_hcd and address 3
sda9 >
sda2: <solaris: [s0] sda10 [s1] sda11 [s2] sda12 [s3] sda13 [s4]
sda14 [s5] sda15 >
sd 1:0:0:0: Attached scsi disk sda
usb 2-1: configuration #1 chosen from 1 choice
input: Microsoft Basic Optical Mouse as /class/input/input1
input: USB HID v1.10 Mouse [Microsoft Basic Optical Mouse] on usb-0000:00:1d.1-1
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
SELinux: Disabled at runtime.
SELinux: Unregistering netfilter hooks
audit(1170689526.186:2): selinux=0 auid=4294967295
sd 1:0:0:0: Attached scsi generic sg0 type 0
input: PC Speaker as /class/input/input2
iTCO_wdt: Intel TCO WatchDog Timer Driver v1.01 (11-Nov-2006)
iTCO_wdt: Found a ICH6 or ICH6R TCO device (Version=2, TCOBASE=0x0460)
iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
hda: ATAPI 40X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache, UDMA(33)
Uniform CD-ROM driver Revision: 3.20
fealnx.c:v2.52 Sep-11-2006
ACPI: PCI Interrupt 0000:06:00.0[A] -> GSI 21 (level, low) -> IRQ 21
eth0: 100/10M Ethernet PCI Adapter at 0001b800, 00:a1:b0:10:88:1a, IRQ 21.
hdb: ATAPI 52X CD-ROM CD-R/RW drive, 1536kB Cache, UDMA(33)
intel_rng: Firmware space is locked read-only. If you can't or
intel_rng: don't want to disable this in firmware setup, and if
intel_rng: you are certain that your system has a functional
intel_rng: RNG, try using the 'no_fwh_detect' option.
ACPI: PCI Interrupt 0000:00:1f.3[B] -> GSI 19 (level, low) -> IRQ 19
ACPI: PCI Interrupt 0000:00:1b.0[A] -> GSI 16 (level, low) -> IRQ 16
PCI: Setting latency timer of device 0000:00:1b.0 to 64
input: Power Button (FF) as /class/input/input3
ACPI: Power Button (FF) [PWRF]
input: Power Button (CM) as /class/input/input4
ACPI: Power Button (CM) [PWRB]
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
device-mapper: ioctl: 4.11.0-ioctl (2006-10-12) initialised: [email protected]
device-mapper: multipath: version 1.0.5 loaded
EXT3 FS on sda6, internal journal
kjournald starting. Commit interval 5 seconds
EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
EXT3 FS on sda7, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
fuse init (API version 7.8)
Adding 1052216k swap on /dev/sda5. Priority:-1 extents:1 across:1052216k
IA-32 Microcode Update Driver: v1.14a <[email protected]>
audit(1170669747.393:3): audit_pid=2000 old=0 by auid=4294967295
[drm] Initialized drm 1.1.0 20060810
ACPI: PCI Interrupt 0000:00:02.0[A] -> GSI 16 (level, low) -> IRQ 16
[drm] Initialized i915 1.6.0 20060119 on minor 0

Thanks,

~Akula2

2007-02-05 10:46:55

by Peter Zijlstra

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

On Mon, 2007-02-05 at 16:06 +0530, Sunil Naidu wrote:
> On 2/5/07, Ingo Molnar <[email protected]> wrote:
> > i have released the v2.6.20-rt1 kernel, which can be downloaded from the
> > usual place:
>
> Clean boot for me with 2.6.20 & 2.6.20-rt1. There isn't any error
> (like in 2.6.20-rc7-rt3).
>
> But here is an interesting dmesg:
>
> rcu_boost_dat: idx=1 b=0 ul=0 ub=0 boost: a=0 b=0
> rcu_boost_dat block: 0 0 0 0?
> rcu_boost_dat boost: 0! 0 0 0?
> rcu_boost_dat unlock: 0? 0 0 0?
>
> I didn'tunderstand this with ? Am I missing anything here or please
> give some inputs.

That is Paul McKenney's RCU priority boosting stuff.

Look here:
http://lkml.org/lkml/2007/1/24/294

2007-02-05 11:16:30

by Sunil Naidu

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

On 2/5/07, Peter Zijlstra <[email protected]> wrote:
> On Mon, 2007-02-05 at 16:06 +0530, Sunil Naidu wrote:
> > On 2/5/07, Ingo Molnar <[email protected]> wrote:
> > > i have released the v2.6.20-rt1 kernel, which can be downloaded from the
> > > usual place:
> >
> > Clean boot for me with 2.6.20 & 2.6.20-rt1. There isn't any error
> > (like in 2.6.20-rc7-rt3).
> >
> > But here is an interesting dmesg:
> >
> > rcu_boost_dat: idx=1 b=0 ul=0 ub=0 boost: a=0 b=0
> > rcu_boost_dat block: 0 0 0 0?
> > rcu_boost_dat boost: 0! 0 0 0?
> > rcu_boost_dat unlock: 0? 0 0 0?
> >
> > I didn'tunderstand this with ? Am I missing anything here or please
> > give some inputs.
>
> That is Paul McKenney's RCU priority boosting stuff.
>
> Look here:
> http://lkml.org/lkml/2007/1/24/294

Thanks for the input. I did check the URL to refer the update of the
patch by Paul:-

http://lkml.org/lkml/2007/01/15/219

I am getting error, The requested URL /lkml/2007/01/15/219. was not
found on this server.

~Akula2

2007-02-05 11:16:37

by Ingo Molnar

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm


* Peter Zijlstra <[email protected]> wrote:

> > But here is an interesting dmesg:
> >
> > rcu_boost_dat: idx=1 b=0 ul=0 ub=0 boost: a=0 b=0
> > rcu_boost_dat block: 0 0 0 0?
> > rcu_boost_dat boost: 0! 0 0 0?
> > rcu_boost_dat unlock: 0? 0 0 0?
> >
> > I didn'tunderstand this with ? Am I missing anything here or please
> > give some inputs.
>
> That is Paul McKenney's RCU priority boosting stuff.

yeah, those messages are diagnostic. You can turn them off by disabling
CONFIG_PREEMPT_RCU_BOOST_STATS.

Ingo

2007-02-05 13:00:00

by Michal Piotrowski

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

Hi,

On 05/02/07, Ingo Molnar <[email protected]> wrote:
> i have released the v2.6.20-rt1 kernel, which can be downloaded from the
> usual place:
>
> http://redhat.com/~mingo/realtime-preempt/
>

It looks like a bug to me

BUG: MAX_LOCKDEP_ENTRIES too low!
turning off the locking correctness validator.

http://www.stardust.webpages.pl/files/tbf/euridica/2.6.20-rt1/rt-dmesg
http://www.stardust.webpages.pl/files/tbf/euridica/2.6.20-rt1/rt-config

Regards,
Michal

--
Michal K. K. Piotrowski
LTG - Linux Testers Group
(http://www.stardust.webpages.pl/ltg/)

2007-02-05 13:49:10

by Ingo Molnar

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm


* Michal Piotrowski <[email protected]> wrote:

> It looks like a bug to me
>
> BUG: MAX_LOCKDEP_ENTRIES too low!
> turning off the locking correctness validator.

hm, the patch below should solve this.

Ingo

Index: linux/kernel/lockdep_internals.h
===================================================================
--- linux.orig/kernel/lockdep_internals.h
+++ linux/kernel/lockdep_internals.h
@@ -15,7 +15,7 @@
* table (if it's not there yet), and we check it for lock order
* conflicts and deadlocks.
*/
-#define MAX_LOCKDEP_ENTRIES 8192UL
+#define MAX_LOCKDEP_ENTRIES 16384UL

#define MAX_LOCKDEP_KEYS_BITS 11
#define MAX_LOCKDEP_KEYS (1UL << MAX_LOCKDEP_KEYS_BITS)

2007-02-05 14:25:54

by Karsten Wiese

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

Am Montag, 5. Februar 2007 07:56 schrieb Ingo Molnar:
> i have released the v2.6.20-rt1 kernel, which can be downloaded from the

after resuming from
$ echo mem > /sys/power/state
both lapic and pic are active, while only lapic should be.
resuming from
$ echo disk > /sys/power/state
is fine.

Karsten

2007-02-05 15:06:00

by Milan Svoboda

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

On Feb 5, 7:50 am, Ingo Molnar <[email protected]> wrote:
> i have released the v2.6.20-rt1 kernel, which can be downloaded from the
> usual place:
>

Clean boot for me on ARM ixp4xx (gcc-4.1.1, glibc-2.5, big endian,
softfloat).
High-res timers looks good.

However, I'm trying to use PI mutexes in userspace
(pthread_mutexattr_setprotocol =>
PTHREAD_PRIO_INHERIT) and found strange behaviour. It seems to me that
mutex
is not really locked, ie. first thread locks mutex then second thread also
locks the
same mutex! Then the second mutex unlock it and when the first thread
unlocks the
mutex error EPERM is returned.

What do you think, is it kernel or glibc problem? (Priority ceiling works
as expected.)
Is PTHREAD_PRIO_INHERIT supposed to work on my platform?

If there is anything else what would you like to see from my system, let
me know.

See logs from pi_tests-1.15 => classic_pi.c (I added code that test return
value from
pthread_mutex_lock/pthread_mutex_unlock):

# /mnt/clfs/opt/classic_pi --verbose
main: Priority Inheritance turned on
set_cpu_affinity: using processr 0
main: creating low priority thread
main: creating medium priority thread
main: creating high priority thread
main: releasing all threads
high_priority: running as FIFO thread at priority 97
high_priority: entering ready state
med_priority: running as FIFO thread at priority 96
med_priority: entering ready state
low_priority: running as FIFO thread at priority 95
low_priority: entering ready state
main: all threads initialized, waiting for mutex to be claimed
main: waiting for threads to finish
high_priority: starting inversion loop (1)
high_priority: entering start state (1)
med_priority: starting inversion loop (1)
med_priority: entering start state (1)
low_priority: starting inversion loop (1)
low_priority: entering start wait (1)
high_priority: entering running state
med_priority: entering elevate state
low_priority: claiming mutex
low_priority: mutex locked
low_priority: entering locked wait
high_priority: locking mutex
high_priority: got mutex
high_priority: unlocking mutex
high_priority: entering finish state
low_priority: entering elevated wait
med_priority: entering finish state
low_priority: unlocking mutex
low_priority: mutex unlock failed: 1
low_priority: entering finish wait
high_priority: entering exit state
med_priority: entering exit state
low_priority: entering exit state
main: all threads terminated!
main: test passed

And this is log from kernel (I added prink to sys_futex and do_futex):
sys_futex: op == 0
do_futex: op == 0
sys_futex: op == 0
do_futex: op == 0
sys_futex: op == 0
do_futex: op == 0
sys_futex: op == 1
do_futex: op == 1
sys_futex: op == 0
do_futex: op == 0
sys_futex: op == 0
do_futex: op == 0
sys_futex: op == 0
do_futex: op == 0
sys_futex: op == 1
do_futex: op == 1
sys_futex: op == 0
do_futex: op == 0
sys_futex: op == 0
do_futex: op == 0
sys_futex: op == 1
do_futex: op == 1
sys_futex: op == 6
do_futex: op == 6
FUTEX_LOCK_PI
sys_futex: op == 7
do_futex: op == 7
FUTEX_UNLOCK_PI
sys_futex: op == 0
do_futex: op == 0
sys_futex: op == 1
do_futex: op == 1
sys_futex: op == 0
do_futex: op == 0
sys_futex: op == 1
do_futex: op == 1
sys_futex: op == 0
do_futex: op == 0
sys_futex: op == 0
do_futex: op == 0
sys_futex: op == 1
do_futex: op == 1
sys_futex: op == 1
do_futex: op == 1

2007-02-05 15:17:29

by Parag Warudkar

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

Ingo Molnar <mingo <at> elte.hu> writes:

>
> i have released the v2.6.20-rt1 kernel, which can be downloaded from the
> usual place:
>
> http://redhat.com/~mingo/realtime-preempt/
>
> more info about the -rt patchset can be found in the RT wiki:
>
> http://rt.wiki.kernel.org
>

On FC6 with KVM userspace from trunk I get a ton of errors like this in dmesg -

=======================
---------------------------
| preempt count: 00000001 ]
| 1-level deep critical section nesting:
----------------------------------------
.. [<f90ecc48>] .... vmx_vcpu_load+0x26/0xd2 [kvm_intel]
.....[<f90b0a1c>] .. ( <= vcpu_load+0x38/0x3c [kvm])

BUG: sleeping function called from invalid context qemu(4314) at
arch/i386/mm/highmem.c:8
in_atomic():1 [00000001], irqs_disabled():0
[<c010503c>] dump_trace+0x63/0x1e8
[<c01051dd>] show_trace_log_lvl+0x1c/0x39
[<c01055d4>] show_trace+0x12/0x14
[<c01055ea>] dump_stack+0x14/0x16
[<c0122b71>] __might_sleep+0x110/0x117
[<c012161b>] kmap+0x3e/0x48
[<f90b415e>] paging32_walk_addr+0x214/0x276 [kvm]
[<f90b4f08>] paging32_page_fault+0x51/0x749 [kvm]
[<f90ede01>] handle_exception+0xeb/0x1da [kvm_intel]
[<f90edc8a>] kvm_vmx_return+0x169/0x1f5 [kvm_intel]
[<f90b108a>] kvm_dev_ioctl+0x284/0x1148 [kvm]
[<c0189db9>] do_ioctl+0x21/0x66
[<c018a053>] vfs_ioctl+0x255/0x268
[<c018a0ae>] sys_ioctl+0x48/0x62
[<c0104009>] syscall_call+0x7/0xb
[<009858b2>] 0x9858b2
=======================
---------------------------
| preempt count: 00000001 ]
| 1-level deep critical section nesting:
----------------------------------------
.. [<f90ecc48>] .... vmx_vcpu_load+0x26/0xd2 [kvm_intel]
.....[<f90b0a1c>] .. ( <= vcpu_load+0x38/0x3c [kvm])

BUG: sleeping function called from invalid context qemu(4314) at
arch/i386/mm/highmem.c:8
in_atomic():1 [00000001], irqs_disabled():0
[<c010503c>] dump_trace+0x63/0x1e8
[<c01051dd>] show_trace_log_lvl+0x1c/0x39
[<c01055d4>] show_trace+0x12/0x14
[<c01055ea>] dump_stack+0x14/0x16
[<c0122b71>] __might_sleep+0x110/0x117
[<c012161b>] kmap+0x3e/0x48
[<f90b415e>] paging32_walk_addr+0x214/0x276 [kvm]
[<f90b4f08>] paging32_page_fault+0x51/0x749 [kvm]
[<f90ede01>] handle_exception+0xeb/0x1da [kvm_intel]
[<f90edc8a>] kvm_vmx_return+0x169/0x1f5 [kvm_intel]
[<f90b108a>] kvm_dev_ioctl+0x284/0x1148 [kvm]
[<c0189db9>] do_ioctl+0x21/0x66
[<c018a053>] vfs_ioctl+0x255/0x268
[<c018a0ae>] sys_ioctl+0x48/0x62
[<c0104009>] syscall_call+0x7/0xb
[<009858b2>] 0x9858b2
=======================
---------------------------
| preempt count: 00000001 ]
| 1-level deep critical section nesting:
----------------------------------------
.. [<f90ecc48>] .... vmx_vcpu_load+0x26/0xd2 [kvm_intel]
.....[<f90b0a1c>] .. ( <= vcpu_load+0x38/0x3c [kvm])


2007-02-05 21:30:10

by Michal Piotrowski

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

Ingo Molnar napisał(a):
> * Michal Piotrowski <[email protected]> wrote:
>
>> It looks like a bug to me
>>
>> BUG: MAX_LOCKDEP_ENTRIES too low!
>> turning off the locking correctness validator.
>
> hm, the patch below should solve this.

Lockdep works. Thanks!

2.6.20-rt2

======================================================
[ INFO: hard-safe -> hard-unsafe lock order detected ]
[ 2.6.20-rt2 #2
------------------------------------------------------
softirq-timer/0/5 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
(console_sem.lock){--..}, at: [<c0311981>] rt_mutex_slowunlock+0xc/0x5b

and this task is already holding:
(xtime_lock){+...}, at: [<c012a8b8>] run_timer_softirq+0x47/0x9ad
which would create a new lock dependency:
(xtime_lock){+...} -> (console_sem.lock){--..}

but this new dependency connects a hard-irq-safe lock:
(xtime_lock){+...}
... which became hard-irq-safe at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dee5>] __lock_acquire+0x3b3/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c013a654>] tick_periodic+0x15/0x68
[<c013a6ba>] tick_handle_periodic+0x13/0x45
[<c010684f>] timer_interrupt+0x31/0x38
[<c0155912>] handle_IRQ_event+0x63/0xfc
[<c0157267>] handle_level_irq+0xa7/0xf0
[<c0105dc1>] do_IRQ+0xa3/0xce
[<c0103ac6>] common_interrupt+0x2e/0x34
[<c0312e57>] __spin_unlock_irqrestore+0x42/0x59
[<c0156075>] setup_irq+0x170/0x1e0
[<c04907e4>] time_init_hook+0x19/0x1b
[<c0488d87>] hpet_time_init+0xd/0xf
[<c0485667>] start_kernel+0x271/0x42a
[<ffffffff>] 0xffffffff

to a hard-irq-unsafe lock:
(console_sem.lock){--..}
... which became hard-irq-unsafe at:
... [<c013d124>] mark_lock+0x6b/0x40b
[<c013d50e>] mark_held_locks+0x4a/0x67
[<c013d6f1>] trace_hardirqs_on+0x10d/0x150
[<c0312e55>] __spin_unlock_irqrestore+0x40/0x59
[<c01431f4>] task_blocks_on_rt_mutex+0x1c4/0x20a
[<c0311cd0>] rt_mutex_slowlock+0x140/0x234
[<c03119fd>] rt_mutex_lock+0x2d/0x31
[<c014441a>] rt_down+0x11/0x28
[<c012290f>] acquire_console_sem+0x36/0x4c
[<c0209c10>] fb_flashcursor+0x1a/0x24d
[<c013177a>] run_workqueue+0x8b/0xd8
[<c0132309>] worker_thread+0xf8/0x124
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff

other info that might help us debug this:

1 lock held by softirq-timer/0/5:
#0: (xtime_lock){+...}, at: [<c012a8b8>] run_timer_softirq+0x47/0x9ad

the hard-irq-safe lock's dependencies:
-> (xtime_lock){+...} ops: 7875 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c04916fb>] timekeeping_init+0x25/0x143
[<c04855be>] start_kernel+0x1c8/0x42a
[<ffffffff>] 0xffffffff
in-hardirq-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dee5>] __lock_acquire+0x3b3/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c013a654>] tick_periodic+0x15/0x68
[<c013a6ba>] tick_handle_periodic+0x13/0x45
[<c010684f>] timer_interrupt+0x31/0x38
[<c0155912>] handle_IRQ_event+0x63/0xfc
[<c0157267>] handle_level_irq+0xa7/0xf0
[<c0105dc1>] do_IRQ+0xa3/0xce
[<c0103ac6>] common_interrupt+0x2e/0x34
[<c0312e57>] __spin_unlock_irqrestore+0x42/0x59
[<c0156075>] setup_irq+0x170/0x1e0
[<c04907e4>] time_init_hook+0x19/0x1b
[<c0488d87>] hpet_time_init+0xd/0xf
[<c0485667>] start_kernel+0x271/0x42a
[<ffffffff>] 0xffffffff
}
... key at: [<c046bb18>] xtime_lock+0x18/0x80
-> (clocksource_lock){....} ops: 3800 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c0138c4b>] clocksource_get_next+0xd/0x43
[<c049170b>] timekeeping_init+0x35/0x143
[<c04855be>] start_kernel+0x1c8/0x42a
[<ffffffff>] 0xffffffff
}
... key at: [<c046bd94>] clocksource_lock+0x14/0x80
... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c0138c4b>] clocksource_get_next+0xd/0x43
[<c049170b>] timekeeping_init+0x35/0x143
[<c04855be>] start_kernel+0x1c8/0x42a
[<ffffffff>] 0xffffffff

-> (logbuf_lock){....} ops: 1544 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c012273c>] release_console_sem+0x3c/0x1c5
[<c0122ed2>] vprintk+0x2cd/0x330
[<c0122f50>] printk+0x1b/0x1d
[<c0485456>] start_kernel+0x60/0x42a
[<ffffffff>] 0xffffffff
}
... key at: [<c046b694>] logbuf_lock+0x14/0x80
... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c012273c>] release_console_sem+0x3c/0x1c5
[<c0122ed2>] vprintk+0x2cd/0x330
[<c0122f50>] printk+0x1b/0x1d
[<c012aee1>] run_timer_softirq+0x670/0x9ad
[<c0127689>] ksoftirqd+0x121/0x205
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff


the hard-irq-unsafe lock's dependencies:
-> (console_sem.lock){--..} ops: 829 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c0311981>] rt_mutex_slowunlock+0xc/0x5b
[<c03118e4>] rt_mutex_unlock+0x8/0xa
[<c014402c>] rt_up+0x25/0x45
[<c0122870>] release_console_sem+0x170/0x1c5
[<c0122ed2>] vprintk+0x2cd/0x330
[<c0122f50>] printk+0x1b/0x1d
[<c0485456>] start_kernel+0x60/0x42a
[<ffffffff>] 0xffffffff
softirq-on-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013d50e>] mark_held_locks+0x4a/0x67
[<c013d709>] trace_hardirqs_on+0x125/0x150
[<c0312e55>] __spin_unlock_irqrestore+0x40/0x59
[<c01431f4>] task_blocks_on_rt_mutex+0x1c4/0x20a
[<c0311cd0>] rt_mutex_slowlock+0x140/0x234
[<c03119fd>] rt_mutex_lock+0x2d/0x31
[<c014441a>] rt_down+0x11/0x28
[<c012290f>] acquire_console_sem+0x36/0x4c
[<c0209c10>] fb_flashcursor+0x1a/0x24d
[<c013177a>] run_workqueue+0x8b/0xd8
[<c0132309>] worker_thread+0xf8/0x124
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
hardirq-on-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013d50e>] mark_held_locks+0x4a/0x67
[<c013d6f1>] trace_hardirqs_on+0x10d/0x150
[<c0312e55>] __spin_unlock_irqrestore+0x40/0x59
[<c01431f4>] task_blocks_on_rt_mutex+0x1c4/0x20a
[<c0311cd0>] rt_mutex_slowlock+0x140/0x234
[<c03119fd>] rt_mutex_lock+0x2d/0x31
[<c014441a>] rt_down+0x11/0x28
[<c012290f>] acquire_console_sem+0x36/0x4c
[<c0209c10>] fb_flashcursor+0x1a/0x24d
[<c013177a>] run_workqueue+0x8b/0xd8
[<c0132309>] worker_thread+0xf8/0x124
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
}
... key at: [<c043c318>] console_sem+0x18/0x60
-> ((raw_spinlock_t *)(&p->pi_lock)){....} ops: 706 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c011c7a5>] sched_setscheduler+0x13f/0x22e
[<c0135150>] posix_cpu_thread_call+0x88/0xff
[<c0491d70>] posix_cpu_thread_init+0x1c/0x3c
[<c01003fa>] init+0x4d/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
}
... key at: [<c04cc06c>] __key.24574+0x0/0x8
-> (&rq->rq_lock_key){+...} ops: 29636 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c011be68>] init_idle+0x63/0x81
[<c0490c3e>] sched_init+0x1a9/0x1b0
[<c0485516>] start_kernel+0x120/0x42a
[<ffffffff>] 0xffffffff
in-hardirq-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dee5>] __lock_acquire+0x3b3/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011b21f>] task_running_tick+0x2a/0x23d
[<c011e849>] scheduler_tick+0x92/0xee
[<c012b88a>] update_process_times+0x3e/0x63
[<c013a6a5>] tick_periodic+0x66/0x68
[<c013a6ba>] tick_handle_periodic+0x13/0x45
[<c010684f>] timer_interrupt+0x31/0x38
[<c0155912>] handle_IRQ_event+0x63/0xfc
[<c0157267>] handle_level_irq+0xa7/0xf0
[<c0105dc1>] do_IRQ+0xa3/0xce
[<c0103ac6>] common_interrupt+0x2e/0x34
[<c013e740>] lock_acquire+0x7a/0x82
[<c0312430>] rt_read_lock+0x2b/0x69
[<c0120925>] copy_process+0x6cc/0x136b
[<c0121e43>] fork_idle+0x3f/0x58
[<c0112023>] do_boot_cpu+0x3c/0x547
[<c048c4a0>] smp_prepare_cpus+0x477/0x5eb
[<c01003eb>] init+0x3e/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
}
... key at: [<c60686cc>] 0xc60686cc
-> (&rq->rq_lock_key#2){+...} ops: 30044 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c011be68>] init_idle+0x63/0x81
[<c0121e53>] fork_idle+0x4f/0x58
[<c0112023>] do_boot_cpu+0x3c/0x547
[<c048c4a0>] smp_prepare_cpus+0x477/0x5eb
[<c01003eb>] init+0x3e/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
in-hardirq-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dee5>] __lock_acquire+0x3b3/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011b6be>] task_rq_lock+0x36/0x5d
[<c011ca30>] try_to_wake_up+0x29/0x3cf
[<c011ce79>] wake_up_process+0x19/0x1b
[<c0126af7>] wakeup_softirqd+0x30/0x34
[<c01277c6>] raise_softirq+0x59/0x77
[<c012b50e>] run_local_timers+0xd/0x14
[<c012b88f>] update_process_times+0x43/0x63
[<c013a6a5>] tick_periodic+0x66/0x68
[<c013a6ba>] tick_handle_periodic+0x13/0x45
[<c0113e30>] smp_apic_timer_interrupt+0xa6/0xb8
[<c0103ba7>] apic_timer_interrupt+0x33/0x38
[<c0101b16>] default_idle+0x49/0x62
[<c01013ec>] cpu_idle+0xd4/0x11e
[<c0112d05>] start_secondary+0x35a/0x362
[<ffffffff>] 0xffffffff
}
... key at: [<c60e86cc>] 0xc60e86cc
... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011b029>] double_rq_lock+0x33/0x37
[<c011b8ab>] __migrate_task+0x58/0x131
[<c011eb9f>] migration_thread+0x196/0x1e5
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff

... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011c7c3>] sched_setscheduler+0x15d/0x22e
[<c0135150>] posix_cpu_thread_call+0x88/0xff
[<c0491d70>] posix_cpu_thread_init+0x1c/0x3c
[<c01003fa>] init+0x4d/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff

-> (&rq->rq_lock_key#2){+...} ops: 30044 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c011be68>] init_idle+0x63/0x81
[<c0121e53>] fork_idle+0x4f/0x58
[<c0112023>] do_boot_cpu+0x3c/0x547
[<c048c4a0>] smp_prepare_cpus+0x477/0x5eb
[<c01003eb>] init+0x3e/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
in-hardirq-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dee5>] __lock_acquire+0x3b3/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011b6be>] task_rq_lock+0x36/0x5d
[<c011ca30>] try_to_wake_up+0x29/0x3cf
[<c011ce79>] wake_up_process+0x19/0x1b
[<c0126af7>] wakeup_softirqd+0x30/0x34
[<c01277c6>] raise_softirq+0x59/0x77
[<c012b50e>] run_local_timers+0xd/0x14
[<c012b88f>] update_process_times+0x43/0x63
[<c013a6a5>] tick_periodic+0x66/0x68
[<c013a6ba>] tick_handle_periodic+0x13/0x45
[<c0113e30>] smp_apic_timer_interrupt+0xa6/0xb8
[<c0103ba7>] apic_timer_interrupt+0x33/0x38
[<c0101b16>] default_idle+0x49/0x62
[<c01013ec>] cpu_idle+0xd4/0x11e
[<c0112d05>] start_secondary+0x35a/0x362
[<ffffffff>] 0xffffffff
}
... key at: [<c60e86cc>] 0xc60e86cc
... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011c7c3>] sched_setscheduler+0x15d/0x22e
[<c0135150>] posix_cpu_thread_call+0x88/0xff
[<c012ec53>] notifier_call_chain+0x20/0x31
[<c012ec80>] raw_notifier_call_chain+0x8/0xa
[<c0144569>] _cpu_up+0x3d/0xbf
[<c0144611>] cpu_up+0x26/0x38
[<c010043e>] init+0x91/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff

... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c0143055>] task_blocks_on_rt_mutex+0x25/0x20a
[<c0311cd0>] rt_mutex_slowlock+0x140/0x234
[<c03119fd>] rt_mutex_lock+0x2d/0x31
[<c014441a>] rt_down+0x11/0x28
[<c012290f>] acquire_console_sem+0x36/0x4c
[<c0209c10>] fb_flashcursor+0x1a/0x24d
[<c013177a>] run_workqueue+0x8b/0xd8
[<c0132309>] worker_thread+0xf8/0x124
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff

-> (&rq->rq_lock_key#2){+...} ops: 30044 {
initial-use at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dfb9>] __lock_acquire+0x487/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c011be68>] init_idle+0x63/0x81
[<c0121e53>] fork_idle+0x4f/0x58
[<c0112023>] do_boot_cpu+0x3c/0x547
[<c048c4a0>] smp_prepare_cpus+0x477/0x5eb
[<c01003eb>] init+0x3e/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff
in-hardirq-W at:
[<c013d124>] mark_lock+0x6b/0x40b
[<c013dee5>] __lock_acquire+0x3b3/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011b6be>] task_rq_lock+0x36/0x5d
[<c011ca30>] try_to_wake_up+0x29/0x3cf
[<c011ce79>] wake_up_process+0x19/0x1b
[<c0126af7>] wakeup_softirqd+0x30/0x34
[<c01277c6>] raise_softirq+0x59/0x77
[<c012b50e>] run_local_timers+0xd/0x14
[<c012b88f>] update_process_times+0x43/0x63
[<c013a6a5>] tick_periodic+0x66/0x68
[<c013a6ba>] tick_handle_periodic+0x13/0x45
[<c0113e30>] smp_apic_timer_interrupt+0xa6/0xb8
[<c0103ba7>] apic_timer_interrupt+0x33/0x38
[<c0101b16>] default_idle+0x49/0x62
[<c01013ec>] cpu_idle+0xd4/0x11e
[<c0112d05>] start_secondary+0x35a/0x362
[<ffffffff>] 0xffffffff
}
... key at: [<c60e86cc>] 0xc60e86cc
... acquired at:
[<c013c05b>] add_lock_to_list+0x65/0x89
[<c013e544>] __lock_acquire+0xa12/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c03127d3>] __spin_lock+0x35/0x42
[<c011b6be>] task_rq_lock+0x36/0x5d
[<c011ca30>] try_to_wake_up+0x29/0x3cf
[<c011ce79>] wake_up_process+0x19/0x1b
[<c014281e>] wakeup_next_waiter+0x1d9/0x1e1
[<c03119b8>] rt_mutex_slowunlock+0x43/0x5b
[<c03118e4>] rt_mutex_unlock+0x8/0xa
[<c014402c>] rt_up+0x25/0x45
[<c0122870>] release_console_sem+0x170/0x1c5
[<c0122ed2>] vprintk+0x2cd/0x330
[<c0122f50>] printk+0x1b/0x1d
[<c0288c89>] usb_register_driver+0xa3/0xeb
[<c049c440>] usb_usual_init+0xf/0x29
[<c01004df>] init+0x132/0x3c3
[<c0103dab>] kernel_thread_helper+0x7/0x10
[<ffffffff>] 0xffffffff


stack backtrace:
[<c01041a3>] dump_trace+0x63/0x1eb
[<c0104348>] show_trace_log_lvl+0x1d/0x3a
[<c0104a23>] show_trace+0x12/0x14
[<c0104ab6>] dump_stack+0x16/0x18
[<c013da8f>] check_usage+0x241/0x24b
[<c013e451>] __lock_acquire+0x91f/0xb94
[<c013e72e>] lock_acquire+0x68/0x82
[<c0312a40>] __spin_lock_irqsave+0x3e/0x4e
[<c0311981>] rt_mutex_slowunlock+0xc/0x5b
[<c03118e4>] rt_mutex_unlock+0x8/0xa
[<c014402c>] rt_up+0x25/0x45
[<c0122870>] release_console_sem+0x170/0x1c5
[<c0122ed2>] vprintk+0x2cd/0x330
[<c0122f50>] printk+0x1b/0x1d
[<c012aee1>] run_timer_softirq+0x670/0x9ad
[<c0127689>] ksoftirqd+0x121/0x205
[<c01344b4>] kthread+0xb5/0xe1
[<c0103dab>] kernel_thread_helper+0x7/0x10
=======================
---------------------------
| preempt count: 00000003 ]
| 3-level deep critical section nesting:
----------------------------------------
.. [<c03127b1>] .... __spin_lock+0x13/0x42
.....[<c012a8b8>] .. ( <= run_timer_softirq+0x47/0x9ad)
.. [<c0144017>] .... rt_up+0x10/0x45
.....[<c0122870>] .. ( <= release_console_sem+0x170/0x1c5)
.. [<c0312a1e>] .... __spin_lock_irqsave+0x1c/0x4e
.....[<c0311981>] .. ( <= rt_mutex_slowunlock+0xc/0x5b)

0xc03127b1 is in __spin_lock (kernel/spinlock.c:218).
213 EXPORT_SYMBOL(__write_lock_bh);
214
215 void __lockfunc __spin_lock(raw_spinlock_t *lock)
216 {
217 preempt_disable();
218 spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);
219 _raw_spin_lock(lock);
220 }
221
222 EXPORT_SYMBOL(__spin_lock);

0xc012a8b8 is in run_timer_softirq (include/linux/seqlock.h:148).
143 }
144
145 static __always_inline void __write_seqlock_raw(raw_seqlock_t *sl)
146 {
147 spin_lock(&sl->lock);
148 ++sl->sequence;
149 smp_wmb();
150 }
151
152 static __always_inline void __write_sequnlock_raw(raw_seqlock_t *sl)


0xc0144017 is in rt_up (include/asm/atomic.h:189).
184 if(unlikely(boot_cpu_data.x86==3))
185 goto no_xadd;
186 #endif
187 /* Modern 486+ processor */
188 __i = i;
189 __asm__ __volatile__(
190 LOCK_PREFIX "xaddl %0, %1"
191 :"+r" (i), "+m" (v->counter)
192 : : "memory");
193 return i + __i;

0xc0122870 is in release_console_sem (kernel/printk.c:864).
859 * up only if we are in a preemptible section. We normally dont
860 * printk from non-preemptible sections so this is for the emergency
861 * case only.
862 */
863 #ifdef CONFIG_PREEMPT_RT
864 if (!in_atomic() && !irqs_disabled())
865 #endif
866 if (wake_klogd && !oops_in_progress && waitqueue_active(&log_wait))
867 wake_up_interruptible(&log_wait);
868 }

0xc0312a1e is in __spin_lock_irqsave (kernel/spinlock.c:122).
117 {
118 unsigned long flags;
119
120 local_irq_save(flags);
121 preempt_disable();
122 spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);
123 /*
124 * On lockdep we dont want the hand-coded irq-enable of
125 * _raw_spin_lock_flags() code, because lockdep assumes
126 * that interrupts are not re-enabled during lock-acquire:


0xc0311981 is in rt_mutex_slowunlock (kernel/rtmutex.c:1053).
1048 static void __sched
1049 rt_mutex_slowunlock(struct rt_mutex *lock)
1050 {
1051 unsigned long flags;
1052
1053 spin_lock_irqsave(&lock->wait_lock, flags);
1054
1055 debug_rt_mutex_unlock(lock);
1056
1057 rt_mutex_deadlock_account_unlock(current);

http://www.stardust.webpages.pl/files/tbf/euridica/2.6.20-rt2/rt-config
http://www.stardust.webpages.pl/files/tbf/euridica/2.6.20-rt2/rt-dmesg

Regards,
Michal

--
Michal K. K. Piotrowski
LTG - Linux Testers Group
(http://www.stardust.webpages.pl/ltg/)

2007-02-05 21:51:06

by Michal Piotrowski

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

Ingo Molnar napisał(a):
> i have released the v2.6.20-rt1 kernel, which can be downloaded from the
> usual place:
>
> http://redhat.com/~mingo/realtime-preempt/
>
> more info about the -rt patchset can be found in the RT wiki:

2.6.20-rt2

echo shutdown > /sys/power/disk; echo disk > /sys/power/state

Disabling non-boot CPUs ...
CPU1 playing dead
[<c01041a3>] dump_trace+0x63/0x1eb
[<c0104348>] show_trace_log_lvl+0x1d/0x3a
[<c0104a23>] show_trace+0x12/0x14
[<c0104ab6>] dump_stack+0x16/0x18
[<c01013a5>] cpu_idle+0x8d/0x11e
[<c0112d05>] start_secondary+0x35a/0x362
=======================
---------------------------
| preempt count: 00000001 ]
| 1-level deep critical section nesting:
----------------------------------------
.. [<c010142b>] .... cpu_idle+0x113/0x11e
.....[<c0112d05>] .. ( <= start_secondary+0x35a/0x362)

0xc010142b is in cpu_idle (arch/i386/kernel/process.c:204).
199 tick_nohz_restart_sched_tick();
200 local_irq_disable();
201 __preempt_enable_no_resched();
202 __schedule();
203 preempt_disable();
204 local_irq_enable();
205 }
206 }
207
208 void cpu_idle_wait(void)

0xc0112d05 is in start_secondary (arch/i386/kernel/smpboot.c:432).
427 /* We can take interrupts now: we're officially "up". */
428 local_irq_enable();
429
430 wmb();
431 cpu_idle();
432 }
433
434 /*
435 * Everything has been set up for the secondary
436 * CPUs - they just need to reload everything


lapic suspend on CPU#0
[<c01041a3>] dump_trace+0x63/0x1eb
[<c0104348>] show_trace_log_lvl+0x1d/0x3a
[<c0104a23>] show_trace+0x12/0x14
[<c0104ab6>] dump_stack+0x16/0x18
[<c0113ac8>] lapic_suspend+0xd8/0x101
[<c02543c0>] sysdev_suspend+0x8d/0x1ee
[<c0258117>] device_power_down+0x119/0x152
[<c014ab42>] swsusp_suspend+0x17/0x67
[<c014b2a1>] pm_suspend_disk+0x9a/0x161
[<c014a169>] enter_state+0x52/0x1bb
[<c014a358>] state_store+0x86/0x9c
[<c01abed4>] subsys_attr_store+0x20/0x25
[<c01ac176>] sysfs_write_file+0xa1/0xc2
[<c0177962>] vfs_write+0xaf/0x163
[<c0177fda>] sys_write+0x40/0x67
[<c01030e0>] syscall_call+0x7/0xb
[<b7f74410>] 0xb7f74410
=======================
---------------------------
| preempt count: 00000000 ]
| 0-level deep critical section nesting:
----------------------------------------

swsusp: critical section:
swsusp: Need to copy 122686 pages
swsusp: Normal pages needed: 36485 + 1024 + 40, available pages: 192889
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU0: Intel P4/Xeon Extended MCE MSRs (12) available
CPU0: Thermal monitoring enabled
lapic resume on CPU#0
[<c01041a3>] dump_trace+0x63/0x1eb
[<c0104348>] show_trace_log_lvl+0x1d/0x3a
[<c0104a23>] show_trace+0x12/0x14
[<c0104ab6>] dump_stack+0x16/0x18
[<c0113b22>] lapic_resume+0x31/0x1c3
[<c025404e>] __sysdev_resume+0x14/0x57
[<c025453a>] sysdev_resume+0x19/0x54
[<c02585a7>] device_power_up+0x8/0xf
[<c014ab85>] swsusp_suspend+0x5a/0x67
[<c014b2a1>] pm_suspend_disk+0x9a/0x161
[<c014a169>] enter_state+0x52/0x1bb
[<c014a358>] state_store+0x86/0x9c
[<c01abed4>] subsys_attr_store+0x20/0x25
[<c01ac176>] sysfs_write_file+0xa1/0xc2
[<c0177962>] vfs_write+0xaf/0x163
[<c0177fda>] sys_write+0x40/0x67
[<c01030e0>] syscall_call+0x7/0xb
[<b7f74410>] 0xb7f74410
=======================
---------------------------
| preempt count: 00000000 ]
| 0-level deep critical section nesting:
----------------------------------------

http://www.stardust.webpages.pl/files/tbf/euridica/2.6.20-rt2/rt-dmesg2
http://www.stardust.webpages.pl/files/tbf/euridica/2.6.20-rt2/rt-config

Regards,
Michal

--
Michal K. K. Piotrowski
LTG - Linux Testers Group
(http://www.stardust.webpages.pl/ltg/)

2007-02-06 00:11:57

by Michal Piotrowski

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

On 05/02/07, Ingo Molnar <[email protected]> wrote:
> i have released the v2.6.20-rt1 kernel, which can be downloaded from the
> usual place:
>
> http://redhat.com/~mingo/realtime-preempt/
>

-rt2 vs. autotest.

Good news - It passes aiostress, linus_stress and ltp.

Bad news - it hangs a few seconds after pi_tests (I don't see any
errors in /var/log/messages)

Regards,
Michal

--
Michal K. K. Piotrowski
LTG - Linux Testers Group
(http://www.stardust.webpages.pl/ltg/)

2007-02-06 01:16:23

by Daniel Walker

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm


The /proc/interrupts timer entry is dangling a little. With PREEMPT_RT
the entry doesn't get updated ..

My system after two hours uptime,

CPU0 CPU1
0: 56 0 IO-APIC-edge timer
1: 2 0 IO-APIC-edge i8042
4: 1450 0 IO-APIC-edge serial
6: 3 0 IO-APIC-edge floppy
8: 0 0 IO-APIC-edge rtc
9: 0 0 IO-APIC-fasteoi acpi
12: 4 0 IO-APIC-edge i8042
14: 824890 0 IO-APIC-edge ide0
17: 182 0 IO-APIC-fasteoi HDA Intel
20: 0 0 IO-APIC-fasteoi uhci_hcd:usb2
21: 0 0 IO-APIC-fasteoi libata, ehci_hcd:usb1, uhci_hcd:usb4
22: 0 0 IO-APIC-fasteoi uhci_hcd:usb3
23: 7515 0 IO-APIC-fasteoi uhci_hcd:usb5, eth0
NMI: 0 0
LOC: 1749635 1749614
ERR: 0

Daniel

2007-02-06 10:10:48

by Arjan van de Ven

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

On Mon, 2007-02-05 at 07:56 +0100, Ingo Molnar wrote:
> i have released the v2.6.20-rt1 kernel, which can be downloaded from the
> usual place:
>
> http://redhat.com/~mingo/realtime-preempt/
>
> more info about the -rt patchset can be found in the RT wiki:
>
> http://rt.wiki.kernel.org
>
> This is a fixes-only release. Since the -rt tree has been closely
> tracking Linus' upstream kernel since -rc1, no new issues are expected -
> please re-report if anything is still unfixed.


patch below has 2 tweaks
1) the new RCU feature wakes up once per second, make sure this is using
the new round_jiffies() infrastructure
2) the slab background reap code is waking up once per 2 seconds per
cpu. The patch makes this more dynamic; if no work was done (no activity
on the cpu happened) then this is made to be 4 seconds

Signed-off-by: Arjan van de Ven <[email protected]>


Index: linux-2.6.20-rt2/kernel/rcupreempt.c
===================================================================
--- linux-2.6.20-rt2.orig/kernel/rcupreempt.c
+++ linux-2.6.20-rt2/kernel/rcupreempt.c
@@ -465,7 +465,7 @@ static int rcu_booster(void *arg)
* adjust, or eliminate in case of OOM.
*/

- schedule_timeout_interruptible(HZ);
+ schedule_timeout_interruptible(round_jiffies_relative(HZ));

/* Print stats if enough time has passed. */

Index: linux-2.6.20-rt2/kernel/rcutorture.c
===================================================================
--- linux-2.6.20-rt2.orig/kernel/rcutorture.c
+++ linux-2.6.20-rt2/kernel/rcutorture.c
@@ -288,7 +288,7 @@ static int rcu_torture_preempt(void *arg
cond_resched();
if (rcu_torture_completed() == completedstart)
rcu_torture_preempt_errors++;
- schedule_timeout_interruptible(HZ);
+ schedule_timeout_interruptible(round_jiffies_relative(HZ));
} while (!kthread_should_stop());
return 0;
}
@@ -660,7 +660,7 @@ rcu_torture_reader(void *arg)
if (p == NULL) {
/* Wait for rcu_torture_writer to get underway */
cur_ops->readunlock(idx);
- schedule_timeout_interruptible(HZ);
+ schedule_timeout_interruptible(round_jiffies_relative(HZ));
continue;
}
if (p->rtort_mbtest == 0)
Index: linux-2.6.20-rt2/mm/slab.c
===================================================================
--- linux-2.6.20-rt2.orig/mm/slab.c
+++ linux-2.6.20-rt2/mm/slab.c
@@ -1062,7 +1062,7 @@ static int transfer_objects(struct array
#ifndef CONFIG_NUMA

#define drain_alien_cache(cachep, alien) do { } while (0)
-#define reap_alien(cachep, l3, this_cpu) do { } while (0)
+#define reap_alien(cachep, l3, this_cpu) 0

static inline struct array_cache **alloc_alien_cache(int node, int limit)
{
@@ -1160,7 +1160,7 @@ static void __drain_alien_cache(struct k
/*
* Called from cache_reap() to regularly drain alien caches round robin.
*/
-static void
+static int
reap_alien(struct kmem_cache *cachep, struct kmem_list3 *l3, int *this_cpu)
{
int node = per_cpu(reap_node, *this_cpu);
@@ -1171,8 +1171,10 @@ reap_alien(struct kmem_cache *cachep, st
if (ac && ac->avail && spin_trylock_irq(&ac->lock)) {
__drain_alien_cache(cachep, ac, node, this_cpu);
spin_unlock_irq(&ac->lock);
+ return 1;
}
}
+ return 0;
}

static void drain_alien_cache(struct kmem_cache *cachep,
@@ -2473,7 +2475,7 @@ static void check_spinlock_acquired_node
#define check_spinlock_acquired_node(x, y) do { } while(0)
#endif

-static void drain_array(struct kmem_cache *cachep, struct kmem_list3 *l3,
+static int drain_array(struct kmem_cache *cachep, struct kmem_list3 *l3,
struct array_cache *ac,
int force, int node);

@@ -4114,15 +4116,16 @@ static int enable_cpucache(struct kmem_c
* Drain an array if it contains any elements taking the l3 lock only if
* necessary. Note that the l3 listlock also protects the array_cache
* if drain_array() is used on the shared array.
+ * returns non-zero if some work is done
*/
-void drain_array(struct kmem_cache *cachep, struct kmem_list3 *l3,
+int drain_array(struct kmem_cache *cachep, struct kmem_list3 *l3,
struct array_cache *ac, int force, int node)
{
int this_cpu = smp_processor_id();
int tofree;

if (!ac || !ac->avail)
- return;
+ return 0;
if (ac->touched && !force) {
ac->touched = 0;
} else {
@@ -4138,6 +4141,7 @@ void drain_array(struct kmem_cache *cach
}
slab_spin_unlock_irq(&l3->list_lock, this_cpu);
}
+ return 1;
}

/**
@@ -4157,6 +4161,7 @@ static void cache_reap(struct work_struc
int this_cpu = raw_smp_processor_id(), node = cpu_to_node(this_cpu);
struct kmem_cache *searchp;
struct kmem_list3 *l3;
+ int work_done = 0;

if (!mutex_trylock(&cache_chain_mutex)) {
/* Give up. Setup the next iteration. */
@@ -4175,10 +4180,10 @@ static void cache_reap(struct work_struc
*/
l3 = searchp->nodelists[node];

- reap_alien(searchp, l3, &this_cpu);
+ work_done += reap_alien(searchp, l3, &this_cpu);

- drain_array(searchp, l3, cpu_cache_get(searchp, this_cpu),
- 0, node);
+ work_done += drain_array(searchp, l3,
+ cpu_cache_get(searchp, this_cpu), 0, node);

/*
* These are racy checks but it does not matter
@@ -4189,7 +4194,7 @@ static void cache_reap(struct work_struc

l3->next_reap = jiffies + REAPTIMEOUT_LIST3;

- drain_array(searchp, l3, l3->shared, 0, node);
+ work_done += drain_array(searchp, l3, l3->shared, 0, node);

if (l3->free_touched)
l3->free_touched = 0;
@@ -4207,9 +4212,10 @@ next:
mutex_unlock(&cache_chain_mutex);
next_reap_node();
refresh_cpu_vm_stats(smp_processor_id());
+
/* Set up the next iteration */
schedule_delayed_work(&__get_cpu_var(reap_work),
- round_jiffies_relative(REAPTIMEOUT_CPUC));
+ round_jiffies_relative((1+!work_done) * REAPTIMEOUT_CPUC));
}

#ifdef CONFIG_PROC_FS


2007-02-06 10:30:59

by Sunil Naidu

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

On 2/5/07, Ingo Molnar <[email protected]> wrote:
> i have released the v2.6.20-rt1 kernel, which can be downloaded from the

This is about 2.6.20-rt2, no issues here.

PID TTY STAT TIME COMMAND
1 ? Ss 0:00 init [5]
2 ? S 0:00 [migration/0]
3 ? S 0:00 [posix_cpu_timer]
4 ? S 0:00 [softirq-high/0]
5 ? S 0:00 [softirq-timer/0]
6 ? S 0:00 [softirq-net-tx/]
7 ? S 0:00 [softirq-net-rx/]
8 ? S 0:00 [softirq-block/0]
9 ? S 0:00 [softirq-tasklet]
10 ? S 0:00 [softirq-sched/0]
11 ? S 0:00 [softirq-hrtimer]
12 ? S 0:00 [softirq-rcu/0]
13 ? S< 0:00 [desched/0]
14 ? S 0:00 [migration/1]
15 ? S 0:00 [posix_cpu_timer]
16 ? S 0:00 [softirq-high/1]
17 ? S 0:00 [softirq-timer/1]
18 ? S 0:00 [softirq-net-tx/]
19 ? S 0:00 [softirq-net-rx/]
20 ? S 0:00 [softirq-block/1]
21 ? S 0:00 [softirq-tasklet]
22 ? S 0:00 [softirq-sched/1]
23 ? S 0:00 [softirq-hrtimer]
24 ? S 0:00 [softirq-rcu/1]
25 ? S< 0:00 [desched/1]
26 ? S< 0:00 [events/0]
27 ? S< 0:00 [events/1]
28 ? S< 0:00 [khelper]
29 ? S 0:00 [RCU Prio Booste]
30 ? S< 0:00 [kthread]
63 ? S< 0:00 [kblockd/0]
64 ? S< 0:00 [kblockd/1]
65 ? S< 0:00 [kacpid]
66 ? S< 0:00 [IRQ-9]
157 ? S< 0:00 [cqueue/0]
158 ? S< 0:00 [cqueue/1]
159 ? S< 0:00 [ksuspend_usbd]
162 ? S< 0:00 [khubd]
164 ? S< 0:00 [kseriod]
189 ? S 0:00 [pdflush]
190 ? S 0:00 [pdflush]
191 ? S< 0:00 [kswapd0]
192 ? S< 0:00 [flush_filesd/0]
193 ? S< 0:00 [flush_filesd/1]
194 ? S< 0:00 [aio/0]
195 ? S< 0:00 [aio/1]
285 ? S< 0:00 [IRQ-8]
317 ? S< 0:00 [IRQ-14]
332 ? S< 0:00 [IRQ-12]
333 ? S< 0:00 [IRQ-1]
339 ? S< 0:00 [kpsmoused]
343 ? S 0:00 [kirqd]
351 ? S< 0:00 [IRQ-20]
352 ? S< 0:00 [IRQ-19]
353 ? S< 0:00 [IRQ-18]
354 ? S< 0:00 [IRQ-16]
376 ? S< 0:00 [ata/0]
377 ? S< 0:00 [ata/1]
378 ? S< 0:00 [ata_aux]
382 ? S< 0:00 [scsi_eh_0]
383 ? S< 0:00 [scsi_eh_1]
384 ? S< 0:00 [kjournald]
412 ? S< 0:00 [kauditd]
449 ? S<s 0:00 /sbin/udevd -d
1153 ? S< 0:00 [hda_codec]
1552 ? S< 0:00 [kmpathd/0]
1553 ? S< 0:00 [kmpathd/1]
1561 ? S< 0:00 [kmirrord]
1582 ? S< 0:00 [kjournald]
................
.................
................

Wanted to ask, is there any (performance) problem with multi-sessions
(on the same box) with these kernels? I read some time back about Real
Time sound (exact terminology I don't remember), how to test this
using Intel hda? Any pointers?


Thanks,

Akula2

2007-02-07 12:32:04

by Ingo Molnar

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm


* Arjan van de Ven <[email protected]> wrote:

> patch below has 2 tweaks
> 1) the new RCU feature wakes up once per second, make sure this is using
> the new round_jiffies() infrastructure
> 2) the slab background reap code is waking up once per 2 seconds per
> cpu. The patch makes this more dynamic; if no work was done (no activity
> on the cpu happened) then this is made to be 4 seconds

thanks, i've applied both tweaks.

Ingo

2007-02-27 17:39:13

by K.R. Foley

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

Ingo Molnar wrote:
> i have released the v2.6.20-rt1 kernel, which can be downloaded from the
> usual place:
>

I have a couple of questions regarding priorities of the softirqs, IRQ
handlers, etc.

With some exceptions, back in 2.6.18 and prior patches the IRQ threads
were prioritized between 50 and 25 and the most of the softirqs were
prioritized at 1? In newer patches it looks like they are all
prioritized at 50?

I was just curious what went into making these choices? I am just trying
to better understand these decisions.

Thanks,

--
kr

2007-02-28 08:18:29

by Ingo Molnar

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm


* K.R. Foley <[email protected]> wrote:

> Ingo Molnar wrote:
> > i have released the v2.6.20-rt1 kernel, which can be downloaded from the
> > usual place:
> >
>
> I have a couple of questions regarding priorities of the softirqs, IRQ
> handlers, etc.
>
> With some exceptions, back in 2.6.18 and prior patches the IRQ threads
> were prioritized between 50 and 25 and the most of the softirqs were
> prioritized at 1? In newer patches it looks like they are all
> prioritized at 50?
>
> I was just curious what went into making these choices? I am just
> trying to better understand these decisions.

The basically random order-of-request_irq() prioritization was causing
problems (it worked for some but didnt work for others), so i got rid of
trying to auto-guess some priority order. Also, now that we've got
tools/scripts like set_kthread_prio and rtprio it seemed more consistent
to just not attempt to prioritize interrupts and softirqs at all, but to
keep them all 'in the middle' of the RT priority range.

Ingo

2007-02-28 10:16:09

by K.R. Foley

[permalink] [raw]
Subject: Re: v2.6.20-rt1, yum/rpm

Ingo Molnar wrote:
> * K.R. Foley <[email protected]> wrote:
>
>> Ingo Molnar wrote:
>>> i have released the v2.6.20-rt1 kernel, which can be downloaded from the
>>> usual place:
>>>
>> I have a couple of questions regarding priorities of the softirqs, IRQ
>> handlers, etc.
>>
>> With some exceptions, back in 2.6.18 and prior patches the IRQ threads
>> were prioritized between 50 and 25 and the most of the softirqs were
>> prioritized at 1? In newer patches it looks like they are all
>> prioritized at 50?
>>
>> I was just curious what went into making these choices? I am just
>> trying to better understand these decisions.
>
> The basically random order-of-request_irq() prioritization was causing
> problems (it worked for some but didnt work for others), so i got rid of
> trying to auto-guess some priority order. Also, now that we've got
> tools/scripts like set_kthread_prio and rtprio it seemed more consistent
> to just not attempt to prioritize interrupts and softirqs at all, but to
> keep them all 'in the middle' of the RT priority range.
>
> Ingo
>

Thanks.

--
kr