* 2.5.64-mm7
@ 2003-03-15 9:17 Andrew Morton
2003-03-15 10:13 ` 2.5.64-mm7 Russell King
2003-03-15 17:38 ` 2.5.64-mm7 - dies on smp with raid Helge Hafting
0 siblings, 2 replies; 5+ messages in thread
From: Andrew Morton @ 2003-03-15 9:17 UTC (permalink / raw)
To: linux-kernel, linux-mm
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.5/2.5.64/2.5.64-mm7/
kernel.org rsync seems broken, so it is also at
http://www.zip.com.au/~akpm/linux/patches/2.5/2.5.64/2.5.64-mm7/
. Niggling bugs in the anticipatory scheduler are causing problems. I've
reset the default to elevator=deadline until we get these fixed up.
. Added Alex's ext2 lock_super-removal patches
. The brlock removal patches are back
. Added /proc/sysrq-trigger. Writing a character to this has the same
effect as typing ALT-sysrq-that_character.
This is so that sysrq facilities are available remotely.
. Lots of new PCI handling code here from Russell King <rmk@arm.linux.org.uk>
Changes since 2.5.64-mm6:
-nfsd-disable-softirq.patch
-lockd-lockup-fix-2.patch
-reiserfs-fix-memleaks.patch
-nfsd-memleak-fix.patch
Merged
+as-eject-BUG-fix.patch
Fix an anticipatory scheduler BUG when cdroms are ejected
+deadline-default.patch
Default to deadline scheduler
+scheduler-starvation-fixes.patch
CPU scheduler tweaks
+timer-cleanup.patch
+timer-readdition-fix.patch
Fix timer livelock
+oprofile-timer-fix.patch
Oprofile fix
+htree-nfs-fix-2.patch
Another fix for ext3/htree on NFS servers
+ext2-balloc-fix.patch
Fix logic in the ext2 block allocator
+ext2-no-lock_super.patch
+ext2-no-lock-super-whitespace-fixes.patch
+ext2-no-lock_super-fix-1.patch
+ext2-no-lock_super-fix-2.patch
+ext2-no-lock_super-fix-3.patch
+ext2-no-lock_super-fix-4.patch
+ext2-no-lock_super-fix-5.patch
+ext2-no-lock_super-fix-6.patch
+ext2-no-lock_super-fix-7.patch
Removal of lock_super in the ext2 block allocator
+brlock-removal-1.patch
+brlock-removal-2.patch
+brlock-removal-3.patch
+brlock-removal-4.patch
+brlock-removal-5.patch
Second pass of the brlock removal patches
+pgd_index-comments.patch
Add some comments
+pci-6.patch
+pci-7.patch
+pci-8.patch
+pci-9.patch
+pci-10.patch
+pci-11.patch
+pci-12.patch
+pci-13.patch
+pci-14.patch
+pci-15.patch
Some of Russell King's PCI patches.
+proc-sysrq-trigger.patch
Create /proc/sysrq-trigger
+aio-bits-fix.patch
AIO fixes
+clean-inode-fix.patch
Forgot to initialise inode->i_rdev
All 116 patches:
linus.patch
Latest from Linus
mm.patch
add -mmN to EXTRAVERSION
kgdb.patch
noirqbalance-fix.patch
Fix noirqbalance
config_spinline.patch
uninline spinlocks for profiling accuracy.
ppc64-reloc_hide.patch
ppc64-pci-patch.patch
Subject: pci patch
ppc64-aio-32bit-emulation.patch
32/64bit emulation for aio
ppc64-64-bit-exec-fix.patch
Pass the load address into ELF_PLAT_INIT()
ppc64-scruffiness.patch
Fix some PPC64 compile warnings
ppc64-compat-flock.patch
compat_sys_fcntl{,64} 2/9 ppc64 part
ppc64-eeh-fix.patch
ppc64 build fix
ppc64-socketcall-fix.patch
sym-do-160.patch
make the SYM driver do 160 MB/sec
config-PAGE_OFFSET.patch
Configurable kenrel/user memory split
ptrace-flush.patch
cache flushing in the ptrace code
buffer-debug.patch
buffer.c debugging
warn-null-wakeup.patch
ext3-truncate-ordered-pages.patch
ext3: explicitly free truncated pages
reiserfs_file_write-5.patch
tcp-wakeups.patch
Use fast wakeups in TCP/IPV4
rcu-stats.patch
RCU statistics reporting
ext3-journalled-data-assertion-fix.patch
Remove incorrect assertion from ext3
nfs-speedup.patch
nfs-oom-fix.patch
nfs oom fix
sk-allocation.patch
Subject: Re: nfs oom
nfs-more-oom-fix.patch
rpciod-atomic-allocations.patch
Make rcpiod use atomic allocations
linux-isp.patch
isp-update-1.patch
remove-unused-congestion-stuff.patch
Subject: [PATCH] remove unused congestion stuff
as-iosched.patch
anticipatory I/O scheduler
as-debug-BUG-fix.patch
as-eject-BUG-fix.patch
AS: don't go BUG during cdrom eject
cfq-2.patch
CFQ scheduler, #2
deadline-default.patch
deafult to deadline IO scheduler
smalldevfs.patch
smalldevfs
remap-file-pages-2.5.63-a1.patch
Subject: [patch] remap-file-pages-2.5.63-A1
hugh-remap-fix.patch
hugh's file-offset-in-pte fix
fremap-limit-offsets.patch
fremap: limit remap_file_pages() file offsets
fremap-all-mappings.patch
Make all executable mappings be nonlinear
filemap_populate-speedup.patch
filemap_populate speedup
file-offset-in-pte-x86_64.patch
x86_64: support for file offsets in pte's
file-offset-in-pte-ppc64.patch
objrmap-2.5.62-5.patch
object-based rmap
objrmap-nonlinear-fixes.patch
objrmap fix for nonlinear
scheduler-tunables.patch
scheduler tunables
scheduler-starvation-fixes.patch
CPU scheduler starvation fixes
timer-cleanup.patch
timer code cleanup
timer-readdition-fix.patch
timer re-addition lockup fix
show_task-free-stack-fix.patch
show_task() fix and cleanup
yellowfin-set_bit-fix.patch
yellowfin driver set_bit fix
htree-nfs-fix.patch
Fix ext3 htree / NFS compatibility problems
update_atime-ng.patch
inode a/c/mtime modification speedup
one-sec-times.patch
Implement a/c/time speedup in ext2 & ext3
task_prio-fix.patch
simple task_prio() fix
register-tty_devclass.patch
Register tty_devclass before use
set_current_state-fs.patch
use set_current_state in fs
set_current_state-mm.patch
use set_current_state in mm
copy_thread-leak-fix.patch
Fix memory leak in copy_thread
slab_store_user-large-objects.patch
slab debug: perform redzoning against larger objects
file_list_lock-contention-fix.patch
file_list_lock contention fixes
tty_files-fixes.patch
file->f_list locking in tty_io.c
file_list_cleanup.patch
file_list cleanup
file_list-remove-free_list.patch
file_table: remove the private freelist
file-list-less-locking.patch
file_list: less locking
vt_ioctl-stack-use.patch
stack reduction in drivers/char/vt_ioctl.c
fix-mem-equals.patch
Fix mem= options
no-mmu-stubs.patch
a few missing stubs for !CONFIG_MMU
nommu-slab.patch
slab changes for !CONFIG_MMU
nfs-memleak-fix.patch
memleak in fs/nfs/inode.c::nfs_get_sb()
ufs-memleak-fix.patch
Memleak in fs/ufs/util.c
hugetlb-unmap_vmas-fix.patch
fix the fix for unmap_vmas & hugepages
early-writeback-init.patch
Early writeback initialisation
posix-timers-update.patch
posix timers update
e100-memleak-fix.patch
Memleak in e100 driver
pcmcia-1-kill-get_foo_map.patch
pcmcia: 1/6 kill get_*_map
pcmcia-2-remove-bus_foo-abstractions.patch
pcmcia: 2/6: Remove bus_* abstractions
pcmcia-3-add-SOCKET_CARDBUS_CONFIG.patch
pcmcia: 3/6: add SOCKET_CARDBUS_CONFIG flag
pcmcia-4-add-locking.patch
pcmcia: 4/6: Add some locking to rsrc_mgr.c
pcmcia-5-add-CONFIG_PCMCIA_PROBE.patch
pcmcia 5/6: Introduce CONFIG_PCMCIA_PROBE
pcmcia-6-remove-old-cardbus-clients.patch
pcmcia: 6/6: Remove support for old cardbus clients
oops-counters.patch
OOPS instance counters
io_apic-DO_ACTION-cleanup.patch
io-apic.c: DO_ACTION cleanup
ext2-ext3-noatime-fix.patch
Ext2/3 noatime and dirsync sometimes ignored
oprofile-timer-fix.patch
fix oprofile timer race
htree-nfs-fix-2.patch
htree nfs fix
ext2-balloc-fix.patch
ext2: block allocation fix
ext2-no-lock_super.patch
concurrent block allocation for ext2
ext2-no-lock-super-whitespace-fixes.patch
ext2-no-lock_super-fix-1.patch
ext2-no-lock_super-fix-2.patch
ext2-no-lock_super-fix-3.patch
ext2-no-lock_super-fix-4.patch
ext2-no-lock_super-fix-5.patch
ext2-no-lock_super-fix-6.patch
ext2-no-lock_super-fix-7.patch
brlock-removal-1.patch
Brlock removal 1/5 - core
brlock-removal-2.patch
brlock removal 2/5: remove brlock from snap and vlan
brlock-removal-3.patch
brlock removal 3/5: remove brlock from bridge
brlock-removal-4.patch
brlock removal 4/5: removal from ipv4/ipv6
brlock-removal-5.patch
brlock removal 5/5: remove brlock code
pgd_index-comments.patch
pgd_index/pmd_index/pte_index commentary
pci-6.patch
pci-7.patch
pci-8.patch
pci-9.patch
pci-10.patch
pci-11.patch
pci-12.patch
pci-13.patch
pci-14.patch
pci-15.patch
proc-sysrq-trigger.patch
/proc/sysrq-trigger: trigger sysrq functions via /proc
aio-bits-fix.patch
kiocbClear should use clear_bit instead of set_bit
clean-inode-fix.patch
initialise inode->i_rdev
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a>
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: 2.5.64-mm7 2003-03-15 9:17 2.5.64-mm7 Andrew Morton @ 2003-03-15 10:13 ` Russell King 2003-03-15 17:38 ` 2.5.64-mm7 - dies on smp with raid Helge Hafting 1 sibling, 0 replies; 5+ messages in thread From: Russell King @ 2003-03-15 10:13 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm > +pci-6.patch > +pci-7.patch > +pci-8.patch > +pci-9.patch > +pci-10.patch > +pci-11.patch > +pci-12.patch > +pci-13.patch > +pci-14.patch > +pci-15.patch > > Some of Russell King's PCI patches. Following comments from Ivan, the following patches changed: pci-9 only enable ROM resources if res->flags has PCI_ROM_ADDRESS_ENABLE set. pci-10 don't use PCI_BUS_NUM_RESOURCES here - PPC machines can (in theory) have more than 4 primary bus resources. pci-11 breaks Alpha Nautilus host bridge sizing - patch dropped from patch set. For those trying the above out, please apply the following patch on top of -mm7: diff -ur orig/drivers/pci/setup-res.c linux/drivers/pci/setup-res.c --- orig/drivers/pci/setup-res.c Sat Mar 15 09:54:19 2003 +++ linux/drivers/pci/setup-res.c Sat Mar 15 09:55:38 2003 @@ -55,8 +55,7 @@ if (resno < 6) { reg = PCI_BASE_ADDRESS_0 + 4 * resno; } else if (resno == PCI_ROM_RESOURCE) { - res->flags |= PCI_ROM_ADDRESS_ENABLE; - new |= PCI_ROM_ADDRESS_ENABLE; + new |= res->flags & PCI_ROM_ADDRESS_ENABLE; reg = dev->rom_base_reg; } else { /* Hmm, non-standard resource. */ diff -ur orig/drivers/pci/probe.c linux/drivers/pci/probe.c --- orig/drivers/pci/probe.c Sat Mar 15 09:59:15 2003 +++ linux/drivers/pci/probe.c Sat Mar 15 09:58:47 2003 @@ -256,7 +256,7 @@ child->subordinate = 0xff; /* Set up default resource pointers and names.. */ - for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) { + for (i = 0; i < 4; i++) { child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i]; child->resource[i]->name = child->name; } diff -ur orig/drivers/pci/setup-bus.c linux/drivers/pci/setup-bus.c --- orig/drivers/pci/setup-bus.c Sat Mar 15 10:01:05 2003 +++ linux/drivers/pci/setup-bus.c Sat Mar 15 09:58:44 2003 @@ -36,13 +36,6 @@ #define ROUND_UP(x, a) (((x) + (a) - 1) & ~((a) - 1)) -/* - * FIXME: IO should be max 256 bytes. However, since we may - * have a P2P bridge below a cardbus bridge, we need 4K. - */ -#define CARDBUS_IO_SIZE (4096) -#define CARDBUS_MEM_SIZE (32*1024*1024) - static int __devinit pbus_assign_resources_sorted(struct pci_bus *bus) { @@ -74,59 +67,6 @@ return found_vga; } -static void __devinit pci_setup_cardbus(struct pci_bus *bus) -{ - struct pci_dev *bridge = bus->self; - struct pci_bus_region region; - - printk("PCI: Bus %d, cardbus bridge: %s\n", - bus->number, bridge->slot_name); - - pcibios_resource_to_bus(bridge, ®ion, bus->resource[0]); - if (bus->resource[0]->flags & IORESOURCE_IO) { - /* - * The IO resource is allocated a range twice as large as it - * would normally need. This allows us to set both IO regs. - */ - printk(" IO window: %08lx-%08lx\n", - region.start, region.end); - pci_write_config_dword(bridge, PCI_CB_IO_BASE_0, - region.start); - pci_write_config_dword(bridge, PCI_CB_IO_LIMIT_0, - region.end); - } - - pcibios_resource_to_bus(bridge, ®ion, bus->resource[1]); - if (bus->resource[1]->flags & IORESOURCE_IO) { - printk(" IO window: %08lx-%08lx\n", - region.start, region.end); - pci_write_config_dword(bridge, PCI_CB_IO_BASE_1, - region.start); - pci_write_config_dword(bridge, PCI_CB_IO_LIMIT_1, - region.end); - } - - pcibios_resource_to_bus(bridge, ®ion, bus->resource[2]); - if (bus->resource[2]->flags & IORESOURCE_MEM) { - printk(" PREFETCH window: %08lx-%08lx\n", - region.start, region.end); - pci_write_config_dword(bridge, PCI_CB_MEMORY_BASE_0, - region.start); - pci_write_config_dword(bridge, PCI_CB_MEMORY_LIMIT_0, - region.end); - } - - pcibios_resource_to_bus(bridge, ®ion, bus->resource[3]); - if (bus->resource[3]->flags & IORESOURCE_MEM) { - printk(" MEM window: %08lx-%08lx\n", - region.start, region.end); - pci_write_config_dword(bridge, PCI_CB_MEMORY_BASE_1, - region.start); - pci_write_config_dword(bridge, PCI_CB_MEMORY_LIMIT_1, - region.end); - } -} - /* Initialize bridges with base/limit values we have collected. PCI-to-PCI Bridge Architecture Specification rev. 1.1 (1998) requires that if there is no I/O ports or memory behind the @@ -214,6 +154,9 @@ struct pci_dev *bridge = bus->self; struct resource *b_res; + if (!bridge || (bridge->class >> 8) != PCI_CLASS_BRIDGE_PCI) + return; + b_res = &bridge->resource[PCI_BRIDGE_RESOURCES]; b_res[1].flags |= IORESOURCE_MEM; @@ -245,10 +188,11 @@ since these windows have 4K granularity and the IO ranges of non-bridge PCI devices are limited to 256 bytes. We must be careful with the ISA aliasing though. */ -static void __devinit pbus_size_io(struct pci_bus *bus, int resno) +static void __devinit +pbus_size_io(struct pci_bus *bus) { struct pci_dev *dev; - struct resource *b_res = bus->resource[resno]; + struct resource *b_res = bus->resource[0]; unsigned long size = 0, size1 = 0; if (!(b_res->flags & IORESOURCE_IO)) @@ -271,6 +215,9 @@ else size1 += r_size; } + /* ??? Reserve some resources for CardBus. */ + if ((dev->class >> 8) == PCI_CLASS_BRIDGE_CARDBUS) + size1 += 4*1024; } /* To be fixed in 2.5: we should have sort of HAVE_ISA flag in the struct pci_bus. */ @@ -290,13 +237,14 @@ /* Calculate the size of the bus and minimal alignment which guarantees that all child resources fit in this size. */ static void __devinit -pbus_size_mem(struct pci_bus *bus, int resno, unsigned long mask, unsigned long type) +pbus_size_mem(struct pci_bus *bus, unsigned long mask, unsigned long type) { - struct resource *b_res = bus->resource[resno]; struct pci_dev *dev; unsigned long min_align, align, size; unsigned long aligns[12]; /* Alignments from 1Mb to 2Gb */ int order, max_order; + struct resource *b_res = (type & IORESOURCE_PREFETCH) ? + bus->resource[2] : bus->resource[1]; memset(aligns, 0, sizeof(aligns)); max_order = 0; @@ -332,6 +280,11 @@ if (order > max_order) max_order = order; } + /* ??? Reserve some resources for CardBus. */ + if ((dev->class >> 8) == PCI_CLASS_BRIDGE_CARDBUS) { + size += 1UL << 24; /* 16 Mb */ + aligns[24 - 20] += 1UL << 24; + } } align = 0; @@ -354,104 +307,37 @@ b_res->end = size + min_align - 1; } -static void __devinit pci_bus_size_cardbus(struct pci_bus *bus) -{ - struct pci_dev *bridge = bus->self; - struct resource *b_res = &bridge->resource[PCI_BRIDGE_RESOURCES]; - u16 ctrl; - - /* - * Reserve some resources for CardBus. We reserve - * a fixed amount of bus space for CardBus bridges. - */ - b_res[0].start = CARDBUS_IO_SIZE; - b_res[0].end = b_res[0].start + CARDBUS_IO_SIZE - 1; - b_res[0].flags |= IORESOURCE_IO; - - b_res[1].start = CARDBUS_IO_SIZE; - b_res[1].end = b_res[1].start + CARDBUS_IO_SIZE - 1; - b_res[1].flags |= IORESOURCE_IO; - - /* - * Check whether prefetchable memory is supported - * by this bridge. - */ - pci_read_config_word(bridge, PCI_CB_BRIDGE_CONTROL, &ctrl); - if (!(ctrl & PCI_CB_BRIDGE_CTL_PREFETCH_MEM0)) { - ctrl |= PCI_CB_BRIDGE_CTL_PREFETCH_MEM0; - pci_write_config_word(bridge, PCI_CB_BRIDGE_CONTROL, ctrl); - pci_read_config_word(bridge, PCI_CB_BRIDGE_CONTROL, &ctrl); - } - - /* - * If we have prefetchable memory support, allocate - * two regions. Otherwise, allocate one region of - * twice the size. - */ - if (ctrl & PCI_CB_BRIDGE_CTL_PREFETCH_MEM0) { - b_res[2].start = CARDBUS_MEM_SIZE; - b_res[2].end = b_res[2].start + CARDBUS_MEM_SIZE - 1; - b_res[2].flags |= IORESOURCE_MEM | IORESOURCE_PREFETCH; - - b_res[3].start = CARDBUS_MEM_SIZE; - b_res[3].end = b_res[3].start + CARDBUS_MEM_SIZE - 1; - b_res[3].flags |= IORESOURCE_MEM; - } else { - b_res[3].start = CARDBUS_MEM_SIZE * 2; - b_res[3].end = b_res[3].start + CARDBUS_MEM_SIZE * 2 - 1; - b_res[3].flags |= IORESOURCE_MEM; - } -} - void __devinit pci_bus_size_bridges(struct pci_bus *bus) { - struct pci_dev *dev; - unsigned long mask; + struct pci_bus *b; + unsigned long mask, type; - list_for_each_entry(dev, &bus->devices, bus_list) { - struct pci_bus *b = dev->subordinate; - if (!b) - continue; - - switch (dev->class >> 8) { - case PCI_CLASS_BRIDGE_PCI: - pci_bus_size_bridges(b); - break; - - case PCI_CLASS_BRIDGE_CARDBUS: - pci_bus_size_cardbus(b); - break; - } + list_for_each_entry(b, &bus->children, node) { + pci_bus_size_bridges(b); } /* The root bus? */ if (!bus->self) return; - switch (bus->self->class >> 8) { - case PCI_CLASS_BRIDGE_PCI: - pci_bridge_check_ranges(bus); - pbus_size_io(bus, 0); - mask = IORESOURCE_MEM; - /* If the bridge supports prefetchable range, size it separately. */ - if (bus->resource[2] && - bus->resource[2]->flags & IORESOURCE_PREFETCH) { - pbus_size_mem(bus, 2, IORESOURCE_PREFETCH | IORESOURCE_MEM, - IORESOURCE_PREFETCH | IORESOURCE_MEM); - mask |= IORESOURCE_PREFETCH; /* Size non-prefetch only. */ - } - pbus_size_mem(bus, 1, mask, IORESOURCE_MEM); - break; + pci_bridge_check_ranges(bus); + + pbus_size_io(bus); - case PCI_CLASS_BRIDGE_CARDBUS: - /* don't size cardbuses yet. */ - break; + mask = type = IORESOURCE_MEM; + /* If the bridge supports prefetchable range, size it separately. */ + if (bus->resource[2] && + bus->resource[2]->flags & IORESOURCE_PREFETCH) { + pbus_size_mem(bus, IORESOURCE_PREFETCH, IORESOURCE_PREFETCH); + mask |= IORESOURCE_PREFETCH; /* Size non-prefetch only. */ } + pbus_size_mem(bus, mask, type); } EXPORT_SYMBOL(pci_bus_size_bridges); -void __devinit pci_bus_assign_resources(struct pci_bus *bus) +void __devinit +pci_bus_assign_resources(struct pci_bus *bus) { struct pci_bus *b; int found_vga = pbus_assign_resources_sorted(bus); @@ -465,24 +351,9 @@ } list_for_each_entry(dev, &bus->devices, bus_list) { b = dev->subordinate; - if (!b) - continue; - - pci_bus_assign_resources(b); - - switch (dev->class >> 8) { - case PCI_CLASS_BRIDGE_PCI: + if (b) { + pci_bus_assign_resources(b); pci_setup_bridge(b); - break; - - case PCI_CLASS_BRIDGE_CARDBUS: - pci_setup_cardbus(b); - break; - - default: - printk(KERN_INFO "PCI: not setting up bridge %s " - "for bus %d\n", dev->slot_name, b->number); - break; } } } -- Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux http://www.arm.linux.org.uk/personal/aboutme.html -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: 2.5.64-mm7 - dies on smp with raid 2003-03-15 9:17 2.5.64-mm7 Andrew Morton 2003-03-15 10:13 ` 2.5.64-mm7 Russell King @ 2003-03-15 17:38 ` Helge Hafting 2003-03-15 20:03 ` Andrew Morton 1 sibling, 1 reply; 5+ messages in thread From: Helge Hafting @ 2003-03-15 17:38 UTC (permalink / raw) To: Andrew Morton; +Cc: linux-kernel, linux-mm mm7 crashed where mm2 works. The machine is a dual celeron with two scsi disks with some raid-1 & raid-0 partitions. deadline or anicipatory scheduler does not make a difference. It dies anyway, attempting to kill init. Here's what I managed to write down before the 30 second reboot kicked in: EIP is at md_wakeup_thread stack: do_md_run autorun_array autorun_devices autostart_arrays md_ioctl dentry_open kmem_cache_free blkdev_ioctl sys_ioctl init init This happened during the boot process. The kernel is compiled with gcc 2.95.4 from debian testing. The machine uses devfs Helge Hafting -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: 2.5.64-mm7 - dies on smp with raid 2003-03-15 17:38 ` 2.5.64-mm7 - dies on smp with raid Helge Hafting @ 2003-03-15 20:03 ` Andrew Morton 2003-03-15 20:42 ` Neil Brown 0 siblings, 1 reply; 5+ messages in thread From: Andrew Morton @ 2003-03-15 20:03 UTC (permalink / raw) To: Helge Hafting; +Cc: linux-kernel, linux-mm, Neil Brown Helge Hafting <helgehaf@aitel.hist.no> wrote: > > mm7 crashed where mm2 works. > The machine is a dual celeron with two scsi disks with > some raid-1 & raid-0 partitions. > > deadline or anicipatory scheduler does not make a difference. > It dies anyway, attempting to kill init. > > Here's what I managed to write down before the 30 second reboot > kicked in: > > EIP is at md_wakeup_thread > > stack: > do_md_run > autorun_array > autorun_devices > autostart_arrays > md_ioctl > dentry_open > kmem_cache_free > blkdev_ioctl > sys_ioctl > init > init > > This happened during the boot process. The kernel is compiled > with gcc 2.95.4 from debian testing. The machine uses devfs > A lot of md updates went into Linus's tree overnight. Can you get some more details for Neil? Here is a wild guess: diff -puN drivers/md/md.c~a drivers/md/md.c --- 25/drivers/md/md.c~a 2003-03-15 12:02:04.000000000 -0800 +++ 25-akpm/drivers/md/md.c 2003-03-15 12:02:14.000000000 -0800 @@ -2818,6 +2818,8 @@ int md_thread(void * arg) void md_wakeup_thread(mdk_thread_t *thread) { + if (!thread) + return; dprintk("md: waking up MD thread %p.\n", thread); set_bit(THREAD_WAKEUP, &thread->flags); wake_up(&thread->wqueue); _ -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: 2.5.64-mm7 - dies on smp with raid 2003-03-15 20:03 ` Andrew Morton @ 2003-03-15 20:42 ` Neil Brown 0 siblings, 0 replies; 5+ messages in thread From: Neil Brown @ 2003-03-15 20:42 UTC (permalink / raw) To: Andrew Morton; +Cc: Helge Hafting, linux-kernel, linux-mm On Saturday March 15, akpm@digeo.com wrote: > > A lot of md updates went into Linus's tree overnight. Can you get some more > details for Neil? > > Here is a wild guess: > > diff -puN drivers/md/md.c~a drivers/md/md.c > --- 25/drivers/md/md.c~a 2003-03-15 12:02:04.000000000 -0800 > +++ 25-akpm/drivers/md/md.c 2003-03-15 12:02:14.000000000 -0800 > @@ -2818,6 +2818,8 @@ int md_thread(void * arg) > > void md_wakeup_thread(mdk_thread_t *thread) > { > + if (!thread) > + return; > dprintk("md: waking up MD thread %p.\n", thread); > set_bit(THREAD_WAKEUP, &thread->flags); > wake_up(&thread->wqueue); > Looks like a good guess to me. I hadn't considered raid0/linear properly in that last change suite. They don't have a thread so there is nothing to wake up. There are two places where the wrong thing will happen: do_md_run where it also calls md_update_sb which doesn't hurt but isn't really needed (there is never any point updating the superblock metadata for raid0/linear). restart_array where we switch back to read/write and wakeup the thread to see if there is anything to do. We either need this "if(!thread)" test inside md_wakeup_thread or at those two call sites, in which case we can avoid md_update_sb as well. I send one to Linus later... Thanks, NeilBrown -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org">aart@kvack.org</a> ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2003-03-15 22:19 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2003-03-15 9:17 2.5.64-mm7 Andrew Morton 2003-03-15 10:13 ` 2.5.64-mm7 Russell King 2003-03-15 17:38 ` 2.5.64-mm7 - dies on smp with raid Helge Hafting 2003-03-15 20:03 ` Andrew Morton 2003-03-15 20:42 ` Neil Brown
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox