Re: 2.6.23-rc8-mm2 - tcp_fastretrans_alert() WARNING

Previous thread: [PATCH] pci: use pci=bfsort for HP DL385 G2, DL585 G2 by Michal Schmidt on Thursday, September 27, 2007 - 2:18 am. (2 messages)

Next thread: Updating include/asm symlink when $ARCH changes by Martin Michlmayr on Thursday, September 27, 2007 - 2:25 am. (3 messages)
From: Andrew Morton
Date: Thursday, September 27, 2007 - 2:22 am

ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.23-rc8/2.6.23-rc8-mm2/


- The scheduler devel tree has been restored

- The driver tree is presently busted, so I reverted it to the 2..23-rc8-mm1
  version.

- It's now a nearly-32MB diff.


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.23-rc8-mm2:


 origin.patch
 git-acpi.patch
 git-alsa.patch
 git-arm.patch
 git-audit-master.patch
 git-avr32.patch
 git-cifs.patch
 git-cpufreq.patch
 git-powerpc.patch
 git-powerpc-galak.patch
 git-drm.patch
 git-dvb.patch
 git-hwmon.patch
 ...
From: Kamalesh Babulal
Date: Thursday, September 27, 2007 - 3:52 am

Hi Andrew,

The drivers/net/ibm_newemac/mal seems to be broken with 2.6.23-rc8-mm2 also, it was
reported on 2.6.23-rc8-mm1 (http://lkml.org/lkml/2007/9/25/173).


-- 
Thanks & Regards,
Kamalesh Babulal,
Linux Technology Center,
IBM, ISTL.
-

From: Rafael J. Wysocki
Date: Thursday, September 27, 2007 - 8:19 am

On HP nx6325:

1) The audio is back (thanks for reverting x86_64-mm-cpa-einval.patch)

2) CPU hotplug is busted (onlining of CPU1 kills the kernel), probably due to
   the same issue that I'm having with the -hrt version of 2.6.23-rc8 (we're
   debugging it right now)

3) Some call traces unrelated to 2) appear in dmesg:

   a) This probably is due to the fact that I've compiled two RTC drivers, by
      mistake ;-)

Duplicate file names "rtc" detected.
Call Trace:
/home/rafael/src/mm/linux-2.6.23-rc8-mm2/drivers/usb/core/inode.c: creating file
 '001'
usb usb3: new device found, idVendor=0000, idProduct=0000
usb usb3: new device strings: Mfr=3, Product=2, SerialNumber=1
usb usb3: Product: OHCI Host Controller
usb usb3: Manufacturer: Linux 2.6.23-rc8-mm2 ohci_hcd
usb usb3: SerialNumber: 0000:00:13.1
 [<ffffffff802d1b77>] proc_register+0x15b/0x173
 [<ffffffff802d1c03>] create_proc_entry+0x74/0x89
 [<ffffffff8811e05a>] :rtc_core:rtc_proc_add_device+0x25/0x48
 [<ffffffff8811d229>] :rtc_core:rtc_device_register+0x182/0x215
 [<ffffffff802d7f8b>] sysfs_add_one+0xbf/0xc9
 [<ffffffff88160587>] :rtc_cmos:cmos_do_probe+0xa5/0x220
 [<ffffffff88160743>] :rtc_cmos:cmos_pnp_probe+0x41/0x43
 [<ffffffff80358805>] pnp_device_probe+0x7b/0xa2
 [<ffffffff803825e4>] driver_probe_device+0x100/0x18f
 [<ffffffff80382793>] __driver_attach+0x70/0xae
 [<ffffffff80382723>] __driver_attach+0x0/0xae
 [<ffffffff803818f8>] bus_for_each_dev+0x49/0x7a
 [<ffffffff803823f6>] driver_attach+0x1c/0x1e
 [<ffffffff80381cc5>] bus_add_driver+0x86/0x1d6
 [<ffffffff803829a5>] driver_register+0x72/0x76
 [<ffffffff803585a1>] pnp_register_driver+0x1c/0x1e
 [<ffffffff880e3010>] :rtc_cmos:cmos_init+0x10/0x12
 [<ffffffff80258398>] sys_init_module+0x16df/0x1864
 [<ffffffff8811d0a7>] :rtc_core:rtc_device_register+0x0/0x215
 [<ffffffff8020bfee>] system_call+0x7e/0x83

rtc_cmos 00:07: rtc core: registered rtc_cmos as rtc0
rtc_cmos: probe of 00:07 failed with error -16

   b) I have no idea what causes these to ...
From: Rafael J. Wysocki
Date: Thursday, September 27, 2007 - 8:59 am

This one is fixed by the following patch:

---
From: Rafael J. Wysocki <rjw@sisk.pl>

Fix CPU hotplug breakage on HP nx6325 and similar boxes caused by a reference
to disable_apic_timer (labeled as __initdata) from the CPU initialization code.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
 arch/x86_64/kernel/apic.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6.23-rc8-mm2/arch/x86_64/kernel/apic.c
===================================================================
--- linux-2.6.23-rc8-mm2.orig/arch/x86_64/kernel/apic.c
+++ linux-2.6.23-rc8-mm2/arch/x86_64/kernel/apic.c
@@ -42,7 +42,7 @@
 
 int apic_verbosity;
 static int apic_calibrate_pmtmr __initdata;
-int disable_apic_timer __initdata;
+int disable_apic_timer __cpuinitdata;
 
 /* Local APIC timer works in C2? */
 int local_apic_timer_c2_ok;
-

From: Thomas Gleixner
Date: Thursday, September 27, 2007 - 8:49 am

Doh, I knew I blew it.

Good catch, thanks,


-

From: Rafael J. Wysocki
Date: Friday, September 28, 2007 - 2:31 pm

Some good news from here. :-)

WIth the patch below applied 2.6.23-rc8-mm2 works fine on the nx6325 _with_ NO_HZ
and HIGH_RES_TIMERS set.  Suspend and hibernation work as well, happy me.

NO_HZ and HIGH_RES_TIMERS also work on this box with the hrt patch plus the
C1E-related fix on top of 2.6.23-rc8.

Does it make sense to test CPU_IDLE too at this point?

Greetings,

-- 
"Premature optimization is the root of all evil." - Donald Knuth
-

From: Sam Ravnborg
Date: Thursday, September 27, 2007 - 9:53 am

This is with your configuration a reference from a .text section
to a .init.data section as I see it.

So this ought to have been flagged by the section mismatch
checks in modpost.

I assume you did not see such warning??

	Sam
