14038 Commits

Author SHA1 Message Date
Tejun Heo
3cadbcc098 libata-acpi: add ATA_FLAG_ACPI_SATA port flag
Whether a controller needs IDE or SATA ACPI hierarchy is determined by
the programming interface of the controller not by whether the
controller is SATA or PATA, or it supports slave device or not.  This
patch adds ATA_FLAG_ACPI_SATA port flags which tells libata-acpi that
the port needs SATA ACPI nodes, and sets the flag for ahci and
sata_sil24.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-05-16 01:18:31 -04:00
Tejun Heo
6ddcd3b020 libata: during revalidation, check n_sectors after device is configured
Device might be resized during ata_dev_configure() due to HPA or
(later) ACPI _GTF.  Currently it's worked around by caching n_sectors
before turning off HPA.  The cached original size is overwritten if
the device is reconfigured without being hardreset - which always
happens after configuring trasnfer mode.  If the device gets hardreset
for some reason after that, revalidation fails with -ENODEV.

This patch makes size checking more robust by moving n_sectors check
from ata_dev_reread_id() to ata_dev_revalidate() after the device is
fully configured.  No matter what happens during configuration, a
device must have the same n_sectors after fully configured to be
treated as the same device.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-05-16 01:18:30 -04:00
David S. Miller
c7754d465b [SPARC64]: Add hypervisor API negotiation and fix console bugs.
Hypervisor interfaces need to be negotiated in order to use
some API calls reliably.  So add a small set of interfaces
to request API versions and query current settings.

This allows us to fix some bugs in the hypervisor console:

1) If we can negotiate API group CORE of at least major 1
   minor 1 we can use con_read and con_write which can improve
   console performance quite a bit.

2) When we do a console write request, we should hold the
   spinlock around the whole request, not a byte at a time.
   What would happen is that it's easy for output from
   different cpus to get mixed with each other.

3) Use consistent udelay() based polling, udelay(1) each
   loop with a limit of 1000 polls to handle stuck hypervisor
   console.

Signed-off-by: David S. Miller <davem@davemloft.net>
2007-05-15 20:23:02 -07:00
Al Viro
b4e1ded3cf m32r: __xchg() should be always_inline
it depends on elimination of unreachable branches in switch (by object
size), so we must declare it always_inline

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Acked-by: Hirokazu Takata <takata@linux-m32r.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-15 18:56:37 -07:00
Linus Torvalds
835a906c74 Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh64-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh64-2.6:
  sh64: Add .gitignore entry for syscalltab.
  sh64: generic quicklist support.
  sh64: Update cayman defconfig.
  sh64: Fixup sh-sci build.
  sh64: ppoll/pselect6() and restartable syscalls.
  sh64: dma-mapping updates.
  sh64: Fixups for the irq_regs changes.
  sh64: Wire up many new syscalls.
  spelling fixes: arch/sh64/
  sh64: ROUND_UP macro cleanup in arch/sh64/kernel/pci_sh5.c
2007-05-15 18:50:19 -07:00
Linus Torvalds
e089d43fb1 Merge master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6:
  Use menuconfig objects: IDE
  sl82c105: Switch to ref counting API
  ide: remove ide_use_dma()
  ide: add missing validity checks for identify words 62 and 63
  ide: remove ide_dma_enable()
  sl82c105: add speedproc() method and MWDMA0/1 support
  cs5530/sc1200: add ->speedproc support
  cs5530/sc1200: DMA support cleanup
  ide: use ide_tune_dma() part #2
  cs5530/sc1200: add ->udma_filter methods
  ide: always disable DMA before tuning it
  pdc202xx_new: use ide_tune_dma()
  alim15x3: use ide_tune_dma()
  sis5513: PIO mode setup fixes
  serverworks: PIO mode setup fixes
  pdc202xx_old: rewrite mode programming code (v2)
2007-05-15 18:47:21 -07:00
Bartlomiej Zolnierkiewicz
122ab0887c ide: remove ide_use_dma()
ide_use_dma() duplicates a lot of ide_max_dma_mode() functionality
and as all users of ide_use_dma() were converted to use ide_tune_dma()
now it is possible to add missing checks to ide_tune_dma() and remove
ide_use_dma() completely, so do it.

