17 Nov, 2010
1 commit
-
Move the mid-layer's ->queuecommand() invocation from being locked
with the host lock to being unlocked to facilitate speeding up the
critical path for drivers who don't need this lock taken anyway.The patch below presents a simple SCSI host lock push-down as an
equivalent transformation. No locking or other behavior should change
with this patch. All existing bugs and locking orders are preserved.Additionally, add one parameter to queuecommand,
struct Scsi_Host *
and remove one parameter from queuecommand,
void (*done)(struct scsi_cmnd *)Scsi_Host* is a convenient pointer that most host drivers need anyway,
and 'done' is redundant to struct scsi_cmnd->scsi_done.Minimal code disturbance was attempted with this change. Most drivers
needed only two one-line modifications for their host lock push-down.Signed-off-by: Jeff Garzik
Acked-by: James Bottomley
Signed-off-by: Linus Torvalds
19 Jan, 2010
1 commit
-
Allows i == IM_MAX_HOSTS, which is out of range.
Signed-off-by: Roel Kluin
Signed-off-by: Andrew Morton
Signed-off-by: James Bottomley
30 Dec, 2008
1 commit
-
Signed-off-by: Alan Cox
Signed-off-by: James Bottomley
31 Jan, 2008
1 commit
-
With the sg table code, every SCSI driver is now either chain capable
or broken (or has sg_tablesize set so chaining is never activated), so
there's no need to have a check in the host template.Also tidy up the code by moving the scatterlist size defines into the
SCSI includes and permit the last entry of the scatterlist pools not
to be a power of two.
Signed-off-by: James Bottomley
23 Oct, 2007
1 commit
-
Signed-off-by: Jens Axboe
16 Oct, 2007
1 commit
-
This option is true if a low-level driver can support sg
chaining. This will be removed eventually when all the drivers are
converted to support sg chaining. q->max_phys_segments is set to
SCSI_MAX_SG_SEGMENTS if false.Signed-off-by: FUJITA Tomonori
Signed-off-by: Jens Axboe
13 Oct, 2007
2 commits
-
Remove the useless references to the obsolete MODULE_PARM macro.
Signed-off-by: Robert P. J. Day
Signed-off-by: Andrew Morton
Signed-off-by: James Bottomley -
There was a missing call to scsi_host_put() causing us to leak a scsi
host every time this module was unloaded.Signed-off-by: Matthew Wilcox
Signed-off-by: James Bottomley
27 May, 2007
1 commit
-
- remove the unnecessary map_single path.
- convert to use the new accessors for the sg lists and the
parameters.Jens Axboe did the for_each_sg cleanup.
Signed-off-by: FUJITA Tomonori
Signed-off-by: James Bottomley
22 May, 2007
1 commit
-
This is basically a straight conversion. I have one of these things, so
I know it works ... my problem is that it has a wierd SCA like
connector, so I can't connect anything to it (no cables).However, previously it panic'd in the interrupt, now it completes a bus
scan.Signed-off-by: James Bottomley
05 Oct, 2006
1 commit
-
Maintain a per-CPU global "struct pt_regs *" variable which can be used instead
of passing regs around manually through all ~1800 interrupt handlers in the
Linux kernel.The regs pointer is used in few places, but it potentially costs both stack
space and code to pass it around. On the FRV arch, removing the regs parameter
from all the genirq function results in a 20% speed up of the IRQ exit path
(ie: from leaving timer_interrupt() to leaving do_IRQ()).Where appropriate, an arch may override the generic storage facility and do
something different with the variable. On FRV, for instance, the address is
maintained in GR28 at all times inside the kernel as part of general exception
handling.Having looked over the code, it appears that the parameter may be handed down
through up to twenty or so layers of functions. Consider a USB character
device attached to a USB hub, attached to a USB controller that posts its
interrupts through a cascaded auxiliary interrupt controller. A character
device driver may want to pass regs to the sysrq handler through the input
layer which adds another few layers of parameter passing.I've build this code with allyesconfig for x86_64 and i386. I've runtested the
main part of the code on FRV and i386, though I can't test most of the drivers.
I've also done partial conversion for powerpc and MIPS - these at least compile
with minimal configurations.This will affect all archs. Mostly the changes should be relatively easy.
Take do_IRQ(), store the regs pointer at the beginning, saving the old one:struct pt_regs *old_regs = set_irq_regs(regs);
And put the old one back at the end:
set_irq_regs(old_regs);
Don't pass regs through to generic_handle_irq() or __do_IRQ().
In timer_interrupt(), this sort of change will be necessary:
- update_process_times(user_mode(regs));
- profile_tick(CPU_PROFILING, regs);
+ update_process_times(user_mode(get_irq_regs()));
+ profile_tick(CPU_PROFILING);I'd like to move update_process_times()'s use of get_irq_regs() into itself,
except that i386, alone of the archs, uses something other than user_mode().Some notes on the interrupt handling in the drivers:
(*) input_dev() is now gone entirely. The regs pointer is no longer stored in
the input_dev struct.(*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does
something different depending on whether it's been supplied with a regs
pointer or not.(*) Various IRQ handler function pointers have been moved to type
irq_handler_t.Signed-Off-By: David Howells
(cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
03 Jul, 2006
1 commit
-
Signed-off-by: Thomas Gleixner
Cc: Ingo Molnar
Cc: "David S. Miller"
Cc: Benjamin Herrenschmidt
Cc: James Bottomley
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
01 Jul, 2006
1 commit
-
Signed-off-by: Jörn Engel
Signed-off-by: Adrian Bunk
27 Jun, 2006
1 commit
-
acquired (aquired)
contiguous (contigious)
successful (succesful, succesfull)
surprise (suprise)
whether (weather)
some other misspellingsSigned-off-by: Andreas Mohr
Signed-off-by: Adrian Bunk
23 Jun, 2006
1 commit
-
Signed-off-by: Eric Sesterhenn
Signed-off-by: Alexey Dobriyan
Cc: Bartlomiej Zolnierkiewicz
Cc: Alan Cox
Cc: James Bottomley
Acked-by: "Salyzyn, Mark"
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
10 Jun, 2006
1 commit
-
Use ARRAY_SIZE macro instead of sizeof(x)/sizeof(x[0]) and remove
duplicates of the macro.Signed-off-by: Tobias Klauser
Signed-off-by: Andrew Morton
Signed-off-by: James Bottomley
01 Apr, 2006
1 commit
-
The boot cmdline is parsed in parse_early_param() and
parse_args(,unknown_bootoption).And __setup() is used in obsolete_checksetup().
start_kernel()
-> parse_args()
-> unknown_bootoption()
-> obsolete_checksetup()If __setup()'s callback (->setup_func()) returns 1 in
obsolete_checksetup(), obsolete_checksetup() thinks a parameter was
handled.If ->setup_func() returns 0, obsolete_checksetup() tries other
->setup_func(). If all ->setup_func() that matched a parameter returns 0,
a parameter is seted to argv_init[].Then, when runing /sbin/init or init=app, argv_init[] is passed to the app.
If the app doesn't ignore those arguments, it will warning and exit.This patch fixes a wrong usage of it, however fixes obvious one only.
Signed-off-by: OGAWA Hirofumi
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
12 Mar, 2006
1 commit
-
The variable was dereferenced only if it was NULL (sic)...
Spotted by the Coverity checker.
Signed-off-by: Adrian Bunk
Signed-off-by: James Bottomley
10 Nov, 2005
2 commits
-
Signed-off-by: James Bottomley
-
Signed-off-by: James Bottomley
09 Nov, 2005
1 commit
-
This patch removes almost all inclusions of linux/version.h. The 3
#defines are unused in most of the touched files.A few drivers use the simple KERNEL_VERSION(a,b,c) macro, which is
unfortunatly in linux/version.h.There are also lots of #ifdef for long obsolete kernels, this was not
touched. In a few places, the linux/version.h include was move to where
the LINUX_VERSION_CODE was used.quilt vi `find * -type f -name "*.[ch]"|xargs grep -El '(UTS_RELEASE|LINUX_VERSION_CODE|KERNEL_VERSION|linux/version.h)'|grep -Ev '(/(boot|coda|drm)/|~$)'`
search pattern:
/UTS_RELEASE\|LINUX_VERSION_CODE\|KERNEL_VERSION\|linux\/\(utsname\|version\).hSigned-off-by: Olaf Hering
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
29 Oct, 2005
1 commit
-
Rejections fixed up and
Signed-off-by: James Bottomley
15 Sep, 2005
1 commit
-
Modules need a license to prevent kernel tainting.
Signed-off-by: Randy Dunlap
Signed-off-by: James Bottomley
11 Sep, 2005
1 commit
-
This patch contains the most trivial from Rusty's trivial patches:
- spelling fixes
- remove duplicate includesSigned-off-by: Adrian Bunk
Cc: Rusty Russell
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
18 Jun, 2005
2 commits
-
Signed-off-by: James Bottomley
-
Signed-off-by: James Bottomley
17 Apr, 2005
1 commit
-
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.Let it rip!