-

From: Randy Dunlap
Date: Thursday, September 27, 2007 - 10:33 am

I did:

WARNING: vmlinux.o(.text+0x7778): Section mismatch: reference to .init.data:disable_apic_timer (between 'identify_cpu' and 'IRQ0x20_interrupt')

---
~Randy
Phaedrus says that Quality is about caring.
-

From: Sam Ravnborg
Date: Thursday, September 27, 2007 - 12:19 pm

Thanks. I look forward to the day I can make them errors so people
cannot ignore them.
That said a lot of individuals has done a very good job getting
rid of section mismatch warnings all over the kernel.

	Sam
-

From: Rafael J. Wysocki
Date: Thursday, September 27, 2007 - 12:48 pm

Yes.

Greetings,
Rafael
-

From: Randy Dunlap
Date: Thursday, September 27, 2007 - 12:37 pm

I did only on one build machine (multiple times).  I tried
to reproduce it on another machine and could not.  I blame


---
~Randy
Phaedrus says that Quality is about caring.
-

From: Rafael J. Wysocki
Date: Thursday, September 27, 2007 - 1:01 pm

That's possible.  I use the default openSUSE 10.2 toolchain.

Greetings,
Rafael
-

From: Laurent Riffard
Date: Thursday, September 27, 2007 - 12:18 pm

Le 27.09.2007 11:22, Andrew Morton a 
From: Andrew Morton
Date: Thursday, September 27, 2007 - 12:48 pm

On Thu, 27 Sep 2007 21:18:55 +0200

-

From: Dave Hansen
Date: Thursday, September 27, 2007 - 1:05 pm

Got it.  I'll try to reproduce.  

-- Dave

-

From: Christoph Hellwig
Date: Thursday, September 27, 2007 - 1:26 pm

This sure looks like a result of the reiserfs xattr code beeing
really sucky and passing a NULL vfsmount to dentry_open.

Dave will probably find a bandaid to work around this, but the
right fix is to stop using a file struct here entirely.  If you
look at reiserfs_xattr_set it's not actually used at all except
for passing it to ->prepare_write and ->commit_write which then
don't use it at all.  All that crap should be rewritten to just
pass the dentry around.  Note that all this should not acquire
writer counts on the vfsmount - we have done this already
before calling into the xattr methods.
-

From: Dave Hansen
Date: Thursday, September 27, 2007 - 1:53 pm

I'm perplexed as to why a 'struct file' is needed, too.  The 'struct
file' doesn't get used for anything _but_ the dentry, and the functions
to which it is passed (reiserfs_prepate/commit_write()) don't use it.
In fact, some other callers just pass NULL.

This is a completely naive implementation, and I've only tested that it
compiles, but does anybody see a reason we can't just do this?

BTW, do reiserfs developers know that you can put function declarations
in header files?  ;)  4 different .c files have this:

int reiserfs_commit_write(struct page *page, unsigned from, unsigned to);
int reiserfs_prepare_write(struct page *page, unsigned from, unsigned to);

---

 lxc-dave/fs/reiserfs/inode.c |   15 ++++------
 lxc-dave/fs/reiserfs/ioctl.c |   10 ++-----
 lxc-dave/fs/reiserfs/xattr.c |   59 +++++++++++++------------------------------
 3 files changed, 28 insertions(+), 56 deletions(-)

diff -puN fs/open.c~fix-reiserfs-oops fs/open.c
diff -puN fs/file_table.c~fix-reiserfs-oops fs/file_table.c
diff -puN include/linux/mount.h~fix-reiserfs-oops include/linux/mount.h
diff -puN fs/reiserfs/xattr.c~fix-reiserfs-oops fs/reiserfs/xattr.c
--- lxc/fs/reiserfs/xattr.c~fix-reiserfs-oops	2007-09-27 13:36:38.000000000 -0700
+++ lxc-dave/fs/reiserfs/xattr.c	2007-09-27 13:49:02.000000000 -0700
@@ -194,27 +194,6 @@ static struct dentry *get_xa_file_dentry
 	return xafile;
 }
 
