Re: divide error: bdi_dirty_limit+0x5a/0x9e

From: Fengguang Wu
Date: Mon Sep 24 2012 - 07:34:46 EST


On Mon, Sep 24, 2012 at 04:43:11PM +0530, Srivatsa S. Bhat wrote:
> On 09/24/2012 04:35 PM, Borislav Petkov wrote:
> > On Mon, Sep 24, 2012 at 04:08:33PM +0530, Srivatsa S. Bhat wrote:
> >> On 09/24/2012 03:53 PM, Borislav Petkov wrote:
> >>> Hi all,
> >>>
> >>> we're able to trigger the oops below when doing CPU hotplug tests.
> >>>
> >>
> >> I hit this problem as well, which I reported here, a few days ago:
> >> https://lkml.org/lkml/2012/9/13/222
> >
> > Ok, your case shows even more info:
> >
> > [ 526.024180] divide error: 0000 [#1] SMP
> > [ 526.028144] Modules linked in: ipv6 cpufreq_conservative cpufreq_userspace cpufreq_powersave acpi_cpufreq mperf fuse loop dm_mod iTCO_wdt iTCO_vendor_support coretemp kvm_intel kvm cdc_ether pcspkr usbnet shpchp pci_hotplug i2c_i801 i2c_core ioatdma mii crc32c_intel serio_raw microcode lpc_ich mfd_core i7core_edac bnx2 dca edac_core tpm_tis tpm sg tpm_bios rtc_cmos button uhci_hcd ehci_hcd usbcore usb_common sd_mod crc_t10dif edd ext3 mbcache jbd fan processor mptsas mptscsih mptbase scsi_transport_sas scsi_mod thermal thermal_sys hwmon
> > [ 526.028145] CPU 9
> > [ 526.028145] Pid: 2235, comm: flush-8:0 Not tainted 3.6.0-rc1-tglx-hotplug-0.0.0.28.36b5ec9-default #1 IBM IBM System x -[7870C4Q]-/68Y8033
> > [ 526.028145] RIP: 0010:[<ffffffff811276f6>] [<ffffffff811276f6>] bdi_dirty_limit+0x66/0xc0
> > [ 526.028145] RSP: 0018:ffff8811530bfcc0 EFLAGS: 00010206
> > [ 526.028145] RAX: 0000000000b9877e RBX: 00000000001a8112 RCX: 28f5c28f5c28f5c3
> > [ 526.028145] RDX: 0000000000000000 RSI: 0000000000b9877e RDI: 0000000000000000
> >
> > %rax contains something != 0 but %rdi definitely is 0.
> >
>
> Yep.. So I tried putting a BUG_ON(!den) in fprop_fraction_percpu() to
> catch if we really got the code wrong somehow.. but unfortunately, with
> that added, I haven't been successful in reproducing the bug :(

Will you test such a line? At least the generic do_div() only uses the
lower 32bits for division.

WARN_ON(!(den & 0xffffffff));

Thanks,
Fengguang
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/