There should be no functionality changes caused by this patch.

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2007-05-16 00:51:46 +02:00
Bartlomiej Zolnierkiewicz
4728d546d7 ide: remove ide_dma_enable()
* check ->speedproc return value in ide_tune_dma()
* use ide_tune_dma() in cmd64x/cs5530/sc1200/siimage/sl82c105/scc_pata drivers
* remove no longer needed ide_dma_enable()

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2007-05-16 00:51:46 +02:00
Trond Myklebust
6684e323a2 Merge branch 'origin' 2007-05-15 16:11:17 -04:00
Linus Torvalds
0560551dca Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart
* master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart:
  [AGPGART] Fix wrong ID in via-agp.c
2007-05-15 12:10:26 -07:00
Christoph Lameter
cfbf07f2a8 SLUB: CONFIG_LARGE_ALLOCS must consider MAX_ORDER limit
Take MAX_ORDER into consideration when determining KMALLOC_SHIFT_HIGH.
Otherwise we may run into a situation where we attempt to create general
slabs larger than MAX_ORDER.

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-15 08:54:01 -07:00
Jeremy Fitzhardinge
297d9c035e i386: move common parts of smp into their own file
Several parts of kernel/smp.c and smpboot.c are generally useful for other
subarchitectures and paravirt_ops implementations, so make them available for
reuse.

Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Acked-by: Chris Wright <chrisw@sous-sol.org>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-15 08:54:00 -07:00
Prarit Bhargava
838c41184f Remove cpu hotplug defines for __INIT & __INITDATA
After examining what was checked in and the code base I discovered that most
of 86c0baf123e474b6eb404798926ecf62b426bf3a wasn't necessary anymore....

So here's a patch that reverts the last part of that changeset:

Revert part of 86c0baf123e474b6eb404798926ecf62b426bf3a.

The kernel has moved forward to a state where the original change is not
necessary.  After porting forward, this final version of the patch was
applied and broke non-x86 architectures.

Signed-off-by: Prarit Bhargava <prarit@redhat.com>
Cc: Russell King <rmk@arm.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-15 08:54:00 -07:00
Geert Uytterhoeven
3c46bdcaec m68k: implement __clear_user()
m68k: implement __clear_user(), which is needed by fs/signalfd.c

Since we always let the MMU do all checking, clear_user() and __clear_user()
are identical. The old clear_user() is renamed to __clear_user() for
consistency.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Davide Libenzi <davidel@xmailserver.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-15 08:54:00 -07:00
Simon Horman
0fcdf96ca9 alpha: fix hard_smp_processor_id compile error
"Remove hardcoding of hard_smp_processor_id on UP systems",
2f4dfe206a2fc07099dfad77a8ea2f4b4ae2140f in Linus' tree, moved
the definition of hard_smp_processor_id linux/smp.h to asm/smp.h
for UP systems. This causes a regression on Alpha.

cc1: warnings being treated as errors
arch/alpha/kernel/setup.c: In function 'setup_arch':
arch/alpha/kernel/setup.c:506: warning: implicit declaration of function 'hard_smp_processor_id'
make[1]: *** [arch/alpha/kernel/setup.o] error 1
make: *** [arch/alpha/kernel] error 2

By including asm/smp.h non-conditionally in asm/mmu_context.h
the problem appears to be resolved.

Cc: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
Signed-off-by: Simon Horman <horms@verge.net.au>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-15 08:54:00 -07:00
Yoshinori Sato
b67405bbbb h8300 atomic.h update
add atomic_sub_and_test define.

Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-15 08:54:00 -07:00
Paul Mundt
218f0aaee8 nommu: add ioremap_page_range()
lib/ioremap.c is presently only built in if CONFIG_MMU is set.  While this
is reasonable, platforms that support both CONFIG_MMU=y or n need to be
able to call in to this regardless.

As none of the current nommu platforms do anything special with ioremap(),
we assume that it's always successful.