-/* Opens a file pointer to the attribute associated with inode */
-static struct file *open_xa_file(const struct inode *inode, const char *name,
-				 int flags)
-{
-	struct dentry *xafile;
-	struct file *fp;
-
-	xafile = get_xa_file_dentry(inode, name, flags);
-	if (IS_ERR(xafile))
-		return ERR_PTR(PTR_ERR(xafile));
-	else if (!xafile->d_inode) {
-		dput(xafile);
-		return ERR_PTR(-ENODATA);
-	}
-
-	fp = dentry_open(xafile, NULL, O_RDWR);
-	/* dentry_open dputs the dentry if it fails */
-
-	return fp;
-}
-
 /*
  * this is very similar to fs/reiserfs/dir.c:reiserfs_readdir, but
  * we need to ...
From: Christoph Hellwig
Date: Thursday, September 27, 2007 - 2:04 pm

I doubt this will work.  These are also used for the ->prepare_write
and ->commit_write aops, and the method signature definitively wants
a file there, even if it's zero..

-

From: Dave Hansen
Date: Thursday, September 27, 2007 - 2:27 pm

Oddly enough, I don't see those functions being used in aops:

const struct address_space_operations reiserfs_address_space_operations = {
        .writepage = reiserfs_writepage,
        .readpage = reiserfs_readpage,
        .readpages = reiserfs_readpages,
        .releasepage = reiserfs_releasepage,
        .invalidatepage = reiserfs_invalidatepage,
        .sync_page = block_sync_page,
        .write_begin = reiserfs_write_begin,
        .write_end = reiserfs_write_end,
        .bmap = reiserfs_aop_bmap,
        .direct_IO = reiserfs_direct_IO,
        .set_page_dirty = reiserfs_set_page_dirty,
};

Plus, reiserfs seems to compile with that patch I just sent.  Sure as
heck surprised me.

-- Dave

-

From: Andrew Morton
Date: Thursday, September 27, 2007 - 2:51 pm

On Thu, 27 Sep 2007 14:27:14 -0700

That'll be because reiserfs-convert-to-new-aops.patch witched reiserfs over
to ->write_begin() and ->write_end().

So your stuff becomes dependent on Nick's stuff, and Nick's stuff is still
failing on NFS, I think.


-

From: Andrew Morton
Date: Thursday, September 27, 2007 - 2:54 pm

On Thu, 27 Sep 2007 14:51:25 -0700

Actually, we should rename reiserfs_prepare_write and reiserfs_commit_write
to something else to reduce confusion.  Probably lots of other filesystems
would benefit from the same change, post-Nick's-stuff.
-

From: Peter Zijlstra
Date: Thursday, September 27, 2007 - 3:02 pm

It worked today, it turned out to be a UML bug. Real hardware seemed to
work properly, but will test a bit more tomorrow.

-

From: Christoph Hellwig
Date: Friday, September 28, 2007 - 12:16 am

I'd rather avoid the paramater removal for now, that makes it less
entangle, and it's an unrelated cleanup anyway.

Btw, there's more abuse of this sort in reiserfs.  Various other places
in xattr.c call dentry_open directly without the vfsmount aswell.  And
handling of an external journal uses filp_open which is similarly stupid,
it should use open_bdev_excl like xfs or the generic code to open the
main filesystem blockdevice.

-

From: Christoph Hellwig
Date: Friday, September 28, 2007 - 12:29 am

And here's a patch to stop the filp abuse in the journal code.  An additional
benefit is that the block device is now properly claimed when opened by
device number.


Index: linux-2.6/fs/reiserfs/journal.c
===================================================================
--- linux-2.6.orig/fs/reiserfs/journal.c	2007-09-28 09:18:50.000000000 +0200
+++ linux-2.6/fs/reiserfs/journal.c	2007-09-28 09:28:36.000000000 +0200
@@ -2544,11 +2544,9 @@ static int release_journal_dev(struct su
 
 	result = 0;
 
-	if (journal->j_dev_file != NULL) {
-		result = filp_close(journal->j_dev_file, NULL);
-		journal->j_dev_file = NULL;
-		journal->j_dev_bd = NULL;
-	} else if (journal->j_dev_bd != NULL) {
+	if (journal->j_dev_bd != NULL) {
+		if (journal->j_dev_bd->bd_dev != super->s_dev)
+			bd_release(journal->j_dev_bd);
 		result = blkdev_put(journal->j_dev_bd);
 		journal->j_dev_bd = NULL;
 	}
@@ -2573,7 +2571,6 @@ static int journal_init_dev(struct super
 	result = 0;
 
 	journal->j_dev_bd = NULL;
-	journal->j_dev_file = NULL;
 	jdev = SB_ONDISK_JOURNAL_DEVICE(super) ?
 	    new_decode_dev(SB_ONDISK_JOURNAL_DEVICE(super)) : super->s_dev;
 
@@ -2590,35 +2587,34 @@ static int journal_init_dev(struct super
 					 "cannot init journal device '%s': %i",
 					 __bdevname(jdev, b), result);
 			return result;
-		} else if (jdev != super->s_dev)
+		} else if (jdev != super->s_dev) {
+			result = bd_claim(journal->j_dev_bd, journal);
+			if (result) {
+				blkdev_put(journal->j_dev_bd);
+				return result;
+			}
+
 			set_blocksize(journal->j_dev_bd, super->s_blocksize);
+		}
+
 		return 0;
 	}
 
-	journal->j_dev_file = filp_open(jdev_name, 0, 0);
-	if (!IS_ERR(journal->j_dev_file)) {
-		struct inode *jdev_inode = journal->j_dev_file->f_mapping->host;
-		if (!S_ISBLK(jdev_inode->i_mode)) {
-			reiserfs_warning(super, "journal_init_dev: '%s' is "
-					 "not a block device", jdev_name);
-			result = -ENOTBLK;
-			release_journal_dev(super, journal);
-		} else {
-			/* ok ...
From: Fengguang Wu
Date: Thursday, September 27, 2007 - 7:40 pm

Laurent,

It triggered a WARNING on first run in qemu:

[    0.310000] WARNING: at arch/x86_64/kernel/smp.c:397 smp_call_function_mask()
[    0.310000]
[    0.310000] Call Trace:
[    0.310000]  [<ffffffff8100dbde>] dump_trace+0x3ee/0x4a0
[    0.310000]  [<ffffffff8100dcd3>] show_trace+0x43/0x70
[    0.310000]  [<ffffffff8100dd15>] dump_stack+0x15/0x20
[    0.310000]  [<ffffffff8101cd44>] smp_call_function_mask+0x94/0xa0
[    0.310000]  [<ffffffff8101cd69>] smp_call_function+0x19/0x20
[    0.310000]  [<ffffffff8104277f>] on_each_cpu+0x1f/0x50
[    0.310000]  [<ffffffff81026eac>] global_flush_tlb+0x8c/0x110
[    0.310000]  [<ffffffff81025c85>] free_init_pages+0xe5/0xf0
[    0.310000]  [<ffffffff81549b5e>] alternative_instructions+0x7e/0x150
[    0.310000]  [<ffffffff8154a2ea>] check_bugs+0x1a/0x20
[    0.310000]  [<ffffffff81540c4a>] start_kernel+0x2da/0x380
[    0.310000]  [<ffffffff81540132>] _sinittext+0x132/0x140


Here is the more complete log:

[    0.000000] Linux version 2.6.23-rc8-mm2 (wfg@intel) (gcc version 4.2.1 (Debian 4.2.1-5)) #3 SMP Fri Sep 28 10:29:34 CST 2007
[    0.000000] Command line: root=/dev/hda rw console=ttyS0 clock=pit init=/bin/bash
[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
[    0.000000]  BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e8000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 0000000039ff0000 (usable)
[    0.000000]  BIOS-e820: 0000000039ff0000 - 000000003a000000 (ACPI data)
[    0.000000]  BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
[    0.000000] end_pfn_map = 1048576
[    0.000000] DMI not present or invalid.
[    0.000000] ACPI: RSDP 000FAA30, 0014 (r0 BOCHS )
[    0.000000] ACPI: RSDT 39FF0000, 002C (r0 BOCHS  BXPCRSDT        1 BXPC        1)
[    0.000000] ACPI: FACP 39FF002C, 0074 (r0 BOCHS  BXPCFACP        1 BXPC        1)
[    0.000000] ACPI: DSDT 39FF0100, ...
From: Laurent Vivier
Date: Friday, September 28, 2007 - 1:52 am

the reason is the WARN_ON():

390 int smp_call_function_mask(cpumask_t mask,
391                            void (*func)(void *), void *info,
392                            int wait)
393 {
394         int ret;
395
396         /* Can deadlock when called with interrupts disabled */
397         WARN_ON(irqs_disabled());
398
399         spin_lock(&call_lock);
400         ret =3D __smp_call_function_mask(mask, func, info, wait);
401         spin_unlock(&call_lock);
402         return ret;
403 }

