Ivan Kokshaysky [Sat, 22 Mar 2003 15:19:18 +0000 (15:19 +0000)]
[PCI] Make setup-bus.c aware of cardbus bridges.
Comments from rmk:
Make setup-bus.c properly aware of cardbus bridges. We treat the
bus behind a cardbus bridge more or less like any other bus, except
we don't explicitly descend below. We do, however, explicitly
reserve IO and memory space as we have done in the past. Memory
space is doubed to 32MB as a measure to allow the Mobility
cardbus-pci stuff to work. The amount of space reserved is now
specified by a couple of #defines at the top of the file.
This allows pci_bus_assign_resources() and pci_bus_size_bridges()
to be called for both root buses as well as cardbus secondary buses.
Comments from Ivan follows:
This patch combines your(rmk) cardbus changes (formerly pci-11)
and my "arbitrary resource layout" stuff. This + current bk works
on nautilus.
Most interesting feature: this can be used on partially
allocated PCI tree. For instance, i386 PCI code has always been
absolutely helpless wrt incorrectly initialized p2p bridges.
Now it can just call pci_assign_unassigned_resources() in the
end of PCI init and it would fix following problems:
- completely uninitialized bridge windows (with base and limit 0);
- erroneously "closed" windows;
- windows overlapping with something else.
Russell King [Sun, 16 Mar 2003 23:28:51 +0000 (23:28 +0000)]
[PCI] pci-15: Fix setup-bus.c resource sizing.
Patch from Ivan Kokshaysky
This fixes long standing typo ('size' instead of 'r_size') which causes
overestimate of the bridge memory ranges calculated in pbus_size_mem().
For example, if we have a device with one 1Mb and one 2Mb memory ranges
behind the bridge, calculated size and alignment of the bridge memory
window will be 4Mb and 2Mb respectively, while the correct values are
3Mb and 1Mb.
Russell King [Sun, 16 Mar 2003 23:21:31 +0000 (23:21 +0000)]
[PCI] pci-13: unuse pci_do_scan_bus()
In an attempt to "unuse" pci_do_scan_bus() so it can be eventually
killed, make pci_scan_bus_parented() call the new pci_scan_child_bus()
and pci_bus_add_devices(). The only remaining callers are the
hotplug drivers.
Eventually, pci_bus_add_devices() will be removed from this function -
it is intended that architectures should call this after they have
done any setups and fixups to the scanned bus.
It is legal to call pci_bus_add_devices() on a bus which has already
had this function called, so architectures could update today.
Kill pcibios_update_resource(), replacing it with pci_update_resource().
pci_update_resource() uses pcibios_resource_to_bus() to convert a
resource to a device BAR - the transformation should be exactly the
same as the transformation used for the PCI bridges.
pci_update_resource "knows" about 64-bit BARs, but doesn't attempt to
set the high 32-bits to anything non-zero - currently no architecture
attempts to do something different. If anyone cares, please fix; I'm
going to reflect current behaviour for the time being.
Ivan pointed out the following architectures need to examine their
pcibios_update_resource() implementation - they should make sure that
this new implementation does the right thing. #warning's have been
added where appropriate.
ia64
mips
mips64
This cset also includes a fix for the problem reported by AKPM where
64-bit arch compilers complain about the resource mask being placed
in a u32.
Russell King [Sun, 16 Mar 2003 21:56:53 +0000 (21:56 +0000)]
[PCI] pci-8: pci_resource_to_bus()
Convert pcibios_fixup_pbus_ranges() into something more generic, namely
pcibios_resource_to_bus() - we are really trying to convert resources
to something to program into bus registers for bridge windows, and in
fact, PCI device BARs.
This is necessary since some architectures, namely Alpha, ARM and PARISC
have an offset between PCI addressing and host-based addressing, so
resources need to be adjusted when read or when written back to the bus.
We provide a generic version in asm-generic/pci.h, which most
architectures use.
This patch finds the following architectures with something to think
consider:
- ppc, ppc64
adjusts resources for devices, but not buses.
This is inconsistent, and leads to improperly
programmed windows/BARs.
PPC people (Anton) has a replacement PCI resource implementation
which should do the right thing.
Russell King [Sun, 16 Mar 2003 21:42:43 +0000 (21:42 +0000)]
[PCI] pci-7: Remove second argument to pcibios_update_resource()
Patch from Ivan Kokshaysky
remove the "parent" or "root" second argument to
pcibios_update_resource(). This highlights the following
architectures doing something wrong in their implementation:
Russell King [Sun, 16 Mar 2003 21:33:30 +0000 (21:33 +0000)]
[PCI] pci-6 - Fix scanning of non-zero functions
Fix breakage in pci-3 - we scanned all functions if function 0 was not
present. This causes some host bridges to lock up when scanning devfn
255 on PPC machines.
Randy Dunlap [Sat, 15 Mar 2003 09:19:32 +0000 (01:19 -0800)]
[PATCH] update filesystems config. menu
This is Robert PJ Day's patch that updates the filesystems
config menu. It had become a bit ad hoc (jumbled:) and this
patch attempts to arrange it more logically.
Russell King [Sat, 15 Mar 2003 10:37:42 +0000 (10:37 +0000)]
[TTY] Register tty devclass before use.
Register the tty devclass with sysfs before tty drivers initialise -
sysfs requires structures to be registered before use. This is
required for the previous serial csets, as well as any drivers which
are initialising using __initcall() or module_init().
Neil Brown [Fri, 14 Mar 2003 10:12:01 +0000 (02:12 -0800)]
[PATCH] kNFSd: Introduce CROSSMNT flag for knfsd
Now that we have working up-calls to userspace,
CROSSMNT makes sense.
If CROSSMNT is set for an export, and we too a
LOOKUP which crosses a mountpoint, we initiate an
upcall to find out if and how that filesystem
is exported.
Neil Brown [Fri, 14 Mar 2003 10:11:42 +0000 (02:11 -0800)]
[PATCH] kNFSd: Fix deadlock problem in lockd.
nlmsvc_lock calls nlmsvc_create_block with file->f_sema
held.
nlmsvc_create_block calls nlmclnt_lookup_host which might
call nlm_gc_hosts which might, eventually, try to claim
file->f_sema for the same file -> deadlock.
nlmsvc_create_block does not need any protection under
any lock as lockd is single-threaded and _create_block
only plays with internal data structures.
So we release the f_sema before calling in, and make sure
it gets claimed again afterwards.
knfsd needs to disable soft interrupts when calling
csum_partial_copy_to_xdr().
At the moment there's a nasty conflict between the RPC server and
client. The problem arises when you get to xdr_partial_copy_from_skb()
(and the kmap_atomic()); the RPC client can end up calling the same
function from a ->data_ready() soft interrupt, and corrupt any data
the knfsd process may have copied.
Neil Brown [Fri, 14 Mar 2003 10:09:26 +0000 (02:09 -0800)]
[PATCH] md: Add new superblock format for md
Superblock format '1' resolves a number of issues with
superblock format '0'.
It is more dense and can support many more sub-devices.
It does not contains un-needed redundancy.
It adds a few new useful fields
Neil Brown [Fri, 14 Mar 2003 10:09:20 +0000 (02:09 -0800)]
[PATCH] md: Allow md to select between superblock formats
The code to understand a specific superblock format is
already highly localised in md. This patch defines a
user-space interface for selecting which superblock format
to use, and obeys that selection.
Md currently has a concept of 3 version numbers:
A major version number
A minor version number
A patch version number
There historically seems to be some confusion about whether
these refer to a version of the superblock layout,
or a version of the software.
We will now define that:
the "major_version" defines the superblock handler.
'0' is the current superblock format. All new formats
will need new numbers.
the "minor_version" can specify minor variations in the
superblock, such as different location on the device
the "patch_version" will be used to indicate new extenstions
to the software.. patch_version=1 will mean multiple superblock
support.
A superblock version number is selected by specifing major_version
in SET_ARRAY_INFO ioctl.
This patch:
Updates Documentation/md.txt with details of new interface.
Generalises desc_nr handling and makes sure that an array never
has two devices with the same desc_nr.
makes sure mddev->major_version is always valid and is 0 by default.
uses mddev->major_version to select superblock handlers.
Modifies set_array_info to just record version number if raid_disks==0
Makes sure max_disks is always set correctly.
Determines device size when reading superblock, or a hot-add/add-new.
Neil Brown [Fri, 14 Mar 2003 10:09:13 +0000 (02:09 -0800)]
[PATCH] md: Allow components of MD raid array to have data start at offset from start of device.
Normally the data stored on a component of a RAID array is stored
from the start of the device. This patch allows a per-device
data_offset so the data can start elsewhere. This will allow
RAID arrays where the metadata is at the head of the device
rather than the tail.
Neil Brown [Fri, 14 Mar 2003 10:09:06 +0000 (02:09 -0800)]
[PATCH] md: Fix bad interaction between sync checkpointing and recovery
Md devices (raid1/raid5) can resync or recover.
There are similar but importantly different.
resync happens after an unclean shutdown
recovery happens when a failed drive is being replaced by a hot spare.
The sync-checkpoint code confused the two somewhat and this causes
problems.
This patch makes sure "recovery_cp" only relates to resync,
not recovery.
It also fixes a small problem with recording spares in
the superblock.
Neil Brown [Fri, 14 Mar 2003 10:09:01 +0000 (02:09 -0800)]
[PATCH] md: Fulltime delayed 'safe_mode' for md
From: Angus Sawyer <angus.sawyer@dsl.pipex.com>
If there are no writes for 20 milliseconds, write out superblock
to mark array as clean. Write out superblock with
dirty flag before allowing any further write to succeed.
If an md thread gets signaled with SIGKILL, reduce the
delay to 0.
Also tidy up some printk's and make sure writing the
superblock isn't noisy.
Neil Brown [Fri, 14 Mar 2003 10:08:54 +0000 (02:08 -0800)]
[PATCH] md: Remove md_recoveryd thread for md
The md_recoveryd thread is responsible for initiating and cleaning
up resync threads.
This job can be equally well done by the per-array threads
for those arrays which might need it.
So the mdrecoveryd thread is gone and the core code that
it ran is now run by raid5d, raid1d or multipathd.
We add an MD_RECOVERY_NEEDED flag so those daemon don't have
to bother trying to lock the md array unless it is likely
that something needs to be done.
Also modify the names of all threads to have the number of
md device.
Neil Brown [Fri, 14 Mar 2003 10:08:21 +0000 (02:08 -0800)]
[PATCH] md: Convert /proc/mdstat to use seq_file
From: Angus Sawyer <angus.sawyer@dsl.pipex.com>
Mainly straightforward convert of sprintf -> seq_printf. seq_start and
seq_next modelled on /proc/partitions. locking/ref counting as for
ITERATE_MDDEV.
Neil Brown [Fri, 14 Mar 2003 10:08:13 +0000 (02:08 -0800)]
[PATCH] md: Missing mddev_put in md resync code
Whenever a ITERATE_MDDEV loop is exitted abnormally
we need to mddev_put the current mddev. There was
one point in md_do_sync where we didn't so use counts
became wrong.
Jeff Garzik [Thu, 13 Mar 2003 13:51:25 +0000 (08:51 -0500)]
[hw_random] fixes and cleanups
* s/Via/VIA/
* allow multiple simultaneous open(2)s of the chrdev. This allows
us to eliminate some code, without modifying the core code (rng_dev_read)
at all.
* s/__exit// in ->cleanup ops, to eliminate link error
Jeff Garzik [Thu, 13 Mar 2003 13:47:27 +0000 (08:47 -0500)]
[ia32] cpu capabilities cleanups and additions
* Add support for new Centaur(VIA) and Intel cpuid feature bits,
expanding the x86_capability array by two.
* (cleanup) Move cpu setup for newer Via C3 cpus into its own
function, init_c3()
* Add support for RNG control msr on VIA Nehemiah
* export X86_FEATURE_XSTORE and cpu_has_xstore macros so that
kernel code may easily test for cpu support of the new
"xstore" instruction.
Jeff Garzik [Thu, 13 Mar 2003 13:24:13 +0000 (08:24 -0500)]
[hw_random] update amd768_rng driver to be modular; add Intel support
Take Alan's amd768_rng driver, recently renamed to hw_random.c,
and convert it's very-simple structure to support multiple
types of hardware RNG. Integrate Intel i8xx (ICH) RNG support.
Paul Mackerras [Thu, 13 Mar 2003 09:28:56 +0000 (20:28 +1100)]
PPC32: Add a thread-pointer argument to the clone syscall, make a prepare_to_copy().
The thread-pointer argument gets copied to R2 in the child in copy_thread() if
the CLONE_SETTLS flag is set. Adding a prepare_to_copy simplifies the copy_thread
logic since we don't have to do the extra copy of fpu/altivec state to the child.
Gerd Knorr [Tue, 11 Mar 2003 23:25:48 +0000 (15:25 -0800)]
[PATCH] v4l: create include/media
This patch creates a new include directory include/media, populates
it with a few files header files and fixups the affected drivers to
compile with the new directory layout.
The directory is intented to be used for (kernel-internal) header files
of the media drivers (which are sitting below drivers/media). For now
the video-buf.h (mm helper), tuner.h (tv/radio tuner) and audiochip.h
(tv sound decoder drivers) header files are moved. Some more header
files from the dvb folks will likely follow.
Dave Jones [Tue, 11 Mar 2003 23:21:03 +0000 (22:21 -0100)]
[CPUFREQ] Drop FSB scaling from VIA longhaul driver.
This was incomplete, and never worked 100% on every system, and is
better off dead than half-baked, as it makes the driver a lot simpler,
and removes the possibility of someone being confused why it doesn't
work on their particular hardware.