Russell King [Thu, 30 May 2002 01:16:58 +0000 (02:16 +0100)]
[ARM] Remove hard coded per-architecture memory, ramdisk and initrd
We have a fair number of command line options which can be used
to pass information about the target to the kernel. We also provide
a default command line which the kernel will use in absence of one
provided by the boot loader. We pass the hard coded options via the
command line now.
Russell King [Wed, 29 May 2002 17:21:22 +0000 (18:21 +0100)]
[ARM] Remove an extraneous load from atomic ops
atomic.h was generating some extra loads that aren't required. In
addition, it was needlessly performing various tests inside the
atomic region. This change fixes both these issues.
Russell King [Wed, 29 May 2002 17:06:54 +0000 (18:06 +0100)]
[ARM] Context switch improvements
- We don't need to save the CPSR.
- Rearrange thread_info members so we can pull the fields out of
thread_info more efficiently.
- Allocate a couple of extra words for CPU specific context saving
(eg, for Xscale ACC registers)
- Always leave 8 bytes free at the top of the kernel stack. This
prevents the stack becoming completely empty when do_exit() is
called from an exiting nfsd() thread, and causing the wrong
pointer to be returned from current_thread_info()
Tom Rini [Wed, 29 May 2002 08:52:28 +0000 (01:52 -0700)]
[PATCH] Missing include in drivers/base/bus.c and drivers/pci/pci-driver.c
drivers/base/bus.c and drivers/pci/pci-driver.c both have functions
which are marked with __init, but didn't include <linux/init.h> directly.
The following fixes that (and allows 2.5.19 to compile on PPC32).
Andy Grover [Wed, 29 May 2002 08:41:56 +0000 (01:41 -0700)]
ACPI PCI IRQ Improvements:
We now can boot without MPS and PIRQ!
ACPI finds IO APICs, Local apics (CPUS), interrupt source overrides,
the works. (Paul Diefenbaugh) Mucho thanks to Dominik Brodowski and
the whole acpi-devel gang.
(Note, I think this conflicts slightly with Pavel's code in i386/kernel/acpi.c
but I'd like to get this applied, and then I'm working with Pavel to hopefully
get the ACPI and swsusp stuff working properly.)
Petr Vandrovec [Wed, 29 May 2002 08:34:15 +0000 (01:34 -0700)]
[PATCH] de4x5 does not compile in 2.5.19 due to bus_type conflict
de4x5.c used struct bus_type for its internal bookkeeping. It should
be proably converted to struct device, but as I prefer
Jeff's tulip driver, and I have no knowledge about EISA support,
I only changed the structure name to make thing compile.
Dave Kleikamp [Wed, 29 May 2002 11:03:17 +0000 (06:03 -0500)]
JFS: misc stuff for 2.5
o make JFS_SBI an inline instead of a macros, as the other filesystems do
o ditto for isReadOnly
o move initialization of sb into the common part of lmLogOpen
Dave Kleikamp [Wed, 29 May 2002 10:58:08 +0000 (05:58 -0500)]
JFS: metapage changes
This patch is a first preparation of using the bdev mapping instead
of the JFS-private device mapping/inode for 2.4.1x/2.5:
* add metapages to ->mp_list of the inode passed to __get_metapage
instead of mp->mapping->host. Do this outside of add_to_hash,
and only do it for metapages that aren't mapped absolutely.
RATIONALE: when using the bdev mapping, the absoloute inode won't
have the JFS-private inode info. It is save because we never
traverse the mp_list of the direct inodes.
* use a goto to unify two error handling pathes in __get_metapage.
Patrick Mochel [Wed, 29 May 2002 03:37:43 +0000 (20:37 -0700)]
PCI Update:
- Change pci_match_device to pci_bus_bind, which becomes bind callback of pci_bus_type
- Remove explicit driver binding; let the device core handle it
Martin Dalecki [Wed, 29 May 2002 03:22:20 +0000 (20:22 -0700)]
[PATCH] 2.5.18 IDE 75
- Comment out config_chipset_for_pio from hpt366 driver. It seems to hang on it
and many people consistently reported that this may be necessary.
Well apparently this host chip is forced to be in DMA read mode anyway
and we where undoing this there.
- Apply small cosmetics to pdc202xx.c driver by Thierry Vignaud.
His change log entries follow:
- factorize constants with PDC_CLOCK and UDMA_SPEED_FLAG macros and
the init_high_16() static inline functions, thus removing floating
constants in code
- remove unused variables and pci space read
- kill useless code in pdc202xx_udma_irq_status() resulting in
removing unused variable: the code does lots of tests to check what
value to return but just always return the same exact value in all
code paths!
this also saves a few cpu & pci bus cyles by removing a useless read
in pci space
- simplify #if/#else resulting in code duplication
- make init_pdc202xx clearer
- remove duplicated initializations in config_drive_xfer_rate() and
simplify code paths
- Kill unused init_speed member from ata_device struct. Spotted by
M.H.VanLeeuwen.
Patrick Mochel [Wed, 29 May 2002 03:01:51 +0000 (20:01 -0700)]
Device Model: Implement centralized device/driver binding
- on device registration, all drivers of bus are iterated over
- bus's bind callback is called to match device to driver
- if successful, driver's probe callback is called
- on device removal, driver's remove callback is called
- on driver registration, list of devices is iterated over (and same thing happens)
Patrick Mochel [Wed, 29 May 2002 02:51:08 +0000 (19:51 -0700)]
Device Model: Add helpers bus_for_each_dev and bus_for_each_drv
- iterators for accessing bus's lists of devices and drivers
- does locking on bus for each list access
- does reference counting on objects as it grabs and releases them
- calls callback for each object in list
Jan Kara [Wed, 29 May 2002 02:45:05 +0000 (19:45 -0700)]
[PATCH] Quota update [3/3]
Remove the old backward-compatible quota interface.
The patch also contains a renaming of functions vfs_{get|set}_info() to
vfs_{get|set}_dqinfo() and minor compilation fix needed for 2.5.18
(include <linux/namei.h>).
Martin Dalecki [Wed, 29 May 2002 02:14:28 +0000 (19:14 -0700)]
[PATCH] 2.5.18 IDE 73
- Merge ide-probe.c and ide-features.c in to one single file. They are
mutually doing basically the same and in esp. in case of the device ID
retrieval there *is* quite a lot of code duplication between them.
ide-geometry.c fits there as well.
- Remove ide_xfer_verbose - it wasn't really used.
- Don't allow check_partition to be more clever then the writer of a driver.
It was interfering with drivers which check partitions as they go and
finally if we want to spew something about it - we can do it ourself.
- Eliminate ide_geninit(). We scan for partitions now inside the recently
introduced attach method. register_disk() is broken by the way and 90% of
places where it's used it is doing literally nothing. Either some one didn't
finish some code or the code is basically just junk from the past.
Anyway we grok the partitions now one by one as we detect the channels.
- ide_driveid_update is gone. We don't report the drive id through /proc/ide
and we don't have to update it any longer on the fly. Still someone out there
complaining that it went away!?
- Use the global driver spin-lock to protect data structure access in the
ide_register_subdriver() function instead of blatantly disabling all
interrupts.
Jens Axboe [Wed, 29 May 2002 01:40:17 +0000 (18:40 -0700)]
[PATCH] block plugging reworked/fixed
This implements what we discussed, basically just maintaing a plug list
from the block layer as a direct parallel to the tq_disk task queue we
had before. blk_run_queues() now splices the blk_plug_list to avoid
holding the blk_plug_lock across all the request_fn calls.
Added the driver to the 2.5 tree. The original code for 2.4 was
written by Pei Liu <pbl@cypress.com> but cleaned up a bit and
ported to 2.5 by me. Any problems in the driver is probably due to
my messing with it.
This driver is for the SL811HS USB host controller chip from
Cypress and is typically contained on a ARM based embedded
system.
kbuild: Provide correct 'make some/dir/file.[iso]'
Don't include Rules.make in the top-level Makefile, we don't
actually build anything from there, so we don't need the rules.
If asked to build some file in a subdirectory, descend into the
subdir and build it from there - only there we can know what
extra flags etc we have to add.
This also works for building preprocessed [.i] and assembler
output [.s].
Basically only cosmetics, and move the 'update-modverfile:'
rule from Rules.make to the top-level Makefile, since that's the
only place where it's used.
kbuild: Group together descending/linking in drivers/*
We currently decide whether we need to descend into the subdirs of
drivers/ in drivers/Makefile, but link the resulting objects from
the top-level Makefile.
Making these two decisions at the same time (in drivers/Makefile) cleans
up the top-level Makefile quite a bit.
Link order does not change at all apart from sound/, which is now linked
last.
Brian Gerst [Tue, 28 May 2002 15:02:27 +0000 (08:02 -0700)]
[PATCH] i386 mm init cleanup part 1
This revised patch starts untangling the mess in arch/i386/mm/init.c
- Pull setting bits in cr4 out of the loop
- Make __PAGE_KERNEL a variable and cache the global bit there.
- New pfn_pmd() for large pages.
Many Makefiles did a put an own rule in front of
"include $(TOPDIR)/Rules.make" for no good reason at all,
the only places where it made sense are converted to using
EXTRA_TARGETS now.
Trond Myklebust [Tue, 28 May 2002 13:03:53 +0000 (06:03 -0700)]
[PATCH] RPC client receive deadlock removal on HIGHMEM systems
Remove another class of rpciod deadlocks on HIGHMEM systems. Kick habit of
keeping pages kmap()ed for the entire duration of NFS
read/readdir/readlink operations.
Use struct page directly in RPC client data receive buffer. TCP and UDP
sk->data_ready() bottom-halves copy (and checksum when needed) data into
pages rather than iovecs. atomic_kmap() of single pages is used for the
copy.
include/linux/xdr.h
Declare structure for copying an sk_buff here rather than in xprt.c.
Forward declaration of new functions.
include/linux/sunrpc/xprt.h
RPC client receive buffer changed to use new format 'struct xdr_buf'.
net/sunrpc/clnt.c
Initialize new format receive buffer.
net/sunrpc/xdr.c
xdr_inline_pages() inlines pages into the receive buffer.
xdr_partial_copy_from_skb() replaces csum_partial_copy_to_page_cache()
and copy code in tcp_read_request(). Provides sendfile()-style
method for copying data from an skb into a struct xdr_buf.
xdr_shift_buf() replaces xdr_shift_iovec() for when we overestimate
the size of the RPC/NFS header.
net/sunrpc/xprt.c
Adapt UDP and TCP receive routines to use new format xdr_buf.
Trond Myklebust [Tue, 28 May 2002 13:03:42 +0000 (06:03 -0700)]
[PATCH] Teach RPC client to send pages rather than iovecs.
Stop rpciod from deadlocking against itself in map_new_virtual() on HIGHMEM
systems. RPC client currently has to keep all pages that are scheduled for
transmission kmap()ed into an iovec for the entire duration of the call.
We only actually need to kmap() pages while making the (non-blocking)
call to sock_sendmsg().
NOTE: When transmitting several pages in one RPC call, sock_sendmsg()
requires us to kmap() *all* those pages at the same time. Opens for
deadlocks between rpciod and some other process that also kmaps more
than 1 page at a time.
For the TCP case we can solve later by converting to TCP_CORK+sendpage().
include/linux/sunrpc/xdr.h
Introduce 'struct xdr_buf' in order to allow RPC layer to handle
pages directly.
include/linux/sunrpc/xprt.h:
Convert the RPC client send-buffer to the new format.
net/sunrpc/clnt.c
Initialize the new format RPC send-buffer.
net/sunrpc/xdr.c
xdr_kmap() kmap()+copy a struct xdr_buf into an iovec array.
xdr_kunmap() clean up after xdr_kmap().
xdr_encode_pages() used to inline pages for transmission.
net/sunrpc/xprt.c
xprt_sendmsg() needs to kmap() the pages into an iovec for transmission.
include/linux/nfs_xdr.h
struct nfs_writeargs transmits full page information.
Convert nfs_rpc_ops->write() to send pages.
fs/nfs/write.c
Adapt to new format nfs_writeargs / nfs_rpc_ops->write()