This fixes the SH-4 build with CONFIG_MMU=n.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Cc: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-15 08:54:00 -07:00
Haavard Skinnemoen
d0a2b7af27 [AVR32] Implement platform hooks for atmel_lcdfb driver
This modifies and extends the existing lcdc platform code to support
the new atmel_lcdfb driver. The ATSTK1000 board code is set up to use
the on-board Samsung LTV350QV LCD panel.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
2007-05-15 14:13:27 +02:00
Trond Myklebust
7531d692d4 SUNRPC: Fix sparse warnings
- net/sunrpc/xprtsock.c:1635:5: warning: symbol 'init_socket_xprt' was not
   declared. Should it be static?
 - net/sunrpc/xprtsock.c:1649:6: warning: symbol 'cleanup_socket_xprt' was
   not declared. Should it be static?

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2007-05-14 19:33:47 -04:00
Trond Myklebust
d48c5f4100 NLM: Fix sparse warnings
- fs/lockd/xdr4.c:140:27: warning: incorrect type in argument 2 (different
   explicit signedness)
 - fs/lockd/xdr4.c:141:27: warning: incorrect type in argument 2 (different
   explicit signedness)
 - fs/lockd/xdr4.c:432:28: warning: incorrect type in argument 2 (different
   explicit signedness)
 - fs/lockd/xdr4.c:433:28: warning: incorrect type in argument 2 (different
   explicit signedness)
 - fs/lockd/xdr4.c:587:20: warning: symbol 'nlm_version4' was not declared.
   Should it be static?

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2007-05-14 19:33:46 -04:00
Trond Myklebust
8ae20abdd1 NFS4: Fix incorrect use of sizeof() in fs/nfs/nfs4xdr.c
The XDR code should not depend on the physical allocation size of
structures like nfs4_stateid and nfs4_verifier since those may have to
change at some future date. We therefore replace all uses of
sizeof() with constants like NFS4_VERIFIER_SIZE and NFS4_STATEID_SIZE.

This also has the side-effect of fixing some warnings of the type
	format ‘%u’ expects type ‘unsigned int’, but argument X has type
		‘long unsigned int’
on 64-bit systems

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2007-05-14 19:33:45 -04:00
Tony Luck
ae67e498a5 [IA64] wire up {signal,timer,event}fd syscalls
Signed-off-by: Tony Luck <tony.luck@intel.com>
2007-05-14 15:55:11 -07:00
Linus Torvalds
faa8b6c3c2 Revert "ipmi: add new IPMI nmi watchdog handling"
This reverts commit f64da958dfc83335de1d2bef9d3868f30feb4e53.

Andi Kleen is unhappy with the changes, and they really do not seem
worth it.  IPMI could use DIE_NMI_IPI instead of the new callback, even
though that ends up having its own set of problems too, mainly because
the IPMI code cannot really know the NMI was from IPMI or not.

Manually fix up conflicts in arch/x86_64/kernel/traps.c and
drivers/char/ipmi/ipmi_watchdog.c.

Cc: Andi Kleen <ak@suse.de>
Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: Corey Minyard <minyard@acm.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-14 15:24:24 -07:00
Linus Torvalds
3ec2ab5514 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc:
  pxamci: fix PXA27x MMC workaround for bad CRC with 136 bit response
  mmc: use assigned major for block device
  sdhci: handle dma boundary interrupts
  mmc: au1xmmc command types check from data flags
2007-05-14 12:29:14 -07:00
Linus Torvalds
29e0937bb6 Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
  [SPARC64]: Update defconfig.
  [VIDEO]: XVR-500 and XVR-2500 need FB=y.
  [SPARC32]: asm/system.h needs asm/smp.h
  [SPARC32]: Update defconfig.
  [SPARC32]: Fix sparc32 kdebug changes.
  [SPARC64]: Accept ebus_bus_type for generic DMA ops.
  [SPARC64]: Add missing cpus_empty() check in hypervisor xcall handling.
  [SCSI]: Add help text for SCSI_ESP_CORE.
  [SPARC] SBUS: display7seg.c needs asm/io.h
  [SPARC] SBUS: bbc_i2c.c needs asm/io.h
  [SPARC64]: Be more resiliant with PCI I/O space regs.
  [SERIAL] SUNHV: Add an ID string.
