* 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 17:06 [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 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 17:06 [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 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 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-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
* 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 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 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 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 19:13 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 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: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 19:13 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] CONFIG_PREEMPT_REALTIME, 'Fully Preemptible Kernel', VP-2.6.9-rc4-mm1-T4
@ 2004-10-11 18:23 Mark_H_Johnson
2004-10-11 21:59 ` [patch] VP-2.6.9-rc4-mm1-T5 Ingo Molnar
0 siblings, 1 reply; 28+ messages in thread
From: Mark_H_Johnson @ 2004-10-11 18:23 UTC (permalink / raw)
To: Ingo Molnar
Cc: Andrew Morton, Daniel Walker, K.R. Foley, linux-kernel,
Florian Schmidt, Fernando Pablo Lopez-Lezcano, Lee Revell,
Rui Nuno Capela
>i've released the -T4 VP patch:
>
>
http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-T4
I would have to say this is "very rough" at this point. I had the following
problems in the build:
[1] kernel/ksyms.c - undefined symbols
[2] kernel/mutex.c - obvious cut / paste problems
[3] XFS has incompatible mutex definition
[4] suspicious warnings
[5] missing symbols for modules
Details at the end.
I booted w/ SMP and the machine threw a lot of error messages about
sleeping in
an invalid context. For example:
include/linux/rwsem.h:43
in_atomic():1 [00010001], irqs_disabled():1
[<c011f0ea>] __might_sleep+0xca/0xe0
[<c01390d4>] rw_mutex_read_lock+0x34/0x50
[<c0122dbd>] profile_hook+0x1d/0x50
[<c0123338>] profile_tick+0x68/0x70
[<c01150ad>] smp_apic_timer_interrupt+0x5d/0xf0
[<c0105820>] default_idle+0x0/0x40
[<c010854a>] apic_timer_interrupt+0x1a/0x20
[<c0105820>] default_idle+0x0/0x40
[<c011007b>] dmi_get_system_info+0xb/0x20
[<c010585a>] default_idle+0x3a/0x40
[<c03b4a4d>] start_kernel+0x19d/0x1e0
[<c03b4440>] unknown_bootoption+0x0/0x180
(somehow managed to stop the scrolling console with the above message
displayed...)
Finally died with a kernel BUG
kernel BUG at kernel/latenc.c:419!
invalid operand: 0000 [#1]
PREEMPT SMP
Modules linked in microcode dm_mod uhci_hcd ext3 jbd
CPU: 1
EIP: 0001:[<00000000>] Not tainted VLI
EFLAGS: c1663f38 (2.6.9-rc4-mm1-VP-T4)
EIP is at 0x0
eax: 00000000 ebx: c1663f54 ecx: c0109a8c edx: c1663f78
esi: 0000000c edi: c1663f28 ebp: c1663f3c esp: c1663f78
ds: 007b es: 07b ss: 4f03 preempt: 00000001
Process swapper (pid: 0, threadinfo=c1662000 task=c165e550)
<0> Kernel panic - not syncing: Attempted to kill the idle task!
Rebooting with num_cpus=1 and appeared to make it farther but then the
console scrolled like crazy and finally said "console shuts up ..."
and the machine appeared to be hung. Could not scroll the window up
or down to see the full message. Had to power off / on to get the
machine back up. Going back to -T3 until I see some fixes.
If the machine managed to record some good data in /var/log/messages
I will send them separately to you for reference.
--Mark H Johnson
<mailto:Mark_H_Johnson@raytheon.com>
Details on build problems / work arounds follow:
[1] ksyms.c - I commented these lines out, to get a complete build, but
there appears to
be code that expects rtc_lock to be defined. See #5.
arch/i386/kernel/i386_ksyms.c:166 error: `rtc_lock' undeclared here (not in
a function)
arch/i386/kernel/i386_ksyms.c:166 error: initializer element is not
constant
arch/i386/kernel/i386_ksyms.c:166 error: (near initialization for
`__ksymtab_rtc_lock.value')
followed by a similar error for atomic_dec_and_lock at line 177.
[2] mutex.c - several symbols were defined twice, fixed by changing the
names to
the functions preceeding them. See lines 108, 201, 213, 297.
[3] XFS compile failed as follows:
CC [M] fs/xfs/quota/xfs_dquot.o
In file included from fs/xfs/linux-2.6/xfs_linux.h:63,
from fs/xfs/xfs.h:35,
from fs/xfs/quota/xfs_dquot.c:33:
fs/xfs/linux-2.6/mutex.h:45: error: conflicting types for `mutex_t'
include/asm/spinlock.h:79: error: previous declaration of `mutex_t'
In file included from fs/xfs/linux-2.6/xfs_linux.h:102,
from fs/xfs/xfs.h:35,
from fs/xfs/quota/xfs_dquot.c:33:
fs/xfs/linux-2.6/xfs_vnode.h:578:30: macro "mutex_lock" requires 2
arguments, but only 1 given
fs/xfs/linux-2.6/xfs_vnode.h:585:30: macro "mutex_lock" requires 2
arguments, but only 1 given
fs/xfs/quota/xfs_dquot.c:1327:23: macro "mutex_lock" requires 2 arguments,
but only 1 given
fs/xfs/quota/xfs_dquot.c:1390:41: macro "mutex_lock" requires 2 arguments,
but only 1 given
fs/xfs/linux-2.6/xfs_vnode.h: In function `vn_flagset':
fs/xfs/linux-2.6/xfs_vnode.h:578: warning: statement with no effect
fs/xfs/linux-2.6/xfs_vnode.h: In function `vn_flagclr':
fs/xfs/linux-2.6/xfs_vnode.h:585: warning: statement with no effect
Turned off XFS in the build.
[4] I considered the following warnings to be "suspicious" but am not sure
if they are really problems or not.
CC security/selinux/ss/policydb.o
fs/dcache.c: In function `prune_dcache':
fs/dcache.c:391: warning: passing arg 1 of `cond_resched_lock' from
incompatible pointer type
CC security/selinux/ss/services.o
CC fs/inode.o
fs/inode.c: In function `invalidate_list':
fs/inode.c:317: warning: passing arg 1 of `cond_resched_lock' from
incompatible pointer type
[5] Several modules had undefined symbols. The messages were...
Kernel: arch/i386/boot/bzImage is ready
*** Warning: "mutex_trylock_bh" [drivers/net/ppp_synctty.ko] undefined!
*** Warning: "del_mtd_partitions" [drivers/mtd/maps/scx200_docflash.ko]
undefined!
*** Warning: "add_mtd_partitions" [drivers/mtd/maps/scx200_docflash.ko]
undefined!
*** Warning: "i2o_msg_in_to_virt" [drivers/message/i2o/i2o_scsi.ko]
undefined!
*** Warning: "i2o_msg_out_to_virt" [drivers/message/i2o/i2o_core.ko]
undefined!
*** Warning: "i2o_msg_in_to_virt" [drivers/message/i2o/i2o_core.ko]
undefined!
*** Warning: "i2o_msg_in_to_virt" [drivers/message/i2o/i2o_block.ko]
undefined!
*** Warning: "rtc_lock" [drivers/char/nvram.ko] undefined!
*** Warning: "rtc_lock" [drivers/char/mwave/mwave.ko] undefined!
*** Warning: "rtc_lock" [drivers/block/floppy.ko] undefined!
...
if [ -r System.map ]; then /sbin/depmod -ae -F System.map -b
/var/tmp/kernel-2.6.9rc4mm1VPT4-root -r 2.6.9-rc4-mm1-VP-T4; fi
WARNING: /var/tmp/kernel-2.6.9
rc4mm1VPT4-root/lib/modules/2.6.9-rc4-mm1-VP-T4/kernel/drivers/net/ppp_synctty.ko
needs unknown symbol mutex_trylock_bh
WARNING: /var/tmp/kernel-2.6.9
rc4mm1VPT4-root/lib/modules/2.6.9-rc4-mm1-VP-T4/kernel/drivers/mtd/maps/scx200_docflash.ko
needs unknown symbol del_mtd_partitions
WARNING: /var/tmp/kernel-2.6.9
rc4mm1VPT4-root/lib/modules/2.6.9-rc4-mm1-VP-T4/kernel/drivers/mtd/maps/scx200_docflash.ko
needs unknown symbol add_mtd_partitions
WARNING: /var/tmp/kernel-2.6.9
rc4mm1VPT4-root/lib/modules/2.6.9-rc4-mm1-VP-T4/kernel/drivers/message/i2o/i2o_scsi.ko
needs unknown symbol i2o_msg_in_to_virt
WARNING: /var/tmp/kernel-2.6.9
rc4mm1VPT4-root/lib/modules/2.6.9-rc4-mm1-VP-T4/kernel/drivers/message/i2o/i2o_core.ko
needs unknown symbol i2o_msg_in_to_virt
WARNING: /var/tmp/kernel-2.6.9
rc4mm1VPT4-root/lib/modules/2.6.9-rc4-mm1-VP-T4/kernel/drivers/message/i2o/i2o_core.ko
needs unknown symbol i2o_msg_out_to_virt
WARNING: /var/tmp/kernel-2.6.9
rc4mm1VPT4-root/lib/modules/2.6.9-rc4-mm1-VP-T4/kernel/drivers/message/i2o/i2o_block.ko
needs unknown symbol i2o_msg_in_to_virt
WARNING: /var/tmp/kernel-2.6.9
rc4mm1VPT4-root/lib/modules/2.6.9-rc4-mm1-VP-T4/kernel/drivers/char/nvram.ko
needs unknown symbol rtc_lock
WARNING: /var/tmp/kernel-2.6.9
rc4mm1VPT4-root/lib/modules/2.6.9-rc4-mm1-VP-T4/kernel/drivers/char/mwave/mwave.ko
needs unknown symbol rtc_lock
WARNING: /var/tmp/kernel-2.6.9
rc4mm1VPT4-root/lib/modules/2.6.9-rc4-mm1-VP-T4/kernel/drivers/block/floppy.ko
needs unknown symbol rtc_lock
^ permalink raw reply [flat|nested] 28+ messages in thread
* [patch] VP-2.6.9-rc4-mm1-T5
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 ` Ingo Molnar
2004-10-12 9:15 ` [patch] VP-2.6.9-rc4-mm1-T6 Ingo Molnar
0 siblings, 1 reply; 28+ messages in thread
From: Ingo Molnar @ 2004-10-11 21:59 UTC (permalink / raw)
To: Mark_H_Johnson
Cc: Andrew Morton, Daniel Walker, K.R. Foley, linux-kernel,
Florian Schmidt, Fernando Pablo Lopez-Lezcano, Lee Revell,
Rui Nuno Capela
* Mark_H_Johnson@Raytheon.com <Mark_H_Johnson@Raytheon.com> wrote:
> I would have to say this is "very rough" at this point. I had the
> following problems in the build:
i've uploaded -T5 which should fix most of the build issues:
http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-T5
CONFIG_PREEMPT_REALTIME is still an experimental feature and defaults to
'n'.
-T5 will likely not fix the exit.c warnings, which, unless they are
accompanied by real crashes, should be mostly harmless. (famous last
words.) (The zombie task and self-reaping thread handling is a really
hard nut to crack, and i have nobody but me to blame for that code ...)
Ingo
^ permalink raw reply [flat|nested] 28+ messages in thread
* [patch] VP-2.6.9-rc4-mm1-T6
2004-10-11 21:59 ` [patch] VP-2.6.9-rc4-mm1-T5 Ingo Molnar
@ 2004-10-12 9:15 ` Ingo Molnar
2004-10-12 12:33 ` Ingo Molnar
0 siblings, 1 reply; 28+ messages in thread
From: Ingo Molnar @ 2004-10-12 9:15 UTC (permalink / raw)
To: linux-kernel
Cc: Daniel Walker, K.R. Foley, Florian Schmidt,
Fernando Pablo Lopez-Lezcano, Lee Revell, Rui Nuno Capela,
Wen-chien Jesse Sung, Mark_H_Johnson
i've uploaded -T6:
http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-T6
this should fix the UP build issues reported by many. -T6 also brings
back the ->break_lock framework and converts a few more locks to raw.
SMP is still expected to be flaky due to the zombie-task problem(s). But
UP is not out of the 'extremely experimental' status either.
to create a -T6 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-T6
Ingo
^ permalink raw reply [flat|nested] 28+ messages in thread
* Re: [patch] VP-2.6.9-rc4-mm1-T6
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
0 siblings, 1 reply; 28+ messages in thread
From: Ingo Molnar @ 2004-10-12 12:33 UTC (permalink / raw)
To: linux-kernel
Cc: Daniel Walker, K.R. Foley, Florian Schmidt,
Fernando Pablo Lopez-Lezcano, Lee Revell, Rui Nuno Capela,
Wen-chien Jesse Sung, Mark_H_Johnson
i've uploaded -T7:
http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-T7
Changes since -T6:
- further stabilization of PREEMPT_REALTIME: fixed the task-reaping
problem by moving TASK_ZOMBIE out of p->state and thus completely
separating preemption from the child-exit mechanism. This got rid of
the 'Badness in exit.c' warnings on my SMP testbox (and related
crashes).
- fixed the _mutex_trylock_bh missing symbol problem reported by K.R.
Foley and Florian Schmidt.
- turned the sysrq lock into a raw spinlock, to enable direct keyboard
irqs.
PREEMPT_REALTIME is still experimental, but it's already looking much
better on my testboxes.
to create a -T7 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-T7
Ingo
^ permalink raw reply [flat|nested] 28+ messages in thread
* [patch] VP-2.6.9-rc4-mm1-T8
2004-10-12 12:33 ` Ingo Molnar
@ 2004-10-12 19:54 ` Ingo Molnar
2004-10-13 6:15 ` [patch] VP-2.6.9-rc4-mm1-T9 Ingo Molnar
0 siblings, 1 reply; 28+ messages in thread
From: Ingo Molnar @ 2004-10-12 19:54 UTC (permalink / raw)
To: linux-kernel
Cc: Fernando Pablo Lopez-Lezcano, Lee Revell, Rui Nuno Capela,
Wen-chien Jesse Sung, Mark_H_Johnson, K.R. Foley
i've uploaded the -T8 VP patch:
http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-T8
lots of stabilization of CONFIG_PREEMPT_REALTIME. It's still in
experimental status but general stability is improving.
Changes since -T7:
- fixed a nasty category of bugs that were introduced by the use of
rwsems for rwlocks. rwsems are not read-recursive, while rwlocks are.
Fortunately it was not too hard to identify & fix recursive users of
tasklist_lock, in fact each of these also qualifies as a cleanup. The
symptom of this bug was a soft-deadlocking of the system.
- fixed profiler locks, i believe this could resolve the bootup crash
reported by K.R. Foley.
- fixed VP / XFS namespace collision reported by Mark H. Johnson
- fix one more final detail of the new zombie-task handling code
- fixed 3c59x.c, fasync-handling, ipv6, module-loader runtime
warnings reported by K.R. Foley.
- fixed the ali5451 locking
to create a -T8 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-T8
Ingo
^ permalink raw reply [flat|nested] 28+ messages in thread
* [patch] VP-2.6.9-rc4-mm1-T9
2004-10-12 19:54 ` [patch] VP-2.6.9-rc4-mm1-T8 Ingo Molnar
@ 2004-10-13 6:15 ` Ingo Molnar
2004-10-14 0:24 ` [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U0 Ingo Molnar
0 siblings, 1 reply; 28+ messages in thread
From: Ingo Molnar @ 2004-10-13 6:15 UTC (permalink / raw)
To: linux-kernel
Cc: Lee Revell, Rui Nuno Capela, Wen-chien Jesse Sung,
Mark_H_Johnson, K.R. Foley
i've uploaded the -T9 VP patch:
http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-T9
this is a bugfixes-only release that should fix the highmem-related
issues reported by K.R. Foley and Mark H. Johnson: 3 more locks had to
be converted to raw.
to create a -T9 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-T9
Ingo
^ permalink raw reply [flat|nested] 28+ messages in thread
* [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U0
2004-10-13 6:15 ` [patch] VP-2.6.9-rc4-mm1-T9 Ingo Molnar
@ 2004-10-14 0:24 ` Ingo Molnar
2004-10-14 14:31 ` [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 Ingo Molnar
0 siblings, 1 reply; 28+ messages in thread
From: Ingo Molnar @ 2004-10-14 0:24 UTC (permalink / raw)
To: linux-kernel
Cc: Lee Revell, Rui Nuno Capela, Mark_H_Johnson, K.R. Foley,
Daniel Walker, Bill Huey, Andrew Morton
i'm pleased to announce a significantly improved version of the
Real-Time Preemption (PREEMPT_REALTIME) feature that i have been working
towards in the past couple of weeks.
the patch (against 2.6.9-rc4-mm1) can be downloaded from:
http://redhat.com/~mingo/voluntary-preempt/voluntary-preempt-2.6.9-rc4-mm1-U0
this is i believe the first correct conversion of the Linux kernel to a
fully preemptible (fully mutex-based) preemption model, while still
keeping all locking properties of Linux.
I also think that this feature can and should be integrated into the
upstream kernel sometime in the future. It will need improvements and
fixes and lots of testing, but i believe the basic concept is sound and
inclusion is manageable and desirable. So comments, testing and feedback
is more than welcome!
to recap the conceptual issues that needed solving: the previous patch
already converted a fair portion of spinlocks to mutexes, but that in a
fully preemptible kernel model the following locking primitives are
especially problematic:
- RCU locking
- per-cpu counters and per-cpu variables
- tlb gather/release logic
- seqlocks
- atomic-kmaps
- pte mapping
note that while we tend to think about these as SMP locking primitives,
in a fully preemptible model these locking rules are necessary for
correctness, even on a single-CPU embedded box.
Unfortunately none of the existing preemption patches solve these
problems: they concentrate on UP but these locking rules must not be
ignored on UP either!
(Bill Huey's mutex patch he just released is the one notable exception i
know about, which is also a correct implementation i believe, but it
doesnt attack these locking rules [yet]. Bill's locking hierarchy is i
believe quite similar to the -T9 patch - this i believe is roughly the
best one can get when only using spinlocks as a vehicle.)
In the previous (-T9) version of the Real-Time Preemption patch, the
above locking primitives kept large portions of kernel code
non-preemptable, causing a 'spreadout' of raw spinlocks and
non-preemptible sections to various kernel subsystems.
Another, even more problematic effect was that both network drivers and
block IO drivers got 'contaminated' by raw spinlocks, triggering lots of
per-driver changes and thus limiting testability. It is basically an
opt-in model to correctness which is bad from a maintainance and
upstream acceptance point of view. The -T9 patch was a prime example of
the problems the Linux locking primitives cause in a fully preemptible
kernel model.
To solve all these fundamental problems, i improved/fixed/changed all of
these locking methods to be preemption-friendly. Most of the time it was
necessary to introduce an additional API variant because e.g.
rcu_read_lock() is anonymous (it doesnt identify the data protected), so
i introduced a variant that takes the write-lock as an argument. In the
PREEMPT_REALTIME case we can thus properly serialize on that lock.
For per-cpu variables i introduced a new API variant that creates a
spinlock-array for the per-cpu-variable, and users must make sure the
cpu field doesnt change. Migration to another CPU can happen within the
critical section, but 'statistically' the variable is still per-CPU and
update correctness is fully preserved.
TLB shootdown was the source of another nasty type of critical section:
it keeps preemption disabled during much of the pagetable zapping and
also relies on a per-CPU variable to keep TLB state. The fix for
PREEMPT_REALTIME (on x86) was to implement a simpler but preemptible TLB
flushing method. This necessiated two minor API changes to the generic
TLB shootdown code - pretty straightforward ones.
Atomic kmaps were another source of non-preemptible sections:
pte_map/pte_unmap both used nontrivial functions within and ran for a
long time, creating a lock dependency and a latency problem as well. I
wrapped them via normal kmaps, which thus become preemptible. (The main
reason for atomic kmaps were non-preemptability constraints - but those
are not present in a fully preemptible model.)
seqlocks (used within the VFS and other places) were another problem:
the are now preemptible by default, the same auto-type-detection logic
applies to them as to preemptible/raw spinlocks: switching between a
preemptible and a non-preemptible type is done by changing the
prototype, the locking APIs stay the same.
The improvements to locking allowed the gradual 'pulling out' of all
raw-spinlocks from various kernel subsystems. In the -U0 patch i have
almost completely finished this 'pullout', and as a result the following
kernel subsystems are now completely spinlock-free and 100% mutex-based:
- networking
- IO subsystem
- VFS and lowlevel filesystems
- memory management (except the SLAB allocator lock)
- signal code
- all of drivers/* and sound/*
note: it is important that when PREEMPT_REALTIME is disabled, the old
locking rules apply and there is no performance impact whatsoever. So
what this implements is in essence a compile-time multi-tier locking
architecture enabling 4 types of preemption models:
- stock (casual voluntary kernel preemption)
- CONFIG_PREEMPT_VOLUNTARY (lots of cond_resched() points)
- CONFIG_PREEMPT (involuntary preemption plus spinlocks)
- CONFIG_PREEMPT_REALTIME (everything is a mutex)
these models cover all the variants people are interested in: servers
with almost no latency worries, desktops with ~1msec needs and hard-RT
applications needing both microsecond-range latencies and provable
maximum latencies.
to quantitatively see the effects of these changes to the locking
landscape, here's the output of a script that disassembles the kernel
image and counts the number of actual spin lock/unlock function calls
done versus mutex lock/unlocks:
With PREEMPT_REALTIME disabled, all locks are spinlocks and old
semaphores:
spinlock API calls: 5359 (71.6%)
| old mutex API calls: 2120 (28.3%)
| new mutex API calls: 2 (0%)
all mutex API calls: 2122 (28.3%)
--------------------------------------
lock API calls: 7481 (100.0%)
with the -T9 kernel, which had the 'spread out' locking model, a
considerable portion of spinlocks were replaced by mutexes, but more
than 20% of usage was still spinlocks:
spinlock API calls: 1835 (23.1%)
| old mutex API calls: 2142 (26.9%)
| new mutex API calls: 3961 (49.8%)
all mutex API calls: 6103 (76.8%)
--------------------------------------
lock API calls: 7938 (100.0%)
here are some fresh numbers from Bill Huey's mmLinux kernel:
spinlock API calls: 2452 (30.3%)
all mutex API calls: 5614 (69.6%)
--------------------------------------
lock API calls: 8066 (100.0%)
(his mutex implementation directly falls back to up()/down() so the new
mutexes become part of the old mutexes.)
while i believe that the locking design is fundamentally incomplete in
the MontaVista kernel and thus is not directly comparable to
PREEMPT_REALTIME nor the mmLinux kernel, here are the stats from it
using a similar .config:
spinlock API calls: 1444 (26.1%)
| old mutex API calls: 2095 (37.9%)
| new mutex API calls: 1981 (35.8%)
all mutex API calls: 4076 (73.8%)
--------------------------------------
lock API calls: 5520 (100.0%)
(here it is visible that apparently a significant amount of [i believe
necessary] locking is missing from this kernel.)
finally, here are the stats from the new PREEMPT_REALTIME -U0 kernel:
spinlock API calls: 491 (6.0%)
| old mutex API calls: 2142 (26.2%)
| new mutex API calls: 5536 (67.7%)
all mutex API calls: 7678 (93.9%)
--------------------------------------
lock API calls: 8169 (100.0%)
note that almost all of the remaining spinlocks are held for a short
amount of time and have a finite maximum duration. They involve hardware
access, scheduling and interrupt handling and timers - almost all of
that code has O(1) characteristics.
what this means is that we are approaching hard-real-time domains ...
using what is in essence the stock Linux kernel!
note that priority inheritance is still not part of this patch, but that
effort can now be centralized to the two basic Linux semaphore types,
solving the full spectrum of priority inheritance problems!
the code is still x86-only but only for practical reasons - other
architectures will be covered in the future as well.
to create a -U0 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-U0
Ingo
^ permalink raw reply [flat|nested] 28+ messages in thread
* [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 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: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
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
* 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 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: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
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
[parent not found: <200410142216.23572.l_allegrucci@yahoo.it>]
* 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 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 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-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
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 17:06 [patch] Real-Time Preemption, -VP-2.6.9-rc4-mm1-U1 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
-- 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 19:13 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
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).