The patch I sent to Andi didn't include this WARN_ON() and it's why I did=
n't
find this issue. (see http://lkml.org/lkml/2007/8/24/101)

smp_call_function_mask() is called by smp_call_function() which calls a f=
unction
on all CPU except current.
The comment of smp_call_function() specifies:
=2E..
 * You must not call this function with disabled interrupts or from a
 * hardware interrupt handler or from a bottom half handler.
 * Actually there are a few legal cases, like panic.
 */

So this WARN_ON() is correct, and the caller (global_flush_tlb()) doesn't=
 follow
this rule.

I guess this WARN_ON() is only needed when we have current CPU in provide=
d mask.
So I think we should change:

int smp_call_function (void (*func) (void *info), void *info, int nonatom=
ic,
                        int wait)
{
        return smp_call_function_mask(cpu_online_map, func, info, wait);
}
("cpu_online_map" is a bad choice, comment also specifies: "run a functio=
n on
all other CPU")

to

int smp_call_function (void (*func) (void *info), void *info, int nonatom=
ic,
                        int wait)
{
        int ret;
	cpumask_t allbutself;

	allbutself =3D cpu_online_map;
	cpu_clear(smp_processor_id(), allbutself);

        spin_lock(&call_lock);
        ret =3D __smp_call_function_mask(allbutself, func, info, wait);
        spin_unlock(&call_lock);
        return ret;
}
(which is smp_call_function_mask() without the WARN_ON() and without curr=
ent cpu
in the ...
From: Andrew Morton
Date: Friday, September 28, 2007 - 2:09 am

umm, I think all the smp_call_function fucntions are deadlocky if called
with local interrupts disabled, regardless of whether the calling CPU is in
the mask.

If CPU A is sending a cross-cpu call to CPU B and CPU B is sending a
cross-cpu call to CPU A, and they both have local interrupts disabled...

-

From: Laurent Vivier
Date: Friday, September 28, 2007 - 2:18 am

=2E

OK, so there are two errors:

1- one I introduce myself (without any help from anyone) where
smp_call_function() calls all online CPUs instead of calling all CPUs exc=
ept itself.

2- one in global_flush_tlb() which calls smp_call_function() with irqs di=
sabled.

I think I should at least correct #1 ?

Laurent
--=20
------------- Laurent.Vivier@bull.net  --------------
          "Software is hard" - Donald Knuth

From: Andrew Morton
Date: Friday, September 28, 2007 - 2:34 am

I'd be pretty surprised if one was able to write a bug like that.  You mean
the CPU sends an IPI to itself and then loops around until it has serviced
that IPI?  And this works?  Wow.

And on_each_cpu() can call the handler function twice?


That would be a big bug, and surely we would already have picked it up.

<looks>

argh, mainline's x86_64 smp_call_function() doesn't do the check.  We've
had *heaps* of bugs in i386 where people were running smp_call_foo() under

I think we should correct all bugs ;)
-

From: Laurent Vivier
Date: Friday, September 28, 2007 - 5:07 am

This is a multi-part message in MIME format.
--------------080006050504030805060306
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable


In fact, it works because __smp_call_function_mask() makes :

 cpus_and(mask, mask, allbutself);

So it removes current cpu from the mask. BTW, I don't have to modify
smp_call_function(): it is correct as it is written (except from a semant=
ic

We don't live in a perfect world... ;-)

Moreover, I'm not able to reproduce #2 ...

Fengguang could you send me your .config and your qemu command line param=
eters ?

Laurent

PS: if semantic is important, you can apply attached patch...
--=20
------------- Laurent.Vivier@bull.net  --------------
          "Software is hard" - Donald Knuth

--------------080006050504030805060306
Content-Type: application/mbox;
 name="0001-smp_call_function-call-function-on-all-CPUs.patch"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 ...
From: Fengguang Wu
Date: Friday, September 28, 2007 - 11:59 pm

OK. I applied your patch and reran it.
Here are the qemu cmdline, warning messages and .config:

qemu-system-x86_64 -m 928 -hda /dev/sdb5 -kernel ./arch/x86_64/boot/bzImage -nographic -append "root=/dev/hda rw console=ttyS0 clock=pit init=/bin/bash"


[    0.310000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
[    0.310000] CPU: L2 Cache: 512K (64 bytes/line)
[    0.310000] CPU 0/0 -> Node 0
[    0.310000] SMP alternatives: switching to UP code
[    0.310000] Freeing SMP alternatives: 25k freed
[    0.310000] WARNING: at arch/x86_64/kernel/smp.c:397 smp_call_function_mask()
[    0.310000]
[    0.310000] Call Trace:
[    0.310000]  [<ffffffff8100dbde>] dump_trace+0x3ee/0x4a0
[    0.310000]  [<ffffffff8100dcd3>] show_trace+0x43/0x70
[    0.310000]  [<ffffffff8100dd15>] dump_stack+0x15/0x20
[    0.310000]  [<ffffffff8101cd44>] smp_call_function_mask+0x94/0xa0
[    0.310000]  [<ffffffff8101d0b2>] smp_call_function+0x32/0x40
[    0.310000]  [<ffffffff8104277f>] on_each_cpu+0x1f/0x50
[    0.310000]  [<ffffffff81026eac>] global_flush_tlb+0x8c/0x110
[    0.310000]  [<ffffffff81025c85>] free_init_pages+0xe5/0xf0
[    0.310000]  [<ffffffff81549b5e>] alternative_instructions+0x7e/0x150
[    0.310000]  [<ffffffff8154a2ea>] check_bugs+0x1a/0x20
[    0.310000]  [<ffffffff81540c4a>] start_kernel+0x2da/0x380
[    0.310000]  [<ffffffff81540132>] _sinittext+0x132/0x140
[    0.310000]
[    0.320000] ACPI: Core revision 20070126
[    0.560000] Using local APIC timer interrupts.
[    0.590000] Detected 62.496 MHz APIC timer.
[    0.590000] Brought up 1 CPUs

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.23-rc8-mm2
# Fri Sep 28 10:26:40 ...
From: Fengguang Wu
Date: Saturday, September 29, 2007 - 1:15 am

Thank god it's a bug in alternative_instructions() instead of global_flush_tlb().

The following patch fixed it.

===
call free_init_pages() with irqs enabled in alternative_instructions()

It fixes the warning message in smp_call_function*(), which should be called
with irqs disabled.

[    0.310000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
[    0.310000] CPU: L2 Cache: 512K (64 bytes/line)
[    0.310000] CPU 0/0 -> Node 0
[    0.310000] SMP alternatives: switching to UP code
[    0.310000] Freeing SMP alternatives: 25k freed
[    0.310000] WARNING: at arch/x86_64/kernel/smp.c:397 smp_call_function_mask()
[    0.310000]
[    0.310000] Call Trace:
[    0.310000]  [<ffffffff8100dbde>] dump_trace+0x3ee/0x4a0
[    0.310000]  [<ffffffff8100dcd3>] show_trace+0x43/0x70
[    0.310000]  [<ffffffff8100dd15>] dump_stack+0x15/0x20
[    0.310000]  [<ffffffff8101cd44>] smp_call_function_mask+0x94/0xa0
[    0.310000]  [<ffffffff8101d0b2>] smp_call_function+0x32/0x40
[    0.310000]  [<ffffffff8104277f>] on_each_cpu+0x1f/0x50
[    0.310000]  [<ffffffff81026eac>] global_flush_tlb+0x8c/0x110
[    0.310000]  [<ffffffff81025c85>] free_init_pages+0xe5/0xf0
[    0.310000]  [<ffffffff81549b5e>] alternative_instructions+0x7e/0x150
[    0.310000]  [<ffffffff8154a2ea>] check_bugs+0x1a/0x20
[    0.310000]  [<ffffffff81540c4a>] start_kernel+0x2da/0x380
[    0.310000]  [<ffffffff81540132>] _sinittext+0x132/0x140
[    0.310000]
[    0.320000] ACPI: Core revision 20070126
[    0.560000] Using local APIC timer interrupts.
[    0.590000] Detected 62.496 MHz APIC timer.
[    0.590000] Brought up 1 CPUs

Cc: Laurent Vivier <Laurent.Vivier@bull.net>
Cc: Andi Kleen <ak@suse.de> 
Signed-off-by: Fengguang Wu <wfg@mail.ustc.edu.cn>
---
 arch/i386/kernel/alternative.c |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

--- linux-2.6.23-rc8-mm2.orig/arch/i386/kernel/alternative.c
+++ linux-2.6.23-rc8-mm2/arch/i386/kernel/alternative.c
@@ -435,9 +435,6 @@ void __init ...
From: Cedric Le Goater
Date: Friday, September 28, 2007 - 8:42 am

Hello ! 


I just found that warning in my logs. It seems that it's been 
happening since rc7-mm1 at least. 

Thanks !

C.

WARNING: at /home/legoater/linux/2.6.23-rc8-mm2/net/ipv4/tcp_input.c:2314 tcp_fastretrans_alert()

Call Trace:
 <IRQ>  [<ffffffff8040fdc3>] tcp_ack+0xcd6/0x1894
 [<ffffffff80411c79>] tcp_data_queue+0x5be/0xae7
 [<ffffffff80412b54>] tcp_rcv_established+0x61f/0x6df
 [<ffffffff80254146>] __lock_acquire+0x8a1/0xf1b
 [<ffffffff80419cfd>] tcp_v4_do_rcv+0x3e/0x394
 [<ffffffff8041a66f>] tcp_v4_rcv+0x61c/0x9a9
 [<ffffffff803ff1e3>] ip_local_deliver+0x1da/0x2a4
 [<ffffffff803ffb4e>] ip_rcv+0x583/0x5c9
 [<ffffffff8046d33f>] packet_rcv_spkt+0x19a/0x1a8
 [<ffffffff803e081c>] netif_receive_skb+0x2cf/0x2f5
 [<ffffffff88042505>] :tg3:tg3_poll+0x65d/0x8a4
 [<ffffffff803e09e8>] net_rx_action+0xb8/0x191
 [<ffffffff8023a927>] __do_softirq+0x5f/0xe0
 [<ffffffff8020c98c>] call_softirq+0x1c/0x28
 [<ffffffff8020e9c3>] do_softirq+0x3b/0xb8
 [<ffffffff8023aa1e>] irq_exit+0x4e/0x50
 [<ffffffff8020e7df>] do_IRQ+0xbd/0xd7
 [<ffffffff80209cb9>] mwait_idle+0x0/0x4d
 [<ffffffff8020bce6>] ret_from_intr+0x0/0xf
 <EOI>  [<ffffffff80209cfc>] mwait_idle+0x43/0x4d
 [<ffffffff802099fb>] enter_idle+0x22/0x24
 [<ffffffff80209c4f>] cpu_idle+0x9d/0xc0
 [<ffffffff80476a91>] rest_init+0x55/0x57
 [<ffffffff80630815>] start_kernel+0x2d6/0x2e2
 [<ffffffff80630134>] _sinittext+0x134/0x13b
-

From: Ilpo Järvinen
Date: Friday, September 28, 2007 - 12:10 pm

...Thanks for the report, I'll have look what could still break 
fackets_out...

-- 
 i.
-

From: Ilpo Järvinen
Date: Saturday, September 29, 2007 - 5:44 am

On Fri, 28 Sep 2007, Ilpo J
From: Cedric Le Goater
Date: Saturday, September 29, 2007 - 7:55 am

I'm trying now to reproduce this WARNING. 

It seems that the n/w behaves differently during the week ends. Probably
taking a break. 

C.
-

From: Ilpo Järvinen
Date: Saturday, September 29, 2007 - 1:49 pm

On Sat, 29 Sep 2007, Cedric Le Goater wrote:

> Ilpo J
From: Cedric Le Goater
Date: Monday, October 1, 2007 - 2:26 am

got it !

r3-06.test.meiosys.com login: WARNING: at /home/legoater/linux/2.6.23-rc8-mm2/net/ipv4/tcp_input.c:2314 tcp_fastretrans_alert()

Call Trace:
 <IRQ>  [<ffffffff8040fdc3>] tcp_ack+0xcd6/0x18af
 [<ffffffff80412b6f>] tcp_rcv_established+0x61f/0x6df
 [<ffffffff80254146>] __lock_acquire+0x8a1/0xf1b
 [<ffffffff80419d19>] tcp_v4_do_rcv+0x3e/0x394
 [<ffffffff8041a68b>] tcp_v4_rcv+0x61c/0x9a9
 [<ffffffff803ff1e3>] ip_local_deliver+0x1da/0x2a4
 [<ffffffff803ffb4e>] ip_rcv+0x583/0x5c9
 [<ffffffff8046d35b>] packet_rcv_spkt+0x19a/0x1a8
 [<ffffffff803e081c>] netif_receive_skb+0x2cf/0x2f5
 [<ffffffff88042505>] :tg3:tg3_poll+0x65d/0x8a4
 [<ffffffff803e09e8>] net_rx_action+0xb8/0x191
 [<ffffffff8023a927>] __do_softirq+0x5f/0xe0
 [<ffffffff8020c98c>] call_softirq+0x1c/0x28
 [<ffffffff8020e9c3>] do_softirq+0x3b/0xb8
 [<ffffffff8023aa1e>] irq_exit+0x4e/0x50
 [<ffffffff8020e7df>] do_IRQ+0xbd/0xd7
 [<ffffffff80209cb9>] mwait_idle+0x0/0x4d
 [<ffffffff8020bce6>] ret_from_intr+0x0/0xf
 <EOI>  [<ffffffff80209cfc>] mwait_idle+0x43/0x4d
 [<ffffffff802099fb>] enter_idle+0x22/0x24
 [<ffffffff80209c4f>] cpu_idle+0x9d/0xc0
 [<ffffffff80476aa1>] rest_init+0x55/0x57
 [<ffffffff80630815>] start_kernel+0x2d6/0x2e2
 [<ffffffff80630134>] _sinittext+0x134/0x13b

TCP 0


I wasn't doing any particular test on n/w so it took me a while to figure 
out how I was triggering the WARNING. Apparently, this is happening when I 
run ketchup, but not always. This test machine is behind many firewall & 
routers so it might be a reason.

tcpdump gave me this output for a wget on kernel.org :

10:51:14.835981 IP r3-06.test.meiosys.com.40322 > pub2.kernel.org.http: S 737836267:737836267(0) win 5840 <mss 1460,sackOK,timestamp 1309245 0,nop,wscale 7>
10:51:14.975153 IP pub2.kernel.org.http > r3-06.test.meiosys.com.40321: F 524:524(0) ack 166 win 5840
10:51:14.975177 IP r3-06.test.meiosys.com.40321 > pub2.kernel.org.http: . ack 525 win 7504

I'm trying to get the WARNING and the tcpdump output for it but for ...
From: Ilpo Järvinen
Date: Tuesday, October 2, 2007 - 3:26 am

I'm currently out of ideas where it could come from... so lets try 
brute-force checking as your test case is not very high-speed... This 
could hide it though... :-(

Please put the patch below on top of clean rc8-mm2 (it includes the patch
I gave you last time) and try to reproduce.... These counter bugs can
survive for sometime until !sacked_out condition occurs, so the patch
below tries to find that out when inconsisteny occurs for the first time 
regardless of sacked_out (I also removed some statics which hopefully 
reduces compiler inlining for easier reading of the output). I tried this 
myself (except for verify()s in frto funcs and minor printout 
modifications), didn't trigger for me.

-- 
 i.

---
 include/net/tcp.h     |    3 +
 net/ipv4/tcp_input.c  |   23 +++++++++--
 net/ipv4/tcp_ipv4.c   |  102 +++++++++++++++++++++++++++++++++++++++++++++++++
 net/ipv4/tcp_output.c |    6 ++-
 4 files changed, 128 insertions(+), 6 deletions(-)

diff --git a/include/net/tcp.h b/include/net/tcp.h
index 991ccdc..54a0d91 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -43,6 +43,9 @@
 
 #include <linux/seq_file.h>
 
+extern void tcp_verify_fackets(struct sock *sk);
+extern void tcp_print_queue(struct sock *sk);
+
 extern struct inet_hashinfo tcp_hashinfo;
 
 extern atomic_t tcp_orphan_count;
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index e22ffe7..1d7367d 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -1140,7 +1140,7 @@ static int tcp_check_dsack(struct tcp_sock *tp, struct sk_buff *ack_skb,
 	return dup_sack;
 }
 
-static int
+int
 tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_una)
 {
 	const struct inet_connection_sock *icsk = inet_csk(sk);
@@ -1160,6 +1160,8 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_
 	int first_sack_index;
 
 	if (!tp->sacked_out) {
+		if (WARN_ON(tp->fackets_out))
+			tcp_print_queue(sk);
 		tp->fackets_out = 0;
 ...
From: Ilpo Järvinen
Date: Tuesday, October 2, 2007 - 1:06 pm

On Tue, 2 Oct 2007, Ilpo J
From: Ilpo Järvinen
Date: Tuesday, October 2, 2007 - 2:48 pm

> On Tue, 2 Oct 2007, Ilpo J
From: Jiri Slaby
Date: Friday, September 28, 2007 - 9:30 am

# find /proc >/dev/null
find: WARNING: Hard link count is wrong for /proc/net: this may be a bug in your
filesystem driver.  Automatically turning on find's -noleaf option.  Earlier
results may have failed to include directories that should have been searched.
# stat net
  File: `net'
  Size: 0               Blocks: 0          IO Block: 1024   directory
Device: 3h/3d   Inode: 4026531864  Links: 2
Access: (0555/dr-xr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2007-09-28 18:21:24.651209759 +0200
Modify: 2007-09-28 18:21:24.651209759 +0200
Change: 2007-09-28 18:21:24.651209759 +0200
# stat net/
  File: `net/'
  Size: 0               Blocks: 0          IO Block: 1024   directory
Device: 3h/3d   Inode: 4026531909  Links: 4
Access: (0555/dr-xr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2007-09-28 18:26:48.813048220 +0200
Modify: 2007-09-28 18:26:48.813048220 +0200
Change: 2007-09-28 18:26:48.813048220 +0200

hmm, this is some kind of weirdness :)

regards,
-- 
Jiri Slaby (jirislaby@gmail.com)
Faculty of Informatics, Masaryk University

-- 
Jiri Slaby (jirislaby@gmail.com)
Faculty of Informatics, Masaryk University
-

From: Eric W. Biederman
Date: Friday, September 28, 2007 - 10:03 am

Yes.

I can explain it. For the network namespace stuff we need special handling
of /proc/net so that depending on the network namespace we are resolving
against you see a different behavior.  So you actually are observing
two different directories, one being a magic invisible symlink to the
other.

Currently I am resolving against current (which has a number of
limitations) and the weird ugly effect you are current seeing.

So it looks like I need to either make /proc/net a symlink to
/proc/self/net or make the network namespace something that we capture
at mount time of /proc.

This was my don't get hung up on this implementation detail version.
Thanks for pointing out it has user visible problems.  I will see
what I can do to resolve this.

Eric
-

From: Dave Young
Date: Saturday, September 29, 2007 - 2:37 am

Hi,
The kernel report warnings about sysfs filename duplicate under
rc8-mm1 and rc8-mm2.
 1.
----cut----
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: PCI BIOS revision 2.10 entry at 0xfb93e, last bus=3
PCI: Using configuration type 1
Setting up standard PCI resources
sysfs: duplicate filename 'usbcore' can not be created
WARNING: at fs/sysfs/dir.c:433 sysfs_add_one()
 [<c010528f>] dump_trace+0x1bf/0x1d0
 [<c0105358>] show_trace_log_lvl+0x18/0x30
 [<c010537f>] show_trace+0xf/0x20
 [<c01054a2>] dump_stack+0x12/0x20
 [<c01c6680>] sysfs_add_one+0xa0/0xe0
 [<c01c69e8>] create_dir+0x48/0xb0
 [<c01c6a99>] sysfs_create_dir+0x29/0x50
 [<c02501eb>] create_dir+0x1b/0x50
 [<c02504b6>] kobject_add+0x46/0x150
 [<c05a38a0>] kernel_param_sysfs_setup+0x50/0xb0
 [<c05a39ee>] param_sysfs_builtin+0xee/0x130
 [<c05a3a54>] param_sysfs_init+0x24/0x60
 [<c0592866>] do_initcalls+0x46/0x1e0
 [<c0592aa2>] kernel_init+0x62/0xb0
 [<c0104fb3>] kernel_thread_helper+0x7/0x14
 =======================
kobject_add failed for usbcore with -EEXIST, don't try to register
things with the same name in the same directory.
 [<c010528f>] dump_trace+0x1bf/0x1d0
 [<c0105358>] show_trace_log_lvl+0x18/0x30
 [<c010537f>] show_trace+0xf/0x20
 [<c01054a2>] dump_stack+0x12/0x20
 [<c0250566>] kobject_add+0xf6/0x150
 [<c05a38a0>] kernel_param_sysfs_setup+0x50/0xb0
 [<c05a39ee>] param_sysfs_builtin+0xee/0x130
 [<c05a3a54>] param_sysfs_init+0x24/0x60
 [<c0592866>] do_initcalls+0x46/0x1e0
 [<c0592aa2>] kernel_init+0x62/0xb0
 [<c0104fb3>] kernel_thread_helper+0x7/0x14
 =======================
Module 'usbcore' failed to be added to sysfs, error number -17
The system will be unstable now.
ACPI: EC: Look up EC in DSDT



2.
----cut----
ACPI: PCI Interrupt 0000:00:1d.7[A] -> GSI 21 (level, low) -> IRQ 18
PCI: Setting latency timer of device 0000:00:1d.7 to 64
ehci_hcd 0000:00:1d.7: EHCI Host Controller
ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1
ehci_hcd ...
From: Greg KH
Date: Saturday, September 29, 2007 - 8:19 am

That is very wierd, do you have both USB built in and as a module

I think I need to clean up the double stack trace here, that's reall not
needed :)

thanks,

greg k-h
-

From: Dave Young
Date: Saturday, September 29, 2007 - 6:29 pm

I dont think so, below is my .config file: (It works under rc8 tree)

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.23-rc8-mm2
# Sat Sep 29 16:55:51 2007
#
CONFIG_X86_32=y
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_SEMAPHORE_SLEEPERS=y
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_QUICKLIST=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
CONFIG_BSD_PROCESS_ACCT=y
# CONFIG_BSD_PROCESS_ACCT_V3 is not set
# CONFIG_TASKSTATS is not set
# CONFIG_USER_NS is not set
# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=16
# CONFIG_CGROUPS is not set
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_FAIR_USER_SCHED=y
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_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_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_PROC_KPAGEMAP=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not ...
From: thunder7
Date: Saturday, September 29, 2007 - 10:18 pm

From: Greg KH <greg@kroah.com>

I get some identical warnings from iftab in userspace:

eth1 renamed to switch
sysfs: duplicate filename 'switch' can not be created
WARNING: at fs/sysfs/dir.c:433 sysfs_add_one()

Call Trace:
 [<ffffffff802cb99c>] sysfs_add_one+0xac/0xe0
 [<ffffffff802cc8fc>] sysfs_create_link+0xac/0x140
 [<ffffffff803fa632>] device_rename+0x1c2/0x220
 [<ffffffff80500ccc>] dev_change_name+0xbc/0x250
 [<ffffffff80501198>] dev_ifsioc+0x338/0x3a0
 [<ffffffff8050156d>] dev_ioctl+0x36d/0x3c0
 [<ffffffff80271965>] handle_mm_fault+0x1a5/0x6f0
 [<ffffffff804f215d>] sock_ioctl+0x7d/0x250
 [<ffffffff80293cb1>] do_ioctl+0x31/0x90
 [<ffffffff80293f2b>] vfs_ioctl+0x21b/0x2d0
 [<ffffffff8029402a>] sys_ioctl+0x4a/0x80
 [<ffffffff8020bc8e>] system_call+0x7e/0x83

net switch: device_rename: sysfs_create_symlink failed (-17)
eth2 renamed to adsl
sysfs: duplicate filename 'adsl' can not be created
WARNING: at fs/sysfs/dir.c:433 sysfs_add_one()

Call Trace:
 [<ffffffff802cb99c>] sysfs_add_one+0xac/0xe0
 [<ffffffff802cc8fc>] sysfs_create_link+0xac/0x140
 [<ffffffff803fa632>] device_rename+0x1c2/0x220
 [<ffffffff80500ccc>] dev_change_name+0xbc/0x250
 [<ffffffff80501198>] dev_ifsioc+0x338/0x3a0
 [<ffffffff8050156d>] dev_ioctl+0x36d/0x3c0
 [<ffffffff80271965>] handle_mm_fault+0x1a5/0x6f0
 [<ffffffff804f215d>] sock_ioctl+0x7d/0x250
 [<ffffffff80293cb1>] do_ioctl+0x31/0x90
 [<ffffffff80293f2b>] vfs_ioctl+0x21b/0x2d0
 [<ffffffff8029402a>] sys_ioctl+0x4a/0x80
 [<ffffffff8020bc8e>] system_call+0x7e/0x83

net adsl: device_rename: sysfs_create_symlink failed (-17)
switch: no link during initialization.
ip_tables: (C) 2000-2006 Netfilter Core Team

this happens when iftab renames my network interfaces. Booting
2.6.21-rc1-mm2 said:

eth1 renamed to switch
eth2 renamed to adsl
ip_tables: (C) 2000-2006 Netfilter Core Team

2.6.23-rc4-mm1 said:

eth1 renamed to switch
net switch: device_rename: sysfs_create_symlink failed (-17)
eth2 renamed to adsl
net adsl: device_rename: ...
From: Dave Young
Date: Sunday, October 7, 2007 - 11:43 pm

Hi,
I debugged the problem, found that it is a bug of kernel/params.c, I
will send a patch later to fix it.

Regards
dave
-

From: Valdis.Kletnieks
Date: Saturday, September 29, 2007 - 7:26 pm

Locks up hard at very early boot on my Dell Latitude - grub says loading
kernel, the screen clears, and we lock up before we get penguins.

-rc8-mm1 was OK. I'm off to go bisect, figured I'd drop a heads-up.
From: Andrew Morton
Date: Sunday, September 30, 2007 - 1:50 am

It doesn't ring a bell, sorry.  hpet-force-enable-on-ich34.patch is known
to be bad, but it causes failure later in the boot than that.
-

From: Rafael J. Wysocki
Date: Sunday, September 30, 2007 - 1:01 pm

From: Valdis.Kletnieks
Date: Monday, October 1, 2007 - 10:12 am

Yep, that was it - I applied that one patch on top of -rc8-mm2 and it
came up without complaint.  That was certainly one that would make the CPU head
off into the weeds very early in boot.

I need to figure how how I managed to botch the git bisect - it flagged the
very last commit, when the problem was commit N-1.


From: Valdis.Kletnieks
Date: Monday, October 1, 2007 - 9:12 am

OK, now I'm confoozled.  I built -rc8-mm2, and it bricked.  Usually my first
test is then using quilt to push just origin.patch, so I know if I'm needing
to bisect Linus git or Andrew -mm.

Starting with a clean 23-rc8, and using 'quilt push origin.patch' to just add
the Linus changes *also* gets me a brick.  So I did a git bisect between 23-rc8 and
the first commit listed in origin.patch, and got down to this:

f7f847b01571e86044dc77e03d92f43699652f8d is first bad commit
commit f7f847b01571e86044dc77e03d92f43699652f8d
Author: Linus Torvalds <torvalds@woody.linux-foundation.org>
Date:   Wed Sep 26 15:21:33 2007 -0700

(Here's the 'git bisect log':
git-bisect start
# good: [4942de4a0e914f205d351a81873f4f63986bcc3c] Linux 2.6.23-rc8
git-bisect good 4942de4a0e914f205d351a81873f4f63986bcc3c
# bad: [f7f847b01571e86044dc77e03d92f43699652f8d] Revert "x86-64: Disable local APIC timer use on AMD systems with C1E"
git-bisect bad f7f847b01571e86044dc77e03d92f43699652f8d
# good: [4d3fac08718b49fc256bdb447a479d089ca97b78] Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
git-bisect good 4d3fac08718b49fc256bdb447a479d089ca97b78
# good: [d85f57938ad1d674dff8077a2e6a36a45dbe0e22] Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
git-bisect good d85f57938ad1d674dff8077a2e6a36a45dbe0e22
# good: [d8c4a2f9d9e7827362fd7ab0b5d9637c6af5ac5b] mv643xx_eth: duplicate methods in initializer
git-bisect good d8c4a2f9d9e7827362fd7ab0b5d9637c6af5ac5b
# good: [255129d1e9ca0ed3d69d5517fae3e03d7ab4b806] NLM: Fix a circular lock dependency in lockd
git-bisect good 255129d1e9ca0ed3d69d5517fae3e03d7ab4b806
# good: [e66485d747505e9d960b864fc6c37f8b2afafaf0] x86-64: Disable local APIC timer use on AMD systems with C1E
git-bisect good e66485d747505e9d960b864fc6c37f8b2afafaf0
# good: [df912ea4ae7233d1504fbd861ee127bd7ee5781d] xen: execve's error paths don't pin the mm before unpinning
git-bisect good ...
From: Kamalesh Babulal
Date: Saturday, September 29, 2007 - 9:10 pm

Hi Andrew,

The compilation with the cross compiler for the PowerPC-405 on the powerbox
fails at linking

  LD      init/built-in.o
  LD      .tmp_vmlinux1
ld: arch/powerpc/kernel/head_64.o(.text+0x80c8): sibling call optimization to `.text.init.refok' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `.text.init.refok' extern
ld: arch/powerpc/kernel/head_64.o(.text+0x8160): sibling call optimization to `.text.init.refok' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `.text.init.refok' extern
ld: arch/powerpc/kernel/head_64.o(.text+0x81c4): sibling call optimization to `.text.init.refok' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `.text.init.refok' extern
ld: final link failed: Bad value
make: *** [.tmp_vmlinux1] Error 1

-- 
Thanks & Regards,
Kamalesh Babulal,
Linux Technology Center,
IBM, ISTL.
-

From: Kamalesh Babulal
Date: Sunday, September 30, 2007 - 2:37 am

Adding CC to the powerpc mailing list

-- 
Thanks & Regards,
Kamalesh Babulal,
Linux Technology Center,
IBM, ISTL.
-

From: Matt Mackall
Date: Tuesday, October 9, 2007 - 10:49 am

Here's a nearly-useless bug report for ya:

The -mm kernels between rc4-mm1 and rc8-mm1 have been locking up for
me in X when run for about a day or so. The crash does not appear
correlated with any particular action on my part - it seems just as
likely to happen if I'm typing in a local editor or over an ssh
session or using my web browser. The capslock light blinks, so it's
probably generating a trace and it still responds to sysrq but no logs
make it to disk. As my laptop generally doesn't stay put for a whole
day, I haven't managed to capture any of these traces.

System is a Thinkpad R51, here's the config.

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.23-rc8-mm2
# Mon Oct  8 21:58:21 2007
#
CONFIG_X86_32=y
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_ZONE_DMA=y
CONFIG_QUICKLIST=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_USER_NS is not set
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
CONFIG_AUDIT_TREE=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=17
# CONFIG_CGROUPS is not set
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_FAIR_USER_SCHED=y
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
# CONFIG_BLK_DEV_INITRD is not ...
Previous thread: [PATCH] pci: use pci=bfsort for HP DL385 G2, DL585 G2 by Michal Schmidt on Thursday, September 27, 2007 - 2:18 am. (2 messages)

Next thread: Updating include/asm symlink when $ARCH changes by Martin Michlmayr on Thursday, September 27, 2007 - 2:25 am. (3 messages)