2007-05-14 12:27:17 -07:00
Stephen Rothwell
140ff8b045 Declare another couple of compat syscalls.
compat_sys_signalfd and compat_sys_timerfd need declarations before
PowerPC can wire them up.

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-14 12:16:01 -07:00
Pierre Ossman
fe6b4c8840 mmc: use assigned major for block device
The MMC block devices now have an assigned major. Make sure
we actually use it.

Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
2007-05-14 18:51:43 +02:00
David S. Miller
6e46507d01 [SPARC32]: asm/system.h needs asm/smp.h
To get hard_smp_processor_id() even on UP builds.

Signed-off-by: David S. Miller <davem@davemloft.net>
2007-05-14 03:53:47 -07:00
Robert Reif
19fce2b966 [SPARC32]: Fix sparc32 kdebug changes.
Fix recent kdebug changes to compile on sparc32.

Signed-off-by: Robert Reif <reif@earthlink.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-05-14 03:22:08 -07:00
David S. Miller
9ac6d4a4b8 [SPARC64]: Accept ebus_bus_type for generic DMA ops.
Based upon a bug report by Meelis Roos.

Signed-off-by: David S. Miller <davem@davemloft.net>
2007-05-14 02:56:03 -07:00
Paul Mundt
6c645ac725 sh64: generic quicklist support.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2007-05-14 09:55:35 +09:00
kogiidena
ad05acd6e9 sh: landisk: Header cleanups.
Signed-off-by: kogiidena <kogiidena@eggplant.ddo.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2007-05-14 09:18:35 +09:00
Paul Mundt
2f32834a32 sh64: Fixup sh-sci build.
sh-sci needs asm/sci.h, borrow this from sh so we can build
again.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2007-05-14 09:13:54 +09:00
Paul Mundt
c18fe9a046 sh64: ppoll/pselect6() and restartable syscalls.
This patch was hanging around for some time while we were waiting
for the compiler situation to improve.. now that all is well again,
finally merge it.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2007-05-14 09:12:39 +09:00
Paul Mundt
599c26d329 sh64: dma-mapping updates.
Follow the noncoherent changes from sh.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2007-05-14 09:10:46 +09:00
Paul Mundt
a226d33abc sh64: Fixups for the irq_regs changes.
A few interrupt handlers were never updated, fix them up.
We were missing the irq_regs conversion also, so do that
at the same time.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2007-05-14 09:10:01 +09:00
Paul Mundt
6b5d1a0a2f sh64: Wire up many new syscalls.
This has suffered a bit of bitrot, so we're a bit behind on the
syscalls. There were a few that were wrapped incorrectly as well,
caught by the syscall checker. Fix them all up.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2007-05-14 09:07:27 +09:00
Gabriel Mansi
bbdfff86a8 [AGPGART] Fix wrong ID in via-agp.c
there is a wrong id in drivers/char/agp/via-agp.c
#define PCI_DEVICE_ID_VIA_CX700         0x8324
It must be 0x0324

Notice that PCI_DEVICE_ID_VIA_CX700 is also used in
drivers/i2c/busses/i2c-viapro.c and
drivers/ide/pci/via82cxxx.c

So, I think that constant must be renamed to avoid conflicting.
I attached a proposed patch.

Signed-off-by: Dave Jones <davej@redhat.com>
2007-05-13 17:41:47 -04:00
Haavard Skinnemoen
78c129b949 [AVR32] Wire up signalfd, timerfd and eventfd
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
2007-05-13 17:07:57 +02:00
Christoph Hellwig
9caebec7b8 [AVR32] optimize pagefault path
Avoid the costly notifier list in the pagefault path and call
the kprobes code directly.  The same change went into the 2.6.22
cycle for powerpc, 2s390 and sparc64 already.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
2007-05-13 17:07:46 +02:00
Linus Torvalds
f7d02ae76e Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (30 commits)
  [ARM] Use new get_irqnr_preamble
  [ARM] Ensure machine class menu is sorted alphabetically
  [ARM] 4333/2: KS8695: Micrel Development board
  [ARM] 4332/2: KS8695: Serial driver
  [ARM] 4331/3: Support for Micrel/Kendin KS8695 processor
  [ARM] 4371/1: AT91: Support for Atmel AT91SAM9RL-EK development board
  [ARM] 4372/1: Define byte sizes in asm-arm/sizes.h
  [ARM] 4370/3: AT91: Support for Atmel AT91SAM9RL processors.
  [ARM] Update mach-types
  [ARM] export symbol csum_partial_copy_from_user
  [ARM] iop13xx: msi support
  [ARM] stacktrace fix
  [ARM] Spinlock initializer cleanup
  [ARM] remove useless config option GENERIC_BUST_SPINLOCK
  [ARM] 4303/3: base kernel support for TI DaVinci
  [ARM] 4369/1: AT91: Fix circular dependency in header files
  [ARM] 4368/1: S3C24xx: build fix
  [ARM] 4364/1: AT91: LEDS on AT91SAM9261-EK
  [ARM] Fix iop32x/iop33x build
  [ARM] EBSA110: fix build errors caused by missing "const"
  ...
