* [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 0:24 ` [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U0 Ingo Molnar
@ 2004-10-14 14:31 ` Ingo Molnar
2004-10-14 17:34 ` Adam Heath
` (6 more replies)
0 siblings, 7 replies; 28+ messages in thread
From: Ingo Molnar @ 2004-10-14 14:31 UTC (permalink / raw)
To: linux-kernel
Cc: Lee Revell, Rui Nuno Capela, Mark_H_Johnson, K.R. Foley,
Daniel Walker, Bill Huey, Andrew Morton, Adam Heath,
Lorenzo Allegrucci, Dipankar Sarma
i have released the -U1 PREEMPT_REALTIME patch:
http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-U1
this is a strict bugfixes-only release. With -U1 i cannot reproduce any
of the bugs on my testsystems anymore, but take care nevertheless, this
is still experimental code.
Changes since -U0:
- bugfix: fixed the highmem related crash reported by Adam Heath and i
think this could also fix the crash reported by Mark H Johnson.
- bugfix: fixed a number of networking related soft-lockups, caused by
a deadlock scenarios in the ipv4, netfilter and net-xmit locking
code. This could fix the lockup reported by Lorenzo Allegrucci.
- bugfix: enable interrupts in the int3 handler - gdb will otherwise
trigger a kernel debug message.
- cleanup: reworked the RCU API wrappers, we now have the following
variants:
rcu_read_[un]lock_spin(&spinlock)
rcu_read_[un]lock_bh_spin(&spinlock)
rcu_read_[un]lock_sem(&semaphore)
this change was necessary for the network locking fixes.
- debugging helper: SysRq-T will now print the stacktrace of currently
running tasks too. (They might be a bit unreliable occasionally but
very useful to debug deadlocks.)
- configurability fix: disabled the /proc/kernel/softirq_preemption and
hardirq_preemption runtime flags (and the softirq-preempt= and
hardirq-preempt= boot flags) if PREEMPT_REALTIME is enabled - in the
fully preemptible model these must always be on.
there are no known bugs at this moment, so please re-report any issues
you might still encounter.
to create a -U1 tree from scratch the patching order is:
http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.8.tar.bz2
+ http://kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.9-rc4.bz2
+ http://kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.9-rc4/2.6.9-rc4-mm1/2.6.9-rc4-mm1.bz2
+ http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-U1
Ingo
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
@ 2004-10-14 17:06 Mark_H_Johnson
2004-10-14 18:24 ` Ingo Molnar
2004-10-14 20:26 ` Bill Huey
0 siblings, 2 replies; 28+ messages in thread
From: Mark_H_Johnson @ 2004-10-14 17:06 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Lee Revell, Rui Nuno Capela, K.R. Foley,
Daniel Walker, Bill Huey, Andrew Morton, Adam Heath,
Lorenzo Allegrucci, Dipankar Sarma
[-- Attachment #1: Type: text/plain, Size: 1086 bytes --]
>i have released the -U1 PREEMPT_REALTIME patch:
>
>
http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-U1
Not sure if I can bring this up to multi user yet. Some initial testing
in single user mode indicates problems when I turn on networking. See
the attached messages from /var/log/messages to see the kinds of problems
I am having. The key ones appear after doing
./S10network start
as part of single stepping the init sequence. I stopped at this point
to make sure I had a good record of the messages.
I also managed to get the machine stuck with
/sbin/reboot
not sure why.
And yes, the .config is basically the same as in all previous tests.
(no changes since my first tests with -T4...)
A side question - if
CONFIG_PREEMPT_REALTIME=y
you say that IRQ's must be threaded, is this going to be "permanent" and
if so - why?
I would prefer to not use threaded IRQ's if possible due to lower CPU
overhead [see previous email describing results...] and some problems
I see with setting priorities on those IRQ's (relative to real time tasks).
--Mark
[-- Attachment #2: VPU1.message --]
[-- Type: application/octet-stream, Size: 28163 bytes --]
Oct 14 11:43:45 localhost syslogd 1.4.1: restart.
Oct 14 11:43:45 localhost syslog: syslogd startup succeeded
Oct 14 11:43:45 localhost kernel: klogd 1.4.1, log source = /proc/kmsg started.
Oct 14 11:43:45 localhost syslog: klogd startup succeeded
Oct 14 11:43:45 localhost kernel: Linux version 2.6.9-rc4-mm1-VP-U1 (root@dws77) (gcc version 3.3.3 20040412 (Red Hat Linux 3.3.3-7)) #1 SMP Thu Oct 14 10:45:43 CDT 2004
Oct 14 11:43:45 localhost kernel: BIOS-provided physical RAM map:
Oct 14 11:43:45 localhost kernel: BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
Oct 14 11:43:45 localhost kernel: BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
Oct 14 11:43:45 localhost kernel: BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
Oct 14 11:43:45 localhost kernel: BIOS-e820: 0000000000100000 - 000000001fff0000 (usable)
Oct 14 11:43:45 localhost kernel: BIOS-e820: 000000001fff0000 - 000000001fff8000 (ACPI data)
Oct 14 11:43:45 localhost kernel: BIOS-e820: 000000001fff8000 - 0000000020000000 (ACPI NVS)
Oct 14 11:43:45 localhost kernel: BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
Oct 14 11:43:45 localhost kernel: BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
Oct 14 11:43:45 localhost kernel: BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
Oct 14 11:43:45 localhost kernel: 0MB HIGHMEM available.
Oct 14 11:43:45 localhost kernel: 511MB LOWMEM available.
Oct 14 11:43:45 localhost kernel: found SMP MP-table at 000fb170
Oct 14 11:43:45 localhost kernel: DMI 2.3 present.
Oct 14 11:43:45 localhost kernel: Using APIC driver default
Oct 14 11:43:45 localhost kernel: ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
Oct 14 11:43:45 localhost kernel: Processor #0 6:8 APIC version 17
Oct 14 11:43:45 localhost kernel: ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
Oct 14 11:43:45 localhost kernel: Processor #1 6:8 APIC version 17
Oct 14 11:43:45 localhost kernel: Using ACPI for processor (LAPIC) configuration information
Oct 14 11:43:45 localhost kernel: Intel MultiProcessor Specification v1.1
Oct 14 11:43:45 localhost kernel: Virtual Wire compatibility mode.
Oct 14 11:43:45 localhost kernel: OEM ID: VIA Product ID: VT3075 APIC at: 0xFEE00000
Oct 14 11:43:45 localhost kernel: I/O APIC #2 Version 17 at 0xFEC00000.
Oct 14 11:43:45 localhost kernel: Enabling APIC mode: Flat. Using 1 I/O APICs
Oct 14 11:43:45 localhost kernel: Processors: 2
Oct 14 11:43:45 localhost kernel: Built 1 zonelists
Oct 14 11:43:45 localhost kernel: Initializing CPU#0
Oct 14 11:43:45 localhost kernel: Kernel command line: ro root=LABEL=/ nmi_watchdog=1 single
Oct 14 11:43:45 localhost kernel: (swapper/0): new 230766 us maximum-latency critical section.
Oct 14 11:43:45 localhost kernel: => started at: <start_kernel+0x48/0x1e0>
Oct 14 11:43:45 localhost kernel: => ended at: <cond_resched+0x25/0x80>
Oct 14 11:43:45 localhost kernel: [<c013a1e8>] touch_preempt_timing+0x48/0x50
Oct 14 11:43:45 localhost kernel: [<c013a102>] check_preempt_timing+0x162/0x200
Oct 14 11:43:45 localhost kernel: [<c03159f5>] cond_resched+0x25/0x80
Oct 14 11:43:45 localhost kernel: [<c013a1e8>] touch_preempt_timing+0x48/0x50
Oct 14 11:43:45 localhost kernel: [<c03159f5>] cond_resched+0x25/0x80
Oct 14 11:43:45 localhost kernel: [<c03159f5>] cond_resched+0x25/0x80
Oct 14 11:43:45 localhost kernel: [<c013b69d>] register_cpu_notifier+0x2d/0x80
Oct 14 11:43:45 localhost kernel: [<c03c7977>] rcu_init+0x97/0xa0
Oct 14 11:43:45 localhost kernel: [<c03b696c>] start_kernel+0xbc/0x1e0
Oct 14 11:43:45 localhost kernel: [<c03b6440>] unknown_bootoption+0x0/0x180
Oct 14 11:43:45 localhost kernel: PID hash table entries: 2048 (order: 11, 32768 bytes)
Oct 14 11:43:45 localhost kernel: Detected 864.193 MHz processor.
Oct 14 11:43:45 localhost kernel: Using tsc for high-res timesource
Oct 14 11:43:45 localhost kernel: (swapper/0): new 335856 us maximum-latency critical section.
Oct 14 11:43:45 localhost kernel: => started at: <cond_resched+0x25/0x80>
Oct 14 11:43:45 localhost kernel: => ended at: <cond_resched+0x25/0x80>
Oct 14 11:43:45 localhost kernel: [<c013a1e8>] touch_preempt_timing+0x48/0x50
Oct 14 11:43:45 localhost kernel: [<c013a102>] check_preempt_timing+0x162/0x200
Oct 14 11:43:45 localhost kernel: [<c03159f5>] cond_resched+0x25/0x80
Oct 14 11:43:45 localhost kernel: [<c013a1e8>] touch_preempt_timing+0x48/0x50
Oct 14 11:43:45 localhost kernel: [<c03159f5>] cond_resched+0x25/0x80
Oct 14 11:43:45 localhost kernel: [<c03159f5>] cond_resched+0x25/0x80
Oct 14 11:43:45 localhost kernel: [<c0138df1>] _mutex_lock+0x31/0x70
Oct 14 11:43:45 localhost kernel: [<c0138e86>] _mutex_lock_irqsave+0x16/0x20
Oct 14 11:43:45 localhost kernel: [<c0202117>] tty_register_ldisc+0x37/0xc0
Oct 14 11:43:45 localhost kernel: [<c03d0248>] console_init+0x28/0x50
Oct 14 11:43:45 localhost kernel: [<c03b698a>] start_kernel+0xda/0x1e0
Oct 14 11:43:45 localhost kernel: [<c03b6440>] unknown_bootoption+0x0/0x180
Oct 14 11:43:45 localhost kernel: Console: colour VGA+ 80x25
Oct 14 11:43:45 localhost kernel: Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Oct 14 11:43:45 localhost kernel: Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Oct 14 11:43:45 localhost kernel: Memory: 513460k/524224k available (2142k kernel code, 10164k reserved, 617k data, 292k init, 0k highmem)
Oct 14 11:43:45 localhost kernel: Checking if this processor honours the WP bit even in supervisor mode... Ok.
Oct 14 11:43:45 localhost kernel: Security Scaffold v1.0.0 initialized
Oct 14 11:43:45 localhost kernel: SELinux: Initializing.
Oct 14 11:43:45 localhost kernel: SELinux: Starting in permissive mode
Oct 14 11:43:45 localhost kernel: There is already a security framework initialized, register_security failed.
Oct 14 11:43:45 localhost kernel: selinux_register_security: Registering secondary module capability
Oct 14 11:43:45 localhost kernel: Capability LSM initialized as secondary
Oct 14 11:43:45 localhost kernel: Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Oct 14 11:43:45 localhost kernel: CPU: L1 I cache: 16K, L1 D cache: 16K
Oct 14 11:43:45 localhost kernel: CPU: L2 cache: 256K
Oct 14 11:43:45 localhost kernel: Intel machine check architecture supported.
Oct 14 11:43:45 localhost kernel: Intel machine check reporting enabled on CPU#0.
Oct 14 11:43:45 localhost kernel: Enabling fast FPU save and restore... done.
Oct 14 11:43:45 localhost kernel: Enabling unmasked SIMD FPU exception support... done.
Oct 14 11:43:45 localhost kernel: Checking 'hlt' instruction... OK.
Oct 14 11:43:45 localhost kernel: CPU0: Intel Pentium III (Coppermine) stepping 06
Oct 14 11:43:45 localhost kernel: per-CPU timeslice cutoff: 730.77 usecs.
Oct 14 11:43:45 localhost kernel: task migration cache decay timeout: 1 msecs.
Oct 14 11:43:45 localhost kernel: Booting processor 1/1 eip 2000
Oct 14 11:43:45 localhost kernel: Initializing CPU#1
Oct 14 11:43:46 localhost kernel: CPU: L1 I cache: 16K, L1 D cache: 16K
Oct 14 11:43:46 localhost kernel: CPU: L2 cache: 256K
Oct 14 11:43:46 localhost kernel: Intel machine check architecture supported.
Oct 14 11:43:46 localhost kernel: Intel machine check reporting enabled on CPU#1.
Oct 14 11:43:46 localhost kernel: CPU1: Intel Pentium III (Coppermine) stepping 06
Oct 14 11:43:46 localhost kernel: Total of 2 processors activated (3395.58 BogoMIPS).
Oct 14 11:43:46 localhost kernel: ENABLING IO-APIC IRQs
Oct 14 11:43:46 localhost kernel: ..TIMER: vector=0x31 pin1=2 pin2=0
Oct 14 11:43:46 localhost kernel: testing NMI watchdog ... OK.
Oct 14 11:43:46 localhost kernel: checking TSC synchronization across 2 CPUs: passed.
Oct 14 11:43:46 localhost kernel: ksoftirqd started up.
Oct 14 11:43:46 localhost kernel: Brought up 2 CPUs
Oct 14 11:43:46 localhost kernel: ksoftirqd started up.
Oct 14 11:43:46 localhost kernel: checking if image is initramfs...it isn't (no cpio magic); looks like an initrd
Oct 14 11:43:46 localhost kernel: Freeing initrd memory: 205k freed
Oct 14 11:43:46 localhost kernel: NET: Registered protocol family 16
Oct 14 11:43:46 localhost kernel: PCI: PCI BIOS revision 2.10 entry at 0xfdb01, last bus=1
Oct 14 11:43:46 localhost kernel: PCI: Using configuration type 1
Oct 14 11:43:46 localhost kernel: mtrr: v2.0 (20020519)
Oct 14 11:43:46 localhost kernel: mtrr: your CPUs had inconsistent variable MTRR settings
Oct 14 11:43:46 localhost kernel: mtrr: probably your BIOS does not setup all CPUs.
Oct 14 11:43:46 localhost kernel: mtrr: corrected configuration.
Oct 14 11:43:46 localhost kernel: Linux Plug and Play Support v0.97 (c) Adam Belay
Oct 14 11:43:46 localhost kernel: usbcore: registered new driver usbfs
Oct 14 11:43:46 localhost kernel: usbcore: registered new driver hub
Oct 14 11:43:46 localhost kernel: PCI: Probing PCI hardware
Oct 14 11:43:46 localhost kernel: PCI: Probing PCI hardware (bus 00)
Oct 14 11:43:46 localhost kernel: PCI: Using IRQ router VIA [1106/0686] at 0000:00:07.0
Oct 14 11:43:46 localhost kernel: audit: initializing netlink socket (disabled)
Oct 14 11:43:46 localhost kernel: audit(1097772163.451:0): initialized
Oct 14 11:43:46 localhost kernel: Total HugeTLB memory allocated, 0
Oct 14 11:43:46 localhost kernel: VFS: Disk quotas dquot_6.5.1
Oct 14 11:43:46 localhost kernel: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
Oct 14 11:43:46 localhost kernel: SELinux: Registering netfilter hooks
Oct 14 11:43:46 localhost kernel: Initializing Cryptographic API
Oct 14 11:43:46 localhost kernel: PCI: Enabling Via external APIC routing
Oct 14 11:43:46 localhost kernel: pci_hotplug: PCI Hot Plug PCI Core version: 0.5
Oct 14 11:43:46 localhost kernel: vesafb: probe of vesafb0 failed with error -6
Oct 14 11:43:46 localhost kernel: isapnp: Scanning for PnP cards...
Oct 14 11:43:46 localhost kernel: isapnp: No Plug & Play device found
Oct 14 11:43:46 localhost kernel: Real Time Clock Driver v1.12
Oct 14 11:43:46 localhost kernel: Linux agpgart interface v0.100 (c) Dave Jones
Oct 14 11:43:46 localhost kernel: agpgart: Detected VIA Apollo Pro 133 chipset
Oct 14 11:43:46 localhost kernel: agpgart: Maximum main memory to use for agp memory: 439M
Oct 14 11:43:46 localhost kernel: agpgart: AGP aperture is 128M @ 0xe0000000
Oct 14 11:43:46 localhost kernel: serio: i8042 AUX port at 0x60,0x64 irq 12
Oct 14 11:43:46 localhost kernel: serio: i8042 KBD port at 0x60,0x64 irq 1
Oct 14 11:43:46 localhost kernel: Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing enabled
Oct 14 11:43:46 localhost kernel: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
Oct 14 11:43:46 localhost kernel: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
Oct 14 11:43:46 localhost kernel: io scheduler noop registered
Oct 14 11:43:46 localhost kernel: io scheduler anticipatory registered
Oct 14 11:43:46 localhost kernel: io scheduler deadline registered
Oct 14 11:43:46 localhost kernel: io scheduler cfq registered
Oct 14 11:43:46 localhost kernel: RAMDISK driver initialized: 16 RAM disks of 16384K size 1024 blocksize
Oct 14 11:43:46 localhost kernel: Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
Oct 14 11:43:46 localhost kernel: ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
Oct 14 11:43:46 localhost kernel: VP_IDE: IDE controller at PCI slot 0000:00:07.1
Oct 14 11:43:46 localhost kernel: VP_IDE: chipset revision 16
Oct 14 11:43:46 localhost kernel: VP_IDE: not 100%% native mode: will probe irqs later
Oct 14 11:43:46 localhost kernel: VP_IDE: VIA vt82c686a (rev 22) IDE UDMA66 controller on pci0000:00:07.1
Oct 14 11:43:46 localhost kernel: ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:pio
Oct 14 11:43:46 localhost kernel: ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:pio, hdd:DMA
Oct 14 11:43:46 localhost kernel: hda: WDC WD300BB-00AUA1, ATA DISK drive
Oct 14 11:43:46 localhost kernel: elevator: using anticipatory as default io scheduler
Oct 14 11:43:46 localhost kernel: ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Oct 14 11:43:46 localhost kernel: hdd: CD-ROM Drive/F5E, ATAPI CD/DVD-ROM drive
Oct 14 11:43:46 localhost kernel: ide1 at 0x170-0x177,0x376 on irq 15
Oct 14 11:43:46 localhost kernel: hda: max request size: 128KiB
Oct 14 11:43:46 localhost kernel: hda: 58633344 sectors (30020 MB) w/2048KiB Cache, CHS=58168/16/63, UDMA(66)
Oct 14 11:43:46 localhost kernel: hda: hda1 hda2 hda3 hda4 < hda5 hda6 >
Oct 14 11:43:46 localhost kernel: hdd: ATAPI 52X CD-ROM drive, 128kB Cache, UDMA(33)
Oct 14 11:43:46 localhost kernel: Uniform CD-ROM driver Revision: 3.20
Oct 14 11:43:46 localhost kernel: ide-floppy driver 0.99.newide
Oct 14 11:43:46 localhost kernel: usbcore: registered new driver hiddev
Oct 14 11:43:46 localhost kernel: usbcore: registered new driver usbhid
Oct 14 11:43:46 localhost kernel: drivers/usb/input/hid-core.c: v2.0:USB HID core driver
Oct 14 11:43:46 localhost kernel: mice: PS/2 mouse device common for all mice
Oct 14 11:43:46 localhost kernel: input: AT Translated Set 2 keyboard on isa0060/serio0
Oct 14 11:43:46 localhost kernel: md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27
Oct 14 11:43:46 localhost kernel: NET: Registered protocol family 2
Oct 14 11:43:46 localhost kernel: IP: routing cache hash table of 512 buckets, 20Kbytes
Oct 14 11:43:46 localhost kernel: TCP: Hash tables configured (established 4096 bind 6553)
Oct 14 11:43:46 localhost kernel: Initializing IPsec netlink socket
Oct 14 11:43:46 localhost kernel: NET: Registered protocol family 1
Oct 14 11:43:46 localhost kernel: NET: Registered protocol family 17
Oct 14 11:43:46 localhost kernel: Starting balanced_irq
Oct 14 11:43:46 localhost kernel: md: Autodetecting RAID arrays.
Oct 14 11:43:46 localhost kernel: md: autorun ...
Oct 14 11:43:46 localhost kernel: md: ... autorun DONE.
Oct 14 11:43:46 localhost kernel: RAMDISK: Compressed image found at block 0
Oct 14 11:43:46 localhost kernel: VFS: Mounted root (ext2 filesystem).
Oct 14 11:43:46 localhost kernel: kjournald starting. Commit interval 5 seconds
Oct 14 11:43:46 localhost kernel: EXT3-fs: mounted filesystem with ordered data mode.
Oct 14 11:43:46 localhost kernel: Freeing unused kernel memory: 292k freed
Oct 14 11:43:46 localhost kernel: USB Universal Host Controller Interface driver v2.2
Oct 14 11:43:46 localhost kernel: uhci_hcd 0000:00:07.2: UHCI Host Controller
Oct 14 11:43:46 localhost kernel: uhci_hcd 0000:00:07.2: irq 10, io base 0xd000
Oct 14 11:43:46 localhost kernel: uhci_hcd 0000:00:07.2: new USB bus registered, assigned bus number 1
Oct 14 11:43:46 localhost kernel: hub 1-0:1.0: USB hub found
Oct 14 11:43:46 localhost kernel: hub 1-0:1.0: 2 ports detected
Oct 14 11:43:46 localhost kernel: uhci_hcd 0000:00:07.3: UHCI Host Controller
Oct 14 11:43:46 localhost kernel: uhci_hcd 0000:00:07.3: irq 10, io base 0xd400
Oct 14 11:43:46 localhost kernel: uhci_hcd 0000:00:07.3: new USB bus registered, assigned bus number 2
Oct 14 11:43:46 localhost kernel: hub 2-0:1.0: USB hub found
Oct 14 11:43:46 localhost kernel: hub 2-0:1.0: 2 ports detected
Oct 14 11:43:46 localhost kernel: usb 1-2: new low speed USB device using address 2
Oct 14 11:43:46 localhost kernel: input: USB HID v1.00 Mouse [1241:1111] on usb-0000:00:07.2-2
Oct 14 11:43:46 localhost kernel: EXT3 FS on hda3, internal journal
Oct 14 11:43:46 localhost kernel: device-mapper: 4.1.0-ioctl (2003-12-10) initialised: dm@uk.sistina.com
Oct 14 11:43:46 localhost kernel: cdrom: open failed.
Oct 14 11:43:46 localhost kernel: Adding 1052216k swap on /dev/hda5. Priority:-1 extents:1
Oct 14 11:43:46 localhost kernel: Adding 1052216k swap on /dev/hda6. Priority:-2 extents:1
Oct 14 11:43:46 localhost kernel: kjournald starting. Commit interval 5 seconds
Oct 14 11:43:46 localhost kernel: EXT3 FS on hda1, internal journal
Oct 14 11:43:46 localhost kernel: EXT3-fs: mounted filesystem with ordered data mode.
Oct 14 11:43:46 localhost kernel: kjournald starting. Commit interval 5 seconds
Oct 14 11:43:46 localhost kernel: EXT3 FS on hda2, internal journal
Oct 14 11:43:46 localhost kernel: EXT3-fs: mounted filesystem with ordered data mode.
Oct 14 11:44:15 localhost sysctl: net.ipv4.ip_forward = 0
Oct 14 11:44:15 localhost sysctl: net.ipv4.conf.default.rp_filter = 1
Oct 14 11:44:15 localhost sysctl: kernel.sysrq = 1
Oct 14 11:44:15 localhost sysctl: kernel.core_uses_pid = 1
Oct 14 11:44:15 localhost sysctl: net.core.rmem_default = 109568
Oct 14 11:44:15 localhost sysctl: net.core.rmem_max = 109568
Oct 14 11:44:15 localhost sysctl: net.core.wmem_default = 109568
Oct 14 11:44:15 localhost sysctl: net.core.wmem_max = 109568
Oct 14 11:44:15 localhost sysctl: net.ipv4.tcp_fin_timeout = 60
Oct 14 11:44:15 localhost sysctl: net.ipv4.tcp_keepalive_time = 7200
Oct 14 11:44:15 localhost sysctl: net.ipv4.tcp_keepalive_probes = 9
Oct 14 11:44:15 localhost sysctl: net.ipv4.tcp_syn_retries = 5
Oct 14 11:44:15 localhost sysctl: net.ipv4.tcp_max_syn_backlog = 1024
Oct 14 11:44:15 localhost sysctl: net.ipv4.tcp_retries1 = 3
Oct 14 11:44:15 localhost sysctl: net.ipv4.tcp_retries2 = 15
Oct 14 11:44:15 localhost sysctl: net.ipv4.tcp_syncookies = 0
Oct 14 11:44:15 localhost sysctl: net.ipv4.tcp_retrans_collapse = 1
Oct 14 11:44:15 localhost sysctl: net.ipv4.tcp_sack = 1
Oct 14 11:44:15 localhost sysctl: net.ipv4.tcp_timestamps = 1
Oct 14 11:44:15 localhost sysctl: net.ipv4.tcp_window_scaling = 1
Oct 14 11:44:15 localhost sysctl: net.ipv4.icmp_ignore_bogus_error_responses = 0
Oct 14 11:44:15 localhost sysctl: net.ipv4.icmp_echo_ignore_all = 0
Oct 14 11:44:15 localhost sysctl: net.ipv4.icmp_echo_ignore_broadcasts = 0
Oct 14 11:44:15 localhost sysctl: net.ipv4.ip_default_ttl = 64
Oct 14 11:44:15 localhost sysctl: net.ipv4.ipfrag_time = 30
Oct 14 11:44:15 localhost sysctl: net.ipv4.conf.all.rp_filter = 0
Oct 14 11:44:15 localhost sysctl: net.ipv4.ip_no_pmtu_disc = 0
Oct 14 11:44:15 localhost sysctl: net.unix.max_dgram_qlen = 10
Oct 14 11:44:15 localhost sysctl: fs.file-max = 50834
Oct 14 11:44:15 localhost sysctl: vm.overcommit_memory = 0
Oct 14 11:44:15 localhost sysctl: vm.page-cluster = 3
Oct 14 11:44:15 localhost sysctl: kernel.ctrl-alt-del = 0
Oct 14 11:44:15 localhost sysctl: kernel.panic = 0
Oct 14 11:44:15 localhost sysctl: kernel.acct = 4 2 30
Oct 14 11:44:15 localhost sysctl: kernel.printk = 6
Oct 14 11:44:15 localhost sysctl: kernel.shmall = 2097152
Oct 14 11:44:15 localhost sysctl: kernel.shmmax = 33554432
Oct 14 11:44:15 localhost sysctl: dev.raid.speed_limit_min = 1000
Oct 14 11:44:15 localhost sysctl: dev.raid.speed_limit_max = 200000
Oct 14 11:44:15 localhost network: Setting network parameters: succeeded
Oct 14 11:44:16 localhost kernel: Debug: sleeping function called from invalid context iptables(1384) at kernel/mutex.c:25
Oct 14 11:44:16 localhost kernel: in_atomic():1 [00000001], irqs_disabled():0
Oct 14 11:44:16 localhost kernel: [<c011f26a>] __might_sleep+0xca/0xe0
Oct 14 11:44:16 localhost kernel: [<c0138de9>] _mutex_lock+0x29/0x70
Oct 14 11:44:16 localhost kernel: [<c0138e86>] _mutex_lock_irqsave+0x16/0x20
Oct 14 11:44:16 localhost kernel: [<c01c4f4e>] avc_has_perm_noaudit+0x2e/0x1d0
Oct 14 11:44:16 localhost kernel: [<c013994d>] __mcount+0x1d/0x30
Oct 14 11:44:16 localhost kernel: [<c01c5104>] avc_has_perm+0x14/0x80
Oct 14 11:44:16 localhost kernel: [<c01c65fb>] task_has_capability+0x6b/0x80
Oct 14 11:44:16 localhost kernel: [<c0114b30>] mcount+0x14/0x18
Oct 14 11:44:16 localhost kernel: [<c01c5133>] avc_has_perm+0x43/0x80
Oct 14 11:44:16 localhost kernel: [<c013994d>] __mcount+0x1d/0x30
Oct 14 11:44:16 localhost kernel: [<c01c65a4>] task_has_capability+0x14/0x80
Oct 14 11:44:16 localhost kernel: [<c01c20c9>] capable+0x29/0x50
Oct 14 11:44:16 localhost kernel: [<c0114b30>] mcount+0x14/0x18
Oct 14 11:44:16 localhost kernel: [<c01c65fb>] task_has_capability+0x6b/0x80
Oct 14 11:44:16 localhost kernel: [<c01c6f16>] selinux_capable+0x26/0x50
Oct 14 11:44:16 localhost kernel: [<c01c20c9>] capable+0x29/0x50
Oct 14 11:44:16 localhost kernel: [<c02f50ce>] inet_create+0x9e/0x2f0
Oct 14 11:44:16 localhost kernel: [<c02a28f5>] __sock_create+0x135/0x350
Oct 14 11:44:16 localhost kernel: [<c02a2b1b>] sock_create+0xb/0x40
Oct 14 11:44:16 localhost kernel: [<c02a2bbe>] sys_socket+0x2e/0x60
Oct 14 11:44:16 localhost kernel: [<c02a2b41>] sock_create+0x31/0x40
Oct 14 11:44:16 localhost kernel: [<c02a2bbe>] sys_socket+0x2e/0x60
Oct 14 11:44:16 localhost kernel: [<c02a3bf9>] sys_socketcall+0x69/0x250
Oct 14 11:44:16 localhost kernel: [<c0118690>] do_page_fault+0x0/0x748
Oct 14 11:44:16 localhost kernel: [<c0107b09>] sysenter_past_esp+0x52/0x71
Oct 14 11:44:16 localhost kernel: scheduling while atomic: iptables/0x04000001/1384
Oct 14 11:44:16 localhost kernel: caller is cond_resched+0x61/0x80
Oct 14 11:44:16 localhost kernel: [<c031551c>] schedule+0x7ec/0x830
Oct 14 11:44:16 localhost kernel: [<c0315a31>] cond_resched+0x61/0x80
Oct 14 11:44:16 localhost kernel: [<c013a132>] check_preempt_timing+0x192/0x200
Oct 14 11:44:16 localhost kernel: [<c013a1e8>] touch_preempt_timing+0x48/0x50
Oct 14 11:44:16 localhost kernel: [<c03159f5>] cond_resched+0x25/0x80
Oct 14 11:44:16 localhost kernel: [<c0315a31>] cond_resched+0x61/0x80
Oct 14 11:44:16 localhost kernel: [<c0138df1>] _mutex_lock+0x31/0x70
Oct 14 11:44:16 localhost kernel: [<c0138e86>] _mutex_lock_irqsave+0x16/0x20
Oct 14 11:44:16 localhost kernel: [<c01c4f4e>] avc_has_perm_noaudit+0x2e/0x1d0
Oct 14 11:44:16 localhost kernel: [<c013994d>] __mcount+0x1d/0x30
Oct 14 11:44:16 localhost kernel: [<c01c5104>] avc_has_perm+0x14/0x80
Oct 14 11:44:16 localhost kernel: [<c01c65fb>] task_has_capability+0x6b/0x80
Oct 14 11:44:16 localhost kernel: [<c0114b30>] mcount+0x14/0x18
Oct 14 11:44:16 localhost kernel: [<c01c5133>] avc_has_perm+0x43/0x80
Oct 14 11:44:16 localhost kernel: [<c013994d>] __mcount+0x1d/0x30
Oct 14 11:44:16 localhost kernel: [<c01c65a4>] task_has_capability+0x14/0x80
Oct 14 11:44:16 localhost kernel: [<c01c20c9>] capable+0x29/0x50
Oct 14 11:44:17 localhost kernel: [<c0114b30>] mcount+0x14/0x18
Oct 14 11:44:17 localhost kernel: [<c01c65fb>] task_has_capability+0x6b/0x80
Oct 14 11:44:17 localhost kernel: [<c01c6f16>] selinux_capable+0x26/0x50
Oct 14 11:44:17 localhost kernel: [<c01c20c9>] capable+0x29/0x50
Oct 14 11:44:17 localhost kernel: [<c02f50ce>] inet_create+0x9e/0x2f0
Oct 14 11:44:17 localhost kernel: [<c02a28f5>] __sock_create+0x135/0x350
Oct 14 11:44:17 localhost kernel: [<c02a2b1b>] sock_create+0xb/0x40
Oct 14 11:44:17 localhost kernel: [<c02a2bbe>] sys_socket+0x2e/0x60
Oct 14 11:44:17 localhost kernel: [<c02a2b41>] sock_create+0x31/0x40
Oct 14 11:44:17 localhost kernel: [<c02a2bbe>] sys_socket+0x2e/0x60
Oct 14 11:44:17 localhost kernel: [<c02a3bf9>] sys_socketcall+0x69/0x250
Oct 14 11:44:17 localhost kernel: [<c0118690>] do_page_fault+0x0/0x748
Oct 14 11:44:17 localhost kernel: [<c0107b09>] sysenter_past_esp+0x52/0x71
Oct 14 11:44:17 localhost kernel: ip_tables: (C) 2000-2002 Netfilter core team
Oct 14 11:44:17 localhost network: Bringing up loopback interface: succeeded
Oct 14 11:44:17 localhost kernel: 8139too Fast Ethernet driver 0.9.27
Oct 14 11:44:17 localhost kernel: eth0: RealTek RTL8139 at 0xdc00, 00:50:bf:39:11:fc, IRQ 11
Oct 14 11:44:17 localhost kernel: Debug: sleeping function called from invalid context iptables(1505) at kernel/mutex.c:25
Oct 14 11:44:17 localhost kernel: in_atomic():1 [00000001], irqs_disabled():0
Oct 14 11:44:17 localhost kernel: [<c011f26a>] __might_sleep+0xca/0xe0
Oct 14 11:44:17 localhost kernel: [<c0138de9>] _mutex_lock+0x29/0x70
Oct 14 11:44:17 localhost kernel: [<c0138e86>] _mutex_lock_irqsave+0x16/0x20
Oct 14 11:44:17 localhost kernel: [<c01c4f4e>] avc_has_perm_noaudit+0x2e/0x1d0
Oct 14 11:44:17 localhost kernel: [<c013994d>] __mcount+0x1d/0x30
Oct 14 11:44:17 localhost kernel: [<c01c5104>] avc_has_perm+0x14/0x80
Oct 14 11:44:17 localhost kernel: [<c01c65fb>] task_has_capability+0x6b/0x80
Oct 14 11:44:17 localhost kernel: [<c0114b30>] mcount+0x14/0x18
Oct 14 11:44:17 localhost kernel: [<c01c5133>] avc_has_perm+0x43/0x80
Oct 14 11:44:17 localhost kernel: [<c013994d>] __mcount+0x1d/0x30
Oct 14 11:44:17 localhost kernel: [<c01c65a4>] task_has_capability+0x14/0x80
Oct 14 11:44:17 localhost kernel: [<c01c20c9>] capable+0x29/0x50
Oct 14 11:44:17 localhost kernel: [<c0114b30>] mcount+0x14/0x18
Oct 14 11:44:17 localhost kernel: [<c01c65fb>] task_has_capability+0x6b/0x80
Oct 14 11:44:17 localhost kernel: [<c01c6f16>] selinux_capable+0x26/0x50
Oct 14 11:44:17 localhost kernel: [<c01c20c9>] capable+0x29/0x50
Oct 14 11:44:17 localhost kernel: [<c02f50ce>] inet_create+0x9e/0x2f0
Oct 14 11:44:17 localhost kernel: [<c02a28f5>] __sock_create+0x135/0x350
Oct 14 11:44:17 localhost kernel: [<c02a2b1b>] sock_create+0xb/0x40
Oct 14 11:44:17 localhost kernel: [<c02a2bbe>] sys_socket+0x2e/0x60
Oct 14 11:44:17 localhost kernel: [<c02a2b41>] sock_create+0x31/0x40
Oct 14 11:44:17 localhost kernel: [<c02a2bbe>] sys_socket+0x2e/0x60
Oct 14 11:44:17 localhost kernel: [<c02a3bf9>] sys_socketcall+0x69/0x250
Oct 14 11:44:17 localhost kernel: [<c0118690>] do_page_fault+0x0/0x748
Oct 14 11:44:17 localhost kernel: [<c0107b09>] sysenter_past_esp+0x52/0x71
Oct 14 11:44:17 localhost kernel: scheduling while atomic: iptables/0x04000001/1505
Oct 14 11:44:17 localhost kernel: caller is cond_resched+0x61/0x80
Oct 14 11:44:17 localhost ifup:
Oct 14 11:44:17 localhost kernel: [<c031551c>] schedule+0x7ec/0x830
Oct 14 11:44:17 localhost ifup: Determining IP information for eth0...
Oct 14 11:44:17 localhost kernel: [<c0315a31>] cond_resched+0x61/0x80
Oct 14 11:44:17 localhost kernel: [<c013a132>] check_preempt_timing+0x192/0x200
Oct 14 11:44:17 localhost kernel: [<c013a1e8>] touch_preempt_timing+0x48/0x50
Oct 14 11:44:17 localhost kernel: [<c03159f5>] cond_resched+0x25/0x80
Oct 14 11:44:17 localhost kernel: [<c0315a31>] cond_resched+0x61/0x80
Oct 14 11:44:17 localhost kernel: [<c0138df1>] _mutex_lock+0x31/0x70
Oct 14 11:44:18 localhost kernel: [<c0138e86>] _mutex_lock_irqsave+0x16/0x20
Oct 14 11:44:18 localhost kernel: [<c01c4f4e>] avc_has_perm_noaudit+0x2e/0x1d0
Oct 14 11:44:18 localhost kernel: [<c013994d>] __mcount+0x1d/0x30
Oct 14 11:44:18 localhost kernel: [<c01c5104>] avc_has_perm+0x14/0x80
Oct 14 11:44:18 localhost kernel: [<c01c65fb>] task_has_capability+0x6b/0x80
Oct 14 11:44:18 localhost kernel: [<c0114b30>] mcount+0x14/0x18
Oct 14 11:44:18 localhost kernel: [<c01c5133>] avc_has_perm+0x43/0x80
Oct 14 11:44:18 localhost kernel: [<c013994d>] __mcount+0x1d/0x30
Oct 14 11:44:18 localhost kernel: [<c01c65a4>] task_has_capability+0x14/0x80
Oct 14 11:44:18 localhost kernel: [<c01c20c9>] capable+0x29/0x50
Oct 14 11:44:18 localhost kernel: [<c0114b30>] mcount+0x14/0x18
Oct 14 11:44:18 localhost kernel: [<c01c65fb>] task_has_capability+0x6b/0x80
Oct 14 11:44:18 localhost kernel: [<c01c6f16>] selinux_capable+0x26/0x50
Oct 14 11:44:18 localhost kernel: [<c01c20c9>] capable+0x29/0x50
Oct 14 11:44:18 localhost kernel: [<c02f50ce>] inet_create+0x9e/0x2f0
Oct 14 11:44:18 localhost kernel: [<c02a28f5>] __sock_create+0x135/0x350
Oct 14 11:44:18 localhost kernel: [<c02a2b1b>] sock_create+0xb/0x40
Oct 14 11:44:18 localhost kernel: [<c02a2bbe>] sys_socket+0x2e/0x60
Oct 14 11:44:18 localhost kernel: [<c02a2b41>] sock_create+0x31/0x40
Oct 14 11:44:18 localhost kernel: [<c02a2bbe>] sys_socket+0x2e/0x60
Oct 14 11:44:18 localhost kernel: [<c02a3bf9>] sys_socketcall+0x69/0x250
Oct 14 11:44:18 localhost kernel: [<c0118690>] do_page_fault+0x0/0x748
Oct 14 11:44:18 localhost kernel: [<c0107b09>] sysenter_past_esp+0x52/0x71
Oct 14 11:44:18 localhost kernel: ip_tables: (C) 2000-2002 Netfilter core team
Oct 14 11:44:18 localhost kernel: eth0: link up, 100Mbps, half-duplex, lpa 0x40A1
Oct 14 11:44:23 localhost dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67
Oct 14 11:44:23 localhost dhclient: DHCPACK from 192.52.216.221
Oct 14 11:44:23 localhost dhclient: bound to 192.52.215.87 -- renewal in 1049711384 seconds.
Oct 14 11:44:23 localhost ifup: done.
Oct 14 11:44:23 localhost network: Bringing up interface eth0: succeeded
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 14:31 ` [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 Ingo Molnar
@ 2004-10-14 17:34 ` Adam Heath
2004-10-14 22:16 ` Adam Heath
2004-10-14 19:42 ` Daniel Walker
` (5 subsequent siblings)
6 siblings, 1 reply; 28+ messages in thread
From: Adam Heath @ 2004-10-14 17:34 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel
On Thu, 14 Oct 2004, Ingo Molnar wrote:
>
> i have released the -U1 PREEMPT_REALTIME patch:
>
> http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-U1
>
> Changes since -U0:
>
> - bugfix: fixed the highmem related crash reported by Adam Heath and i
> think this could also fix the crash reported by Mark H Johnson.
I've reenabled highmem(4g).
Seems to be working fine. Has been running 11 minutes, without problems.
ps: Something that irks me. During bootup, I get the high-latency traces for
swapper/0. These fill up the dmesg ring buffer, so the early messages get
dropped. Is there anything that can be done to fix that?
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 17:06 Mark_H_Johnson
@ 2004-10-14 18:24 ` Ingo Molnar
2004-10-14 19:02 ` Ingo Molnar
2004-10-14 20:26 ` Bill Huey
1 sibling, 1 reply; 28+ messages in thread
From: Ingo Molnar @ 2004-10-14 18:24 UTC (permalink / raw)
To: Mark_H_Johnson
Cc: linux-kernel, Lee Revell, Rui Nuno Capela, K.R. Foley,
Daniel Walker, Bill Huey, Andrew Morton, Adam Heath,
Lorenzo Allegrucci, Dipankar Sarma
* Mark_H_Johnson@Raytheon.com <Mark_H_Johnson@Raytheon.com> wrote:
> Not sure if I can bring this up to multi user yet. Some initial testing
> in single user mode indicates problems when I turn on networking. See
> the attached messages from /var/log/messages to see the kinds of problems
> I am having. The key ones appear after doing
> ./S10network start
> as part of single stepping the init sequence. I stopped at this point
> to make sure I had a good record of the messages.
could you try to disable SELINUX? It seems it's not fully safe yet.
> A side question - if
> CONFIG_PREEMPT_REALTIME=y
> you say that IRQ's must be threaded, is this going to be "permanent" and
> if so - why?
in a fully preemptible model all execution must be 'sequential', because
irq threads themselves can schedule too and could be preempted too. The
only way to make 'direct' interrupts possible again would be to disable
interrupts in _all_ non-preemptible sections, which would be quite some
work.
Another reason for the 'linearization' of as much execution as possible
is that such direct interrupts couldnt be preempted (or else you could
reenter them) which is impossible because all locks are mutexes.
a third reason is that nesting 'blocks' any underlying context. So if
task A is interrupted by irq X and schedules away (lets assume this is
safe) - nobody could unwind 'task A' - irq X blocks it until it finishes
execution. With linearlized contexts 'task A' could reschedule on
another CPU - or could get its priority raised with time if an RT
deadline is approaching, etc. It's much more flexible to have everything
flattened out.
this comes at a performance cost - but basically if you implement all
the properties one would expect form such an approach you'd end up with
a completely different irq scheduler - there's no point in that. Best is
to 'merge' all contexts, hardirqs and softirqs into the normal task
concept.
> I would prefer to not use threaded IRQ's if possible due to lower CPU
> overhead [see previous email describing results...] and some problems
> I see with setting priorities on those IRQ's (relative to real time
> tasks).
the overhead we can try to optimize later on. What problems do you see
with setting priorities on those IRQs?
Ingo
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 18:24 ` Ingo Molnar
@ 2004-10-14 19:02 ` Ingo Molnar
0 siblings, 0 replies; 28+ messages in thread
From: Ingo Molnar @ 2004-10-14 19:02 UTC (permalink / raw)
To: Mark_H_Johnson
Cc: linux-kernel, Lee Revell, Rui Nuno Capela, K.R. Foley,
Daniel Walker, Bill Huey, Andrew Morton, Adam Heath,
Lorenzo Allegrucci, Dipankar Sarma
* Ingo Molnar <mingo@elte.hu> wrote:
> > as part of single stepping the init sequence. I stopped at this point
> > to make sure I had a good record of the messages.
>
> could you try to disable SELINUX? It seems it's not fully safe yet.
there wasnt all that much missing for SELINUX + PREEMPT_REALTIME
support. Could you try the patch below - does it fix your box?
Ingo
--- linux/net/ipv4/af_inet.c.orig
+++ linux/net/ipv4/af_inet.c
@@ -242,7 +242,7 @@ static int inet_create(struct socket *so
/* Look for the requested type/protocol pair. */
answer = NULL;
- rcu_read_lock();
+ rcu_read_lock_spin(&inetsw_lock);
list_for_each_rcu(p, &inetsw[sock->type]) {
answer = list_entry(p, struct inet_protosw, list);
@@ -276,7 +276,7 @@ static int inet_create(struct socket *so
answer_prot = answer->prot;
answer_no_check = answer->no_check;
answer_flags = answer->flags;
- rcu_read_unlock();
+ rcu_read_unlock_spin(&inetsw_lock);
BUG_TRAP(answer_prot->slab != NULL);
@@ -345,7 +345,7 @@ static int inet_create(struct socket *so
out:
return err;
out_rcu_unlock:
- rcu_read_unlock();
+ rcu_read_unlock_spin(&inetsw_lock);
goto out;
}
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
@ 2004-10-14 19:13 Mark_H_Johnson
2004-10-14 19:46 ` Bill Huey
` (2 more replies)
0 siblings, 3 replies; 28+ messages in thread
From: Mark_H_Johnson @ 2004-10-14 19:13 UTC (permalink / raw)
To: Ingo Molnar
Cc: Andrew Morton, Bill Huey, Dipankar Sarma, Adam Heath,
Daniel Walker, K.R. Foley, linux-kernel, Lorenzo Allegrucci,
Lee Revell, Rui Nuno Capela
>> I would prefer to not use threaded IRQ's if possible due to lower CPU
>> overhead [see previous email describing results...] and some problems
>> I see with setting priorities on those IRQ's (relative to real time
>> tasks).
>
>the overhead we can try to optimize later on. What problems do you see
>with setting priorities on those IRQs?
Perhaps I am old fashioned, but in building a real time system, I consider
hardware interrupt processing as something that is always at a higher
priority than real time tasks. In general that is not a problem because
hardware interrupt processing should do just enough to keep the hardware
happy and nothing more. I have enough spare CPU cycles within each frame
to account for [could be a large number of] interrupts that follow that
approach. Unthreaded IRQ's preserves that relationship.
However, with the threaded IRQ's, a real time program (e.g., latencytest)
can request a priority higher than IRQ processing - causing problems
interfacing with devices. At a minimum, the default priority of IRQ's
should
be some real time value so that nice -20 jobs won't bother them either.
A possibility that comes to mind is to schedule IRQ's at a range higher
than
available to all real time application tasks. I'll mention another
possibility below as well.
In the systems I have to deal with, I do not have a clear criteria
to set priorities of interrupts relative to each other. For example, I
have a real time simulation system using the following devices:
- occasional disk access to simulate disk I/O
- real time network traffic
- real time delivery of interrupts from a PCI timer card and APIC timers
- real time interrupts from a shared memory interface
The priorities of real time tasks are basically assigned based on the
rate of execution. 80 Hz tasks run at a higher priority than 60 Hz, 60 Hz >
40 Hz, and so on. A number of tasks can access each device.
As noted above, I can live with a system where I can guarantee that all
the IRQ processing has higher priority than all the real time tasks.
It would be "better" if the priority of the hardware interrupts somehow
inherited the priority (absolute or relative to other IRQ's) of the task
making the request. So in that way, a 40 Hz task making a network transfer
would somehow boost the priority of the network interface until that
transfer was complete. It would also be good if the queue of pending
transfers was reordered by RT priority, but I don't see that as an easy
thing to implement currently in Linux (but I can ask... :-) ).
Needless to say, if you implemented priority inheritance, when the 40 Hz
task is not doing network transfers, I would just as soon prefer that
other network operations (say from a 2 Hz tasks) does not get a priority
boost above a 20 Hz task accessing another device.
--Mark H Johnson
<mailto:Mark_H_Johnson@raytheon.com>
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 14:31 ` [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 Ingo Molnar
2004-10-14 17:34 ` Adam Heath
@ 2004-10-14 19:42 ` Daniel Walker
2004-10-14 19:57 ` Ingo Molnar
[not found] ` <200410142216.23572.l_allegrucci@yahoo.it>
` (4 subsequent siblings)
6 siblings, 1 reply; 28+ messages in thread
From: Daniel Walker @ 2004-10-14 19:42 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel
This was during NFS startup in init.
using smp_processor_id() in preemptible [00000001] code:
rpc.rquotad/2158
caller is ipt_do_table+0x7b/0x3a0
[<c011aa15>] smp_processor_id+0x95/0xa0
[<c038cbfb>] ipt_do_table+0x7b/0x3a0
[<c038aa8b>] ip_ct_refresh_acct+0xb/0x80
[<c038f1d4>] ipt_local_hook+0x74/0xc0
[<c034d73a>] nf_iterate+0x5a/0xa0
[<c035af00>] dst_output+0x0/0x40
[<c034da3c>] nf_hook_slow+0x5c/0x100
[<c035af00>] dst_output+0x0/0x40
[<c035aaf4>] ip_push_pending_frames+0x414/0x480
[<c035af00>] dst_output+0x0/0x40
[<c0377c88>] udp_push_pending_frames+0x148/0x260
[<c0378178>] udp_sendmsg+0x378/0x6e0
[<c0134c73>] __mcount+0x13/0x20
[<c037f7bc>] inet_sendmsg+0x3c/0x60
[<c03397d8>] sock_sendmsg+0xb8/0xe0
[<c0134c73>] __mcount+0x13/0x20
[<c0134c73>] __mcount+0x13/0x20
[<c0113d30>] mcount+0x14/0x18
[<c020172a>] __copy_from_user_ll+0xa/0x40
[<c0133d00>] autoremove_wake_function+0x0/0x60
[<c03391ef>] move_addr_to_kernel+0x2f/0x60
[<c033ab36>] sys_sendto+0xd6/0x100
[<c033d144>] sock_common_setsockopt+0x24/0x40
[<c0134c73>] __mcount+0x13/0x20
[<c020172a>] __copy_from_user_ll+0xa/0x40
[<c0201803>] copy_from_user+0x43/0x80
[<c0113d30>] mcount+0x14/0x18
[<c020172a>] __copy_from_user_ll+0xa/0x40
[<c033b297>] sys_socketcall+0xf7/0x180
[<c01176a0>] do_page_fault+0x0/0x62a
[<c0105357>] syscall_call+0x7/0xb
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 19:13 [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 Mark_H_Johnson
@ 2004-10-14 19:46 ` Bill Huey
2004-10-14 19:48 ` Ingo Molnar
2004-10-15 14:52 ` Timothy Miller
2 siblings, 0 replies; 28+ messages in thread
From: Bill Huey @ 2004-10-14 19:46 UTC (permalink / raw)
To: Mark_H_Johnson
Cc: Ingo Molnar, Andrew Morton, Bill Huey, Dipankar Sarma, Adam Heath,
Daniel Walker, K.R. Foley, linux-kernel, Lorenzo Allegrucci,
Lee Revell, Rui Nuno Capela
On Thu, Oct 14, 2004 at 02:13:15PM -0500, Mark_H_Johnson@raytheon.com wrote:
...
> be some real time value so that nice -20 jobs won't bother them either.
> A possibility that comes to mind is to schedule IRQ's at a range higher
> than
> available to all real time application tasks. I'll mention another
> possibility below as well.
The interrupt priority range probably needs to be increased to accommodate the
increased design demand of RT applications.
> In the systems I have to deal with, I do not have a clear criteria
> to set priorities of interrupts relative to each other. For example, I
> have a real time simulation system using the following devices:
> - occasional disk access to simulate disk I/O
> - real time network traffic
> - real time delivery of interrupts from a PCI timer card and APIC timers
> - real time interrupts from a shared memory interface
> The priorities of real time tasks are basically assigned based on the
> rate of execution. 80 Hz tasks run at a higher priority than 60 Hz, 60 Hz >
> 40 Hz, and so on. A number of tasks can access each device.
Crank it higher 120hz and see what kind of jitter your getting. Hit
something with high memory load, large, mmap images, swap and friends.
> It would be "better" if the priority of the hardware interrupts somehow
> inherited the priority (absolute or relative to other IRQ's) of the task
> making the request. So in that way, a 40 Hz task making a network transfer
> would somehow boost the priority of the network interface until that
> transfer was complete. It would also be good if the queue of pending
> transfers was reordered by RT priority, but I don't see that as an easy
> thing to implement currently in Linux (but I can ask... :-) ).
That's an RT app slippery slope and it should be handled by some kind of
in-kernel or kernel locking aware facilties. The reason why Linux is
ideal for RTOS usage is directly related to all of the SMP work that's
been done over the years. Contention, therefore the need for priority
inheritance, is evil. If you need that kind of functionality, then you
might be good to consider the scheduling indeterminancy of the lock chain
being aquired and it should have little or no overlap with things like
irq-threads. The system should be decoupled (queues, etc...) if possible
and you shouldn't abuse priority inheritance. The use of priority
inheritance should be considered a kind lock contention overload and
the algorithms it bounds should be optimized. In your case, the network
stack might need to be broken up to provide the kind of granularity
and control need to attach on a socket per process/thread basis, just
like Jeffery Hsu's lockless network stack effort in DragonFly BSD.
Long priority inheritance chains is an app-level indeterminacy nightmare
and either indicates an improperly written application or nasty SMP
contention issue. That's how I see it.
> Needless to say, if you implemented priority inheritance, when the 40 Hz
> task is not doing network transfers, I would just as soon prefer that
> other network operations (say from a 2 Hz tasks) does not get a priority
> boost above a 20 Hz task accessing another device.
bill
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 19:13 [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 Mark_H_Johnson
2004-10-14 19:46 ` Bill Huey
@ 2004-10-14 19:48 ` Ingo Molnar
2004-10-14 21:52 ` Esben Nielsen
2004-10-15 14:52 ` Timothy Miller
2 siblings, 1 reply; 28+ messages in thread
From: Ingo Molnar @ 2004-10-14 19:48 UTC (permalink / raw)
To: Mark_H_Johnson
Cc: Andrew Morton, Bill Huey, Dipankar Sarma, Adam Heath,
Daniel Walker, K.R. Foley, linux-kernel, Lorenzo Allegrucci,
Lee Revell, Rui Nuno Capela
* Mark_H_Johnson@raytheon.com <Mark_H_Johnson@raytheon.com> wrote:
> >the overhead we can try to optimize later on. What problems do you see
> >with setting priorities on those IRQs?
>
> Perhaps I am old fashioned, but in building a real time system, I
> consider hardware interrupt processing as something that is always at
> a higher priority than real time tasks. [...]
this is what i believe you'll ultimately get under PREEMPT_REALTIME:
instant execution of the hardware interrupt thread! Just give it a
higher RT priority than any of the existing tasks in the system:
chrt -f -p 99 `pidof "IRQ 9"`
it is only a couple of microseconds to switch over from the current task
to the IRQ handling thread.
the only difference to a 'direct' interrupt is that it is you who
determines the policy and the priority of interrupt handling.
with direct interrupts there's no choice - a hardware interrupt has the
highest priority. In fact there's not even any way to prioritize
hardware interrupts relative to each other.
> [...] In general that is not a problem because hardware interrupt
> processing should do just enough to keep the hardware happy and
> nothing more. I have enough spare CPU cycles within each frame to
> account for [could be a large number of] interrupts that follow that
> approach. Unthreaded IRQ's preserves that relationship.
>
> However, with the threaded IRQ's, a real time program (e.g.,
> latencytest) can request a priority higher than IRQ processing -
> causing problems interfacing with devices. At a minimum, the default
> priority of IRQ's should be some real time value so that nice -20 jobs
> won't bother them either. A possibility that comes to mind is to
> schedule IRQ's at a range higher than available to all real time
> application tasks. I'll mention another possibility below as well.
we could increase the RT priority range perhaps, and only allow IRQ
threads to venture into that range. But, this is really pushing a piece
of policy into the kernel. RT tasks interfering with interrupt threads
is an application level problem: priorities have to be properly set up
between RT applications anyway.
> In the systems I have to deal with, I do not have a clear criteria
> to set priorities of interrupts relative to each other. For example, I
> have a real time simulation system using the following devices:
> - occasional disk access to simulate disk I/O
> - real time network traffic
> - real time delivery of interrupts from a PCI timer card and APIC timers
> - real time interrupts from a shared memory interface
> The priorities of real time tasks are basically assigned based on the
> rate of execution. 80 Hz tasks run at a higher priority than 60 Hz, 60 Hz >
> 40 Hz, and so on. A number of tasks can access each device.
if you dont know the relative priority and dont want to allow (non-RT)
userspace starving of IRQ processing then you can make all of them
SCHED_FIFO priority 99.
> As noted above, I can live with a system where I can guarantee that
> all the IRQ processing has higher priority than all the real time
> tasks.
what might make sense is to extend SELinux to allow partitioning of the
priority space. Allow 'normal' applications only SCHED_FIFO range 1-90,
and have 91-99 for IRQ threads, or something like that. I dont think
this priority scheme should be part of the kernel proper - it would be
an inflexible feature. But ... i have no strong feelings in either
direction.
> It would be "better" if the priority of the hardware interrupts
> somehow inherited the priority (absolute or relative to other IRQ's)
> of the task making the request. So in that way, a 40 Hz task making a
> network transfer would somehow boost the priority of the network
> interface until that transfer was complete. It would also be good if
> the queue of pending transfers was reordered by RT priority, but I
> don't see that as an easy thing to implement currently in Linux (but I
> can ask... :-) ).
unfortunately there's no 1:1 relationship between 'work' and
'completion' activies so no good mapping from tasks to interrupts. Think
about a SCHED_OTHER and a SCHED_FIFO task dirtying the same page and it
getting flushed out to disk by pdflush. Whose priority should the disk
interrupt inherit, if anything?
> Needless to say, if you implemented priority inheritance, when the 40
> Hz task is not doing network transfers, I would just as soon prefer
> that other network operations (say from a 2 Hz tasks) does not get a
> priority boost above a 20 Hz task accessing another device.
in reality it seems that most of the contention wrt. networks is on the
queueing level, not on the CPU use level. So the solution should rather
be on the 'jump the queue and get xmit-ed right now' level - i.e. the
use of priority-aware TCP/IP QoS features. They do not really need
priority inheritance for the hardware interrupt. (especially considering
that most network processing happens in softirq context, which is even
more anonymous than a hardirq handler.)
Ingo
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 19:42 ` Daniel Walker
@ 2004-10-14 19:57 ` Ingo Molnar
2004-10-14 20:34 ` Daniel Walker
0 siblings, 1 reply; 28+ messages in thread
From: Ingo Molnar @ 2004-10-14 19:57 UTC (permalink / raw)
To: Daniel Walker; +Cc: linux-kernel
* Daniel Walker <dwalker@mvista.com> wrote:
> This was during NFS startup in init.
>
> using smp_processor_id() in preemptible [00000001] code:
> rpc.rquotad/2158
> caller is ipt_do_table+0x7b/0x3a0
> [<c011aa15>] smp_processor_id+0x95/0xa0
> [<c038cbfb>] ipt_do_table+0x7b/0x3a0
ugh, this is a nasty one - if you look at the TABLE_OFFSET trickery in
ipt_do_table it's basically an open-coded per-CPU variable in essence.
(probably predating percpu.h so it's fair.) Could you try the quick hack
below? (it compiles but is otherwise untested)
The proper solution would be to change the code to use per-cpu variables
(and get that patch accepted upstream) and then trivially convert it to
get_cpu_var_locked().
Ingo
--- linux/net/ipv4/netfilter/ip_tables.c.orig
+++ linux/net/ipv4/netfilter/ip_tables.c
@@ -287,10 +287,14 @@ ipt_do_table(struct sk_buff **pskb,
* match it. */
offset = ntohs(ip->frag_off) & IP_OFFSET;
+#ifdef CONFIG_PREEMPT_REALTIME
+ write_lock_bh(&table->lock);
+#else
read_lock_bh(&table->lock);
+#endif
IP_NF_ASSERT(table->valid_hooks & (1 << hook));
table_base = (void *)table->private->entries
- + TABLE_OFFSET(table->private, smp_processor_id());
+ + TABLE_OFFSET(table->private, _smp_processor_id());
e = get_entry(table_base, table->private->hook_entry[hook]);
#ifdef CONFIG_NETFILTER_DEBUG
@@ -397,7 +401,11 @@ ipt_do_table(struct sk_buff **pskb,
#ifdef CONFIG_NETFILTER_DEBUG
((struct ipt_entry *)table_base)->comefrom = 0xdead57ac;
#endif
+#ifdef CONFIG_PREEMPT_REALTIME
+ write_unlock_bh(&table->lock);
+#else
read_unlock_bh(&table->lock);
+#endif
#ifdef DEBUG_ALLOW_ALL
return NF_ACCEPT;
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
[not found] ` <200410142216.23572.l_allegrucci@yahoo.it>
@ 2004-10-14 20:21 ` Lee Revell
0 siblings, 0 replies; 28+ messages in thread
From: Lee Revell @ 2004-10-14 20:21 UTC (permalink / raw)
To: Lorenzo Allegrucci
Cc: Ingo Molnar, linux-kernel, Rui Nuno Capela, Mark_H_Johnson,
K.R. Foley, Daniel Walker, Bill Huey, Andrew Morton, Adam Heath,
Dipankar Sarma
On Thu, 2004-10-14 at 16:16, Lorenzo Allegrucci wrote:
> BTW, I'm getting a lot of "scheduling while atomic" messages
> running LTP's runalltests.sh -x 200.
> Attached is the kern.log and the latency trace.
Looks like that latency trace is mostly printk overhead from the
scheduling while atomic errors. In general, if you are still getting
lots of printks in your logs due to bugs, the latency traces are not
very useful.
Lee
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 17:06 Mark_H_Johnson
2004-10-14 18:24 ` Ingo Molnar
@ 2004-10-14 20:26 ` Bill Huey
2004-10-14 20:32 ` Bill Huey
1 sibling, 1 reply; 28+ messages in thread
From: Bill Huey @ 2004-10-14 20:26 UTC (permalink / raw)
To: Mark_H_Johnson
Cc: Ingo Molnar, linux-kernel, Lee Revell, Rui Nuno Capela,
K.R. Foley, Daniel Walker, Bill Huey, Andrew Morton, Adam Heath,
Lorenzo Allegrucci, Dipankar Sarma
On Thu, Oct 14, 2004 at 12:06:22PM -0500, Mark_H_Johnson@Raytheon.com wrote:
> Not sure if I can bring this up to multi user yet. Some initial testing
> in single user mode indicates problems when I turn on networking. See
> the attached messages from /var/log/messages to see the kinds of problems
> I am having. The key ones appear after doing
> ./S10network start
> as part of single stepping the init sequence. I stopped at this point
> to make sure I had a good record of the messages.
...
> I also managed to get the machine stuck with
> /sbin/reboot
> not sure why.
These are two seperate problems from my guess.
Mount the file system read/write and start slamming it with heavy disk
activity. If it locks up, then it might just as well be a problem with
the journaling code and the softirq system backing it. I ran into this
in my project and it was the softirq related IO code all of the way down
to the SCSI driver.
It was difficult to get debug messages during a deadlock and I don't
know what kind of mileage you'll get by doing this.
bill
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 14:31 ` [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 Ingo Molnar
` (2 preceding siblings ...)
[not found] ` <200410142216.23572.l_allegrucci@yahoo.it>
@ 2004-10-14 20:28 ` Lorenzo Allegrucci
2004-10-14 20:39 ` K.R. Foley
` (2 subsequent siblings)
6 siblings, 0 replies; 28+ messages in thread
From: Lorenzo Allegrucci @ 2004-10-14 20:28 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Lee Revell, Rui Nuno Capela, Mark_H_Johnson,
K.R. Foley, Daniel Walker, Bill Huey, Andrew Morton, Adam Heath,
Dipankar Sarma
[-- Attachment #1: Type: text/plain, Size: 1021 bytes --]
gzipped latecy_trace this time, sorry.
On Thursday 14 October 2004 16:31, Ingo Molnar wrote:
>
> i have released the -U1 PREEMPT_REALTIME patch:
>
> http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-U1
>
> this is a strict bugfixes-only release. With -U1 i cannot reproduce any
> of the bugs on my testsystems anymore, but take care nevertheless, this
> is still experimental code.
>
> Changes since -U0:
>
> - bugfix: fixed the highmem related crash reported by Adam Heath and i
> think this could also fix the crash reported by Mark H Johnson.
>
> - bugfix: fixed a number of networking related soft-lockups, caused by
> a deadlock scenarios in the ipv4, netfilter and net-xmit locking
> code. This could fix the lockup reported by Lorenzo Allegrucci.
Yes, -U1 seems to have fixed it for me.
BTW, I'm getting a lot of "scheduling while atomic" messages
running LTP's runalltests.sh -x 200.
Attached is the kern.log and the latency trace.
--
I route therefore you are
[-- Attachment #2: kern.log.gz --]
[-- Type: application/x-gzip, Size: 5147 bytes --]
[-- Attachment #3: latency_trace.gz --]
[-- Type: application/x-gzip, Size: 13754 bytes --]
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 20:26 ` Bill Huey
@ 2004-10-14 20:32 ` Bill Huey
0 siblings, 0 replies; 28+ messages in thread
From: Bill Huey @ 2004-10-14 20:32 UTC (permalink / raw)
To: Bill Huey
Cc: Mark_H_Johnson, Ingo Molnar, linux-kernel, Lee Revell,
Rui Nuno Capela, K.R. Foley, Daniel Walker, Andrew Morton,
Adam Heath, Lorenzo Allegrucci, Dipankar Sarma
On Thu, Oct 14, 2004 at 01:26:33PM -0700, Bill Huey wrote:
> On Thu, Oct 14, 2004 at 12:06:22PM -0500, Mark_H_Johnson@Raytheon.com wrote:
> > I also managed to get the machine stuck with
> > /sbin/reboot
> > not sure why.
> Mount the file system read/write and start slamming it with heavy disk
> activity. If it locks up, then it might just as well be a problem with
> the journaling code and the softirq system backing it. I ran into this
> in my project and it was the softirq related IO code all of the way down
> to the SCSI driver.
Heavy "sync" activity killed my machine. Try stuff that puts loads on
that system. :)
bill
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 19:57 ` Ingo Molnar
@ 2004-10-14 20:34 ` Daniel Walker
0 siblings, 0 replies; 28+ messages in thread
From: Daniel Walker @ 2004-10-14 20:34 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel
This fixed it..
Daniel
On Thu, 2004-10-14 at 12:57, Ingo Molnar wrote:
> * Daniel Walker <dwalker@mvista.com> wrote:
>
> > This was during NFS startup in init.
> >
> > using smp_processor_id() in preemptible [00000001] code:
> > rpc.rquotad/2158
> > caller is ipt_do_table+0x7b/0x3a0
> > [<c011aa15>] smp_processor_id+0x95/0xa0
> > [<c038cbfb>] ipt_do_table+0x7b/0x3a0
>
> ugh, this is a nasty one - if you look at the TABLE_OFFSET trickery in
> ipt_do_table it's basically an open-coded per-CPU variable in essence.
> (probably predating percpu.h so it's fair.) Could you try the quick hack
> below? (it compiles but is otherwise untested)
>
> The proper solution would be to change the code to use per-cpu variables
> (and get that patch accepted upstream) and then trivially convert it to
> get_cpu_var_locked().
>
> Ingo
>
> --- linux/net/ipv4/netfilter/ip_tables.c.orig
> +++ linux/net/ipv4/netfilter/ip_tables.c
> @@ -287,10 +287,14 @@ ipt_do_table(struct sk_buff **pskb,
> * match it. */
> offset = ntohs(ip->frag_off) & IP_OFFSET;
>
> +#ifdef CONFIG_PREEMPT_REALTIME
> + write_lock_bh(&table->lock);
> +#else
> read_lock_bh(&table->lock);
> +#endif
> IP_NF_ASSERT(table->valid_hooks & (1 << hook));
> table_base = (void *)table->private->entries
> - + TABLE_OFFSET(table->private, smp_processor_id());
> + + TABLE_OFFSET(table->private, _smp_processor_id());
> e = get_entry(table_base, table->private->hook_entry[hook]);
>
> #ifdef CONFIG_NETFILTER_DEBUG
> @@ -397,7 +401,11 @@ ipt_do_table(struct sk_buff **pskb,
> #ifdef CONFIG_NETFILTER_DEBUG
> ((struct ipt_entry *)table_base)->comefrom = 0xdead57ac;
> #endif
> +#ifdef CONFIG_PREEMPT_REALTIME
> + write_unlock_bh(&table->lock);
> +#else
> read_unlock_bh(&table->lock);
> +#endif
>
> #ifdef DEBUG_ALLOW_ALL
> return NF_ACCEPT;
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 14:31 ` [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 Ingo Molnar
` (3 preceding siblings ...)
2004-10-14 20:28 ` Lorenzo Allegrucci
@ 2004-10-14 20:39 ` K.R. Foley
2004-10-14 22:52 ` Radoslaw Szkodzinski
2004-10-15 11:22 ` Florian Schmidt
6 siblings, 0 replies; 28+ messages in thread
From: K.R. Foley @ 2004-10-14 20:39 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Lee Revell, Rui Nuno Capela, Mark_H_Johnson,
Daniel Walker, Bill Huey, Andrew Morton, Adam Heath,
Lorenzo Allegrucci, Dipankar Sarma
[-- Attachment #1: Type: text/plain, Size: 669 bytes --]
Ingo Molnar wrote:
> i have released the -U1 PREEMPT_REALTIME patch:
>
> http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-U1
>
> this is a strict bugfixes-only release. With -U1 i cannot reproduce any
> of the bugs on my testsystems anymore, but take care nevertheless, this
> is still experimental code.
>
Got this one running on my SMP workstation FINALLY. The problems that I
have been having with the keyboard not working goes away if I compile in
CONFIG_SERIO_PCIPS2 instead of making it a module. :-/ Anyway I am
getting some "using smp_processor_id messages" all of which seem to be
getting generated from ip_tables as in:
[-- Attachment #2: smpdump.txt --]
[-- Type: text/plain, Size: 3617 bytes --]
Oct 14 15:35:52 swdev14 kernel: using smp_processor_id() in preemptible [00000001] code: thunderbird-bin/3933
Oct 14 15:35:52 swdev14 kernel: caller is ipt_do_table+0x79/0x335 [ip_tables]
Oct 14 15:35:52 swdev14 kernel: [<c011878e>] smp_processor_id+0xa8/0xb9
Oct 14 15:35:52 swdev14 kernel: [<e08550a8>] ipt_do_table+0x79/0x335 [ip_tables]
Oct 14 15:35:52 swdev14 kernel: [<e08550a8>] ipt_do_table+0x79/0x335 [ip_tables]
Oct 14 15:35:52 swdev14 kernel: [<e09ba0b5>] ipt_local_out_hook+0x76/0x79 [iptable_filter]
Oct 14 15:35:52 swdev14 kernel: [<c02394ea>] nf_iterate+0x70/0xa1
Oct 14 15:35:52 swdev14 kernel: [<c024ef4f>] dst_output+0x0/0x2f
Oct 14 15:35:52 swdev14 kernel: [<c023982d>] nf_hook_slow+0x79/0x126
Oct 14 15:35:52 swdev14 kernel: [<c024ef4f>] dst_output+0x0/0x2f
Oct 14 15:35:52 swdev14 kernel: [<c024cfe2>] ip_queue_xmit+0x495/0x59e
Oct 14 15:35:52 swdev14 kernel: [<c024ef4f>] dst_output+0x0/0x2f
Oct 14 15:35:52 swdev14 kernel: [<c01325d5>] __mcount+0x1d/0x21
Oct 14 15:35:52 swdev14 kernel: [<c0298716>] _spin_unlock_irq+0xb/0x35
Oct 14 15:35:52 swdev14 kernel: [<c01171e7>] finish_task_switch+0x3c/0x85
Oct 14 15:35:52 swdev14 kernel: [<c0111d1c>] mcount+0x14/0x18
Oct 14 15:35:52 swdev14 kernel: [<c01325d5>] __mcount+0x1d/0x21
Oct 14 15:35:52 swdev14 kernel: [<c0263c48>] tcp_v4_send_check+0xe/0xe2
Oct 14 15:35:52 swdev14 kernel: [<c025d95b>] tcp_transmit_skb+0x435/0x85b
Oct 14 15:35:52 swdev14 kernel: [<c0111d1c>] mcount+0x14/0x18
Oct 14 15:35:52 swdev14 kernel: [<c0263c48>] tcp_v4_send_check+0xe/0xe2
Oct 14 15:35:52 swdev14 kernel: [<c025da07>] tcp_transmit_skb+0x4e1/0x85b
Oct 14 15:35:52 swdev14 kernel: [<c01af5ee>] memcpy+0x12/0x3c
Oct 14 15:35:52 swdev14 kernel: [<c025e830>] tcp_write_xmit+0x14c/0x2c6
Oct 14 15:35:52 swdev14 kernel: [<c0252608>] tcp_sendmsg+0x50d/0x10a7
Oct 14 15:35:52 swdev14 kernel: [<c0111d1c>] mcount+0x14/0x18
Oct 14 15:35:52 swdev14 kernel: [<c02525dc>] tcp_sendmsg+0x4e1/0x10a7
Oct 14 15:35:52 swdev14 kernel: [<c0224f0e>] sock_sendmsg+0xfa/0xfc
Oct 14 15:35:52 swdev14 kernel: [<c0274665>] inet_sendmsg+0x50/0x5b
Oct 14 15:35:52 swdev14 kernel: [<c0224f0e>] sock_sendmsg+0xfa/0xfc
Oct 14 15:35:52 swdev14 kernel: [<c01325d5>] __mcount+0x1d/0x21
Oct 14 15:35:52 swdev14 kernel: [<c01af10e>] find_next_bit+0x16/0x92
Oct 14 15:35:52 swdev14 kernel: [<c0117b37>] find_busiest_group+0xd4/0x2e0
Oct 14 15:35:52 swdev14 kernel: [<c0131d20>] _mutex_unlock+0xe/0x5e
Oct 14 15:35:52 swdev14 kernel: [<c0111d1c>] mcount+0x14/0x18
Oct 14 15:35:52 swdev14 kernel: [<c0131d20>] _mutex_unlock+0xe/0x5e
Oct 14 15:35:52 swdev14 kernel: [<c0131cba>] _mutex_lock+0x29/0x3f
Oct 14 15:35:52 swdev14 kernel: [<c013186b>] autoremove_wake_function+0x0/0x57
Oct 14 15:35:52 swdev14 kernel: [<c0224c69>] sockfd_lookup+0x1f/0x74
Oct 14 15:35:52 swdev14 kernel: [<c0111d1c>] mcount+0x14/0x18
Oct 14 15:35:52 swdev14 kernel: [<c0226493>] sys_sendto+0xed/0x10c
Oct 14 15:35:52 swdev14 kernel: [<c0173221>] inode_times_differ+0x9/0x4a
Oct 14 15:35:52 swdev14 kernel: [<c017332a>] update_atime+0xc8/0xcd
Oct 14 15:35:52 swdev14 kernel: [<c01325d5>] __mcount+0x1d/0x21
Oct 14 15:35:52 swdev14 kernel: [<c02264bd>] sys_send+0xb/0x3f
Oct 14 15:35:52 swdev14 kernel: [<c0226d5e>] sys_socketcall+0x12e/0x239
Oct 14 15:35:52 swdev14 kernel: [<c0111d1c>] mcount+0x14/0x18
Oct 14 15:35:52 swdev14 kernel: [<c02264ed>] sys_send+0x3b/0x3f
Oct 14 15:35:52 swdev14 kernel: [<c0226d5e>] sys_socketcall+0x12e/0x239
Oct 14 15:35:52 swdev14 kernel: [<c0158cdd>] sys_read+0x78/0x7a
Oct 14 15:35:52 swdev14 kernel: [<c0106161>] sysenter_past_esp+0x52/0x71
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-11-13 23:02 William Wolf
@ 2004-10-14 21:08 ` Lee Revell
2004-10-14 22:26 ` William Wolf
0 siblings, 1 reply; 28+ messages in thread
From: Lee Revell @ 2004-10-14 21:08 UTC (permalink / raw)
To: William Wolf; +Cc: kernel list
On Sat, 2004-11-13 at 18:02, William Wolf wrote:
> Has anyone tried these patches been on x86_64? Im trying the latest -U1
> patch and getting lots of compile errors. I can send the output if needed.
Looks like you might be the only one. Please post any compile errors,
and cc: Ingo.
Lee
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 19:48 ` Ingo Molnar
@ 2004-10-14 21:52 ` Esben Nielsen
0 siblings, 0 replies; 28+ messages in thread
From: Esben Nielsen @ 2004-10-14 21:52 UTC (permalink / raw)
To: Ingo Molnar
Cc: Mark_H_Johnson, Andrew Morton, Bill Huey, Dipankar Sarma,
Adam Heath, Daniel Walker, K.R. Foley, linux-kernel,
Lorenzo Allegrucci, Lee Revell, Rui Nuno Capela
On Thu, 14 Oct 2004, Ingo Molnar wrote:
>
> * Mark_H_Johnson@raytheon.com <Mark_H_Johnson@raytheon.com> wrote:
>
> > >the overhead we can try to optimize later on. What problems do you see
> > >with setting priorities on those IRQs?
> >
> > Perhaps I am old fashioned, but in building a real time system, I
> > consider hardware interrupt processing as something that is always at
> > a higher priority than real time tasks. [...]
Let us say you have a server taking in requests over the network. Then you
want to run the ethernet device at very high priority - you can just as
well run it in the interrupt directly. But let us say you are making an
embedded device handling some hardware real-time but having a
web-interface to configure it. Then you dont want the traffic on the
network to take CPU from you real-time thread (if you don't have DMA it
can take a lot of CPU just to read the packets out of the controller!)
I do have real life experience with exactly this problem and the solution
was to move the interrupt-handler into a low-priority thread.
As I said on comments on lwn.net: Make these things parameters for the
real-time guys to choose per driver for their specific system. There is no
good setting useable for everybody. On normal systems let them stay in
interrupt context and use normal spinlocks for must things That _performs_
much better but gives higher latencies. Just make it possible for the
real-time system developeres to configure their system compiletime along
with choosing drivers, file systems etc.
Esben
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 17:34 ` Adam Heath
@ 2004-10-14 22:16 ` Adam Heath
2004-10-14 22:24 ` Ingo Molnar
0 siblings, 1 reply; 28+ messages in thread
From: Adam Heath @ 2004-10-14 22:16 UTC (permalink / raw)
To: Ingo Molnar; +Cc: linux-kernel@vger.kernel.org
On Thu, 14 Oct 2004, Adam Heath wrote:
> On Thu, 14 Oct 2004, Ingo Molnar wrote:
>
> >
> > i have released the -U1 PREEMPT_REALTIME patch:
> >
> > http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-U1
> >
> > Changes since -U0:
> >
> > - bugfix: fixed the highmem related crash reported by Adam Heath and i
> > think this could also fix the crash reported by Mark H Johnson.
>
> I've reenabled highmem(4g).
>
> Seems to be working fine. Has been running 11 minutes, without problems.
>
> ps: Something that irks me. During bootup, I get the high-latency traces for
> swapper/0. These fill up the dmesg ring buffer, so the early messages get
> dropped. Is there anything that can be done to fix that?
Got my first message.
scheduling while atomic: kswapd0/0x04000001/10
caller is cond_resched+0x53/0x70
[<c027ad31>] schedule+0x531/0x570
[<c027b2a3>] cond_resched+0x53/0x70
[<c012c604>] _mutex_lock+0x14/0x40
[<c0149521>] page_lock_anon_vma+0x31/0x60
[<c0149725>] page_referenced_anon+0x15/0x80
[<c01498ba>] page_referenced+0x7a/0x80
[<c0141635>] refill_inactive_zone+0x435/0x4b0
[<c01408a3>] shrink_slab+0x143/0x160
[<c0141728>] shrink_zone+0x78/0xc0
[<c0141b7a>] balance_pgdat+0x23a/0x2f0
[<c0141ced>] kswapd+0xbd/0xf0
[<c012c140>] autoremove_wake_function+0x0/0x50
[<c01056d2>] ret_from_fork+0x6/0x14
[<c012c140>] autoremove_wake_function+0x0/0x50
[<c0141c30>] kswapd+0x0/0xf0
[<c0103a2d>] kernel_thread_helper+0x5/0x18
Config is as before, with highmem enabled being the only difference.
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 22:16 ` Adam Heath
@ 2004-10-14 22:24 ` Ingo Molnar
0 siblings, 0 replies; 28+ messages in thread
From: Ingo Molnar @ 2004-10-14 22:24 UTC (permalink / raw)
To: Adam Heath; +Cc: linux-kernel@vger.kernel.org
* Adam Heath <doogie@debian.org> wrote:
> > Seems to be working fine. Has been running 11 minutes, without problems.
> >
> > ps: Something that irks me. During bootup, I get the high-latency traces for
> > swapper/0. These fill up the dmesg ring buffer, so the early messages get
> > dropped. Is there anything that can be done to fix that?
>
> Got my first message.
>
> scheduling while atomic: kswapd0/0x04000001/10
> caller is cond_resched+0x53/0x70
> [<c027ad31>] schedule+0x531/0x570
> [<c027b2a3>] cond_resched+0x53/0x70
> [<c012c604>] _mutex_lock+0x14/0x40
> [<c0149521>] page_lock_anon_vma+0x31/0x60
i'm working on this one currently, it's a bit tricky.
Ingo
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
@ 2004-10-14 22:24 Mark_H_Johnson
0 siblings, 0 replies; 28+ messages in thread
From: Mark_H_Johnson @ 2004-10-14 22:24 UTC (permalink / raw)
To: Ingo Molnar
Cc: Andrew Morton, Bill Huey, Dipankar Sarma, Adam Heath,
Daniel Walker, K.R. Foley, linux-kernel, Lorenzo Allegrucci,
Lee Revell, Rui Nuno Capela
>there wasnt all that much missing for SELINUX + PREEMPT_REALTIME
>support. Could you try the patch below - does it fix your box?
...
Alas no, it actually seemed to make things worse. After
/etc/rc3.d/S10network start
I got a few dumps (too fast to see) and then the following BUG.
[top of screen]
Modules linked in: iptable_filter ip_tables 8139too mii dm_mod uhci_hcd
ext3 jbd
CPU: 1
EIP: 0060:[<c0316366>] Not tainted VLI
EFLAGS: 00000002 (2.6.9-rc4-mm1-VP-U1a) [only change is your patch...]
eax: 00000002 ebx: c1405820 ecx: 0104cf60 edx: 00000001
esi: c166a000 edi: 00000002 ebp: c166bf04 esp: c166bef8
ds: 007b es: 007b ss: 0068 preempt: 00010003
Process ksoftirqd/1 (pid: 5, threadinfo=c166a000 task=c1658000)
Stack: 00000001 c1405820 c1435820 c166bf18 c011bc30 c1436200 c1405820
c1436200
c166bf48 c011c766 c1435820 c1405820 c166bf38 00000002 c1658000
c166bf48
00000001 c1436200 00000001 0104cf60 c166bfa4 c0315433 00000001
c1435820
Call Trace:
[<c011bc30>] double_lock_balance+0x40/0x50
[<c011c766>] load_balance_newidle+0x66/0xc0
[<c0315433>] schedule+0x733/0x830
[<c0114b30>] mcount+0x14/0x18
[<c01280b4>] ksoftirq+0xd4/0xf0
[<c01382b0>] kthread+0x0/0xc0
[<c0105b19>] kernel_thread_helper+0x5/0xc
Code: bf 00 00 00 00 55 89 e5 83 ec 0c 89 5d f8 89 75 fc e8 cb e7 df ff c7
04 24
01 00 00 00 89 c3 e8 d1 3e e2 ff be 00 e0 ff ff 21 e6 <31> c0 86 03 84 c0
7e 0a
8b 5d f8 8b 7f fc 89 ec 5d c3 c7
Rebooting to see if I was just "unlucky"...
Checking the log file after reboot, it appears I do have a trace to send
you
[next message...]. Trying again.
Different crash but at basically the same step. Getting tired of typing
these
in from the other screen...
EIP is at sub_preempt_count+0x5f+0xa0
...
preempt: 00010003
Call Trace:
[<c0316384>] _spin_lock+0x44/0x70
[<c011bc30>] double_lock_balance+0x40/0x50
[<c011c766>] load_balance_newidle+0x66/0xc0
[<c0315433>] schedule+0x733/0x830
[<c0114b30>] mcount+0x14/0x18
[<c01280b4>] ksoftirq+0xd4/0xf0
[<c013836b>] kthread+0xbb/0xc0
[<c0127fe0>] ksoftirq+0x0/0xf0
[<c01382b0>] kthread+0x0/0xc0
[<c0105b19>] kernel_thread_helper+0x5/0xc
... console shuts up ...
Try a third time with max_cpus=1
OK. Made it past S10network start, with just a couple messages about a
sleeping function called from invalid context; looks like a new cause
and will send you that in the next message too.
Did a couple other commands (less, ls) without problem. Tried
./S13portmap start
and the machine locked up (no response to Ctrl-C). Alt-SysRq-T did
display something. Alt-SysRq-S did an Emergency Sync (but also dumped
out...)
[top of screen]
in atomic():1 [00000001], irqs_disabled():0
[<c011f26a>] __might_sleep+0xca/0xe0
[<c0138de9>] _mutex_lock+0x29/0x70
[<c0138e86>] _mutex_lock_irqsave+0x16/0x20
[<c014c932>] pdflush_operation+0x32/0xd0
[<c01691ad>] emergency_sync+0x1d/0x30
[<c01690e0>] do_sync+0x0/0x90
[<c0217456>] __handle_sysrq+0x76/0xf0
[<c0210b1d>] kbd_event+0xad/0x110
[<c028da8b>] input_event+0xfb/0x3f0
[<c0114b30>] mcount+0x14/0x18
[<c0291923>] atkbd_report_key+0x43/0xa0
[<c0291ba6>] atkbd_interrupt+0x226/0x590
[<c0225f54>] serio_interrupt+0x54/0xa3
[<c0226681>] i8042_interrupt+0xc1/0x1a0
[<c01440b6>] handle_IRQ_event+0x46/0x80
[<c01448c0>] do_hardirq+0x70/0xf0
[<c0144a41>] do_irqd+0x101/0x1d0
[<c013836b>] kthread+0xbb/0xc0
[<c0144940>] do_irqd+0x0/0x1d0
[<c01382b0>] kthread+0x0/0xc0
[<c0105b19>] kernel_thread_helper+0x5/0xc
Emergency Sync complete
So there's appears to be a problem in Alt-SysRq handling as well.
Alt-SysRq-P doesn't show anything, not sure why.
Alt-SysRq-M appears to work OK.
Alt-SysRq-B works too :-).
Will bring up -T3 soon and send the messages on disk in a separate
message.
--Mark H Johnson
<mailto:Mark_H_Johnson@raytheon.com>
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 21:08 ` Lee Revell
@ 2004-10-14 22:26 ` William Wolf
0 siblings, 0 replies; 28+ messages in thread
From: William Wolf @ 2004-10-14 22:26 UTC (permalink / raw)
To: linux-kernel
Lee Revell wrote:
>On Sat, 2004-11-13 at 18:02, William Wolf wrote:
>
>
>>Has anyone tried these patches been on x86_64? Im trying the latest -U1
>>patch and getting lots of compile errors. I can send the output if needed.
>>
>>
>
>Looks like you might be the only one. Please post any compile errors,
>and cc: Ingo.
>
>Lee
>
>
>
>
Here's the output of make, its pretty lengthy, hope it helps:
CHK include/linux/version.h
UPD include/linux/version.h
scripts/kconfig/conf -s arch/x86_64/Kconfig
#
# using defaults found in .config
#
*
* Restart config...
*
*
* General setup
*
Local version - append to kernel release (LOCALVERSION) []
Support for paging of anonymous memory (swap) (SWAP) [Y/n/?] y
System V IPC (SYSVIPC) [Y/n/?] y
POSIX Message Queues (POSIX_MQUEUE) [N/y/?] n
BSD Process Accounting (BSD_PROCESS_ACCT) [N/y/?] n
Sysctl support (SYSCTL) [Y/n/?] y
Auditing support (AUDIT) [N/y/?] n
Support for hot-pluggable devices (HOTPLUG) [Y/n/?] y
Kernel Userspace Events (KOBJECT_UEVENT) [Y/n/?] y
Kernel .config support (IKCONFIG) [Y/n/?] y
Enable access to .config through /proc/config.gz (IKCONFIG_PROC)
[Y/n/?] y
Non-preemptible critical section timing (PREEMPT_TIMING) [N/y/?] (NEW) y
Non-preemptible critical section tracing (LATENCY_TRACE) [N/y/?] (NEW) y
Anticipatory I/O scheduler (IOSCHED_AS) [Y/n/m/?] y
Deadline I/O scheduler (IOSCHED_DEADLINE) [Y/n/m/?] y
CFQ I/O scheduler (IOSCHED_CFQ) [Y/n/m/?] y
*
* Processor type and features
*
Processor family
> 1. AMD-Opteron/Athlon64 (MK8)
2. Intel x86-64 (MPSC)
3. Generic-x86-64 (GENERIC_CPU)
choice[1-3]: 1
/dev/cpu/microcode - Intel CPU microcode support (MICROCODE) [N/m/y/?] n
/dev/cpu/*/msr - Model-specific register support (X86_MSR) [N/m/y/?] n
/dev/cpu/*/cpuid - CPU information support (X86_CPUID) [N/m/y/?] n
MTRR (Memory Type Range Register) support (MTRR) [Y/n/?] y
Symmetric multi-processing support (SMP) [N/y/?] n
Preemptible Kernel (PREEMPT) [Y/n/?] y
Preempt The Big Kernel Lock (PREEMPT_BKL) [Y/n/?] y
Voluntary Kernel Preemption (PREEMPT_VOLUNTARY) [Y/n/?] (NEW) y
Preempt Softirqs (PREEMPT_SOFTIRQS) [Y/n/?] (NEW) y
IOMMU support (GART_IOMMU) [Y/n/?] y
SPLIT include/linux/autoconf.h -> include/config/*
CC arch/x86_64/kernel/asm-offsets.s
In file included from include/linux/capability.h:45,
from include/linux/sched.h:7,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/spinlock.h:16:23: asm/mutex.h: No such file or directory
In file included from include/linux/capability.h:45,
from include/linux/sched.h:7,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/spinlock.h:413: error: parse error before '*' token
include/linux/spinlock.h:413: warning: function declaration isn't a
prototype
include/linux/spinlock.h:414: error: parse error before '*' token
include/linux/spinlock.h:414: warning: function declaration isn't a
prototype
include/linux/spinlock.h:415: error: parse error before '*' token
include/linux/spinlock.h:415: warning: function declaration isn't a
prototype
include/linux/spinlock.h:416: error: parse error before '*' token
include/linux/spinlock.h:416: warning: function declaration isn't a
prototype
include/linux/spinlock.h:417: error: parse error before '*' token
include/linux/spinlock.h:417: warning: function declaration isn't a
prototype
include/linux/spinlock.h:418: error: parse error before '*' token
include/linux/spinlock.h:418: warning: function declaration isn't a
prototype
include/linux/spinlock.h:419: error: parse error before '*' token
include/linux/spinlock.h:419: warning: function declaration isn't a
prototype
include/linux/spinlock.h:420: error: parse error before '*' token
include/linux/spinlock.h:420: warning: function declaration isn't a
prototype
include/linux/spinlock.h:421: error: parse error before '*' token
include/linux/spinlock.h:421: warning: function declaration isn't a
prototype
include/linux/spinlock.h:422: error: parse error before '*' token
include/linux/spinlock.h:422: warning: function declaration isn't a
prototype
include/linux/spinlock.h:423: error: parse error before '*' token
include/linux/spinlock.h:423: warning: function declaration isn't a
prototype
include/linux/spinlock.h:424: error: parse error before '*' token
include/linux/spinlock.h:424: warning: function declaration isn't a
prototype
include/linux/spinlock.h:425: error: parse error before '*' token
include/linux/spinlock.h:425: warning: function declaration isn't a
prototype
include/linux/spinlock.h:426: error: parse error before '*' token
include/linux/spinlock.h:426: warning: function declaration isn't a
prototype
include/linux/spinlock.h:462: error: parse error before '*' token
include/linux/spinlock.h:462: warning: function declaration isn't a
prototype
include/linux/spinlock.h:463: error: parse error before '*' token
include/linux/spinlock.h:463: warning: function declaration isn't a
prototype
include/linux/spinlock.h:464: error: parse error before '*' token
include/linux/spinlock.h:464: warning: function declaration isn't a
prototype
include/linux/spinlock.h:465: error: parse error before '*' token
include/linux/spinlock.h:465: warning: function declaration isn't a
prototype
include/linux/spinlock.h:466: error: parse error before '*' token
include/linux/spinlock.h:466: warning: function declaration isn't a
prototype
include/linux/spinlock.h:467: error: parse error before '*' token
include/linux/spinlock.h:467: warning: function declaration isn't a
prototype
include/linux/spinlock.h:468: error: parse error before '*' token
include/linux/spinlock.h:468: warning: function declaration isn't a
prototype
include/linux/spinlock.h:469: error: parse error before '*' token
include/linux/spinlock.h:469: warning: function declaration isn't a
prototype
include/linux/spinlock.h:470: error: parse error before '*' token
include/linux/spinlock.h:470: warning: function declaration isn't a
prototype
include/linux/spinlock.h:471: error: parse error before '*' token
include/linux/spinlock.h:471: warning: function declaration isn't a
prototype
include/linux/spinlock.h:472: error: parse error before '*' token
include/linux/spinlock.h:472: warning: function declaration isn't a
prototype
include/linux/spinlock.h:473: error: parse error before '*' token
include/linux/spinlock.h:473: warning: function declaration isn't a
prototype
include/linux/spinlock.h:474: error: parse error before '*' token
include/linux/spinlock.h:474: warning: function declaration isn't a
prototype
include/linux/spinlock.h:475: error: parse error before '*' token
include/linux/spinlock.h:475: warning: function declaration isn't a
prototype
include/linux/spinlock.h:476: error: parse error before '*' token
include/linux/spinlock.h:476: warning: function declaration isn't a
prototype
include/linux/spinlock.h:477: error: parse error before '*' token
include/linux/spinlock.h:477: warning: function declaration isn't a
prototype
include/linux/spinlock.h:478: error: parse error before '*' token
include/linux/spinlock.h:478: warning: function declaration isn't a
prototype
include/linux/spinlock.h:479: error: parse error before '*' token
include/linux/spinlock.h:479: warning: function declaration isn't a
prototype
include/linux/spinlock.h:480: error: parse error before '*' token
include/linux/spinlock.h:480: warning: function declaration isn't a
prototype
include/linux/spinlock.h:481: error: parse error before '*' token
include/linux/spinlock.h:481: warning: function declaration isn't a
prototype
In file included from include/linux/capability.h:45,
from include/linux/sched.h:7,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/spinlock.h:655: error: parse error before "raw_spinlock_t"
include/linux/spinlock.h:655: warning: function declaration isn't a
prototype
In file included from include/linux/sched.h:7,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/capability.h:47: error: parse error before
"task_capability_lock"
include/linux/capability.h:47: warning: type defaults to `int' in
declaration of `task_capability_lock'
include/linux/capability.h:47: warning: data definition has no type or
storage class
In file included from include/linux/time.h:7,
from include/linux/timex.h:58,
from include/linux/sched.h:11,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/seqlock.h:35: error: parse error before "spinlock_t"
include/linux/seqlock.h:35: warning: no semicolon at end of struct or union
include/linux/seqlock.h:36: warning: type defaults to `int' in
declaration of `__seqlock_t'
include/linux/seqlock.h:36: warning: data definition has no type or
storage class
include/linux/seqlock.h:40: error: parse error before "raw_spinlock_t"
include/linux/seqlock.h:40: warning: no semicolon at end of struct or union
include/linux/seqlock.h:41: warning: type defaults to `int' in
declaration of `__raw_seqlock_t'
include/linux/seqlock.h:41: warning: data definition has no type or
storage class
include/linux/seqlock.h:46: error: parse error before "seqlock_t"
include/linux/seqlock.h:46: warning: type defaults to `int' in
declaration of `seqlock_t'
include/linux/seqlock.h:46: warning: data definition has no type or
storage class
include/linux/seqlock.h:50: error: parse error before "raw_seqlock_t"
include/linux/seqlock.h:50: warning: type defaults to `int' in
declaration of `raw_seqlock_t'
include/linux/seqlock.h:50: warning: data definition has no type or
storage class
include/linux/seqlock.h:72: error: parse error before '*' token
include/linux/seqlock.h:73: warning: function declaration isn't a prototype
include/linux/seqlock.h: In function `__write_seqlock':
include/linux/seqlock.h:74: error: `sl' undeclared (first use in this
function)
include/linux/seqlock.h:74: error: (Each undeclared identifier is
reported only once
include/linux/seqlock.h:74: error: for each function it appears in.)
include/linux/seqlock.h:74: error: parse error before "raw_spinlock_t"
include/linux/seqlock.h:74: error: `raw_spinlock_t' undeclared (first
use in this function)
include/linux/seqlock.h:74: error: parse error before ')' token
include/linux/seqlock.h: At top level:
include/linux/seqlock.h:74: error: parse error before "while"
include/linux/seqlock.h:79: error: parse error before '*' token
include/linux/seqlock.h:80: warning: function declaration isn't a prototype
include/linux/seqlock.h: In function `__write_sequnlock':
include/linux/seqlock.h:82: error: `sl' undeclared (first use in this
function)
include/linux/seqlock.h:83: error: parse error before "raw_spinlock_t"
include/linux/seqlock.h: At top level:
include/linux/seqlock.h:83: error: parse error before "while"
include/linux/seqlock.h:86: error: parse error before '*' token
include/linux/seqlock.h:87: warning: function declaration isn't a prototype
include/linux/seqlock.h: In function `__write_tryseqlock':
include/linux/seqlock.h:88: error: `sl' undeclared (first use in this
function)
include/linux/seqlock.h:88: error: parse error before "raw_spinlock_t"
include/linux/seqlock.h:88: warning: unused variable `__ret'
include/linux/seqlock.h:88: error: parse error before "while"
include/linux/seqlock.h:88: error: `raw_spinlock_t' undeclared (first
use in this function)
include/linux/seqlock.h:88: error: parse error before ')' token
include/linux/seqlock.h:88: warning: left-hand operand of comma
expression has no effect
include/linux/seqlock.h:88: warning: unused variable `ret'
include/linux/seqlock.h:88: warning: no return statement in function
returning non-void
include/linux/seqlock.h: At top level:
include/linux/seqlock.h:88: error: parse error before ')' token
include/linux/seqlock.h:88: warning: type defaults to `int' in
declaration of `__ret'
include/linux/seqlock.h:88: warning: data definition has no type or
storage class
include/linux/seqlock.h:88: error: parse error before '}' token
include/linux/seqlock.h:98: warning: type defaults to `int' in
declaration of `seqlock_t'
include/linux/seqlock.h:98: error: parse error before '*' token
include/linux/seqlock.h:99: warning: function declaration isn't a prototype
include/linux/seqlock.h: In function `__read_seqbegin':
include/linux/seqlock.h:100: error: `sl' undeclared (first use in this
function)
include/linux/seqlock.h: At top level:
include/linux/seqlock.h:113: warning: type defaults to `int' in
declaration of `seqlock_t'
include/linux/seqlock.h:113: error: parse error before '*' token
include/linux/seqlock.h:114: warning: function declaration isn't a prototype
include/linux/seqlock.h: In function `__read_seqretry':
include/linux/seqlock.h:116: error: `iv' undeclared (first use in this
function)
include/linux/seqlock.h:116: error: `sl' undeclared (first use in this
function)
include/linux/seqlock.h: At top level:
include/linux/seqlock.h:119: error: parse error before '*' token
include/linux/seqlock.h:120: warning: function declaration isn't a prototype
include/linux/seqlock.h: In function `__write_seqlock_raw':
include/linux/seqlock.h:121: error: `sl' undeclared (first use in this
function)
include/linux/seqlock.h:121: error: parse error before "raw_spinlock_t"
include/linux/seqlock.h:121: error: `raw_spinlock_t' undeclared (first
use in this function)
include/linux/seqlock.h:121: error: parse error before ')' token
include/linux/seqlock.h: At top level:
include/linux/seqlock.h:121: error: parse error before "while"
include/linux/seqlock.h:126: error: parse error before '*' token
include/linux/seqlock.h:127: warning: function declaration isn't a prototype
include/linux/seqlock.h: In function `__write_sequnlock_raw':
include/linux/seqlock.h:129: error: `sl' undeclared (first use in this
function)
include/linux/seqlock.h:130: error: parse error before "raw_spinlock_t"
include/linux/seqlock.h: At top level:
include/linux/seqlock.h:130: error: parse error before "while"
include/linux/seqlock.h:133: error: parse error before '*' token
include/linux/seqlock.h:134: warning: function declaration isn't a prototype
include/linux/seqlock.h: In function `__write_tryseqlock_raw':
include/linux/seqlock.h:135: error: `sl' undeclared (first use in this
function)
include/linux/seqlock.h:135: error: parse error before "raw_spinlock_t"
include/linux/seqlock.h:135: warning: unused variable `__ret'
include/linux/seqlock.h:135: error: parse error before "while"
include/linux/seqlock.h:135: error: `raw_spinlock_t' undeclared (first
use in this function)
include/linux/seqlock.h:135: error: parse error before ')' token
include/linux/seqlock.h:135: warning: left-hand operand of comma
expression has no effect
include/linux/seqlock.h:135: warning: unused variable `ret'
include/linux/seqlock.h:135: warning: no return statement in function
returning non-void
include/linux/seqlock.h: At top level:
include/linux/seqlock.h:135: error: parse error before ')' token
include/linux/seqlock.h:135: warning: type defaults to `int' in
declaration of `__ret'
include/linux/seqlock.h:135: warning: data definition has no type or
storage class
include/linux/seqlock.h:135: error: parse error before '}' token
include/linux/seqlock.h:144: warning: type defaults to `int' in
declaration of `raw_seqlock_t'
include/linux/seqlock.h:144: error: parse error before '*' token
include/linux/seqlock.h:145: warning: function declaration isn't a prototype
include/linux/seqlock.h: In function `__read_seqbegin_raw':
include/linux/seqlock.h:146: error: `sl' undeclared (first use in this
function)
include/linux/seqlock.h: At top level:
include/linux/seqlock.h:151: warning: type defaults to `int' in
declaration of `raw_seqlock_t'
include/linux/seqlock.h:151: error: parse error before '*' token
include/linux/seqlock.h:152: warning: function declaration isn't a prototype
include/linux/seqlock.h: In function `__read_seqretry_raw':
include/linux/seqlock.h:154: error: `iv' undeclared (first use in this
function)
include/linux/seqlock.h:154: error: `sl' undeclared (first use in this
function)
In file included from include/linux/timex.h:58,
from include/linux/sched.h:11,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/time.h: At top level:
include/linux/time.h:83: error: parse error before "xtime_lock"
include/linux/time.h:83: warning: type defaults to `int' in declaration
of `xtime_lock'
include/linux/time.h:83: warning: data definition has no type or storage
class
In file included from include/asm/timex.h:12,
from include/linux/timex.h:61,
from include/linux/sched.h:11,
from arch/x86_64/kernel/asm-offsets.c:7:
include/asm/vsyscall.h:48: error: parse error before "__xtime_lock"
include/asm/vsyscall.h:48: warning: type defaults to `int' in
declaration of `__xtime_lock'
include/asm/vsyscall.h:48: warning: data definition has no type or
storage class
include/asm/vsyscall.h:55: error: parse error before "xtime_lock"
include/asm/vsyscall.h:55: warning: type defaults to `int' in
declaration of `xtime_lock'
include/asm/vsyscall.h:55: warning: data definition has no type or
storage class
In file included from include/asm/semaphore.h:42,
from include/linux/sched.h:19,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/wait.h:82: error: parse error before '*' token
include/linux/wait.h:83: warning: function declaration isn't a prototype
include/linux/wait.h: In function `init_waitqueue_head':
include/linux/wait.h:84: error: `q' undeclared (first use in this function)
include/linux/wait.h:84: error: `RAW_SPIN_LOCK_UNLOCKED' undeclared
(first use in this function)
include/linux/wait.h: At top level:
include/linux/wait.h:103: error: parse error before '*' token
include/linux/wait.h:104: warning: function declaration isn't a prototype
include/linux/wait.h: In function `waitqueue_active':
include/linux/wait.h:105: error: `q' undeclared (first use in this function)
include/linux/wait.h: At top level:
include/linux/wait.h:117: error: parse error before '*' token
include/linux/wait.h:117: warning: function declaration isn't a prototype
include/linux/wait.h:118: error: parse error before '*' token
include/linux/wait.h:118: warning: function declaration isn't a prototype
include/linux/wait.h:119: error: parse error before '*' token
include/linux/wait.h:119: warning: function declaration isn't a prototype
include/linux/wait.h:121: error: parse error before '*' token
include/linux/wait.h:122: warning: function declaration isn't a prototype
include/linux/wait.h: In function `__add_wait_queue':
include/linux/wait.h:123: error: `new' undeclared (first use in this
function)
include/linux/wait.h:123: error: `head' undeclared (first use in this
function)
include/linux/wait.h: At top level:
include/linux/wait.h:129: error: parse error before '*' token
include/linux/wait.h:131: warning: function declaration isn't a prototype
include/linux/wait.h: In function `__add_wait_queue_tail':
include/linux/wait.h:132: error: `new' undeclared (first use in this
function)
include/linux/wait.h:132: error: `head' undeclared (first use in this
function)
include/linux/wait.h: At top level:
include/linux/wait.h:135: error: parse error before '*' token
include/linux/wait.h:137: warning: function declaration isn't a prototype
include/linux/wait.h: In function `__remove_wait_queue':
include/linux/wait.h:138: error: `old' undeclared (first use in this
function)
include/linux/wait.h: At top level:
include/linux/wait.h:141: error: parse error before '*' token
include/linux/wait.h:141: warning: function declaration isn't a prototype
include/linux/wait.h:142: error: parse error before '*' token
include/linux/wait.h:142: warning: function declaration isn't a prototype
include/linux/wait.h:143: error: parse error before '*' token
include/linux/wait.h:143: warning: function declaration isn't a prototype
include/linux/wait.h:144: error: parse error before '*' token
include/linux/wait.h:144: warning: function declaration isn't a prototype
include/linux/wait.h:145: error: parse error before '*' token
include/linux/wait.h:145: error: `__wait_on_bit' declared as function
returning a function
include/linux/wait.h:145: warning: function declaration isn't a prototype
include/linux/wait.h:145: error: parse error before "unsigned"
include/linux/wait.h:146: error: parse error before '*' token
include/linux/wait.h:146: error: `__wait_on_bit_lock' declared as
function returning a function
include/linux/wait.h:146: warning: function declaration isn't a prototype
include/linux/wait.h:146: error: parse error before "unsigned"
include/linux/wait.h:150: error: parse error before '*' token
include/linux/wait.h:150: warning: type defaults to `int' in declaration
of `bit_waitqueue'
include/linux/wait.h:150: warning: data definition has no type or
storage class
include/linux/wait.h:288: error: parse error before '*' token
include/linux/wait.h:290: warning: function declaration isn't a prototype
include/linux/wait.h: In function `add_wait_queue_exclusive_locked':
include/linux/wait.h:291: error: `wait' undeclared (first use in this
function)
include/linux/wait.h:292: error: `q' undeclared (first use in this function)
include/linux/wait.h: At top level:
include/linux/wait.h:298: error: parse error before '*' token
include/linux/wait.h:300: warning: function declaration isn't a prototype
include/linux/wait.h: In function `remove_wait_queue_locked':
include/linux/wait.h:301: error: `q' undeclared (first use in this function)
include/linux/wait.h:301: error: `wait' undeclared (first use in this
function)
include/linux/wait.h: At top level:
include/linux/wait.h:309: error: parse error before '*' token
include/linux/wait.h:309: warning: function declaration isn't a prototype
include/linux/wait.h:310: error: parse error before '*' token
include/linux/wait.h:310: warning: function declaration isn't a prototype
include/linux/wait.h:312: error: parse error before '*' token
include/linux/wait.h:312: warning: function declaration isn't a prototype
include/linux/wait.h:313: error: parse error before '*' token
include/linux/wait.h:313: warning: function declaration isn't a prototype
include/linux/wait.h:319: error: parse error before '*' token
include/linux/wait.h:319: warning: function declaration isn't a prototype
include/linux/wait.h:321: error: parse error before '*' token
include/linux/wait.h:321: warning: function declaration isn't a prototype
include/linux/wait.h:323: error: parse error before '*' token
include/linux/wait.h:323: warning: function declaration isn't a prototype
In file included from include/linux/rwsem.h:27,
from include/asm/semaphore.h:43,
from include/linux/sched.h:19,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/rwsem-spinlock.h:33: error: parse error before "spinlock_t"
include/linux/rwsem-spinlock.h:33: warning: no semicolon at end of
struct or union
include/linux/rwsem-spinlock.h:38: error: parse error before '}' token
In file included from include/linux/sched.h:19,
from arch/x86_64/kernel/asm-offsets.c:7:
include/asm/semaphore.h:49: error: parse error before "wait_queue_head_t"
include/asm/semaphore.h:49: warning: no semicolon at end of struct or union
include/asm/semaphore.h: In function `sema_init':
include/asm/semaphore.h:76: error: dereferencing pointer to incomplete type
include/asm/semaphore.h:77: error: dereferencing pointer to incomplete type
include/asm/semaphore.h:78: error: dereferencing pointer to incomplete type
include/asm/semaphore.h: In function `down':
include/asm/semaphore.h:119: error: dereferencing pointer to incomplete type
include/asm/semaphore.h: In function `down_interruptible':
include/asm/semaphore.h:144: error: dereferencing pointer to incomplete type
include/asm/semaphore.h: In function `down_trylock':
include/asm/semaphore.h:168: error: dereferencing pointer to incomplete type
include/asm/semaphore.h: In function `up':
include/asm/semaphore.h:191: error: dereferencing pointer to incomplete type
In file included from include/linux/sched.h:22,
from arch/x86_64/kernel/asm-offsets.c:7:
include/asm/mmu.h: At top level:
include/asm/mmu.h:15: error: parse error before "rwlock_t"
include/asm/mmu.h:15: warning: no semicolon at end of struct or union
include/asm/mmu.h:18: error: parse error before '}' token
include/asm/mmu.h:18: warning: type defaults to `int' in declaration of
`mm_context_t'
include/asm/mmu.h:18: warning: data definition has no type or storage class
In file included from include/linux/sem.h:4,
from include/linux/sched.h:58,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/ipc.h:59: error: parse error before "raw_spinlock_t"
include/linux/ipc.h:59: warning: no semicolon at end of struct or union
include/linux/ipc.h:69: error: parse error before '}' token
In file included from include/linux/sched.h:58,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/sem.h:90: error: field `sem_perm' has incomplete type
include/linux/sem.h:129: error: parse error before "raw_spinlock_t"
include/linux/sem.h:129: warning: no semicolon at end of struct or union
include/linux/sem.h:131: error: parse error before '}' token
In file included from include/linux/sched.h:59,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/signal.h:19: error: parse error before "spinlock_t"
include/linux/signal.h:19: warning: no semicolon at end of struct or union
include/linux/signal.h:23: error: parse error before '}' token
In file included from include/linux/sched.h:61,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/fs_struct.h:9: error: parse error before "rwlock_t"
include/linux/fs_struct.h:9: warning: no semicolon at end of struct or union
include/linux/fs_struct.h:13: error: parse error before '}' token
In file included from include/linux/sched.h:63,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/completion.h:15: error: parse error before "wait_queue_head_t"
include/linux/completion.h:15: warning: no semicolon at end of struct or
union
include/linux/completion.h: In function `init_completion':
include/linux/completion.h:26: error: dereferencing pointer to
incomplete type
include/linux/completion.h:27: error: dereferencing pointer to
incomplete type
In file included from include/linux/gfp.h:4,
from include/linux/slab.h:15,
from include/linux/percpu.h:4,
from include/linux/sched.h:65,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/mmzone.h: At top level:
include/linux/mmzone.h:113: error: parse error before "raw_spinlock_t"
include/linux/mmzone.h:113: warning: no semicolon at end of struct or union
include/linux/mmzone.h:132: error: parse error before "lru_lock"
include/linux/mmzone.h:132: warning: type defaults to `int' in
declaration of `lru_lock'
include/linux/mmzone.h:132: warning: data definition has no type or
storage class
include/linux/mmzone.h:193: error: parse error before '*' token
include/linux/mmzone.h:193: warning: type defaults to `int' in
declaration of `wait_table'
include/linux/mmzone.h:193: warning: data definition has no type or
storage class
include/linux/mmzone.h:215: error: parse error before '}' token
include/linux/mmzone.h:254: error: field `node_zones' has incomplete type
include/linux/mmzone.h:265: error: parse error before "wait_queue_head_t"
include/linux/mmzone.h:265: warning: no semicolon at end of struct or union
include/linux/mmzone.h:267: error: parse error before '}' token
include/linux/mmzone.h:267: warning: type defaults to `int' in
declaration of `pg_data_t'
include/linux/mmzone.h:267: warning: data definition has no type or
storage class
include/linux/mmzone.h: In function `next_zone':
include/linux/mmzone.h:307: error: `pgdat' undeclared (first use in this
function)
include/linux/mmzone.h:307: error: dereferencing pointer to incomplete type
include/linux/mmzone.h:310: error: increment of pointer to unknown structure
include/linux/mmzone.h:310: error: arithmetic on pointer to an
incomplete type
include/linux/mmzone.h: In function `is_highmem':
include/linux/mmzone.h:355: error: dereferencing pointer to incomplete type
include/linux/mmzone.h: In function `is_normal':
include/linux/mmzone.h:360: error: dereferencing pointer to incomplete type
In file included from include/linux/slab.h:15,
from include/linux/percpu.h:4,
from include/linux/sched.h:65,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/gfp.h: In function `alloc_pages_node':
include/linux/gfp.h:91: error: invalid use of undefined type `struct
pglist_data'
include/linux/gfp.h: At top level:
include/linux/gfp.h:124: error: 'free_pages' redeclared as different
kind of symbol
include/linux/mmzone.h:114: error: previous declaration of 'free_pages'
was here
In file included from include/linux/sched.h:136,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/timer.h:15: error: parse error before "raw_spinlock_t"
include/linux/timer.h:15: warning: no semicolon at end of struct or union
include/linux/timer.h:22: error: parse error before '}' token
include/linux/timer.h: In function `init_timer':
include/linux/timer.h:44: error: dereferencing pointer to incomplete type
include/linux/timer.h:45: error: dereferencing pointer to incomplete type
include/linux/timer.h:46: error: dereferencing pointer to incomplete type
include/linux/timer.h:46: error: parse error before "raw_spinlock_t"
include/linux/timer.h:46: error: parse error before "else"
include/linux/timer.h: In function `timer_pending':
include/linux/timer.h:61: error: dereferencing pointer to incomplete type
include/linux/timer.h: In function `add_timer':
include/linux/timer.h:87: error: dereferencing pointer to incomplete type
In file included from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/sched.h: At top level:
include/linux/sched.h:179: error: parse error before "tasklist_lock"
include/linux/sched.h:179: warning: type defaults to `int' in
declaration of `tasklist_lock'
include/linux/sched.h:179: warning: data definition has no type or
storage class
include/linux/sched.h:180: error: parse error before "mmlist_lock"
include/linux/sched.h:180: warning: type defaults to `int' in
declaration of `mmlist_lock'
include/linux/sched.h:180: warning: data definition has no type or
storage class
In file included from include/linux/aio.h:5,
from include/linux/sched.h:225,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/workqueue.h:20: error: field `timer' has incomplete type
In file included from include/linux/sched.h:225,
from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/aio.h:122: error: parse error before "spinlock_t"
include/linux/aio.h:122: warning: no semicolon at end of struct or union
include/linux/aio.h:128: error: parse error before '}' token
include/linux/aio.h:139: error: parse error before "wait_queue_head_t"
include/linux/aio.h:139: warning: no semicolon at end of struct or union
include/linux/aio.h:141: warning: type defaults to `int' in declaration
of `ctx_lock'
include/linux/aio.h:141: warning: data definition has no type or storage
class
include/linux/aio.h:152: error: parse error before '}' token
In file included from arch/x86_64/kernel/asm-offsets.c:7:
include/linux/sched.h:252: error: field `mmap_sem' has incomplete type
include/linux/sched.h:253: error: parse error before "spinlock_t"
include/linux/sched.h:253: warning: no semicolon at end of struct or union
include/linux/sched.h:268: error: parse error before ':' token
include/linux/sched.h:272: error: parse error before "context"
include/linux/sched.h:272: warning: type defaults to `int' in
declaration of `context'
include/linux/sched.h:272: warning: data definition has no type or
storage class
include/linux/sched.h:283: error: parse error before "ioctx_list_lock"
include/linux/sched.h:283: warning: type defaults to `int' in
declaration of `ioctx_list_lock'
include/linux/sched.h:283: warning: data definition has no type or
storage class
include/linux/sched.h:287: error: parse error before '}' token
include/linux/sched.h:292: error: parse error before "spinlock_t"
include/linux/sched.h:292: warning: no semicolon at end of struct or union
include/linux/sched.h:611: error: parse error before "wait_queue_head_t"
include/linux/sched.h:611: warning: no semicolon at end of struct or union
include/linux/sched.h:630: error: parse error before ':' token
include/linux/sched.h:671: error: parse error before "alloc_lock"
include/linux/sched.h:671: warning: type defaults to `int' in
declaration of `alloc_lock'
include/linux/sched.h:671: warning: data definition has no type or
storage class
include/linux/sched.h:673: error: parse error before "proc_lock"
include/linux/sched.h:673: warning: type defaults to `int' in
declaration of `proc_lock'
include/linux/sched.h:673: warning: data definition has no type or
storage class
include/linux/sched.h:675: error: parse error before "switch_lock"
include/linux/sched.h:675: warning: type defaults to `int' in
declaration of `switch_lock'
include/linux/sched.h:675: warning: data definition has no type or
storage class
include/linux/sched.h:709: error: parse error before '}' token
include/linux/sched.h: In function `process_group':
include/linux/sched.h:713: error: dereferencing pointer to incomplete type
include/linux/sched.h: In function `dequeue_signal_lock':
include/linux/sched.h:848: error: dereferencing pointer to incomplete type
include/linux/sched.h:848: error: parse error before "raw_spinlock_t"
include/linux/sched.h:848: error: `__flags' undeclared (first use in
this function)
include/linux/sched.h:848: error: `raw_spinlock_t' undeclared (first use
in this function)
include/linux/sched.h:848: error: parse error before ')' token
include/linux/sched.h:848: error: dereferencing pointer to incomplete type
include/linux/sched.h:848: warning: unused variable `__ret'
include/linux/sched.h:848: error: parse error before "else"
include/linux/sched.h:846: warning: unused variable `ret'
include/linux/sched.h:848: warning: no return statement in function
returning non-void
include/linux/sched.h: At top level:
include/linux/sched.h:848: error: parse error before ')' token
include/linux/sched.h:849: warning: type defaults to `int' in
declaration of `ret'
include/linux/sched.h:849: error: `tsk' undeclared here (not in a function)
include/linux/sched.h:849: error: `mask' undeclared here (not in a function)
include/linux/sched.h:849: error: incompatible type for argument 3 of
`dequeue_signal'
include/linux/sched.h:849: error: initializer element is not constant
include/linux/sched.h:849: warning: data definition has no type or
storage class
include/linux/sched.h:850: error: parse error before "do"
include/linux/sched.h:850: error: parse error before numeric constant
include/linux/sched.h:850: warning: type defaults to `int' in
declaration of `sub_preempt_count'
include/linux/sched.h:850: warning: function declaration isn't a prototype
include/linux/sched.h:850: error: conflicting types for 'sub_preempt_count'
include/linux/preempt.h:14: error: previous declaration of
'sub_preempt_count' was here
include/linux/sched.h:850: error: conflicting types for 'sub_preempt_count'
include/linux/preempt.h:14: error: previous declaration of
'sub_preempt_count' was here
include/linux/sched.h:850: warning: data definition has no type or
storage class
include/linux/sched.h: In function `on_sig_stack':
include/linux/sched.h:890: error: dereferencing pointer to incomplete type
include/linux/sched.h:890: error: dereferencing pointer to incomplete type
include/linux/sched.h: In function `sas_ss_flags':
include/linux/sched.h:895: error: dereferencing pointer to incomplete type
include/linux/sched.h: In function `capable':
include/linux/sched.h:906: error: dereferencing pointer to incomplete type
include/linux/sched.h:907: error: dereferencing pointer to incomplete type
include/linux/sched.h: In function `mmdrop':
include/linux/sched.h:923: error: dereferencing pointer to incomplete type
include/linux/sched.h: In function `thread_group_empty':
include/linux/sched.h:1004: error: dereferencing pointer to incomplete type
include/linux/sched.h: In function `task_lock':
include/linux/sched.h:1025: error: dereferencing pointer to incomplete type
include/linux/sched.h:1025: error: parse error before "raw_spinlock_t"
include/linux/sched.h:1025: error: `raw_spinlock_t' undeclared (first
use in this function)
include/linux/sched.h:1025: error: parse error before ')' token
include/linux/sched.h:1025: error: dereferencing pointer to incomplete type
include/linux/sched.h: At top level:
include/linux/sched.h:1025: error: parse error before "while"
include/linux/sched.h: In function `task_unlock':
include/linux/sched.h:1030: error: dereferencing pointer to incomplete type
include/linux/sched.h:1030: error: parse error before "raw_spinlock_t"
include/linux/sched.h: At top level:
include/linux/sched.h:1030: error: parse error before "while"
include/linux/sched.h: In function `set_tsk_thread_flag':
include/linux/sched.h:1038: error: dereferencing pointer to incomplete type
include/linux/sched.h: In function `clear_tsk_thread_flag':
include/linux/sched.h:1043: error: dereferencing pointer to incomplete type
include/linux/sched.h: In function `test_and_set_tsk_thread_flag':
include/linux/sched.h:1048: error: dereferencing pointer to incomplete type
include/linux/sched.h: In function `test_and_clear_tsk_thread_flag':
include/linux/sched.h:1053: error: dereferencing pointer to incomplete type
include/linux/sched.h: In function `test_tsk_thread_flag':
include/linux/sched.h:1058: error: dereferencing pointer to incomplete type
include/linux/sched.h: At top level:
include/linux/sched.h:1096: error: parse error before '*' token
include/linux/sched.h:1097: warning: function declaration isn't a prototype
include/linux/sched.h: In function `hardirq_need_resched':
include/linux/sched.h:1112: error: dereferencing pointer to incomplete type
include/linux/sched.h: At top level:
include/linux/sched.h:1125: error: parse error before '*' token
include/linux/sched.h:1125: warning: function declaration isn't a prototype
include/linux/sched.h:1126: error: parse error before '*' token
include/linux/sched.h:1126: warning: function declaration isn't a prototype
include/linux/sched.h: In function `arch_pick_mmap_layout':
include/linux/sched.h:1187: error: dereferencing pointer to incomplete type
include/linux/sched.h:1187: error: dereferencing pointer to incomplete type
include/linux/sched.h:1188: error: dereferencing pointer to incomplete type
include/linux/sched.h:1189: error: dereferencing pointer to incomplete type
In file included from include/asm/hardirq.h:6,
from include/linux/hardirq.h:6,
from arch/x86_64/kernel/asm-offsets.c:10:
include/linux/irq.h: At top level:
include/linux/irq.h:79: error: parse error before "wait_queue_head_t"
include/linux/irq.h:79: warning: no semicolon at end of struct or union
include/linux/irq.h:80: warning: type defaults to `int' in declaration
of `lock'
include/linux/irq.h:80: warning: data definition has no type or storage
class
include/linux/irq.h:81: warning: type defaults to `int' in declaration
of `irq_desc_t'
include/linux/irq.h:83: error: parse error before "irq_desc"
include/linux/irq.h:83: warning: type defaults to `int' in declaration
of `irq_desc'
include/linux/irq.h:83: warning: data definition has no type or storage
class
In file included from include/asm/hardirq.h:6,
from include/linux/hardirq.h:6,
from arch/x86_64/kernel/asm-offsets.c:10:
include/linux/irq.h:97: error: parse error before "irq_desc_t"
include/linux/irq.h:97: warning: function declaration isn't a prototype
include/linux/irq.h:98: error: parse error before "irq_desc_t"
include/linux/irq.h:98: warning: function declaration isn't a prototype
In file included from include/linux/compat.h:15,
from include/asm/ia32.h:8,
from arch/x86_64/kernel/asm-offsets.c:15:
include/asm/compat.h: In function `compat_alloc_user_space':
include/asm/compat.h:196: error: dereferencing pointer to incomplete type
arch/x86_64/kernel/asm-offsets.c: In function `main':
arch/x86_64/kernel/asm-offsets.c:25: error: dereferencing pointer to
incomplete type
arch/x86_64/kernel/asm-offsets.c:26: error: dereferencing pointer to
incomplete type
arch/x86_64/kernel/asm-offsets.c:27: error: dereferencing pointer to
incomplete type
arch/x86_64/kernel/asm-offsets.c:28: error: dereferencing pointer to
incomplete type
arch/x86_64/kernel/asm-offsets.c: At top level:
include/asm/mmu.h:17: error: storage size of `sem' isn't known
include/linux/aio.h:149: error: storage size of `ring_info' isn't known
include/linux/sched.h:280: error: storage size of `core_done' isn't known
include/linux/sched.h:286: error: storage size of `default_kioctx' isn't
known
include/linux/sched.h:619: error: storage size of `real_timer' isn't known
make[1]: *** [arch/x86_64/kernel/asm-offsets.s] Error 1
make: *** [arch/x86_64/kernel/asm-offsets.s] Error 2
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 14:31 ` [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 Ingo Molnar
` (4 preceding siblings ...)
2004-10-14 20:39 ` K.R. Foley
@ 2004-10-14 22:52 ` Radoslaw Szkodzinski
2004-10-15 11:22 ` Florian Schmidt
6 siblings, 0 replies; 28+ messages in thread
From: Radoslaw Szkodzinski @ 2004-10-14 22:52 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Lee Revell, Rui Nuno Capela, mark_h_johnson,
K.R. Foley, Daniel Walker, Bill Huey, Andrew Morton, Adam Heath,
Lorenzo Allegrucci, Dipankar Sarma
On Thu, 14 Oct 2004 16:31:31 +0200, Ingo Molnar <mingo@elte.hu> wrote:
>
> i have released the -U1 PREEMPT_REALTIME patch:
>
> http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-U1
>
"scheduling while atomic" messages in Reiser4 mentioned at -U0 thread
also appear in this version, but less often.
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 14:31 ` [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 Ingo Molnar
` (5 preceding siblings ...)
2004-10-14 22:52 ` Radoslaw Szkodzinski
@ 2004-10-15 11:22 ` Florian Schmidt
2004-10-15 11:44 ` Ingo Molnar
6 siblings, 1 reply; 28+ messages in thread
From: Florian Schmidt @ 2004-10-15 11:22 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Lee Revell, Rui Nuno Capela, Mark_H_Johnson,
K.R. Foley, Daniel Walker, Bill Huey, Andrew Morton, Adam Heath,
Lorenzo Allegrucci, Dipankar Sarma
On Thu, 14 Oct 2004 16:31:31 +0200
Ingo Molnar <mingo@elte.hu> wrote:
>
> i have released the -U1 PREEMPT_REALTIME patch:
>
> http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-U1
Ok,
with the help of Paul Davis i think i have found what's causing the jackd
FP exception. It seems to be a bug in the kernel when PREEMPT_REALTIME is
enabled:
~$ cat /proc/cpuinfo|grep cpu
cpu family : 6
cpu MHz : 0.001
cpuid level : 1
Mhz == 0.001? Hrmm. No wonder jackd was freaking out in its timing code..
The real cpu speed is 1.2ghz.
flo
P.S.: Will retry with U3, to see if this persists.
dmesg output:
Linux version 2.6.9-rc4-mm1-VP-U1-RT (root@mango.fruits.de) (gcc version 3.3.5 (Debian 1:3.3.5-1)) #3 Thu Oct 14 22:40:26 CEST 2004
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 0000000030000000 (usable)
BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
BIOS-e820: 00000000ffee0000 - 00000000fff00000 (reserved)
BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
768MB LOWMEM available.
On node 0 totalpages: 196608
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 192512 pages, LIFO batch:16
HighMem zone: 0 pages, LIFO batch:1
DMI 2.3 present.
Built 1 zonelists
Initializing CPU#0
Kernel command line: BOOT_IMAGE=2.6.9-U0 ro root=1601
PID hash table entries: 4096 (order: 12, 65536 bytes)
Detected 1195.144 MHz processor.
Using tsc for high-res timesource
Console: colour VGA+ 80x25
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 776332k/786432k available (1673k kernel code, 9644k reserved, 482k data, 340k init, 0k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay loop... 2367.48 BogoMIPS (lpj=1183744)
Security Scaffold v1.0.0 initialized
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: After generic identify, caps: 0183f9ff c1c7f9ff 00000000 00000000
CPU: After vendor identify, caps: 0183f9ff c1c7f9ff 00000000 00000000
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 256K (64 bytes/line)
CPU: After all inits, caps: 0183f9ff c1c7f9ff 00000000 00000020
CPU: AMD Athlon(tm) Processor stepping 02
Enabling fast FPU save and restore... done.
Checking 'hlt' instruction... OK.
ksoftirqd started up.
NET: Registered protocol family 16
PCI: PCI BIOS revision 2.10 entry at 0xfdb01, last bus=1
PCI: Using configuration type 1
mtrr: v2.0 (20020519)
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
Uncovering SIS18 that hid as a SIS503 (compatible=1)
Enabling SiS 96x SMBus.
PCI: Using IRQ router SIS [1039/0018] at 0000:00:02.0
PCI: IRQ 0 for device 0000:00:02.1 doesn't match PIRQ mask - try pci=usepirqmask
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16ac)
Initializing Cryptographic API
Real Time Clock Driver v1.12
Non-volatile memory driver v1.2
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing disabled
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
SIS5513: IDE controller at PCI slot 0000:00:02.5
SIS5513: chipset revision 208
SIS5513: not 100% native mode: will probe irqs later
SIS5513: SiS735 ATA 100 (2nd gen) controller
ide0: BM-DMA at 0xff00-0xff07, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xff08-0xff0f, BIOS settings: hdc:DMA, hdd:DMA
Probing IDE interface ide0...
hda: IC35L060AVER07-0, ATA DISK drive
elevator: using anticipatory as default io scheduler
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: ST340823A, ATA DISK drive
hdd: TDK CDRW121032, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
Probing IDE interface ide2...
ide2: Wait for ready failed before probe !
Probing IDE interface ide3...
ide3: Wait for ready failed before probe !
Probing IDE interface ide4...
ide4: Wait for ready failed before probe !
Probing IDE interface ide5...
ide5: Wait for ready failed before probe !
hda: max request size: 128KiB
hda: 120103200 sectors (61492 MB) w/1916KiB Cache, CHS=65535/16/63, UDMA(100)
hda: cache flushes not supported
hda: hda1 hda2 hda3
hdc: max request size: 128KiB
hdc: Host Protected Area detected.
current capacity is 78165360 sectors (40020 MB)
native capacity is 78165361 sectors (40020 MB)
hdc: Host Protected Area disabled.
hdc: 78165361 sectors (40020 MB) w/1024KiB Cache, CHS=65535/16/63, UDMA(33)
hdc: cache flushes not supported
hdc: hdc1 hdc2
hdd: ATAPI 32X CD-ROM CD-R/RW drive, 2048kB Cache, DMA
Uniform CD-ROM driver Revision: 3.20
mice: PS/2 mouse device common for all mice
input: AT Translated Set 2 keyboard on isa0060/serio0
input: ImExPS/2 Logitech Explorer Mouse on isa0060/serio1
input: PC Speaker
NET: Registered protocol family 2
IP: routing cache hash table of 2048 buckets, 64Kbytes
TCP: Hash tables configured (established 65536 bind 37449)
NET: Registered protocol family 1
NET: Registered protocol family 17
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 340k freed
kjournald starting. Commit interval 5 seconds
Adding 289160k swap on /dev/hda3. Priority:-1 extents:1
EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
EXT3 FS on hdc1, internal journal
PCI: Found IRQ 5 for device 0000:00:0f.0
sis900.c: v1.08.07 11/02/2003
PCI: Found IRQ 10 for device 0000:00:03.0
eth0: Realtek RTL8201 PHY transceiver found at address 1.
eth0: Using transceiver found at address 1 as default
eth0: SiS 900 PCI Fast Ethernet at 0xdc00, IRQ 10, 00:d0:09:e9:c1:0f.
CSLIP: code copyright 1989 Regents of the University of California
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
kjournald starting. Commit interval 5 seconds
EXT3 FS on hda1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3 FS on hda2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3 FS on hdc2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
complete /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 4
model name : AMD Athlon(tm) Processor
stepping : 2
cpu MHz : 0.001
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr syscall mmxext 3dnowext 3dnow
bogomips : 2367.48
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-15 11:22 ` Florian Schmidt
@ 2004-10-15 11:44 ` Ingo Molnar
2004-10-15 12:25 ` Florian Schmidt
0 siblings, 1 reply; 28+ messages in thread
From: Ingo Molnar @ 2004-10-15 11:44 UTC (permalink / raw)
To: Florian Schmidt
Cc: linux-kernel, Lee Revell, Rui Nuno Capela, Mark_H_Johnson,
K.R. Foley, Daniel Walker, Bill Huey, Andrew Morton, Adam Heath,
Lorenzo Allegrucci, Dipankar Sarma
* Florian Schmidt <mista.tapas@gmx.net> wrote:
> > i have released the -U1 PREEMPT_REALTIME patch:
> >
> > http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-U1
>
> Ok,
>
> with the help of Paul Davis i think i have found what's causing the jackd
> FP exception. It seems to be a bug in the kernel when PREEMPT_REALTIME is
> enabled:
>
> ~$ cat /proc/cpuinfo|grep cpu
> cpu family : 6
> cpu MHz : 0.001
> cpuid level : 1
>
> Mhz == 0.001? Hrmm. No wonder jackd was freaking out in its timing code..
> The real cpu speed is 1.2ghz.
>
> flo
>
> P.S.: Will retry with U3, to see if this persists.
ah ... good eyes. Seems to be working fine here:
saturn:~> cat /proc/cpuinfo | grep -i mhz
cpu MHz : 2051.126
saturn:~> uname -a
Linux saturn 2.6.9-rc4-mm1-VP-U4 #288 SMP Fri Oct 15 12:31:38 CEST 2004
but it could easily be happening on some CPUs only. Let me know if that
problem persists. Fortunately i think it will be at most a detection
problem, not some FPU breakage that i initially suspected.
it could be the following thing: if you got an smp_processor_id()
warning _in the CPU detection code_ in earlier PREEMPT_REALTIME kernels
then the kernel could easily see that the CPU is extremely slow, because
it didnt manage to do much work (due to the long printout...). So i'd
say if this happens again it's most likely a debug printout in the
'calibrating delay loop' phase.
Ingo
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-15 11:44 ` Ingo Molnar
@ 2004-10-15 12:25 ` Florian Schmidt
0 siblings, 0 replies; 28+ messages in thread
From: Florian Schmidt @ 2004-10-15 12:25 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Lee Revell, Rui Nuno Capela, Mark_H_Johnson,
K.R. Foley, Daniel Walker, Bill Huey, Andrew Morton, Adam Heath,
Lorenzo Allegrucci, Dipankar Sarma
On Fri, 15 Oct 2004 13:44:05 +0200
Ingo Molnar <mingo@elte.hu> wrote:
> > cpu MHz : 0.001
> ah ... good eyes. Seems to be working fine here:
>
> saturn:~> cat /proc/cpuinfo | grep -i mhz
> cpu MHz : 2051.126
> saturn:~> uname -a
> Linux saturn 2.6.9-rc4-mm1-VP-U4 #288 SMP Fri Oct 15 12:31:38 CEST 2004
>
> but it could easily be happening on some CPUs only. Let me know if that
> problem persists.
Same problem with U3.
~$ uname -a
Linux mango.fruits.de 2.6.9-rc4-mm1-VP-U3-RT #1 Fri Oct 15 13:45:00 CEST 2004 i686 GNU/Linux
~$ cat /proc/cpuinfo |grep MHz
cpu MHz : 0.001
> Fortunately i think it will be at most a detection
> problem, not some FPU breakage that i initially suspected.
>
> it could be the following thing: if you got an smp_processor_id()
> warning _in the CPU detection code_ in earlier PREEMPT_REALTIME kernels
> then the kernel could easily see that the CPU is extremely slow, because
> it didnt manage to do much work (due to the long printout...). So i'd
> say if this happens again it's most likely a debug printout in the
> 'calibrating delay loop' phase.
I see. btw: i built this one with CONFIG_PREEMPT_TIMING and
CONFIG_LATENCY_TRACE and, naturally, this also throws the timing code of the
critical section timing off:
Linux version 2.6.9-rc4-mm1-VP-U3-RT (root@mango.fruits.de) (gcc version 3.3.5 (Debian 1:3.3.5-1)) #1 Fri Oct 15 13:45:00 CEST 2004
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 0000000030000000 (usable)
BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
BIOS-e820: 00000000ffee0000 - 00000000fff00000 (reserved)
BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
768MB LOWMEM available.
On node 0 totalpages: 196608
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 192512 pages, LIFO batch:16
HighMem zone: 0 pages, LIFO batch:1
DMI 2.3 present.
Built 1 zonelists
Initializing CPU#0
Kernel command line: BOOT_IMAGE=2.6.9-U3-RT ro root=1601
PID hash table entries: 4096 (order: 12, 65536 bytes)
(swapper/0): new 436746 us maximum-latency critical section.
=> started at: <start_kernel+0x39/0x1c0>
=> ended at: <cond_resched+0x23/0x80>
[<c012ea8c>] touch_preempt_timing+0x3c/0x40
[<c012e9b0>] check_preempt_timing+0x160/0x200
[<c02a3e23>] cond_resched+0x23/0x80
[<c012ea8c>] touch_preempt_timing+0x3c/0x40
[<c02a3e23>] cond_resched+0x23/0x80
[<c02a3e23>] cond_resched+0x23/0x80
[<c012d899>] _mutex_lock+0x19/0x40
[<c011dad0>] tasklet_hi_action+0x0/0x70
[<c010b51a>] get_cmos_time+0x1a/0x1e0
[<c03228e3>] start_kernel+0xc3/0x1c0
[<c0112240>] mcount+0x14/0x18
[<c0326ba0>] time_init+0x10/0x70
[<c011dad0>] tasklet_hi_action+0x0/0x70
[<c03228e3>] start_kernel+0xc3/0x1c0
[<c03225a0>] unknown_bootoption+0x0/0x160
preempt count: 1
entry 1: start_kernel+0x39/0x1c0 / (0xc010019f)
Detected 1195.144 MHz processor.
Using tsc for high-res timesource
(swapper/0): new 597854 us maximum-latency critical section.
=> started at: <cond_resched+0x23/0x80>
=> ended at: <cond_resched+0x23/0x80>
[<c012ea8c>] touch_preempt_timing+0x3c/0x40
[<c012e9b0>] check_preempt_timing+0x160/0x200
[<c02a3e23>] cond_resched+0x23/0x80
[<c012ea8c>] touch_preempt_timing+0x3c/0x40
[<c02a3e23>] cond_resched+0x23/0x80
[<c02a3e23>] cond_resched+0x23/0x80
[<c012d899>] _mutex_lock+0x19/0x40
[<c012d916>] _mutex_lock_irqsave+0x16/0x20
[<c01f0347>] tty_register_ldisc+0x37/0xb0
[<c0333367>] console_init+0x27/0x50
[<c03228e8>] start_kernel+0xc8/0x1c0
[<c03225a0>] unknown_bootoption+0x0/0x160
preempt count: 1
entry 1: start_kernel+0x39/0x1c0 / (0xc010019f)
Console: colour VGA+ 80x25
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 776156k/786432k available (1685k kernel code, 9820k reserved, 485k data, 344k init, 0k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay loop... 2351.10 BogoMIPS (lpj=1175552)
Security Scaffold v1.0.0 initialized
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: After generic identify, caps: 0183f9ff c1c7f9ff 00000000 00000000
CPU: After vendor identify, caps: 0183f9ff c1c7f9ff 00000000 00000000
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 256K (64 bytes/line)
CPU: After all inits, caps: 0183f9ff c1c7f9ff 00000000 00000020
CPU: AMD Athlon(tm) Processor stepping 02
Enabling fast FPU save and restore... done.
Checking 'hlt' instruction... OK.
ksoftirqd started up.
NET: Registered protocol family 16
PCI: PCI BIOS revision 2.10 entry at 0xfdb01, last bus=1
PCI: Using configuration type 1
mtrr: v2.0 (20020519)
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
Uncovering SIS18 that hid as a SIS503 (compatible=1)
Enabling SiS 96x SMBus.
PCI: Using IRQ router SIS [1039/0018] at 0000:00:02.0
PCI: IRQ 0 for device 0000:00:02.1 doesn't match PIRQ mask - try pci=usepirqmask
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16ac)
Initializing Cryptographic API
Real Time Clock Driver v1.12
Non-volatile memory driver v1.2
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing disabled
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
SIS5513: IDE controller at PCI slot 0000:00:02.5
SIS5513: chipset revision 208
SIS5513: not 100% native mode: will probe irqs later
SIS5513: SiS735 ATA 100 (2nd gen) controller
ide0: BM-DMA at 0xff00-0xff07, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xff08-0xff0f, BIOS settings: hdc:DMA, hdd:DMA
Probing IDE interface ide0...
hda: IC35L060AVER07-0, ATA DISK drive
elevator: using anticipatory as default io scheduler
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
hdc: ST340823A, ATA DISK drive
hdd: TDK CDRW121032, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
Probing IDE interface ide2...
ide2: Wait for ready failed before probe !
Probing IDE interface ide3...
ide3: Wait for ready failed before probe !
Probing IDE interface ide4...
ide4: Wait for ready failed before probe !
Probing IDE interface ide5...
ide5: Wait for ready failed before probe !
hda: max request size: 128KiB
hda: 120103200 sectors (61492 MB) w/1916KiB Cache, CHS=65535/16/63, UDMA(100)
hda: cache flushes not supported
hda: hda1 hda2 hda3
hdc: max request size: 128KiB
hdc: Host Protected Area detected.
current capacity is 78165360 sectors (40020 MB)
native capacity is 78165361 sectors (40020 MB)
hdc: Host Protected Area disabled.
hdc: 78165361 sectors (40020 MB) w/1024KiB Cache, CHS=65535/16/63, UDMA(33)
hdc: cache flushes not supported
hdc: hdc1 hdc2
hdd: ATAPI 32X CD-ROM CD-R/RW drive, 2048kB Cache, DMA
Uniform CD-ROM driver Revision: 3.20
mice: PS/2 mouse device common for all mice
input: AT Translated Set 2 keyboard on isa0060/serio0
input: ImExPS/2 Logitech Explorer Mouse on isa0060/serio1
input: PC Speaker
NET: Registered protocol family 2
IP: routing cache hash table of 2048 buckets, 64Kbytes
TCP: Hash tables configured (established 65536 bind 37449)
NET: Registered protocol family 1
NET: Registered protocol family 17
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 344k freed
kjournald starting. Commit interval 5 seconds
Adding 289160k swap on /dev/hda3. Priority:-1 extents:1
EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
EXT3 FS on hdc1, internal journal
PCI: Found IRQ 5 for device 0000:00:0f.0
sis900.c: v1.08.07 11/02/2003
PCI: Found IRQ 10 for device 0000:00:03.0
eth0: Realtek RTL8201 PHY transceiver found at address 1.
eth0: Using transceiver found at address 1 as default
eth0: SiS 900 PCI Fast Ethernet at 0xdc00, IRQ 10, 00:d0:09:e9:c1:0f.
CSLIP: code copyright 1989 Regents of the University of California
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
kjournald starting. Commit interval 5 seconds
EXT3 FS on hda1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3 FS on hda2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3 FS on hdc2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
(S40networking/210): new 698390 us maximum-latency critical section.
=> started at: <kernel_fpu_begin+0x21/0x60>
=> ended at: <_mmx_memcpy+0x131/0x180>
[<c012ec41>] sub_preempt_count+0x71/0x90
[<c012e9b0>] check_preempt_timing+0x160/0x200
[<c01e48d1>] _mmx_memcpy+0x131/0x180
[<c010c44e>] kernel_fpu_begin+0xe/0x60
[<c012ec41>] sub_preempt_count+0x71/0x90
[<c01e48d1>] _mmx_memcpy+0x131/0x180
[<c01e48d1>] _mmx_memcpy+0x131/0x180
[<c01edbe5>] vgacon_scroll+0x245/0x260
[<c01fe33a>] scrup+0xda/0xf0
[<c0112240>] mcount+0x14/0x18
[<c01ffe82>] lf+0x72/0x80
[<c0201b20>] do_con_trol+0xa90/0xc30
[<c01fef3b>] hide_softcursor+0xb/0x70
[<c0201f25>] do_con_write+0x265/0x720
[<c0202a0b>] con_write+0x3b/0x50
[<c0202a65>] con_put_char+0x45/0x50
[<c01f4b15>] opost+0xa5/0x1d0
[<c0112240>] mcount+0x14/0x18
[<c01f7083>] write_chan+0x1b3/0x220
[<c0114ff0>] default_wake_function+0x0/0x20
[<c0112240>] mcount+0x14/0x18
[<c0114ff0>] default_wake_function+0x0/0x20
[<c0114f8f>] lock_kernel+0x2f/0x50
[<c01f169f>] tty_write+0x12f/0x1e0
[<c01f6ed0>] write_chan+0x0/0x220
[<c01f1750>] redirected_tty_write+0x0/0xb0
[<c015584a>] vfs_write+0xca/0x140
[<c0112240>] mcount+0x14/0x18
[<c0155990>] sys_write+0x50/0x80
[<c010603b>] syscall_call+0x7/0xb
preempt count: 1
entry 1: kernel_fpu_begin+0x21/0x60 / (_mmx_memcpy+0x36/0x180)
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
2004-10-14 19:13 [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 Mark_H_Johnson
2004-10-14 19:46 ` Bill Huey
2004-10-14 19:48 ` Ingo Molnar
@ 2004-10-15 14:52 ` Timothy Miller
2 siblings, 0 replies; 28+ messages in thread
From: Timothy Miller @ 2004-10-15 14:52 UTC (permalink / raw)
To: Mark_H_Johnson
Cc: Ingo Molnar, Andrew Morton, Bill Huey, Dipankar Sarma, Adam Heath,
Daniel Walker, K.R. Foley, linux-kernel, Lorenzo Allegrucci,
Lee Revell, Rui Nuno Capela
Mark_H_Johnson@raytheon.com wrote:
>
> In the systems I have to deal with, I do not have a clear criteria
> to set priorities of interrupts relative to each other. For example, I
> have a real time simulation system using the following devices:
> - occasional disk access to simulate disk I/O
> - real time network traffic
> - real time delivery of interrupts from a PCI timer card and APIC timers
> - real time interrupts from a shared memory interface
> The priorities of real time tasks are basically assigned based on the
> rate of execution. 80 Hz tasks run at a higher priority than 60 Hz, 60 Hz >
> 40 Hz, and so on. A number of tasks can access each device.
>
What if drivers could indicate how much "jitter" (essentially, latency)
its interrupts can tolerate? Higher jitter would SORTOF translate into
lower priority, although the scheduler would make sure the IRQ was
started before its tolerance ran out (ie. the priority approaches
infinity as its tolerance period approaches the end). The jitter
tolerance would be measured in microseconds, I guess.
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1
@ 2004-11-13 23:02 William Wolf
2004-10-14 21:08 ` Lee Revell
0 siblings, 1 reply; 28+ messages in thread
From: William Wolf @ 2004-11-13 23:02 UTC (permalink / raw)
To: kernel list
Has anyone tried these patches been on x86_64? Im trying the latest -U1
patch and getting lots of compile errors. I can send the output if needed.
^ permalink raw reply [flat|nested] 28+ messages in thread
end of thread, other threads:[~2004-10-15 14:42 UTC | newest]
Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-10-14 19:13 [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 Mark_H_Johnson
2004-10-14 19:46 ` Bill Huey
2004-10-14 19:48 ` Ingo Molnar
2004-10-14 21:52 ` Esben Nielsen
2004-10-15 14:52 ` Timothy Miller
-- strict thread matches above, loose matches on Subject: below --
2004-11-13 23:02 William Wolf
2004-10-14 21:08 ` Lee Revell
2004-10-14 22:26 ` William Wolf
2004-10-14 22:24 Mark_H_Johnson
2004-10-14 17:06 Mark_H_Johnson
2004-10-14 18:24 ` Ingo Molnar
2004-10-14 19:02 ` Ingo Molnar
2004-10-14 20:26 ` Bill Huey
2004-10-14 20:32 ` Bill Huey
2004-10-11 18:23 [patch] CONFIG_PREEMPT_REALTIME, 'Fully Preemptible Kernel', VP-2.6.9-rc4-mm1-T4 Mark_H_Johnson
2004-10-11 21:59 ` [patch] VP-2.6.9-rc4-mm1-T5 Ingo Molnar
2004-10-12 9:15 ` [patch] VP-2.6.9-rc4-mm1-T6 Ingo Molnar
2004-10-12 12:33 ` Ingo Molnar
2004-10-12 19:54 ` [patch] VP-2.6.9-rc4-mm1-T8 Ingo Molnar
2004-10-13 6:15 ` [patch] VP-2.6.9-rc4-mm1-T9 Ingo Molnar
2004-10-14 0:24 ` [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U0 Ingo Molnar
2004-10-14 14:31 ` [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 Ingo Molnar
2004-10-14 17:34 ` Adam Heath
2004-10-14 22:16 ` Adam Heath
2004-10-14 22:24 ` Ingo Molnar
2004-10-14 19:42 ` Daniel Walker
2004-10-14 19:57 ` Ingo Molnar
2004-10-14 20:34 ` Daniel Walker
[not found] ` <200410142216.23572.l_allegrucci@yahoo.it>
2004-10-14 20:21 ` Lee Revell
2004-10-14 20:28 ` Lorenzo Allegrucci
2004-10-14 20:39 ` K.R. Foley
2004-10-14 22:52 ` Radoslaw Szkodzinski
2004-10-15 11:22 ` Florian Schmidt
2004-10-15 11:44 ` Ingo Molnar
2004-10-15 12:25 ` Florian Schmidt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).