* Re: 2.6.30rc7: ksoftirqd CPU saturation (x86-64 only, not x86-32) (e1000e-related?)
[not found] <87prdozxns.fsf@hades.wkstn.nix>
@ 2009-06-01 0:03 ` Andrew Morton
2009-06-01 0:16 ` Nix
2009-06-01 16:48 ` [E1000-devel] 2.6.30rc7: ksoftirqd CPU saturation (x86-64 only, not x86-32) (e1000e-related?) Brandeburg, Jesse
1 sibling, 1 reply; 6+ messages in thread
From: Andrew Morton @ 2009-06-01 0:03 UTC (permalink / raw)
To: Nix; +Cc: e1000-devel, netdev, linux-kernel
Let's cc netdev on this.
Presumably it is a post-2.6.29 regression.
On Sun, 31 May 2009 23:59:35 +0100 Nix <nix@esperi.org.uk> wrote:
> I've just compiled a 64-bit kernel for a couple of quad-core Nehalems
> (one L5520, one Core i7) for the first time. Both were using 32-bit
> kernels happily before, and one (the Core i7) is happy afterwards: but
> the other sees two ksoftirqd threads saturating the CPU (well, half of
> it, this being a 4-core box).
>
> Magic sysrq says:
>
> [ 179.097118] ksoftirqd/3 R running task 0 13 2
> [ 179.103635] ffff88063f90dec0 ffffffff8057ee2a 0000000000000000 0000000000000000
> [ 179.111830] ffff88063f90dee0 ffffffff8057ee2a 0000000000000000 ffff88063f90a768
> [ 179.120002] 0000000000004000 000000000000d1e8 ffff88063f90a770 ffff88063f90a768
> [ 179.128162] Call Trace:
> [ 179.130844] [<ffffffff8057ee2a>] ? thread_return+0x3e/0xc1
> [ 179.136940] [<ffffffff8057ee2a>] ? thread_return+0x3e/0xc1
> [ 179.143055] [<ffffffff8057eeb6>] schedule+0x9/0x1d
> [ 179.148399] [<ffffffff80229bbc>] do_softirq+0x34/0x72
> [ 179.154033] [<ffffffff80256f9c>] ksoftirqd+0x63/0xe5
> [ 179.159570] [<ffffffff80256f39>] ? ksoftirqd+0x0/0xe5
> [ 179.165188] [<ffffffff80264d29>] kthread+0x55/0x80
> [ 179.170527] [<ffffffff802288fa>] child_rip+0xa/0x20
> [ 179.175962] [<ffffffff80264cd4>] ? kthread+0x0/0x80
> [ 179.181399] [<ffffffff802288f0>] ? child_rip+0x0/0x20
>
> [ 179.575234] ksoftirqd/5 R running task 0 19 2
> [ 179.581758] ffff88063f939ec0 ffffffff8057ee2a 0000000000000000 0000000000000000
> [ 179.589926] ffff88063f939ee0 ffffffff8057ee2a 0000000000000000 ffff88063f932968
> [ 179.598122] 0000000000004000 000000000000d1e8 ffff88063f932970 ffffffff802285ce
> [ 179.606308] Call Trace:
> [ 179.608990] [<ffffffff8057ee2a>] ? thread_return+0x3e/0xc1
> [ 179.615095] [<ffffffff8057ee2a>] ? thread_return+0x3e/0xc1
> [ 179.621180] [<ffffffff802285ce>] ? reschedule_interrupt+0xe/0x20
> [ 179.627861] [<ffffffff8057eeb6>] schedule+0x9/0x1d
> [ 179.633217] [<ffffffff80229bbc>] do_softirq+0x34/0x72
> [ 179.638851] [<ffffffff80256f9c>] ksoftirqd+0x63/0xe5
> [ 179.644373] [<ffffffff80256f39>] ? ksoftirqd+0x0/0xe5
> [ 179.649988] [<ffffffff80264d29>] kthread+0x55/0x80
> [ 179.655333] [<ffffffff802288fa>] child_rip+0xa/0x20
> [ 179.660780] [<ffffffff80264cd4>] ? kthread+0x0/0x80
> [ 179.666234] [<ffffffff802288f0>] ? child_rip+0x0/0x20
>
> So, not particularly informative.
>
> CPUs 3 and 5 seem to be receiving the lion's share of the local timer
> interrupts and networking interrupts (this box has twin e1000es):
>
> CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
> 0: 33 0 0 2377 0 0 0 0 IO-APIC-edge timer
> 1: 0 0 0 2 0 0 0 0 IO-APIC-edge i8042
> 3: 0 0 0 3 0 0 0 0 IO-APIC-edge
> 4: 0 0 0 372 0 0 0 0 IO-APIC-edge serial
> 8: 0 0 0 52 0 0 0 0 IO-APIC-edge rtc0
> 12: 0 0 0 4 0 0 0 0 IO-APIC-edge i8042
> 16: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb3
> 18: 0 0 0 0 0 0 2 0 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb8
> 19: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb5, uhci_hcd:usb7
> 20: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi acpi
> 21: 0 0 0 0 70 0 0 0 IO-APIC-fasteoi uhci_hcd:usb4, firewire_ohci
> 22: 0 0 0 0 0 228 0 0 IO-APIC-fasteoi HDA Intel
> 23: 0 0 0 0 67 0 0 0 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb6
> 39: 0 0 22405 0 0 0 0 0 IO-APIC-fasteoi arcmsr
> 48: 0 0 0 0 0 0 0 0 DMAR_MSI-edge dmar0
> 56: 0 0 0 3961 0 0 0 0 PCI-MSI-edge ahci
> 57: 0 0 0 7654 0 0 0 0 PCI-MSI-edge gordianet-rx-0
> 58: 0 0 0 0 8065 0 0 0 PCI-MSI-edge gordianet-tx-0
> 59: 0 0 0 0 3 0 0 0 PCI-MSI-edge gordianet
> 60: 0 0 0 0 0 3576 0 0 PCI-MSI-edge fastnet-rx-0
> 61: 0 0 0 0 0 2555 0 0 PCI-MSI-edge fastnet-tx-0
> 62: 0 0 0 0 0 0 2 0 PCI-MSI-edge fastnet
> NMI: 0 0 0 0 0 0 0 0 Non-maskable interrupts
> LOC: 8437 2263 6528 60480 13987 113384 16365 57641 Local timer interrupts
> SPU: 0 0 0 0 0 0 0 0 Spurious interrupts
> RES: 3790 55 6780 18 2370 115 893 161 Rescheduling interrupts
> CAL: 83 176 144 155 174 179 173 169 Function call interrupts
> TLB: 125 9 138 4 282 22 310 22 TLB shootdowns
> TRM: 0 0 0 0 0 0 0 0 Thermal event interrupts
> THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts
> ERR: 0
> MIS: 0
>
> I'd not expect that level of e1000e interrupt activity to flood the
> ksoftirqds like this, and in 32-bit mode it doesn't.
>
> So, anyone know what's going on, or how I could find out?
>
>
> The kernel is git head, 3218911f839b6c85acbf872ad264ea69aa4d89ad. Both
> the kernels that work and this one that doesn't were built by GCC
> 4.4.1-prerelease, git head as of today. Modules loaded, only these,
> apparently pulled in by udev or something:
>
> Module Size Used by
> firewire_ohci 23324 0
> firewire_core 42852 1 firewire_ohci
>
> .config:
>
> CONFIG_64BIT=y
> CONFIG_X86_64=y
> CONFIG_X86=y
> CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
> CONFIG_GENERIC_TIME=y
> CONFIG_GENERIC_CMOS_UPDATE=y
> CONFIG_CLOCKSOURCE_WATCHDOG=y
> CONFIG_GENERIC_CLOCKEVENTS=y
> CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
> CONFIG_LOCKDEP_SUPPORT=y
> CONFIG_STACKTRACE_SUPPORT=y
> CONFIG_HAVE_LATENCYTOP_SUPPORT=y
> CONFIG_FAST_CMPXCHG_LOCAL=y
> CONFIG_MMU=y
> CONFIG_ZONE_DMA=y
> CONFIG_GENERIC_ISA_DMA=y
> CONFIG_GENERIC_IOMAP=y
> CONFIG_GENERIC_BUG=y
> CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
> CONFIG_GENERIC_HWEIGHT=y
> CONFIG_ARCH_MAY_HAVE_PC_FDC=y
> CONFIG_RWSEM_GENERIC_SPINLOCK=y
> CONFIG_ARCH_HAS_CPU_IDLE_WAIT=y
> CONFIG_GENERIC_CALIBRATE_DELAY=y
> CONFIG_GENERIC_TIME_VSYSCALL=y
> CONFIG_ARCH_HAS_CPU_RELAX=y
> CONFIG_ARCH_HAS_DEFAULT_IDLE=y
> CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
> CONFIG_HAVE_SETUP_PER_CPU_AREA=y
> CONFIG_HAVE_DYNAMIC_PER_CPU_AREA=y
> CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
> CONFIG_ARCH_HIBERNATION_POSSIBLE=y
> CONFIG_ARCH_SUSPEND_POSSIBLE=y
> CONFIG_ZONE_DMA32=y
> CONFIG_ARCH_POPULATES_NODE_MAP=y
> CONFIG_AUDIT_ARCH=y
> CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
> CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
> CONFIG_GENERIC_HARDIRQS=y
> CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
> CONFIG_GENERIC_IRQ_PROBE=y
> CONFIG_GENERIC_PENDING_IRQ=y
> CONFIG_USE_GENERIC_SMP_HELPERS=y
> CONFIG_X86_64_SMP=y
> CONFIG_X86_HT=y
> CONFIG_X86_TRAMPOLINE=y
> CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
>
> CONFIG_EXPERIMENTAL=y
> CONFIG_LOCK_KERNEL=y
> CONFIG_INIT_ENV_ARG_LIMIT=32
> CONFIG_LOCALVERSION=""
> CONFIG_LOCALVERSION_AUTO=y
> CONFIG_HAVE_KERNEL_GZIP=y
> CONFIG_HAVE_KERNEL_BZIP2=y
> CONFIG_HAVE_KERNEL_LZMA=y
> CONFIG_KERNEL_GZIP=y
> CONFIG_SWAP=y
> CONFIG_SYSVIPC=y
> CONFIG_SYSVIPC_SYSCTL=y
> CONFIG_POSIX_MQUEUE=y
> CONFIG_POSIX_MQUEUE_SYSCTL=y
> CONFIG_BSD_PROCESS_ACCT=y
>
> CONFIG_CLASSIC_RCU=y
> CONFIG_LOG_BUF_SHIFT=17
> CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
> CONFIG_GROUP_SCHED=y
> CONFIG_FAIR_GROUP_SCHED=y
> CONFIG_RT_GROUP_SCHED=y
> CONFIG_USER_SCHED=y
> CONFIG_CGROUPS=y
> CONFIG_RELAY=y
> CONFIG_NAMESPACES=y
> CONFIG_BLK_DEV_INITRD=y
> CONFIG_INITRAMFS_SOURCE="usr/initramfs.spindle"
> CONFIG_INITRAMFS_ROOT_UID=99
> CONFIG_INITRAMFS_ROOT_GID=101
> CONFIG_RD_GZIP=y
> CONFIG_RD_BZIP2=y
> CONFIG_RD_LZMA=y
> CONFIG_INITRAMFS_COMPRESSION_GZIP=y
> CONFIG_CC_OPTIMIZE_FOR_SIZE=y
> CONFIG_SYSCTL=y
> CONFIG_ANON_INODES=y
> CONFIG_UID16=y
> CONFIG_SYSCTL_SYSCALL=y
> CONFIG_KALLSYMS=y
> CONFIG_KALLSYMS_ALL=y
> CONFIG_STRIP_ASM_SYMS=y
> CONFIG_HOTPLUG=y
> CONFIG_PRINTK=y
> CONFIG_BUG=y
> CONFIG_ELF_CORE=y
> CONFIG_PCSPKR_PLATFORM=y
> CONFIG_BASE_FULL=y
> CONFIG_FUTEX=y
> CONFIG_EPOLL=y
> CONFIG_SIGNALFD=y
> CONFIG_TIMERFD=y
> CONFIG_EVENTFD=y
> CONFIG_SHMEM=y
> CONFIG_AIO=y
> CONFIG_VM_EVENT_COUNTERS=y
> CONFIG_PCI_QUIRKS=y
> CONFIG_SLAB=y
> CONFIG_PROFILING=y
> CONFIG_TRACEPOINTS=y
> CONFIG_MARKERS=y
> CONFIG_OPROFILE=y
> CONFIG_HAVE_OPROFILE=y
> CONFIG_KPROBES=y
> CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
> CONFIG_KRETPROBES=y
> CONFIG_HAVE_IOREMAP_PROT=y
> CONFIG_HAVE_KPROBES=y
> CONFIG_HAVE_KRETPROBES=y
> CONFIG_HAVE_ARCH_TRACEHOOK=y
> CONFIG_HAVE_DMA_API_DEBUG=y
> CONFIG_SLABINFO=y
> CONFIG_RT_MUTEXES=y
> CONFIG_BASE_SMALL=0
> CONFIG_MODULES=y
> CONFIG_MODULE_UNLOAD=y
> CONFIG_STOP_MACHINE=y
> CONFIG_BLOCK=y
> CONFIG_BLOCK_COMPAT=y
>
> CONFIG_IOSCHED_NOOP=y
> CONFIG_IOSCHED_AS=m
> CONFIG_IOSCHED_DEADLINE=m
> CONFIG_IOSCHED_CFQ=y
> CONFIG_DEFAULT_CFQ=y
> CONFIG_DEFAULT_IOSCHED="cfq"
> CONFIG_PREEMPT_NOTIFIERS=y
>
> CONFIG_TICK_ONESHOT=y
> CONFIG_NO_HZ=y
> CONFIG_HIGH_RES_TIMERS=y
> CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
> CONFIG_SMP=y
> CONFIG_SPARSE_IRQ=y
> CONFIG_SCHED_OMIT_FRAME_POINTER=y
> CONFIG_MCORE2=y
> CONFIG_X86_CPU=y
> CONFIG_X86_L1_CACHE_BYTES=64
> CONFIG_X86_INTERNODE_CACHE_BYTES=64
> CONFIG_X86_CMPXCHG=y
> CONFIG_X86_L1_CACHE_SHIFT=6
> CONFIG_X86_WP_WORKS_OK=y
> CONFIG_X86_INTEL_USERCOPY=y
> CONFIG_X86_USE_PPRO_CHECKSUM=y
> CONFIG_X86_P6_NOP=y
> CONFIG_X86_TSC=y
> CONFIG_X86_CMPXCHG64=y
> CONFIG_X86_CMOV=y
> CONFIG_X86_MINIMUM_CPU_FAMILY=64
> CONFIG_X86_DEBUGCTLMSR=y
> CONFIG_CPU_SUP_INTEL=y
> CONFIG_CPU_SUP_AMD=y
> CONFIG_CPU_SUP_CENTAUR=y
> CONFIG_HPET_TIMER=y
> CONFIG_HPET_EMULATE_RTC=y
> CONFIG_DMI=y
> CONFIG_GART_IOMMU=y
> CONFIG_SWIOTLB=y
> CONFIG_IOMMU_HELPER=y
> CONFIG_IOMMU_API=y
> CONFIG_NR_CPUS=8
> CONFIG_SCHED_SMT=y
> CONFIG_SCHED_MC=y
> CONFIG_PREEMPT_NONE=y
> CONFIG_X86_LOCAL_APIC=y
> CONFIG_X86_IO_APIC=y
> CONFIG_X86_MCE=y
> CONFIG_X86_MCE_INTEL=y
> CONFIG_X86_MCE_THRESHOLD=y
> CONFIG_MICROCODE=m
> CONFIG_MICROCODE_INTEL=y
> CONFIG_MICROCODE_OLD_INTERFACE=y
> CONFIG_X86_MSR=m
> CONFIG_X86_CPUID=y
> CONFIG_X86_CPU_DEBUG=m
> CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
> CONFIG_DIRECT_GBPAGES=y
> CONFIG_ARCH_SPARSEMEM_DEFAULT=y
> CONFIG_ARCH_SPARSEMEM_ENABLE=y
> CONFIG_ARCH_SELECT_MEMORY_MODEL=y
> CONFIG_SELECT_MEMORY_MODEL=y
> CONFIG_SPARSEMEM_MANUAL=y
> CONFIG_SPARSEMEM=y
> CONFIG_HAVE_MEMORY_PRESENT=y
> CONFIG_SPARSEMEM_EXTREME=y
> CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
> CONFIG_SPARSEMEM_VMEMMAP=y
> CONFIG_PAGEFLAGS_EXTENDED=y
> CONFIG_SPLIT_PTLOCK_CPUS=4
> CONFIG_PHYS_ADDR_T_64BIT=y
> CONFIG_ZONE_DMA_FLAG=1
> CONFIG_BOUNCE=y
> CONFIG_VIRT_TO_BUS=y
> CONFIG_UNEVICTABLE_LRU=y
> CONFIG_HAVE_MLOCK=y
> CONFIG_HAVE_MLOCKED_PAGE_BIT=y
> CONFIG_MMU_NOTIFIER=y
> CONFIG_X86_CHECK_BIOS_CORRUPTION=y
> CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
> CONFIG_X86_RESERVE_LOW_64K=y
> CONFIG_MTRR=y
> CONFIG_X86_PAT=y
> CONFIG_HZ_100=y
> CONFIG_HZ=100
> CONFIG_SCHED_HRTICK=y
> CONFIG_PHYSICAL_START=0x200000
> CONFIG_PHYSICAL_ALIGN=0x200000
> CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
>
> CONFIG_PM=y
> CONFIG_ACPI=y
> CONFIG_ACPI_PROC_EVENT=y
> CONFIG_ACPI_BUTTON=y
> CONFIG_ACPI_FAN=y
> CONFIG_ACPI_DOCK=y
> CONFIG_ACPI_PROCESSOR=y
> CONFIG_ACPI_THERMAL=y
> CONFIG_ACPI_CUSTOM_DSDT_FILE=""
> CONFIG_ACPI_BLACKLIST_YEAR=0
> CONFIG_ACPI_PCI_SLOT=y
> CONFIG_X86_PM_TIMER=y
>
> CONFIG_CPU_FREQ=y
> CONFIG_CPU_FREQ_TABLE=y
> CONFIG_CPU_FREQ_STAT=y
> CONFIG_CPU_FREQ_STAT_DETAILS=y
> CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
> CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
> CONFIG_CPU_FREQ_GOV_ONDEMAND=y
>
> CONFIG_X86_ACPI_CPUFREQ=y
>
> CONFIG_CPU_IDLE=y
> CONFIG_CPU_IDLE_GOV_LADDER=y
> CONFIG_CPU_IDLE_GOV_MENU=y
>
> CONFIG_I7300_IDLE_IOAT_CHANNEL=y
> CONFIG_I7300_IDLE=y
>
> CONFIG_PCI=y
> CONFIG_PCI_DIRECT=y
> CONFIG_PCI_MMCONFIG=y
> CONFIG_PCI_DOMAINS=y
> CONFIG_DMAR=y
> CONFIG_DMAR_DEFAULT_ON=y
> CONFIG_DMAR_GFX_WA=y
> CONFIG_DMAR_FLOPPY_WA=y
> CONFIG_PCIEPORTBUS=y
> CONFIG_PCIEAER=y
> CONFIG_PCIEASPM=y
> CONFIG_ARCH_SUPPORTS_MSI=y
> CONFIG_PCI_MSI=y
> CONFIG_PCI_IOV=y
> CONFIG_ISA_DMA_API=y
> CONFIG_K8_NB=y
>
> CONFIG_BINFMT_ELF=y
> CONFIG_COMPAT_BINFMT_ELF=y
> CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
> CONFIG_BINFMT_MISC=y
> CONFIG_IA32_EMULATION=y
> CONFIG_COMPAT=y
> CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
> CONFIG_SYSVIPC_COMPAT=y
> CONFIG_NET=y
>
> CONFIG_PACKET=y
> CONFIG_PACKET_MMAP=y
> CONFIG_UNIX=y
> CONFIG_INET=y
> CONFIG_IP_MULTICAST=y
> CONFIG_IP_FIB_HASH=y
> CONFIG_IP_PNP=y
> CONFIG_INET_LRO=y
> CONFIG_INET_DIAG=y
> CONFIG_INET_TCP_DIAG=y
> CONFIG_TCP_CONG_CUBIC=y
> CONFIG_DEFAULT_TCP_CONG="cubic"
>
> CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
> CONFIG_PREVENT_FIRMWARE_BUILD=y
> CONFIG_FW_LOADER=y
> CONFIG_FIRMWARE_IN_KERNEL=y
> CONFIG_EXTRA_FIRMWARE=""
> CONFIG_PNP=y
>
> CONFIG_PNPACPI=y
> CONFIG_BLK_DEV=y
> CONFIG_BLK_DEV_NBD=m
> CONFIG_CDROM_PKTCDVD=y
> CONFIG_CDROM_PKTCDVD_BUFFERS=16
> CONFIG_MISC_DEVICES=y
>
> CONFIG_HAVE_IDE=y
>
> CONFIG_SCSI=y
> CONFIG_SCSI_DMA=y
>
> CONFIG_BLK_DEV_SD=y
> CONFIG_BLK_DEV_SR=y
>
> CONFIG_SCSI_MULTI_LUN=y
> CONFIG_SCSI_SCAN_ASYNC=y
> CONFIG_SCSI_WAIT_SCAN=m
>
> CONFIG_SCSI_LOWLEVEL=y
> CONFIG_SCSI_ARCMSR=y
> CONFIG_SCSI_ARCMSR_AER=y
> CONFIG_ATA=y
> CONFIG_ATA_ACPI=y
> CONFIG_SATA_AHCI=y
> CONFIG_MD=y
> CONFIG_BLK_DEV_DM=y
> CONFIG_DM_CRYPT=y
> CONFIG_DM_SNAPSHOT=y
> CONFIG_DM_MIRROR=y
> CONFIG_DM_ZERO=y
>
> CONFIG_FIREWIRE=m
> CONFIG_FIREWIRE_OHCI=m
> CONFIG_FIREWIRE_OHCI_DEBUG=y
> CONFIG_FIREWIRE_SBP2=m
> CONFIG_NETDEVICES=y
> CONFIG_COMPAT_NET_DEV_OPS=y
> CONFIG_DUMMY=m
> CONFIG_TUN=y
> CONFIG_NETDEV_1000=y
> CONFIG_E1000E=y
>
> CONFIG_INPUT=y
>
> CONFIG_INPUT_MOUSEDEV=y
> CONFIG_INPUT_MOUSEDEV_SCREEN_X=1680
> CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1050
> CONFIG_INPUT_EVDEV=y
>
> CONFIG_INPUT_KEYBOARD=y
> CONFIG_KEYBOARD_ATKBD=y
> CONFIG_INPUT_MOUSE=y
> CONFIG_MOUSE_PS2=y
> CONFIG_MOUSE_PS2_ALPS=y
> CONFIG_MOUSE_PS2_LOGIPS2PP=y
> CONFIG_MOUSE_PS2_SYNAPTICS=y
> CONFIG_MOUSE_PS2_LIFEBOOK=y
> CONFIG_MOUSE_PS2_TRACKPOINT=y
> CONFIG_INPUT_JOYSTICK=y
> CONFIG_JOYSTICK_ANALOG=y
>
> CONFIG_SERIO=y
> CONFIG_SERIO_I8042=y
> CONFIG_SERIO_LIBPS2=y
> CONFIG_GAMEPORT=y
>
> CONFIG_VT=y
> CONFIG_CONSOLE_TRANSLATIONS=y
> CONFIG_VT_CONSOLE=y
> CONFIG_HW_CONSOLE=y
>
> CONFIG_SERIAL_8250=y
> CONFIG_SERIAL_8250_CONSOLE=y
> CONFIG_FIX_EARLYCON_MEM=y
> CONFIG_SERIAL_8250_PCI=y
> CONFIG_SERIAL_8250_PNP=y
> CONFIG_SERIAL_8250_NR_UARTS=4
> CONFIG_SERIAL_8250_RUNTIME_UARTS=4
>
> CONFIG_SERIAL_CORE=y
> CONFIG_SERIAL_CORE_CONSOLE=y
> CONFIG_UNIX98_PTYS=y
> CONFIG_IPMI_HANDLER=m
> CONFIG_IPMI_PANIC_EVENT=y
> CONFIG_IPMI_DEVICE_INTERFACE=m
> CONFIG_IPMI_SI=m
> CONFIG_IPMI_POWEROFF=m
> CONFIG_NVRAM=m
> CONFIG_HPET=y
> CONFIG_HPET_MMAP=y
> CONFIG_DEVPORT=y
> CONFIG_I2C=y
> CONFIG_I2C_BOARDINFO=y
> CONFIG_I2C_CHARDEV=y
> CONFIG_I2C_HELPER_AUTO=y
>
> CONFIG_I2C_I801=y
>
> CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
> CONFIG_HWMON=y
> CONFIG_HWMON_VID=y
> CONFIG_SENSORS_W83793=y
> CONFIG_THERMAL=y
> CONFIG_THERMAL_HWMON=y
> CONFIG_SSB_POSSIBLE=y
>
> CONFIG_AGP=y
> CONFIG_AGP_AMD64=y
>
> CONFIG_VGA_CONSOLE=y
> CONFIG_DUMMY_CONSOLE=y
> CONFIG_SOUND=y
> CONFIG_SOUND_OSS_CORE=y
> CONFIG_SND=y
> CONFIG_SND_TIMER=y
> CONFIG_SND_PCM=y
> CONFIG_SND_JACK=y
> CONFIG_SND_SEQUENCER=y
> CONFIG_SND_SEQ_DUMMY=m
> CONFIG_SND_OSSEMUL=y
> CONFIG_SND_MIXER_OSS=y
> CONFIG_SND_PCM_OSS=y
> CONFIG_SND_PCM_OSS_PLUGINS=y
> CONFIG_SND_SEQUENCER_OSS=y
> CONFIG_SND_HRTIMER=y
> CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
> CONFIG_SND_DYNAMIC_MINORS=y
> CONFIG_SND_VERBOSE_PROCFS=y
> CONFIG_SND_VMASTER=y
> CONFIG_SND_PCI=y
> CONFIG_SND_HDA_INTEL=y
> CONFIG_SND_HDA_CODEC_INTELHDMI=y
> CONFIG_SND_HDA_ELD=y
> CONFIG_SND_HDA_GENERIC=y
> CONFIG_SND_HDA_POWER_SAVE=y
> CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
> CONFIG_HID_SUPPORT=y
> CONFIG_HID=y
>
> CONFIG_USB_HID=y
>
> CONFIG_HID_A4TECH=y
> CONFIG_HID_APPLE=y
> CONFIG_HID_BELKIN=y
> CONFIG_HID_CHERRY=y
> CONFIG_HID_CHICONY=y
> CONFIG_HID_CYPRESS=y
> CONFIG_HID_EZKEY=y
> CONFIG_HID_KYE=y
> CONFIG_HID_GYRATION=y
> CONFIG_HID_KENSINGTON=y
> CONFIG_HID_LOGITECH=y
> CONFIG_HID_MICROSOFT=y
> CONFIG_HID_MONTEREY=y
> CONFIG_HID_NTRIG=y
> CONFIG_HID_PANTHERLORD=y
> CONFIG_HID_PETALYNX=y
> CONFIG_HID_SAMSUNG=y
> CONFIG_HID_SONY=y
> CONFIG_HID_SUNPLUS=y
> CONFIG_HID_TOPSEED=y
> CONFIG_USB_SUPPORT=y
> CONFIG_USB_ARCH_HAS_HCD=y
> CONFIG_USB_ARCH_HAS_OHCI=y
> CONFIG_USB_ARCH_HAS_EHCI=y
> CONFIG_USB=y
>
> CONFIG_USB_DEVICEFS=y
> CONFIG_USB_DYNAMIC_MINORS=y
>
> CONFIG_USB_EHCI_HCD=y
> CONFIG_USB_UHCI_HCD=y
>
> CONFIG_USB_PRINTER=y
>
> CONFIG_USB_STORAGE=y
>
> CONFIG_USB_SERIAL=y
> CONFIG_USB_SERIAL_BELKIN=y
>
> CONFIG_EDAC=y
>
> CONFIG_EDAC_MM_EDAC=y
> CONFIG_EDAC_E752X=m
> CONFIG_EDAC_I82975X=m
> CONFIG_EDAC_I3000=m
> CONFIG_EDAC_X38=m
> CONFIG_EDAC_I5400=m
> CONFIG_EDAC_I5000=m
> CONFIG_EDAC_I5100=m
> CONFIG_RTC_LIB=y
> CONFIG_RTC_CLASS=y
> CONFIG_RTC_HCTOSYS=y
> CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
>
> CONFIG_RTC_INTF_SYSFS=y
> CONFIG_RTC_INTF_PROC=y
> CONFIG_RTC_INTF_DEV=y
>
> CONFIG_RTC_DRV_CMOS=y
>
> CONFIG_X86_PLATFORM_DEVICES=y
>
> CONFIG_FIRMWARE_MEMMAP=y
> CONFIG_DMIID=y
>
> CONFIG_EXT4_FS=y
> CONFIG_EXT4_FS_XATTR=y
> CONFIG_EXT4_FS_POSIX_ACL=y
> CONFIG_JBD2=y
> CONFIG_FS_MBCACHE=y
> CONFIG_REISERFS_FS=y
> CONFIG_REISERFS_FS_XATTR=y
> CONFIG_REISERFS_FS_POSIX_ACL=y
> CONFIG_FS_POSIX_ACL=y
> CONFIG_FILE_LOCKING=y
> CONFIG_DNOTIFY=y
> CONFIG_INOTIFY=y
> CONFIG_INOTIFY_USER=y
> CONFIG_QUOTA=y
> CONFIG_QUOTA_NETLINK_INTERFACE=y
> CONFIG_PRINT_QUOTA_WARNING=y
> CONFIG_QUOTA_TREE=y
> CONFIG_QFMT_V2=y
> CONFIG_QUOTACTL=y
> CONFIG_FUSE_FS=y
> CONFIG_GENERIC_ACL=y
>
> CONFIG_ISO9660_FS=y
> CONFIG_JOLIET=y
> CONFIG_UDF_FS=y
> CONFIG_UDF_NLS=y
>
> CONFIG_FAT_FS=m
> CONFIG_MSDOS_FS=m
> CONFIG_VFAT_FS=m
> CONFIG_FAT_DEFAULT_CODEPAGE=437
> CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
>
> CONFIG_PROC_FS=y
> CONFIG_PROC_SYSCTL=y
> CONFIG_PROC_PAGE_MONITOR=y
> CONFIG_SYSFS=y
> CONFIG_TMPFS=y
> CONFIG_TMPFS_POSIX_ACL=y
> CONFIG_HUGETLBFS=y
> CONFIG_HUGETLB_PAGE=y
> CONFIG_CONFIGFS_FS=y
> CONFIG_MISC_FILESYSTEMS=y
> CONFIG_NETWORK_FILESYSTEMS=y
> CONFIG_NFS_FS=y
> CONFIG_NFS_V3=y
> CONFIG_NFS_V3_ACL=y
> CONFIG_ROOT_NFS=y
> CONFIG_NFSD=y
> CONFIG_NFSD_V2_ACL=y
> CONFIG_NFSD_V3=y
> CONFIG_NFSD_V3_ACL=y
> CONFIG_LOCKD=y
> CONFIG_LOCKD_V4=y
> CONFIG_EXPORTFS=y
> CONFIG_NFS_ACL_SUPPORT=y
> CONFIG_NFS_COMMON=y
> CONFIG_SUNRPC=y
>
> CONFIG_PARTITION_ADVANCED=y
> CONFIG_MSDOS_PARTITION=y
> CONFIG_NLS=y
> CONFIG_NLS_DEFAULT="iso8859-1"
> CONFIG_NLS_CODEPAGE_437=y
> CONFIG_NLS_ASCII=m
> CONFIG_NLS_ISO8859_1=y
> CONFIG_NLS_ISO8859_15=m
> CONFIG_NLS_UTF8=m
>
> CONFIG_TRACE_IRQFLAGS_SUPPORT=y
> CONFIG_PRINTK_TIME=y
> CONFIG_ENABLE_WARN_DEPRECATED=y
> CONFIG_ENABLE_MUST_CHECK=y
> CONFIG_FRAME_WARN=1024
> CONFIG_MAGIC_SYSRQ=y
> CONFIG_DEBUG_FS=y
> CONFIG_DEBUG_KERNEL=y
> CONFIG_DETECT_SOFTLOCKUP=y
> CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
> CONFIG_DETECT_HUNG_TASK=y
> CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
> CONFIG_SCHED_DEBUG=y
> CONFIG_SCHEDSTATS=y
> CONFIG_TIMER_STATS=y
> CONFIG_STACKTRACE=y
> CONFIG_DEBUG_BUGVERBOSE=y
> CONFIG_DEBUG_MEMORY_INIT=y
> CONFIG_ARCH_WANT_FRAME_POINTERS=y
> CONFIG_FRAME_POINTER=y
> CONFIG_LATENCYTOP=y
> CONFIG_SYSCTL_SYSCALL_CHECK=y
> CONFIG_USER_STACKTRACE_SUPPORT=y
> CONFIG_NOP_TRACER=y
> CONFIG_HAVE_FUNCTION_TRACER=y
> CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
> CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y
> CONFIG_HAVE_DYNAMIC_FTRACE=y
> CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
> CONFIG_HAVE_FTRACE_SYSCALLS=y
> CONFIG_RING_BUFFER=y
> CONFIG_TRACING=y
> CONFIG_TRACING_SUPPORT=y
>
> CONFIG_SYSPROF_TRACER=y
> CONFIG_CONTEXT_SWITCH_TRACER=y
> CONFIG_BLK_DEV_IO_TRACE=y
> CONFIG_HAVE_ARCH_KGDB=y
> CONFIG_STRICT_DEVMEM=y
> CONFIG_X86_VERBOSE_BOOTUP=y
> CONFIG_EARLY_PRINTK=y
> CONFIG_DEBUG_RODATA=y
> CONFIG_HAVE_MMIOTRACE_SUPPORT=y
> CONFIG_IO_DELAY_TYPE_0X80=0
> CONFIG_IO_DELAY_TYPE_0XED=1
> CONFIG_IO_DELAY_TYPE_UDELAY=2
> CONFIG_IO_DELAY_TYPE_NONE=3
> CONFIG_IO_DELAY_0X80=y
> CONFIG_DEFAULT_IO_DELAY_TYPE=0
>
> CONFIG_SECURITY_FILE_CAPABILITIES=y
> CONFIG_CRYPTO=y
>
> CONFIG_CRYPTO_ALGAPI=y
> CONFIG_CRYPTO_ALGAPI2=y
> CONFIG_CRYPTO_AEAD2=y
> CONFIG_CRYPTO_BLKCIPHER=y
> CONFIG_CRYPTO_BLKCIPHER2=y
> CONFIG_CRYPTO_HASH2=y
> CONFIG_CRYPTO_RNG2=y
> CONFIG_CRYPTO_PCOMP=y
> CONFIG_CRYPTO_MANAGER=y
> CONFIG_CRYPTO_MANAGER2=y
> CONFIG_CRYPTO_WORKQUEUE=y
>
> CONFIG_CRYPTO_CBC=y
>
> CONFIG_HAVE_KVM=y
> CONFIG_HAVE_KVM_IRQCHIP=y
> CONFIG_VIRTUALIZATION=y
> CONFIG_KVM=y
> CONFIG_KVM_INTEL=y
> CONFIG_VIRTIO=y
> CONFIG_VIRTIO_RING=y
> CONFIG_VIRTIO_PCI=m
> CONFIG_VIRTIO_BALLOON=y
> CONFIG_BINARY_PRINTF=y
>
> CONFIG_BITREVERSE=y
> CONFIG_GENERIC_FIND_FIRST_BIT=y
> CONFIG_GENERIC_FIND_NEXT_BIT=y
> CONFIG_GENERIC_FIND_LAST_BIT=y
> CONFIG_CRC16=y
> CONFIG_CRC_ITU_T=y
> CONFIG_CRC32=y
> CONFIG_ZLIB_INFLATE=y
> CONFIG_DECOMPRESS_GZIP=y
> CONFIG_DECOMPRESS_BZIP2=y
> CONFIG_DECOMPRESS_LZMA=y
> CONFIG_HAS_IOMEM=y
> CONFIG_HAS_IOPORT=y
> CONFIG_HAS_DMA=y
> CONFIG_NLATTR=y
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp as they present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: 2.6.30rc7: ksoftirqd CPU saturation (x86-64 only, not x86-32) (e1000e-related?)
2009-06-01 0:03 ` 2.6.30rc7: ksoftirqd CPU saturation (x86-64 only, not x86-32) (e1000e-related?) Andrew Morton
@ 2009-06-01 0:16 ` Nix
2009-06-01 4:58 ` David Miller
0 siblings, 1 reply; 6+ messages in thread
From: Nix @ 2009-06-01 0:16 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-kernel, e1000-devel, netdev
On 1 Jun 2009, Andrew Morton said:
> Let's cc netdev on this.
>
> Presumably it is a post-2.6.29 regression.
I don't know: the earliest kernel this machine has ever run was
2.6.30rc5, and this failing 2.6.30rc7 kernel is the first 64-bit kernel
I've ever run on it. So currently I have one single data point.
I plan to try out 2.6.29 (and back to 2.6.25 or thereabouts) tomorrow
and see if it ever worked: if it did I'll bisect for it (rendered tricky
by the out-of-tree e1000e driver, but doable: it would be easier if I
had a clue where the e1000-devel git tree is, if anywhere, but I still
have no idea despite considerable searching).
It seems to go wrong instantly, so replication is trivial, and this
system can compile a kernel in slightly under a minute, so it shouldn't
take too long to complete the bisection.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: 2.6.30rc7: ksoftirqd CPU saturation (x86-64 only, not x86-32) (e1000e-related?)
2009-06-01 0:16 ` Nix
@ 2009-06-01 4:58 ` David Miller
2009-06-01 19:12 ` 2.6.30rc7: ksoftirqd CPU saturation (x86-64 and x86-32 both) (in-tree e1000e at fault) Nix
0 siblings, 1 reply; 6+ messages in thread
From: David Miller @ 2009-06-01 4:58 UTC (permalink / raw)
To: nix; +Cc: e1000-devel, netdev, akpm, linux-kernel
From: Nix <nix@esperi.org.uk>
Date: Mon, 01 Jun 2009 01:16:26 +0100
> I plan to try out 2.6.29 (and back to 2.6.25 or thereabouts) tomorrow
> and see if it ever worked: if it did I'll bisect for it (rendered tricky
> by the out-of-tree e1000e driver, but doable: it would be easier if I
> had a clue where the e1000-devel git tree is, if anywhere, but I still
> have no idea despite considerable searching).
Why are you using the out-of-tree e1000e driver? What's wrong
with the one in the tree? :-)
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp as they present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [E1000-devel] 2.6.30rc7: ksoftirqd CPU saturation (x86-64 only, not x86-32) (e1000e-related?)
[not found] <87prdozxns.fsf@hades.wkstn.nix>
2009-06-01 0:03 ` 2.6.30rc7: ksoftirqd CPU saturation (x86-64 only, not x86-32) (e1000e-related?) Andrew Morton
@ 2009-06-01 16:48 ` Brandeburg, Jesse
2009-06-01 19:33 ` Nix
1 sibling, 1 reply; 6+ messages in thread
From: Brandeburg, Jesse @ 2009-06-01 16:48 UTC (permalink / raw)
To: Nix
Cc: linux-kernel@vger.kernel.org, e1000-devel@lists.sourceforge.net,
netdev, akpm
On Sun, 31 May 2009, Nix wrote:
> I've just compiled a 64-bit kernel for a couple of quad-core Nehalems
> (one L5520, one Core i7) for the first time. Both were using 32-bit
> kernels happily before, and one (the Core i7) is happy afterwards: but
> the other sees two ksoftirqd threads saturating the CPU (well, half of
> it, this being a 4-core box).
<snip>
> So, not particularly informative.
>
> CPUs 3 and 5 seem to be receiving the lion's share of the local timer
> interrupts and networking interrupts (this box has twin e1000es):
>
> CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
> 0: 33 0 0 2377 0 0 0 0 IO-APIC-edge timer
> 1: 0 0 0 2 0 0 0 0 IO-APIC-edge i8042
> 3: 0 0 0 3 0 0 0 0 IO-APIC-edge
> 4: 0 0 0 372 0 0 0 0 IO-APIC-edge serial
> 8: 0 0 0 52 0 0 0 0 IO-APIC-edge rtc0
> 12: 0 0 0 4 0 0 0 0 IO-APIC-edge i8042
> 16: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb3
> 18: 0 0 0 0 0 0 2 0 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb8
> 19: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb5, uhci_hcd:usb7
> 20: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi acpi
> 21: 0 0 0 0 70 0 0 0 IO-APIC-fasteoi uhci_hcd:usb4, firewire_ohci
> 22: 0 0 0 0 0 228 0 0 IO-APIC-fasteoi HDA Intel
> 23: 0 0 0 0 67 0 0 0 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb6
> 39: 0 0 22405 0 0 0 0 0 IO-APIC-fasteoi arcmsr
> 48: 0 0 0 0 0 0 0 0 DMAR_MSI-edge dmar0
> 56: 0 0 0 3961 0 0 0 0 PCI-MSI-edge ahci
> 57: 0 0 0 7654 0 0 0 0 PCI-MSI-edge gordianet-rx-0
> 58: 0 0 0 0 8065 0 0 0 PCI-MSI-edge gordianet-tx-0
> 59: 0 0 0 0 3 0 0 0 PCI-MSI-edge gordianet
> 60: 0 0 0 0 0 3576 0 0 PCI-MSI-edge fastnet-rx-0
> 61: 0 0 0 0 0 2555 0 0 PCI-MSI-edge fastnet-tx-0
> 62: 0 0 0 0 0 0 2 0 PCI-MSI-edge fastnet
where is the e1000e interrupt here? I was expecting to see eth0/eth1
> NMI: 0 0 0 0 0 0 0 0 Non-maskable interrupts
> LOC: 8437 2263 6528 60480 13987 113384 16365 57641 Local timer interrupts
> SPU: 0 0 0 0 0 0 0 0 Spurious interrupts
> RES: 3790 55 6780 18 2370 115 893 161 Rescheduling interrupts
> CAL: 83 176 144 155 174 179 173 169 Function call interrupts
> TLB: 125 9 138 4 282 22 310 22 TLB shootdowns
> TRM: 0 0 0 0 0 0 0 0 Thermal event interrupts
> THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts
> ERR: 0
> MIS: 0
>
> I'd not expect that level of e1000e interrupt activity to flood the
> ksoftirqds like this, and in 32-bit mode it doesn't.
>
> So, anyone know what's going on, or how I could find out?
when you went into 64 bit mode your kernel enabled the IOMMU/DMAR, which
means that map/unmap cycles are taking many more cycles per packet,
accounting for the increased CPU utilization. you can disable at boot
with intel_iommu=off to see if it goes back to previous behavior.
There is no DMAR/IOMMU in 32 bit mode, AFAIK.
Hope this helps,
Jesse
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: 2.6.30rc7: ksoftirqd CPU saturation (x86-64 and x86-32 both) (in-tree e1000e at fault)
2009-06-01 4:58 ` David Miller
@ 2009-06-01 19:12 ` Nix
0 siblings, 0 replies; 6+ messages in thread
From: Nix @ 2009-06-01 19:12 UTC (permalink / raw)
To: David Miller; +Cc: e1000-devel, netdev, akpm, linux-kernel
On 1 Jun 2009, David Miller uttered the following:
> From: Nix <nix@esperi.org.uk>
> Date: Mon, 01 Jun 2009 01:16:26 +0100
>
>> I plan to try out 2.6.29 (and back to 2.6.25 or thereabouts) tomorrow
>> and see if it ever worked: if it did I'll bisect for it (rendered tricky
>> by the out-of-tree e1000e driver, but doable: it would be easier if I
>> had a clue where the e1000-devel git tree is, if anywhere, but I still
>> have no idea despite considerable searching).
>
> Why are you using the out-of-tree e1000e driver? What's wrong
> with the one in the tree? :-)
My original speculations were wrong: it goes wrong with 32-bit as well
as 64-bit kernels. The key is that it only ever goes wrong with the
in-tree driver. When I compiled the faulty kernels (32- and 64-bit), I
forgot to copy the out-of-tree driver into place. Use the out-of-tree
driver, and the CPU hogging goes away. So this is an in-tree e1000e
driver bug, definitely. The card is an 82574L.
I could bisect for it, but I have no real evidence that the in-tree
driver *ever* worked with this card. When the machine came from the
vendor it was running 2.6.25... and the out-of-tree driver.
I'll hunt backwards a bit and see if it works in 2.6.28 or something
like that. Maybe I'll be lucky.
--- out-of-tree driver with this patch needed to compile, previously
posted to e1000-devel without comment from anyone: probably the upstream
git tree, wherever that is, already has it:
diff -u e1000e-0.5.18.3/src/kcompat.h drivers/net/e1000e/kcompat.h
--- e1000e-0.5.18.3/src/kcompat.h 2009-03-05 18:43:14.000000000 +0000
+++ drivers/net/e1000e/kcompat.h 2009-05-21 23:46:04.000000000 +0100
@@ -141,12 +141,6 @@
#endif
#endif
-#ifndef IRQ_HANDLED
-#define irqreturn_t void
-#define IRQ_HANDLED
-#define IRQ_NONE
-#endif
-
#ifndef SET_NETDEV_DEV
#define SET_NETDEV_DEV(net, pdev)
#endif
@@ -1650,4 +1644,12 @@
#define pci_request_selected_regions_exclusive(pdev, bars, name) \
pci_request_selected_regions(pdev, bars, name)
#endif /* < 2.6.29 */
+/*****************************************************************************/
+#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30) )
+#ifndef IRQ_HANDLED
+#define irqreturn_t void
+#define IRQ_HANDLED
+#define IRQ_NONE
+#endif
+#endif /* < 2.6.30 */
#endif /* _KCOMPAT_H_ */
diff -u e1000e-0.5.18.3/src/kcompat_ethtool.c drivers/net/e1000e/kcompat_ethtool.c
--- e1000e-0.5.18.3/src/kcompat_ethtool.c 2009-03-05 18:43:14.000000000 +0000
+++ drivers/net/e1000e/kcompat_ethtool.c 2009-05-20 21:28:02.000000000 +0100
@@ -54,6 +54,7 @@
#include <linux/ethtool.h>
#include <linux/netdevice.h>
#include <asm/uaccess.h>
+#include <net/net_namespace.h>
#include "kcompat.h"
@@ -782,7 +783,7 @@
#define ETHTOOL_OPS_COMPAT
int ethtool_ioctl(struct ifreq *ifr)
{
- struct net_device *dev = __dev_get_by_name(ifr->ifr_name);
+ struct net_device *dev = __dev_get_by_name(&init_net, ifr->ifr_name);
void *useraddr = (void *) ifr->ifr_data;
u32 ethcmd;
------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises
looking to deploy the next generation of Solaris that includes the latest
innovations from Sun and the OpenSource community. Download a copy and
enjoy capabilities such as Networking, Storage and Virtualization.
Go to: http://p.sf.net/sfu/opensolaris-get
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: 2.6.30rc7: ksoftirqd CPU saturation (x86-64 only, not x86-32) (e1000e-related?)
2009-06-01 16:48 ` [E1000-devel] 2.6.30rc7: ksoftirqd CPU saturation (x86-64 only, not x86-32) (e1000e-related?) Brandeburg, Jesse
@ 2009-06-01 19:33 ` Nix
0 siblings, 0 replies; 6+ messages in thread
From: Nix @ 2009-06-01 19:33 UTC (permalink / raw)
To: Brandeburg, Jesse
Cc: e1000-devel@lists.sourceforge.net, netdev, akpm,
linux-kernel@vger.kernel.org
On 1 Jun 2009, Jesse Brandeburg spake thusly:
>> 57: 0 0 0 7654 0 0 0 0 PCI-MSI-edge gordianet-rx-0
>> 58: 0 0 0 0 8065 0 0 0 PCI-MSI-edge gordianet-tx-0
>> 59: 0 0 0 0 3 0 0 0 PCI-MSI-edge gordianet
>> 60: 0 0 0 0 0 3576 0 0 PCI-MSI-edge fastnet-rx-0
>> 61: 0 0 0 0 0 2555 0 0 PCI-MSI-edge fastnet-tx-0
>> 62: 0 0 0 0 0 0 2 0 PCI-MSI-edge fastnet
>
> where is the e1000e interrupt here? I was expecting to see eth0/eth1
Sorry, I renamed the interfaces and forgot because I've been running
with them renamed for so very long that I've forgotten that they ever
had other names!
They're the interrupts left in above. Not exactly line saturation, is
it?
>> I'd not expect that level of e1000e interrupt activity to flood the
>> ksoftirqds like this, and in 32-bit mode it doesn't.
>>
>> So, anyone know what's going on, or how I could find out?
>
> when you went into 64 bit mode your kernel enabled the IOMMU/DMAR, which
> means that map/unmap cycles are taking many more cycles per packet,
I thought that might be so, but now I'm running in 64-bit mode with a
load of pretty much zero and the out-of-tree driver: and we see
ksoftirqd saturation with the in-tree driver on a completely idle box
(well, it's sending the odd packet out of the network interfaces because
it's headless and that's the only way I can see anything at all).
(actually I thought IOMMUs were supposed to *decrease* the load of
things like that. Is it because pte changes have to be propagated to the
IOMMU or something? It would be nice if the configure help text gave the
poor user some clue whether to turn it off or on. Presumably it's
sometimes useful or it wouldn't be there...)
> accounting for the increased CPU utilization. you can disable at boot
> with intel_iommu=off to see if it goes back to previous behavior.
Not so, it goes wrong in 32-bit mode as well: my original report was
incorrect, triggered by a faulty build (where 'faulty' equals
'accidentally used the in-tree e1000e rather than the out-of-tree one').
Will try hunting backwards (unisecting?) to see if the in-tree driver
*ever* worked with this card.
------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises
looking to deploy the next generation of Solaris that includes the latest
innovations from Sun and the OpenSource community. Download a copy and
enjoy capabilities such as Networking, Storage and Virtualization.
Go to: http://p.sf.net/sfu/opensolaris-get
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-06-01 19:33 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <87prdozxns.fsf@hades.wkstn.nix>
2009-06-01 0:03 ` 2.6.30rc7: ksoftirqd CPU saturation (x86-64 only, not x86-32) (e1000e-related?) Andrew Morton
2009-06-01 0:16 ` Nix
2009-06-01 4:58 ` David Miller
2009-06-01 19:12 ` 2.6.30rc7: ksoftirqd CPU saturation (x86-64 and x86-32 both) (in-tree e1000e at fault) Nix
2009-06-01 16:48 ` [E1000-devel] 2.6.30rc7: ksoftirqd CPU saturation (x86-64 only, not x86-32) (e1000e-related?) Brandeburg, Jesse
2009-06-01 19:33 ` Nix
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).