2007-05-12 18:11:33 -07:00
Daniel Walker
78db2ad6f4 include/linux: trivial repair whitespace damage
Adding tabs where spaces currently are.

Signed-off-by: Daniel Walker <dwalker@mvista.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-12 18:11:06 -07:00
Christoph Lameter
f1d1a842d8 SLUB: i386 support
SLUB cannot run on i386 at this point because i386 uses the page->private and
page->index field of slab pages for the pgd cache.

Make SLUB run on i386 by replacing the pgd slab cache with a quicklist.
Limit the changes as much as possible. Leave the improvised linked list in place
etc etc. This has been working here for a couple of weeks now.

Acked-by: William Lee Irwin III <wli@holomorphy.com>
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-12 11:26:22 -07:00
Russell King
158304ef09 Merge branch 'fixes' into devel 2007-05-12 16:12:12 +01:00
Russell King
25f4a81ef5 Merge branch 'omap-fixes' into fixes 2007-05-12 16:10:24 +01:00
Russell King
641e79129a [ARM] Use new get_irqnr_preamble
Use the new get_irqnr_preamble macro to move the address of the IRQ
controller outside the IRQ handling loop.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2007-05-12 15:25:50 +01:00
David S. Miller
8354c5b726 [SPARC]: Wire up signalfd/timerfd/eventfd syscalls.
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-05-11 22:06:51 -07:00
Henry Su
823777181b Add the combined mode for ATI SB700
Besides those modes in ATI SB600 SATA controller, ATI SB700 supports one
more mode:the combined mode.

The combined mode is a Legacy IDE mode used for compatibility with some old
OS without AHCI driver, but now it is not necessary for Linux since the
kernel has supported AHCI.

Signed-off-by: Luugi Marsan <luugi.marsan@amd.com>
Cc: Jeff Garzik <jeff@garzik.org>
Cc: Tejun Heo <htejun@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-05-11 18:16:01 -04:00
Tejun Heo
e92351bb53 libata-acpi: s/CONFIG_SATA_ACPI/CONFIG_ATA_ACPI/
ACPI applies to both SATA and PATA.  Drop the 'S' from the config
variable.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-05-11 18:12:42 -04:00
Tejun Heo
f4d6d00466 libata: ignore EH scheduling during initialization
libata enables SCSI host during ATA host activation which happens
after IRQ handler is registered and IRQ is enabled.  All ATA ports are
in frozen state when IRQ is enabled but frozen ports may raise limited
number of IRQs after being frozen - IOW, ->freeze() is not responsible
for clearing pending IRQs.  During normal operation, the IRQ handler
is responsible for clearing spurious IRQs on frozen ports and it
usually doesn't require any extra code.

Unfortunately, during host initialization, the IRQ handler can end up
scheduling EH for a port whose SCSI host isn't initialized yet.  This
results in OOPS in the SCSI midlayer.  This is relatively short window
and scheduling EH for probing is the first thing libata does after
initialization, so ignoring EH scheduling until initialization is
complete solves the problem nicely.

This problem was spotted by Berck E. Nash in the following thread.

  http://thread.gmane.org/gmane.linux.kernel/519412

Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: Berck E. Nash <flyboy@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-05-11 18:09:18 -04:00