ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc4/2.6.22-rc4-mm2/ - Basically a bugfixed version of 2.6.22-rc4-mm1. None of the subsystem trees were repulled, several bad patches were dropped, a few were fixed. Boilerplate: - See the `hot-fixes' directory for any important updates to this patchset. - To fetch an -mm tree using git, use (for example) git-fetch git://git.kernel.org/pub/scm/linux/kernel/git/smurf/linux-trees.git tag v2.6.16-rc2-mm1 git-checkout -b local-v2.6.16-rc2-mm1 v2.6.16-rc2-mm1 - -mm kernel commit activity can be reviewed by subscribing to the mm-commits mailing list. echo "subscribe mm-commits" | mail majordomo@vger.kernel.org - If you hit a bug in -mm and it is not obvious which patch caused it, it is most valuable if you can perform a bisection search to identify which patch introduced the bug. Instructions for this process are at http://www.zip.com.au/~akpm/linux/patches/stuff/bisecting-mm-trees.txt But beware that this process takes some time (around ten rebuilds and reboots), so consider reporting the bug first and if we cannot immediately identify the faulty patch, then perform the bisection search. - When reporting bugs, please try to Cc: the relevant maintainer and mailing list on any email. - When reporting bugs in this kernel via email, please also rewrite the email Subject: in some manner to reflect the nature of the bug. Some developers filter by Subject: when looking for messages to read. - Occasional snapshots of the -mm lineup are uploaded to ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/mm/ and are announced on the mm-commits list. Changes since 2.6.22-rc4-mm1: git-acpi.patch git-alsa.patch git-arm-master.patch git-arm.patch git-avr32.patch git-cifs.patch git-cpufreq.patch git-drm.patch git-dvb.patch git-gfs2-nmw.patch git-hid.patch git-ieee1394.patch git-infiniband.patch git-input.patch git-kbuild.patch ...
My kernel went chatty when I tried to access my usb-stick; which it didn't seem to find. Initializing USB Mass Storage driver... scsi6 : SCSI emulation for USB Mass Storage devices usb-storage: device found at 2 usb-storage: waiting for device to settle before scanning scsi7 : SCSI emulation for USB Mass Storage devices usb-storage: device found at 5 usb-storage: waiting for device to settle before scanning usbcore: registered new interface driver usb-storage USB Mass Storage support registered. usb-storage: device scan complete WARNING: at /usr/src/linux-2.6/drivers/usb/core/urb.c:293 usb_submit_urb() Call Trace: [<ffffffff8020d4c7>] show_trace+0x34/0x4f [<ffffffff8020d4f4>] dump_stack+0x12/0x17 [<ffffffff803cac6a>] usb_submit_urb+0x9f/0x226 [<ffffffff803cc4c7>] usb_sg_wait+0x56/0x132 [<ffffffff8820519d>] :usb_storage:usb_stor_bulk_transfer_sg+0x9d/0xf3 [<ffffffff88205313>] :usb_storage:usb_stor_Bulk_transport+0x120/0x244 [<ffffffff8820577f>] :usb_storage:usb_stor_invoke_transport+0x25/0x2d2 [<ffffffff882066c0>] :usb_storage:usb_stor_control_thread+0x14b/0x1e7 [<ffffffff8024a7df>] kthread+0x47/0x74 [<ffffffff8020cc28>] child_rip+0xa/0x12 usb-storage: device scan complete WARNING: at /usr/src/linux-2.6/drivers/usb/core/urb.c:293 usb_submit_urb() Call Trace: [<ffffffff8020d4c7>] show_trace+0x34/0x4f [<ffffffff8020d4f4>] dump_stack+0x12/0x17 [<ffffffff803cac6a>] usb_submit_urb+0x9f/0x226 [<ffffffff803cc4c7>] usb_sg_wait+0x56/0x132 [<ffffffff8820519d>] :usb_storage:usb_stor_bulk_transfer_sg+0x9d/0xf3 [<ffffffff88205313>] :usb_storage:usb_stor_Bulk_transport+0x120/0x244 [<ffffffff8820577f>] :usb_storage:usb_stor_invoke_transport+0x25/0x2d2 [<ffffffff882066c0>] :usb_storage:usb_stor_control_thread+0x14b/0x1e7 [<ffffffff8024a7df>] kthread+0x47/0x74 [<ffffffff8020cc28>] child_rip+0xa/0x12 -
I got the same thing when I plugged my PSP in.
WARNING: at /home/jeremy/hg/xen/paravirt/linux/drivers/usb/core/urb.c:293 usb_submit_urb()
[<c01091e2>] show_trace_log_lvl+0x1a/0x2f
[<c0109cf2>] show_trace+0x12/0x14
[<c0109d0a>] dump_stack+0x16/0x18
[<c02dcaae>] usb_submit_urb+0x9f/0x205
[<c02de178>] usb_sg_wait+0x4c/0x11c
[<f8ddbfcd>] usb_stor_bulk_transfer_sg+0x8c/0xea [usb_storage]
[<f8ddc433>] usb_stor_Bulk_transport+0x136/0x249 [usb_storage]
[<f8ddc561>] usb_stor_invoke_transport+0x1b/0x292 [usb_storage]
[<f8ddb82e>] usb_stor_ATAPI_command+0x24/0x26 [usb_storage]
[<f8ddd310>] usb_stor_control_thread+0x129/0x1aa [usb_storage]
[<c013cd87>] kthread+0x3b/0x64
[<c0108da7>] kernel_thread_helper+0x7/0x10
=======================
After this the USB subsystem seems dead. For example, lsusb hangs in:
lsusb D 0000017B 6304 6964 6507 (NOTLB)
d8503ed4 00000082 199b6067 0000017b d8503ebc 00000000 22222222 d8502000
00000000 0000017b 00000000 c0127f83 d1cbcc90 d1cbce3c c2c09a40 da04cc45
00000960 00000046 00000001 c037d5f6 d716a1d4 d716a1c0 00266bc9 00000046
Call Trace:
[<c037d665>] __down+0xab/0xbf
[<c037d432>] __down_failed+0xa/0x10
[<c02e4611>] usbdev_read+0x5a/0x1f7
[<c017d517>] vfs_read+0xad/0x136
[<c017d94a>] sys_read+0x3d/0x61
[<c0108046>] sysenter_past_esp+0x6b/0xb5
Thanks,
J
-
Like Alan said, reverting this one fixes it: http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc4/2.6.22-rc4-m... -
Yep. My mailreader was hiding the followups for some reason, but it
couldn't fool me for long.
Thanks,
J
-
This is false-alarm output from something intended to track down a reported bug. The patch responsible is this one: http://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.22-rc4/2.6.22-rc4-m... It was removed from -mm just recently; you can simply revert it in your kernel source. Alan Stern -
Right, well then I have another problem. Because it doesn't find my usb-stick. I noticed from D states (quite easy to reproduce, just modprobe usb-storage): scsi_eh_6 D ffff8100079ed640 0 3568 2 (L-TLB) ffff81000ac45e10 0000000000000046 0000000000000000 0000000180252936 0000000000000002 0000000100000000 ffff81000ac42700 ffff8100043ca240 ffff81000ac42978 ffffffff8024fc8d 00000000000000ff ffff81000ac42700 Call Trace: [<ffffffff804775a9>] wait_for_completion+0x82/0xc1 [<ffffffff88201673>] :usb_storage:command_abort+0x7c/0x86 [<ffffffff8805f54f>] :scsi_mod:scsi_error_handler+0x28e/0x4cc [<ffffffff8024a7ff>] kthread+0x47/0x74 [<ffffffff8020cc28>] child_rip+0xa/0x12 usb-storage D ffff8100079ed640 0 3570 2 (L-TLB) ffff81000ac4dd30 0000000000000046 0000000000000000 0000000100000046 0000000000000002 0000000100000000 ffff81000ac4a780 ffff8100043ca240 ffff81000ac4a9f8 ffffffff802518f5 00000000000000ff ffff81000ac4a780 Call Trace: [<ffffffff804775a9>] wait_for_completion+0x82/0xc1 [<ffffffff803cc896>] usb_sg_wait+0x115/0x132 [<ffffffff8820219d>] :usb_storage:usb_stor_bulk_transfer_sg+0x9d/0xf3 [<ffffffff88202313>] :usb_storage:usb_stor_Bulk_transport+0x120/0x244 [<ffffffff8820277f>] :usb_storage:usb_stor_invoke_transport+0x25/0x2d2 [<ffffffff882036c0>] :usb_storage:usb_stor_control_thread+0x14b/0x1e7 [<ffffffff8024a7ff>] kthread+0x47/0x74 [<ffffffff8020cc28>] child_rip+0xa/0x12 scsi_eh_7 D ffff8100079ed640 0 3574 2 (L-TLB) ffff81000ac39e10 0000000000000046 0000000000000000 0000000100000046 0000000000000002 0000000100000000 ffff81000ac16640 ffff8100043ca240 ffff81000ac168b8 ffffffff8024fc8d 00000000000000ff ffff81000ac16640 Call Trace: [<ffffffff804775a9>] wait_for_completion+0x82/0xc1 [<ffffffff88201673>] :usb_storage:command_abort+0x7c/0x86 [<ffffffff8805f54f>] :scsi_mod:scsi_error_handler+0x28e/0x4cc [<ffffffff8024a7ff>] kthread+0x47/0x74 [<ffffffff8020cc28>] child_rip+0xa/0x12 usb-storage D ...
[Trimmed the recipients list] Okay, this is a separate problem. To help diagnose it, please turn on CONFIG_USB_DEBUG and CONFIG_USB_STORAGE_DEBUG and then post the resulting dmesg log. Alan Stern -
Here goes: http://programming.kicks-ass.net/misc/dmesg -
Okay, it's not a separate problem. You didn't revert the patch I mentioned earlier. It's generating those WARNINGs and causing usb-storage to fail. Alan Stern -
Ah, ok, my bad, I had understood the warning were merely cosmetic damage. Thanks. -
create-the-zone_movable-zone.patch breaks the build on sparc32. -- wli $ good=0; bad=`quilt series -v | wc -l`; time while [[ $(( $bad - $good )) -gt 1 ]]; do cur=`quilt series -v |egrep -c '(=|\+)'`; chkpt=$(( ($good + $bad)/2 )); delta=$(( $chkpt - $cur )); if [[ $delta -lt 0 ]]; then (quilt pop $(( 0 - $delta )) ) >& /dev/null; elif [[ $delta -gt 0 ]]; then (quilt push $delta) >& /dev/null; else true; fi; cur=$chkpt; (yes "" | make ARCH=sparc CROSS_COMPILE="sparc-linux-" CC="gcc-sparc-4.1" quiet=1 -j16 defconfig) >& /dev/null; echo "last known good = $good, first known bad = $bad, trying $chkpt"; yes "" | make ARCH=sparc CROSS_COMPILE="sparc-linux-" CC="gcc-sparc-4.1" quiet=1 -j16 image modules; s=$?; if [[ $s -ne 0 ]]; then echo "$chkpt bad"; bad=$chkpt; else echo "$chkpt good"; good=$chkpt; fi; done ... last known good = 641, first known bad = 645, trying 643 scripts/kconfig/conf -s arch/sparc/Kconfig drivers/macintosh/Kconfig:116:warning: 'select' used by config symbol 'PMAC_APM_EMU' refers to undefined symbol 'APM_EMULATION' drivers/input/keyboard/Kconfig:170:warning: 'select' used by config symbol 'KEYBOARD_ATARI' refers to undefined symbol 'ATARI_KBD_CORE' drivers/input/mouse/Kconfig:182:warning: 'select' used by config symbol 'MOUSE_ATARI' refers to undefined symbol 'ATARI_KBD_CORE' sound/soc/sh/Kconfig:6:warning: 'select' used by config symbol 'SND_SOC_PCM_SH7760' refers to undefined symbol 'SH_DMABRG' CHK include/linux/version.h CHK include/linux/utsrelease.h <stdin>:752:2: warning: #warning syscall setresuid not implemented <stdin>:756:2: warning: #warning syscall getresuid not implemented <stdin>:776:2: warning: #warning syscall setresgid not implemented <stdin>:780:2: warning: #warning syscall getresgid not implemented CHK include/linux/compile.h mm/page_alloc.c: In function 'nr_free_pagecache_pages': mm/page_alloc.c:1706: error: 'GFP_HIGH_MOVABLE' undeclared (first use in this function) mm/page_alloc.c:1706: error: (Each undeclared identifier is ...
Nope, there are no instances of GFP_HIGH_MOVABLE in the tree once all patches are applied. You hit a bad bisection point: between create-the-zone_movable-zone.patch and create-the-zone_movable-zone-fix.patch. -
The fully-applied tree fails with a link error having to do with movable_zone. I'm not entirely sure what arches are supposed to do about that. -- wli -
It's the sparc32 defconfig. Included below for completeness. -- wli # # Automatically generated make config: don't edit # Linux kernel version: 2.6.22-rc4-mm2 # Thu Jun 7 00:01:24 2007 # CONFIG_MMU=y CONFIG_HIGHMEM=y CONFIG_ZONE_DMA=y CONFIG_GENERIC_ISA_DMA=y CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" # # Code maturity level options # CONFIG_EXPERIMENTAL=y CONFIG_BROKEN_ON_SMP=y CONFIG_INIT_ENV_ARG_LIMIT=32 # # General setup # CONFIG_LOCALVERSION="" CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y CONFIG_SYSVIPC=y # CONFIG_IPC_NS is not set CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y # CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_TASKSTATS is not set # CONFIG_UTS_NS is not set # CONFIG_AUDIT is not set # CONFIG_IKCONFIG is not set CONFIG_LOG_BUF_SHIFT=14 CONFIG_SYSFS_DEPRECATED=y # CONFIG_RELAY is not set CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y # CONFIG_EMBEDDED is not set CONFIG_UID16=y CONFIG_SYSCTL_SYSCALL=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_ALL is not set # CONFIG_KALLSYMS_EXTRA_PASS is not set CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y CONFIG_ELF_CORE=y CONFIG_BASE_FULL=y CONFIG_FUTEX=y CONFIG_ANON_INODES=y CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_VM_EVENT_COUNTERS=y CONFIG_SLAB=y # CONFIG_SLUB is not set # CONFIG_SLOB is not set CONFIG_RT_MUTEXES=y # CONFIG_TINY_SHMEM is not set CONFIG_BASE_SMALL=0 # # Loadable module support # CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y # CONFIG_MODULE_FORCE_UNLOAD is not set # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set CONFIG_KMOD=y CONFIG_BLOCK=y # CONFIG_LBD is not set # CONFIG_BLK_DEV_IO_TRACE is not set # CONFIG_LSF is not set # # IO Schedulers # CONFIG_IOSCHED_NOOP=y CONFIG_IOSCHED_AS=y CONFIG_IOSCHED_DEADLINE=y CONFIG_IOSCHED_CFQ=y # CONFIG_DEFAULT_AS is not set # CONFIG_DEFAULT_DEADLINE is not ...
The error output looks like the following. -- wli $ quilt top create-the-zone_movable-zone-fix.patch $ (yes "" | make ARCH=sparc CROSS_COMPILE="sparc-linux-" CC="gcc-sparc-4.1" quiet=1 -j16 defconfig) >& /dev/null; yes "" | make ARCH=sparc CROSS_COMPILE="sparc-linux-" CC="gcc-sparc-4.1" quiet=1 -j16 image modules scripts/kconfig/conf -s arch/sparc/Kconfig drivers/macintosh/Kconfig:116:warning: 'select' used by config symbol 'PMAC_APM_EMU' refers to undefined symbol 'APM_EMULATION' drivers/input/keyboard/Kconfig:170:warning: 'select' used by config symbol 'KEYBOARD_ATARI' refers to undefined symbol 'ATARI_KBD_CORE' drivers/input/mouse/Kconfig:182:warning: 'select' used by config symbol 'MOUSE_ATARI' refers to undefined symbol 'ATARI_KBD_CORE' sound/soc/sh/Kconfig:6:warning: 'select' used by config symbol 'SND_SOC_PCM_SH7760' refers to undefined symbol 'SH_DMABRG' CHK include/linux/version.h UPD include/linux/version.h CHK include/linux/utsrelease.h UPD include/linux/utsrelease.h SYMLINK include/asm -> include/asm-sparc <stdin>:752:2: warning: #warning syscall setresuid not implemented <stdin>:756:2: warning: #warning syscall getresuid not implemented <stdin>:776:2: warning: #warning syscall setresgid not implemented <stdin>:780:2: warning: #warning syscall getresgid not implemented CHK include/linux/compile.h UPD include/linux/compile.h ipc/msg.c: In function 'sys_msgctl': ipc/msg.c:390: warning: 'setbuf.qbytes' may be used uninitialized in this function ipc/msg.c:390: warning: 'setbuf.uid' may be used uninitialized in this function ipc/msg.c:390: warning: 'setbuf.gid' may be used uninitialized in this function ipc/msg.c:390: warning: 'setbuf.mode' may be used uninitialized in this function ipc/sem.c: In function 'sys_semctl': ipc/sem.c:861: warning: 'setbuf.uid' may be used uninitialized in this ...
hm, OK, this seems to work:
--- a/include/linux/mmzone.h~a
+++ a/include/linux/mmzone.h
@@ -541,10 +541,13 @@ static inline int populated_zone(struct
return (!!zone->present_pages);
}
+#ifdef CONFIG_ARCH_POPULATES_NODE_MAP
extern int movable_zone;
+#endif
+
static inline int zone_movable_is_highmem(void)
{
-#ifdef CONFIG_HIGHMEM
+#if defined(CONFIG_HIGHMEM) && defined(CONFIG_ARCH_POPULATES_NODE_MAP)
return movable_zone == ZONE_HIGHMEM;
#else
return 0;
_
(the first ifdef is just there to trip things at compile time rather than
link time)
-
I guess it's not the arch's fault after all. I probably would've conditionally out-of-lined the thing so as never to expose movable_zone but this will do just fine. -- wli -
Manuel, can you take a look at this and fix up the select behaviour? Perhaps sound/soc/sh/Kconfig should just have a CONFIG_SUPERH around it. -
--- Make SND_SOC_PCM_SH7760 depend on SH_DMABRG rather than selecting it Fixes Kconfig warning about undefined SH_DMABRG symbol on non-sh builds. Signed-off-by: Manuel Lauss <mano@roarinelk.homelinux.net> --- linux-2.6.22-rc4-mm2/sound/soc/sh/Kconfig~ 2007-06-07 11:09:30.000000000 +0200 +++ linux-2.6.22-rc4-mm2/sound/soc/sh/Kconfig 2007-06-07 11:09:30.000000000 +0200 @@ -2,8 +2,7 @@ menu "SoC Audio support for SuperH" config SND_SOC_PCM_SH7760 tristate "SoC Audio support for Renesas SH7760" - depends on CPU_SUBTYPE_SH7760 && SND_SOC - select SH_DMABRG + depends on CPU_SUBTYPE_SH7760 && SND_SOC && SH_DMABRG help Enable this option for SH7760 AC97/I2S audio support. -
I hope the other people using this code are smart enough to set SH_DMABRG in their board's defconfig. (I seem to remember there was an argument about the evilness of select; and as far as I know I am the only user of this code anyway) If you think select is more useful then I'll send another patch to the alsa folks. Thanks, Manuel Lauss -
There's nothing that has to be fixed.
Sam is working on changing Kconfig to no longer emit these bogus
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
-
I don't think this was intentional:
[ 29.873254] edac_stub: module license 'unspecified' taints kernel.
--
Joseph Fannin
jfannin@gmail.com || jhf@columbus.rr.com
-
On Thu, 7 Jun 2007 15:37:51 -0400 No, I'm sure it wasn't. Doug, please check all that code and add suitable MODULE_LICENSEs? -
I'm not able to bring an ethernet interface down and back up again
with this if avahi-autoipd is installed on my Ubuntu boxes. I've seen
it on three different computers with different NIC hardware.
I've worked out an easy way to reproduce it without
avahi-autoipd. Starting with eth0 up (address assigned by DHCP):
# ifdown eth0
< dhclient makes the normal noise about releasing the address >
# ip addr add 169.254.255.67/16 brd 169.254.255.255 label eth0:avahi scope link dev eth0
# ip addr del 169.154.255.67/16 brd 169.254.255.255 label eth0:avahi scope link dev eth0
# ifup eth0
SIOCSIFADDR: No buffer space available < -- first sign of trouble HERE
< dhclient copyright boilerplate >
Listening on LPF/eth0/<MAC addr>
Sending on LPF/eth0/<MAC addr>
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5
DHCPOFFER from < DHCP server >
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from < DHCP server >
SIOCSIFADDR: No buffer space available
SIOCSIFNETMASK: Cannot assign requested address
SIOCSIFBRDADDR: Cannot assign requested address
SIOCADDRTL No such process
bound to < IP address > -- renewal in XXXX seconds
#
At this point, the interface is up, but has no address assigned.
Manually assigning one with ifconfig fails:
# ifconfig eth0 netmask 255.255.255.0 172.16.0.1
SIOCSIFNETMASK: Cannot assign requested address
SIOCSIFADDR: No buffer space available
#
... and a reboot is the only way I've been able to get the interface
to work again.
The last kernels I tried were 2.6.22-rc3 and *I think*
2.6.22-rc1-mm1, neither of which had this problem. I will test
2.6.22-rc4 and 2.6.22-rc3-mm1 later, but I'm out of time today.
I've attached my .config .
--
Joseph Fannin
jfannin@gmail.com
On Thu, 7 Jun 2007 17:46:09 -0400 Yep, thanks - Miles has reported the same thing. -
Sorry, it was my patch. This patch should fix it. [IPV4]: Do not remove idev when addresses are cleared Now that we create idev before addresses are added, it no longer makes sense to remove them when addresses are all deleted. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt -- diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index 354e800..0cf813f 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c @@ -327,12 +327,8 @@ static void __inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap, } } - if (destroy) { + if (destroy) inet_free_ifa(ifa1); - - if (!in_dev->ifa_list) - inetdev_destroy(in_dev); - } } static void inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap, -
From: Herbert Xu <herbert@gondor.apana.org.au> Applied, thanks Herbert. -
I'm getting the following compile error with CONFIG_X86_CMPXCHG64=n
(with -Werror-implicit-function-declaration - otherwise it would be a
link error):
<-- snip -->
...
CC [M] drivers/kvm/mmu.o
/home/bunk/linux/kernel-2.6/linux-2.6.22-rc4-mm2/drivers/kvm/mmu.c: In function ‘set_shadow_pte’:
/home/bunk/linux/kernel-2.6/linux-2.6.22-rc4-mm2/drivers/kvm/mmu.c:199: error: implicit declaration of function ‘set_64bit’
make[3]: *** [drivers/kvm/mmu.o] Error 1
<-- snip -->
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
-
On Tue, Jun 12, 2007 at 02:07:18AM +0200, Adrian Bunk wrote: > I'm getting the following compile error with CONFIG_X86_CMPXCHG64=n > (with -Werror-implicit-function-declaration - otherwise it would be a > link error): We really should just get that flag into mainline so that it breaks for people before they submit patches. We run into this constantly. Add -Werror-implicit-function-declaration This makes builds fail sooner if something is implicitly defined instead of having to wait half an hour for it to fail at the linking stage. Signed-off-by: Dave Jones <davej@redhat.com> --- linux-2.6/Makefile~ 2007-06-04 16:46:24.000000000 -0400 +++ linux-2.6/Makefile 2007-06-04 16:46:53.000000000 -0400 @@ -313,7 +313,8 @@ LINUXINCLUDE := -Iinclude \ CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE) CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ - -fno-strict-aliasing -fno-common + -fno-strict-aliasing -fno-common \ + -Werror-implicit-function-declaration AFLAGS := -D__ASSEMBLY__ # Read KERNELRELEASE from include/config/kernel.release (if it exists) -- http://www.codemonkey.org.uk -
On Mon, 11 Jun 2007 23:22:24 -0400 This causes the i386 allmodconfig build to fail: include/linux/uaccess.h: In function 'pagefault_disable': include/linux/uaccess.h:23: error: implicit declaration of function '__memory_barrier' I didn't look to see why... -
On Tue, Jun 12, 2007 at 03:03:57PM -0700, Andrew Morton wrote: > On Mon, 11 Jun 2007 23:22:24 -0400 > Dave Jones <davej@redhat.com> wrote: > > > Add -Werror-implicit-function-declaration > > This makes builds fail sooner if something is implicitly defined instead > > of having to wait half an hour for it to fail at the linking stage. > > > > Signed-off-by: Dave Jones <davej@redhat.com> > > > > --- linux-2.6/Makefile~ 2007-06-04 16:46:24.000000000 -0400 > > +++ linux-2.6/Makefile 2007-06-04 16:46:53.000000000 -0400 > > @@ -313,7 +313,8 @@ LINUXINCLUDE := -Iinclude \ > > CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE) > > > > CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ > > - -fno-strict-aliasing -fno-common > > + -fno-strict-aliasing -fno-common \ > > + -Werror-implicit-function-declaration > > AFLAGS := -D__ASSEMBLY__ > > > > # Read KERNELRELEASE from include/config/kernel.release (if it exists) > > This causes the i386 allmodconfig build to fail: Seems to be doing its job rather effectively. > include/linux/uaccess.h: In function 'pagefault_disable': > include/linux/uaccess.h:23: error: implicit declaration of function '__memory_barrier' > > I didn't look to see why... include/linux/compiler.h .. /* Optimization barrier */ #ifndef barrier # define barrier() __memory_barrier() #endif We shouldn't be hitting this, because barrier should be getting defined in the compiler specific headers above.. #if __GNUC__ >= 4 # include <linux/compiler-gcc4.h> #elif __GNUC__ == 3 && __GNUC_MINOR__ >= 2 # include <linux/compiler-gcc3.h> #else # error Sorry, your compiler is too old/not recognized. #endif both of those include linux/compiler-gcc.h, which defines barrier. How strange. What compiler version is this? Dave -- http://www.codemonkey.org.uk -
On Tue, 12 Jun 2007 18:16:29 -0400 err, hang on. I had a different patch in there which hilariously broke the build all over the place, and dropping that has made your patch come good. I'll put it back. -
On Tue, Jun 12, 2007 at 03:43:45PM -0700, Andrew Morton wrote: > On Tue, 12 Jun 2007 18:16:29 -0400 > Dave Jones <davej@redhat.com> wrote: > > > > > # Read KERNELRELEASE from include/config/kernel.release (if it exists) > > > > > > This causes the i386 allmodconfig build to fail: > > > > Seems to be doing its job rather effectively. > > err, hang on. I had a different patch in there which hilariously broke > the build all over the place, and dropping that has made your patch > come good. I'll put it back. This was all just a cunning trick to make me download and build an -mm kernel wasn't it ? :-) Dave -- http://www.codemonkey.org.uk -
I have -Werror-implicit-function-declaration in the CFLAGS of my
testbuilds for ages without ever hitting this.
Perhaps some change in your working tree?
Can you verify this problem with 2.6.22-rc4-mm2?
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
-
I've committed the following, which should disable kvm on i486 and below:
diff --git a/drivers/kvm/Kconfig b/drivers/kvm/Kconfig
index 2f661e5..33fa28a 100644
--- a/drivers/kvm/Kconfig
+++ b/drivers/kvm/Kconfig
@@ -11,6 +11,7 @@ if VIRTUALIZATION
config KVM
tristate "Kernel-based Virtual Machine (KVM) support"
depends on X86 && EXPERIMENTAL
+ depends on X86_CMPXCHG64 || 64BIT
---help---
Support hosting fully virtualized guest machines using hardware
virtualization extensions. You will need a fairly recent
--
Do not meddle in the internals of kernels, for they are subtle and quick to panic.
-
cmdline_parse_kernelcore() can become static.
---
--- linux-2.6.22-rc4-mm2/mm/page_alloc.c.old 2007-06-12 02:10:56.000000000 +0200
+++ linux-2.6.22-rc4-mm2/mm/page_alloc.c 2007-06-12 02:11:08.000000000 +0200
@@ -3879,7 +3879,7 @@
* kernelcore=size sets the amount of memory for use for allocations that
* cannot be reclaimed or migrated.
*/
-int __init cmdline_parse_kernelcore(char *p)
+static int __init cmdline_parse_kernelcore(char *p)
{
unsigned long long coremem;
if (!p)
-
Agreed. I would consider this a fix to handle-kernelcore=-generic.patch Thanks Adrian -- -- Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab -
remove_from_swapped_list() can become static.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
include/linux/swap-prefetch.h | 5 -----
mm/swap_prefetch.c | 2 +-
2 files changed, 1 insertion(+), 6 deletions(-)
--- linux-2.6.22-rc4-mm2/include/linux/swap-prefetch.h.old 2007-06-12 02:14:51.000000000 +0200
+++ linux-2.6.22-rc4-mm2/include/linux/swap-prefetch.h 2007-06-12 02:14:59.000000000 +0200
@@ -33,7 +33,6 @@
}
extern void add_to_swapped_list(struct page *page);
-extern void remove_from_swapped_list(const unsigned long index);
extern void delay_swap_prefetch(void);
extern void prepare_swap_prefetch(void);
@@ -46,10 +45,6 @@
{
}
-static inline void remove_from_swapped_list(const unsigned long __unused)
-{
-}
-
static inline void delay_swap_prefetch(void)
{
}
--- linux-2.6.22-rc4-mm2/mm/swap_prefetch.c.old 2007-06-12 02:15:09.000000000 +0200
+++ linux-2.6.22-rc4-mm2/mm/swap_prefetch.c 2007-06-12 02:15:18.000000000 +0200
@@ -139,7 +139,7 @@
* look up the entry from the index without having to iterate over the whole
* list.
*/
-void remove_from_swapped_list(const unsigned long index)
+static void remove_from_swapped_list(const unsigned long index)
{
struct swapped_entry *entry;
unsigned long flags;
-
Thanks. Good pick up. It was a global function but now is only done locally from within swap_prefetch.c lazily since the improvements. Signed-off-by: Con Kolivas <kernel@kolivas.org> -- -ck -
This patch makes the needlessly global osi_linux static. Signed-off-by: Adrian Bunk <bunk@stusta.de> --- --- linux-2.6.22-rc4-mm2/drivers/acpi/osl.c.old 2007-06-12 23:55:27.000000000 +0200 +++ linux-2.6.22-rc4-mm2/drivers/acpi/osl.c 2007-06-12 23:55:37.000000000 +0200 @@ -78,9 +78,9 @@ static char osi_additional_string[OSI_STRING_LENGTH_MAX]; #ifdef OSI_LINUX_ENABLED -int osi_linux = 1; /* enable _OSI(Linux) by default */ +static int osi_linux = 1; /* enable _OSI(Linux) by default */ #else -int osi_linux; /* disable _OSI(Linux) by default */ +static int osi_linux; /* disable _OSI(Linux) by default */ #endif -
This patch makes 2 needlessly global functions static.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
drivers/acpi/processor_throttling.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- linux-2.6.22-rc4-mm2/drivers/acpi/processor_throttling.c.old 2007-06-12 23:57:53.000000000 +0200
+++ linux-2.6.22-rc4-mm2/drivers/acpi/processor_throttling.c 2007-06-12 23:58:22.000000000 +0200
@@ -410,7 +410,8 @@
return pr->throttling.acpi_processor_get_throttling(pr);
}
-int acpi_processor_set_throttling_fadt(struct acpi_processor *pr, int state)
+static int acpi_processor_set_throttling_fadt(struct acpi_processor *pr,
+ int state)
{
u32 value = 0;
u32 duty_mask = 0;
@@ -482,7 +483,8 @@
return 0;
}
-int acpi_processor_set_throttling_ptc(struct acpi_processor *pr, int state)
+static int acpi_processor_set_throttling_ptc(struct acpi_processor *pr,
+ int state)
{
u32 value = 0;
-
This patch makes 3 needlessly global functions static.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
drivers/ata/sata_nv.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
--- linux-2.6.22-rc4-mm2/drivers/ata/sata_nv.c.old 2007-06-13 00:02:18.000000000 +0200
+++ linux-2.6.22-rc4-mm2/drivers/ata/sata_nv.c 2007-06-13 00:03:12.000000000 +0200
@@ -314,7 +314,7 @@
static int nv_ncqintr_dmasetupfis(struct ata_port *ap);
static void ncq_clear_singlefis(struct ata_port *ap, u32 val);
static u32 ncq_ownfisintr_value (struct ata_port *ap);
-void ncq_hotplug(struct ata_port *ap, u32 fis);
+static void ncq_hotplug(struct ata_port *ap, u32 fis);
static irqreturn_t nv_mcp55_interrupt(int irq, void *dev_instance);
static int ncq_interrupt(struct ata_port *ap, u32 fis);
static int nv_scsi_queuecmd(struct scsi_cmnd *cmd,
@@ -1931,7 +1931,7 @@
ncq_clear(ap);
}
-int nv_std_prereset(struct ata_port *ap, unsigned long deadline)
+static int nv_std_prereset(struct ata_port *ap, unsigned long deadline)
{
struct ata_eh_context *ehc = &ap->eh_context;
@@ -2265,7 +2265,7 @@
return 0;
}
-u32 ncq_valid_dhfisflag(struct nv_port_priv *pp)
+static u32 ncq_valid_dhfisflag(struct nv_port_priv *pp)
{
u32 valid = (pp->dhfis_flags == pp->qc_active);
@@ -2332,7 +2332,7 @@
#endif
-void ncq_hotplug(struct ata_port *ap, u32 fis)
+static void ncq_hotplug(struct ata_port *ap, u32 fis)
{
u32 serror;
struct ata_eh_info *ehi = &ap->eh_info;
-
This patch makes the needlessly global store_utf8() static.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
--- linux-2.6.22-rc4-mm2/drivers/char/selection.c.old 2007-06-13 00:23:09.000000000 +0200
+++ linux-2.6.22-rc4-mm2/drivers/char/selection.c 2007-06-13 00:23:20.000000000 +0200
@@ -112,7 +112,7 @@
}
/* stores the char in UTF8 and returns the number of bytes used (1-3) */
-int store_utf8(u16 c, char *p)
+static int store_utf8(u16 c, char *p)
{
if (c < 0x80) {
/* 0******* */
-
This patch makes the needlessly global struct menu_governor static.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
--- linux-2.6.22-rc4-mm2/drivers/cpuidle/governors/menu.c.old 2007-06-13 00:25:03.000000000 +0200
+++ linux-2.6.22-rc4-mm2/drivers/cpuidle/governors/menu.c 2007-06-13 00:25:13.000000000 +0200
@@ -123,7 +123,7 @@
data->deepest_bm_state = i - 1;
}
-struct cpuidle_governor menu_governor = {
+static struct cpuidle_governor menu_governor = {
.name = "menu",
.scan = menu_scan_device,
.select = menu_select,
-
cont_expand_zero() can become static.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
--- linux-2.6.22-rc4-mm2/fs/buffer.c.old 2007-06-14 01:51:08.000000000 +0200
+++ linux-2.6.22-rc4-mm2/fs/buffer.c 2007-06-14 01:51:42.000000000 +0200
@@ -2181,8 +2181,8 @@
return err;
}
-int cont_expand_zero(struct file *file, struct address_space *mapping,
- loff_t pos, loff_t *bytes)
+static int cont_expand_zero(struct file *file, struct address_space *mapping,
+ loff_t pos, loff_t *bytes)
{
struct inode *inode = mapping->host;
unsigned blocksize = 1 << inode->i_blkbits;
-
Hi Adrian, Thanks for doing these, but can we hold them off for now? Thanks, Nick -
nobh_{prepare,commit}_write() are no longer used.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
fs/buffer.c | 175 ------------------------------------
include/linux/buffer_head.h | 2
2 files changed, 177 deletions(-)
--- linux-2.6.22-rc4-mm2/include/linux/buffer_head.h.old 2007-06-14 01:54:54.000000000 +0200
+++ linux-2.6.22-rc4-mm2/include/linux/buffer_head.h 2007-06-14 01:55:08.000000000 +0200
@@ -224,8 +224,6 @@
int generic_commit_write(struct file *, struct page *, unsigned, unsigned);
int block_truncate_page(struct address_space *, loff_t, get_block_t *);
int file_fsync(struct file *, struct dentry *, int);
-int nobh_prepare_write(struct page*, unsigned, unsigned, get_block_t*);
-int nobh_commit_write(struct file *, struct page *, unsigned, unsigned);
int nobh_truncate_page(struct address_space *, loff_t);
int nobh_writepage(struct page *page, get_block_t *get_block,
struct writeback_control *wbc);
--- linux-2.6.22-rc4-mm2/fs/buffer.c.old 2007-06-14 01:55:22.000000000 +0200
+++ linux-2.6.22-rc4-mm2/fs/buffer.c 2007-06-14 01:56:12.000000000 +0200
@@ -2315,181 +2315,6 @@
/*
- * nobh_prepare_write()'s prereads are special: the buffer_heads are freed
- * immediately, while under the page lock. So it needs a special end_io
- * handler which does not touch the bh after unlocking it.
- *
- * Note: unlock_buffer() sort-of does touch the bh after unlocking it, but
- * a race there is benign: unlock_buffer() only use the bh's address for
- * hashing after unlocking the buffer, so it doesn't actually touch the bh
- * itself.
- */
-static void end_buffer_read_nobh(struct buffer_head *bh, int uptodate)
-{
- if (uptodate) {
- set_buffer_uptodate(bh);
- } else {
- /* This happens, due to failed READA attempts. */
- clear_buffer_uptodate(bh);
- }
- unlock_buffer(bh);
-}
-
-/*
- * On entry, the page is fully not uptodate.
- * On exit the page is fully uptodate in the areas outside (from,to)
- */
-int ...On Fri, 15 Jun 2007 00:15:55 +0200 wth? What happened to ext2 and ext3 nobh mode? They seem to have magically and unchangeloggedly disappeared? -
They were removed with Nick's new aops patches. Shaggy -- David Kleikamp IBM Linux Technology Center -
On Tue, 26 Jun 2007 15:48:58 -0500 That much I worked out for myself. It's kinda staggering that a fairly major feature in two fairly major filesystems got removed without even a mention in the changelog. I don't recall having seen it discussed in email but I obviously missed that bit. Look, I'm one micron from just dropping the whole lot. These changes simply have not received the amount of energy, effort, care, attention and testing which a change of this magnitude requires. -
so be sure to discuss that (not the patches themselves so much, but the process(es)) at the kernel summit etc.... --- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** -
I did of course mention that nobh wasn't converted when sending the patches. I asked for comments about how much it is used in real world. Badari was the only one who replied about that but we didn't reach a conclusion. I don't know about energy, but I have seen lots of other patches cause a lot more problems... -
wake_up_inode() can become static.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
fs/inode.c | 18 +++++++++---------
include/linux/writeback.h | 1 -
2 files changed, 9 insertions(+), 10 deletions(-)
--- linux-2.6.22-rc4-mm2/include/linux/writeback.h.old 2007-06-14 02:00:29.000000000 +0200
+++ linux-2.6.22-rc4-mm2/include/linux/writeback.h 2007-06-14 02:00:34.000000000 +0200
@@ -69,7 +69,6 @@
* fs/fs-writeback.c
*/
int writeback_inodes(struct writeback_control *wbc);
-void wake_up_inode(struct inode *inode);
int inode_wait(void *);
int sync_inodes_sb(struct super_block *, int wait);
int sync_inodes(int wait);
--- linux-2.6.22-rc4-mm2/fs/inode.c.old 2007-06-14 02:00:40.000000000 +0200
+++ linux-2.6.22-rc4-mm2/fs/inode.c 2007-06-14 02:02:25.000000000 +0200
@@ -99,6 +99,15 @@
static struct kmem_cache * inode_cachep __read_mostly;
+static void wake_up_inode(struct inode *inode)
+{
+ /*
+ * Prevent speculative execution through spin_unlock(&inode_lock);
+ */
+ smp_mb();
+ wake_up_bit(&inode->i_state, __I_LOCK);
+}
+
static struct inode *alloc_inode(struct super_block *sb)
{
static const struct address_space_operations empty_aops;
@@ -1296,15 +1305,6 @@
spin_lock(&inode_lock);
}
-void wake_up_inode(struct inode *inode)
-{
- /*
- * Prevent speculative execution through spin_unlock(&inode_lock);
- */
- smp_mb();
- wake_up_bit(&inode->i_state, __I_LOCK);
-}
-
/*
* We rarely want to lock two inodes that do not have a parent/child
* relationship (such as directory, child inode) simultaneously. The
-
simple_commit_write() can now become static.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
fs/libfs.c | 5 ++---
include/linux/fs.h | 2 --
2 files changed, 2 insertions(+), 5 deletions(-)
--- linux-2.6.22-rc4-mm2/include/linux/fs.h.old 2007-06-14 02:05:36.000000000 +0200
+++ linux-2.6.22-rc4-mm2/include/linux/fs.h 2007-06-14 02:05:43.000000000 +0200
@@ -1973,8 +1973,6 @@
extern int simple_readpage(struct file *file, struct page *page);
extern int simple_prepare_write(struct file *file, struct page *page,
unsigned offset, unsigned to);
-extern int simple_commit_write(struct file *file, struct page *page,
- unsigned offset, unsigned to);
extern int simple_write_begin(struct file *file, struct address_space *mapping,
loff_t pos, unsigned len, unsigned flags,
struct page **pagep, void **fsdata);
--- linux-2.6.22-rc4-mm2/fs/libfs.c.old 2007-06-14 02:05:50.000000000 +0200
+++ linux-2.6.22-rc4-mm2/fs/libfs.c 2007-06-14 02:06:16.000000000 +0200
@@ -371,8 +371,8 @@
return simple_prepare_write(file, page, from, from+len);
}
-int simple_commit_write(struct file *file, struct page *page,
- unsigned from, unsigned to)
+static int simple_commit_write(struct file *file, struct page *page,
+ unsigned from, unsigned to)
{
struct inode *inode = page->mapping->host;
loff_t pos = ((loff_t)page->index << PAGE_CACHE_SHIFT) + to;
@@ -686,7 +686,6 @@
EXPORT_SYMBOL(get_sb_pseudo);
EXPORT_SYMBOL(simple_write_begin);
EXPORT_SYMBOL(simple_write_end);
-EXPORT_SYMBOL(simple_commit_write);
EXPORT_SYMBOL(simple_dir_inode_operations);
EXPORT_SYMBOL(simple_dir_operations);
EXPORT_SYMBOL(simple_empty);
-
This patch contains the following cleanups: - remove the following no longer used functions: - bitmap.c: reiserfs_claim_blocks_to_be_allocated() - bitmap.c: reiserfs_release_claimed_blocks() - bitmap.c: reiserfs_can_fit_pages() - make the following functions static: - inode.c: restart_transaction() - journal.c: reiserfs_async_progress_wait() Signed-off-by: Adrian Bunk <bunk@stusta.de> --- fs/reiserfs/bitmap.c | 57 ------------------------------------ fs/reiserfs/inode.c | 4 +- fs/reiserfs/journal.c | 3 + include/linux/reiserfs_fs.h | 7 ---- 4 files changed, 4 insertions(+), 67 deletions(-) --- linux-2.6.22-rc4-mm2/include/linux/reiserfs_fs.h.old 2007-06-14 02:08:17.000000000 +0200 +++ linux-2.6.22-rc4-mm2/include/linux/reiserfs_fs.h 2007-06-14 02:11:20.000000000 +0200 @@ -1701,8 +1701,6 @@ return th->t_blocks_allocated - th->t_blocks_logged; } -int reiserfs_async_progress_wait(struct super_block *s); - struct reiserfs_transaction_handle *reiserfs_persistent_transaction(struct super_block *, @@ -1857,8 +1855,6 @@ #define GET_BLOCK_NO_IMUX 8 /* i_mutex is not held, don't preallocate */ #define GET_BLOCK_NO_DANGLE 16 /* don't leave any transactions running */ -int restart_transaction(struct reiserfs_transaction_handle *th, - struct inode *inode, struct treepath *path); void reiserfs_read_locked_inode(struct inode *inode, struct reiserfs_iget_args *args); int reiserfs_find_actor(struct inode *inode, void *p); @@ -2135,9 +2131,6 @@ struct inode *inode); void reiserfs_discard_all_prealloc(struct reiserfs_transaction_handle *th); #endif -void reiserfs_claim_blocks_to_be_allocated(struct super_block *sb, int blocks); -void reiserfs_release_claimed_blocks(struct super_block *sb, int blocks); -int reiserfs_can_fit_pages(struct super_block *sb); /* hashes.c */ __u32 keyed_hash(const signed char *msg, int len); --- ...
root_wait can become static. Signed-off-by: Adrian Bunk <bunk@stusta.de> --- --- linux-2.6.22-rc4-mm2/init/do_mounts.c.old 2007-06-14 02:19:22.000000000 +0200 +++ linux-2.6.22-rc4-mm2/init/do_mounts.c 2007-06-14 02:19:47.000000000 +0200 @@ -25,7 +25,7 @@ int root_mountflags = MS_RDONLY | MS_SILENT; char * __initdata root_device_name; static char __initdata saved_root_name[64]; -int __initdata root_wait; +static int __initdata root_wait; dev_t ROOT_DEV; -
ide_set_dma no longer has any modular user.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
--- linux-2.6.22-rc4-mm2/drivers/ide/ide-dma.c.old 2007-06-14 23:52:30.000000000 +0200
+++ linux-2.6.22-rc4-mm2/drivers/ide/ide-dma.c 2007-06-14 23:52:38.000000000 +0200
@@ -847,8 +847,6 @@
return rc;
}
-EXPORT_SYMBOL_GPL(ide_set_dma);
-
#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
void ide_dma_lost_irq (ide_drive_t *drive)
{
-
Every file should include the headers containing the prototypes for
it's global functions.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
--- linux-2.6.22-rc4-mm2/arch/i386/video/fbdev.c.old 2007-06-17 15:48:25.000000000 +0200
+++ linux-2.6.22-rc4-mm2/arch/i386/video/fbdev.c 2007-06-17 15:48:53.000000000 +0200
@@ -11,6 +11,8 @@
#include <linux/fb.h>
#include <linux/pci.h>
+#include <asm/fb.h>
+
int fb_is_primary_device(struct fb_info *info)
{
struct device *device = info->device;
-
1) Why not include asm/fb.h from linux/fb.h? 2) Is asm/fb.h an -mm thing? I do not have it in my linus tree. Note: Ketchup is broken on my ubuntu box so no -mm right now. Sam -
I get this warning when I plug a USB stick: Jun 19 15:50:53 werewolf-wl kernel: usb 1-8: new high speed USB device using ehci_hcd and address 4 Jun 19 15:50:53 werewolf-wl kernel: usb 1-8: new device found, idVendor=090c, idProduct=1000 Jun 19 15:50:53 werewolf-wl kernel: usb 1-8: new device strings: Mfr=1, Product=2, SerialNumber=3 Jun 19 15:50:53 werewolf-wl kernel: usb 1-8: Product: USBDrive Jun 19 15:50:53 werewolf-wl kernel: usb 1-8: Manufacturer: LG Jun 19 15:50:53 werewolf-wl kernel: usb 1-8: SerialNumber: AA04012700012034 Jun 19 15:50:53 werewolf-wl kernel: usb 1-8: configuration #1 chosen from 1 choice Jun 19 15:50:53 werewolf-wl kernel: scsi7 : SCSI emulation for USB Mass Storage devices Jun 19 15:50:53 werewolf-wl kernel: usb-storage: device found at 4 Jun 19 15:50:53 werewolf-wl kernel: usb-storage: waiting for device to settle before scanning Jun 19 15:50:58 werewolf-wl kernel: WARNING: at drivers/usb/core/urb.c:293 usb_submit_urb() Jun 19 15:50:58 werewolf-wl kernel: [usb_submit_urb+491/513] usb_submit_urb+0x1eb/0x201 Jun 19 15:50:58 werewolf-wl kernel: [<c02724be>] usb_submit_urb+0x1eb/0x201 Jun 19 15:50:58 werewolf-wl kernel: [usb_sg_init+580/609] usb_sg_init+0x244/0x261 Jun 19 15:50:58 werewolf-wl kernel: [<c027408b>] usb_sg_init+0x244/0x261 Jun 19 15:50:58 werewolf-wl kernel: [usb_sg_wait+175/326] usb_sg_wait+0xaf/0x146 Jun 19 15:50:58 werewolf-wl kernel: [<c0273c12>] usb_sg_wait+0xaf/0x146 Jun 19 15:50:58 werewolf-wl kernel: [usb_stor_bulk_transfer_sg+149/220] usb_stor_bulk_transfer_sg+0x95/0xdc Jun 19 15:50:58 werewolf-wl kernel: [usb_stor_bulk_transfer_buf+71/114] usb_stor_bulk_transfer_buf+0x47/0x72 Jun 19 15:50:58 werewolf-wl kernel: [<c0285afe>] usb_stor_bulk_transfer_buf+0x47/0x72 Jun 19 15:50:58 werewolf-wl kernel: [usb_stor_Bulk_transport+293/617] usb_stor_Bulk_transport+0x125/0x269 Jun 19 15:50:58 werewolf-wl kernel: [<c02860a9>] usb_stor_Bulk_transport+0x125/0x269 Jun 19 15:50:58 werewolf-wl kernel: [usb_stor_control_thread+0/425] ...
Oops, forgot to say that this is not plain -rc4-mm2, but with CFS scheduler v17.
--
J.A. Magallon <jamagallon()ono!com> \ Software is like sex:
\ It's better when it's free
Mandriva Linux release 2008.0 (Cooker) for i586
Linux 2.6.21-jam07 (gcc 4.1.2 20070302 (4.1.2-1mdv2007.1)) SMP PREEMPT
09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
-
Does this help? http://lkml.org/lkml/2007/6/7/197 regards, -- http://www.fi.muni.cz/~xslaby/ Jiri Slaby faculty of informatics, masaryk university, brno, cz e-mail: jirislaby gmail com, gpg pubkey fingerprint: B674 9967 0407 CE62 ACC8 22A0 32CC 55C3 39D4 7A7E -
Yep, thanks !!! Oops gone.
--
J.A. Magallon <jamagallon()ono!com> \ Software is like sex:
\ It's better when it's free
Mandriva Linux release 2008.0 (Cooker) for i586
Linux 2.6.21-jam08 (gcc 4.1.2 20070302 (4.1.2-1mdv2007.1)) SMP PREEMPT
09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
-
Hello, on this vaio sz72b I can't suspend if usb-storage is loaded. Bisecting is becoming troublesome as different sets have slightly different problems. At one point (with the GREGKH usb stuff built) I had the kernel reporting it cannot stop the usb-storage thread so I guess that something later in the series made things worse (freezable workqueues?). Clues? -- -
Can you please try 2.6.22-rc5 with the patches from http://www.sisk.pl/kernel/hibernation_and_suspend/2.6.22-rc5/patches/ applied. That should allow us to eliminate some suspects. ;-) Greetings, Rafael -- "Premature optimization is the root of all evil." - Donald Knuth -
you're safe then! .22-rc5 + your suspend patch-set can suspend and resume happily. -- -
OK, thanks. OTOH, that would have been less patches to check ... ;-) I'll see if I can reproduce your problem here. Greetings, Rafael -- "Premature optimization is the root of all evil." - Donald Knuth -
Yes, I can. It's only necessary to load usb-storage (without any devices actually using it) and it fails device_suspend() immediately (I don't think it's freezer-related). I've got the following trace from it: usb_endpoint usbdev3.2_ep81: PM: suspend 0->1, parent 3-1:1.0 already 2 Suspending device 3-1:1.0 Suspending device usbdev3.2_ep00 Suspending device 3-1 Suspending device eth1 Suspending device eth0 Suspending device usbdev3.1 Suspending device usbdev3.1_ep81 Suspending device 3-0:1.0 Suspending device usbdev3.1_ep00 Suspending device usb3 hub 3-0:1.0: hub_suspend ohci_hcd 0000:00:02.1: needs reinit! usb usb3: suspend fail, err -16 usb usb3: 'global' suspend -16 hub 3-0:1.0: hub_resume hub 3-0:1.0: activate --> -108 suspend_device(): usb_suspend+0x0/0x30() returns -16 Could not suspend device usb3: error -16 WARNING: at /home/rafael/src/mm/linux-2.6.22-rc4-mm2/drivers/usb/core/urb.c:293 usb_submit_urb() Call Trace: [<ffffffff80409dd3>] usb_submit_urb+0x363/0x3b0 [<ffffffff881e21cf>] :usbhid:hid_start_in+0x8f/0xb0 [<ffffffff881e221a>] :usbhid:hid_resume+0x2a/0x30 [<ffffffff8040c832>] usb_resume_interface+0x92/0x100 [<ffffffff8040c93e>] usb_external_resume_device+0x9e/0x170 [<ffffffff8040ca3b>] usb_resume+0x2b/0x40 [<ffffffff803ed097>] resume_device+0x87/0x190 [<ffffffff803ed239>] dpm_resume+0x99/0xc0 [<ffffffff803ecef7>] device_suspend+0x147/0x190 [<ffffffff803c1891>] tty_ldisc_deref+0x61/0x80 [<ffffffff80268e1e>] hibernation_snapshot+0x3e/0xe0 [<ffffffff802e7fce>] dnotify_parent+0x3e/0x90 [<ffffffff8026c059>] snapshot_ioctl+0x379/0x540 [<ffffffff8026bce0>] snapshot_ioctl+0x0/0x540 [<ffffffff802b2b72>] do_ioctl+0x92/0xe0 [<ffffffff802b2c33>] vfs_ioctl+0x73/0x2d0 [<ffffffff804b2c7a>] trace_hardirqs_on_thunk+0x35/0x37 [<ffffffff802b2f21>] sys_ioctl+0x91/0xb0 [<ffffffff8020bc6e>] system_call+0x7e/0x83 usbhid 3-1:1.0: resume error -16 usb_endpoint usbdev3.2_ep81: PM: resume from 0, parent 3-1:1.0 still 2 input input4: PM: resume from ...
It seems to be 100% reproducible in arbitrary configuration. Here's a dmesg snippet from another machine: Suspending device usbdev4.1 Suspending device usbdev4.1_ep81 Suspending device 4-0:1.0 Suspending device usbdev4.1_ep00 Suspending device usb4 hub 4-0:1.0: activate --> -108 suspend_device(): usb_suspend+0x0/0x30() returns -16 Could not suspend device usb4: error -16 PM: Image restored successfully. Restarting tasks ... <3>hub 4-0:1.0: hub_port_status failed (err = -108) hub 4-0:1.0: hub_port_status failed (err = -108) hub 4-0:1.0: hub_port_status failed (err = -108) done. swsusp: Basic memory bitmaps freed Greetings, Rafael -- "Premature optimization is the root of all evil." - Donald Knuth -
Odd. This has nothing at all to do with usb-storage. The "needs reinnit!" message means that an OHCI controller was in a reset state -- not running and not suspended -- when the suspend method was called. This happened with plain old 2.6.22-rc4-mm2? I'll try to reproduce it. Alan Stern -
Well, a large part of the problem is that usb-try-to-debug-bug-8561.patch hasn't been reverted in 2.6.22-rc4-mm2. Andrew, that patch is supposed to be completely gone. It isn't still present in your tree, is it? Alan Stern -
Yes, the problem is not present after reverting this patch. Greetings, Rafael -- "Premature optimization is the root of all evil." - Donald Knuth -
Not for me, I had that patch already reverted. As I said there was a point when bisecting which the kernel came back to life instead of just hanging trying to suspend. I'll try to get a trace with that. May the usb_storage verbose debug help there? -- -
I've lost track of the start of this thread, so it would help to see a dmesg log with CONFIG_USB_DEBUG turned on. CONFIG_USB_STORAGE_DEBUG doesn't matter so much because the usb-storage suspend and resume routines don't do a lot of work. Alan Stern -
Sorry, it was probably me who messed things up. It looks like it's not usb-storage who's preventing suspend here. I have this diff between a single user mode where I can suspend and a multiuser environment where suspend hangs, will go loading the missing modules one by one and get a better idea... Sorry for the noise. --- /root/lsmod-str.txt 2007-06-24 10:58:09.953207666 +0900 +++ /root/lsmod-str-nono.txt 2007-06-24 14:21:33.354417422 +0900 @@ -1,10 +1,20 @@ +ac +acpi_cpufreq agpgart arc4 +auth_rpcgss backlight +battery blkcipher bluetooth +button cdrom cfg80211 +cpufreq_conservative +cpufreq_ondemand +cpufreq_powersave +cpufreq_stats +cpufreq_userspace dm_crypt dm_mirror dm_mod @@ -12,20 +22,39 @@ ecb ehci_hcd evdev +exportfs +fan firmware_class +freq_table fuse hci_usb i2c_i801 ide_cd +inet_diag intel_agp +iptable_filter +iptable_nat +ip_tables +ipt_MASQUERADE +ipv6 iwl3945 +l2cap +lockd loop mac80211 +nf_conntrack +nf_conntrack_ipv4 +nf_nat +nfnetlink +nfs +nfs_acl +nfsd pcmcia pcmcia_core psmouse r5u870 rc80211_simple +rfcomm rsrc_nonstatic rtc sky2 @@ -38,16 +67,22 @@ snd_timer sony_laptop soundcore +sunrpc +tcp_diag +thermal tifm_7xx1 tifm_core tpm tpm_bios tpm_infineon uhci_hcd -usb_storage usbcore +usb_storage v4l1_compat v4l2_common video_buf videodev +x_tables +xt_state +xt_tcpudp yenta_socket -- -
... Hi, sorry for the previous spam about not suspending. It turns out it's actually due to iwl3945. Looking at the changelog there's been a recent fix for suspend/resume issues, I just tested the latest snapshot (0.0.32) which indeed works. apologies again, -- -
The usb-storage thread is supposed to be unfreezable. Recent changes may have messed up the code that checks for which threads need to be frozen and which don't. Alan Stern -
I don't really think so, but well ... That's why I asked Mattia to test the hibernation/suspend patches without the rest of -mm. Greetings, Rafael -- "Premature optimization is the root of all evil." - Donald Knuth -
LTP triggered this [ 4691.872882] ------------[ cut here ]------------ [ 4691.877619] kernel BUG at fs/buffer.c:1821! [ 4691.881857] invalid opcode: 0000 [#1] [ 4691.885596] PREEMPT SMP [ 4691.888205] Modules linked in: isofs nls_base zlib_inflate autofs4 sunrpc af_packet nf_conntrack_netbios_ns nf_conntrack_ipv4 xt_state nf_conntrack nfnetlink ipt_REJECT iptable_filter ip_tables xt_tcpudp ip6t_REJECT ip6table_filter ip6_tables x_tables firmware_class binfmt_misc thermal processor fan container ipv6 nvram loop snd_intel8x0 snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm snd_timer i2c_i801 snd soundcore intel_agp snd_page_alloc agpgart evdev rtc [ 4691.937384] CPU: 1 [ 4691.937385] EIP: 0060:[<c04a510f>] Not tainted VLI [ 4691.937387] EFLAGS: 00010202 (2.6.22-rc4-mm2 #1) [ 4691.949984] EIP is at __block_prepare_write+0x64/0x3a5 [ 4691.955164] eax: 00000001 ebx: c624fc50 ecx: c07e0910 edx: 00000001 [ 4691.962041] esi: 00000418 edi: 00000000 ebp: cc454dc0 esp: cc454d60 [ 4691.968946] ds: 007b es: 007b fs: 00d8 gs: 0033 ss: 0068 [ 4691.974850] Process vmsplice01 (pid: 8420, ti=cc454000 task=cafe6800 task.ti=cc454000) [ 4691.982699] Stack: cc454d80 c0443c61 00000001 00000001 c7f71080 00000418 c624fc50 c98ec464 [ 4691.991372] 00000000 00000286 c04d6706 c523d7c8 00000050 c04d6706 c7f71080 c828d7f0 [ 4691.999998] c7f71094 cc454dd4 c04d673f c065cfbc c624fc50 c624fc50 00000418 00000000 [ 4692.008729] Call Trace: [ 4692.011397] [<c04a5513>] block_write_begin+0x90/0xf4 [ 4692.016556] [<c04c9779>] ext3_write_begin+0xda/0x19b [ 4692.021750] [<c0464b5a>] pagecache_write_begin+0x4d/0x12f [ 4692.027349] [<c04a1a35>] pipe_to_file+0xa0/0x15f [ 4692.032148] [<c04a14af>] __splice_from_pipe+0x63/0x1d2 [ 4692.037459] [<c04a1660>] splice_from_pipe+0x42/0x58 [ 4692.042544] [<c04a1916>] generic_file_splice_write+0x8b/0x10a [ 4692.048477] [<c04a1409>] ...
yup, thanks, I'd forgotten about that one. Nick had a protofix but afaik nobody has tested it yet. -
Hi,
after plugging my camera in, I get this:
usb 1-1: new full speed USB device using uhci_hcd and address 2
usb 1-1: new device found, idVendor=07b4, idProduct=0105
usb 1-1: new device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1: Product: C765UZ
usb 1-1: Manufacturer: OLYMPUS
usb 1-1: SerialNumber: 000375531837
usb 1-1: configuration #1 chosen from 1 choice
Initializing USB Mass Storage driver...
scsi7 : SCSI emulation for USB Mass Storage devices
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
WARNING: at /home/l/latest/xxx/drivers/usb/core/urb.c:293 usb_submit_urb()
[<c010516a>] dump_trace+0x1d8/0x207
[<c01051b3>] show_trace_log_lvl+0x1a/0x30
[<c0105db9>] show_trace+0x12/0x14
[<c0105dd1>] dump_stack+0x16/0x18
[<c0284034>] usb_submit_urb+0x1ea/0x200
[<c02857fe>] usb_sg_wait+0xba/0x14e
[<f8985098>] usb_stor_bulk_transfer_sg+0x99/0xe3 [usb_storage]
[<f89854cc>] usb_stor_Bulk_transport+0x127/0x277 [usb_storage]
[<f8985637>] usb_stor_invoke_transport+0x1b/0x2f4 [usb_storage]
[<f89848b9>] usb_stor_transparent_scsi_command+0x8/0xa [usb_storage]
[<f8986354>] usb_stor_control_thread+0x130/0x195 [usb_storage]
[<c0136d07>] kthread+0x37/0x59
[<c0104bfb>] kernel_thread_helper+0x7/0x1c
=======================
It's not usable, some threads end up in D state. Relevant part of sysrq-t:
scsi_eh_7 D 0080027D 0 23842 2 (L-TLB)
c2e52f34 00000046 45ad4b85 0080027d c2e52f1c 00000000 c3e88230 45ad46cf
0080027d c012262a c3e88230 c3e883b8 c180b980 486cfe61 0000027d c037487f
c2e52f74 00000046 d560826b 0080027a c011c00f c2cecac0 c0545080 c0545080
Call Trace:
[<c0374f8d>] wait_for_completion+0x87/0xbc
[<f898462e>] command_abort+0x58/0x74 [usb_storage]
[<c0263be3>] __scsi_try_to_abort_cmd+0x1c/0x1e
[<c0264f10>] scsi_error_handler+0x241/0x2bf
[<c0136d07>] kthread+0x37/0x59
[<c0104bfb>] kernel_thread_helper+0x7/0x1c
=======================
usb-storage D 0080027B 0 23843 2 ...Aha, you are, going to try http://lkml.org/lkml/2007/6/7/197 regards, -- http://www.fi.muni.cz/~xslaby/ Jiri Slaby faculty of informatics, masaryk university, brno, cz e-mail: jirislaby gmail com, gpg pubkey fingerprint: B674 9967 0407 CE62 ACC8 22A0 32CC 55C3 39D4 7A7E -
I've come home to find my server has locked up hard, with a panic on the screen. This time unlike others, I was able to grab a photo of it for further analysis. http://www.reub.net/files/kernel/ serial-crash.jpg [Note also the .config and dmesg in the same directory] I have had this or a very similar traceback appear about 3 or 4 times now, including with a 2.6.21-gentoo kernel (based on mainline), so this bug may well be present in mainline. It is not new to this -mm release. The bug does not occur on demand, it just seems to happen every few days without obvious warning, I haven't reported it until now as I haven't had any other information to provide other than "some panic seems to happen with a tty_write something-or-other". The other possibly crucial piece of information on this is that I have one of my serial ports set up as a serial console. The kernel boot commands for this are: kernel /vmlinuz-2.6.22-rc4-mm2 ro real_root=/dev/md2 console=tty0 console=ttyS0,57600 panic=30 as well as this: # SERIAL CONSOLES s0:12345:respawn:/sbin/agetty 57600 ttyS0 vt100 in inittab. The other serial port is connected up to my APC UPS and is set up with apcupsd. Reuben -
Ahh.. much better. 'lvm vgscan' worked, it booted, been up for an hour-ish without any oops, bug, or warning. Dell Latitude D820 laptop, T7200 dual-core, x86_64 kernel....
calibrate_xor_blocks() can be marked __init.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
--- linux-2.6.22-rc4-mm2/crypto/xor.c.old 2007-06-21 23:47:56.000000000 +0200
+++ linux-2.6.22-rc4-mm2/crypto/xor.c 2007-06-21 23:48:39.000000000 +0200
@@ -94,7 +94,7 @@
speed / 1000, speed % 1000);
}
-static int
+static int __init
calibrate_xor_blocks(void)
{
void *b1, *b2;
-
