]> git.hungrycats.org Git - linux/log
linux
22 years ago[sound/oss i810] bump driver to version 1.00
Jeff Garzik [Fri, 14 May 2004 21:03:42 +0000 (17:03 -0400)]
[sound/oss i810] bump driver to version 1.00

22 years agoMerge redhat.com:/spare/repo/linux-2.6
Jeff Garzik [Fri, 14 May 2004 20:18:55 +0000 (16:18 -0400)]
Merge redhat.com:/spare/repo/linux-2.6
into redhat.com:/spare/repo/i810-audio-2.6

22 years ago[PATCH] PowerPC Virtual Ethernet links to /sys/class/net/ethX
Santiago Leon [Fri, 14 May 2004 13:47:15 +0000 (06:47 -0700)]
[PATCH] PowerPC Virtual Ethernet links to /sys/class/net/ethX

This adds links to the driver and device inside /sys/class/net/ethX for
PowerPC Virtual Ethernet devices.

22 years ago[PATCH] PowerPC Virtual Ethernet duplicate MAC addresses
Santiago Leon [Fri, 14 May 2004 13:47:05 +0000 (06:47 -0700)]
[PATCH] PowerPC Virtual Ethernet duplicate MAC addresses

This fixes a bug where different partitions were assigned the same MAC
address.  Also, according to Anton, gcc 3.5 didn't like our mac_addr_p
gymnastics, so this ends up fixing that as well.

22 years ago[PATCH] ppc64: Add proper SMP init on dual 970FX based machines
Benjamin Herrenschmidt [Fri, 14 May 2004 13:07:57 +0000 (06:07 -0700)]
[PATCH] ppc64: Add proper  SMP init on dual 970FX based machines

This patch fixes SMP boot on Apple Xserve G5

22 years ago[PATCH] ppc64 iSeries: allow read only virtual disks
Andrew Morton [Fri, 14 May 2004 12:56:29 +0000 (05:56 -0700)]
[PATCH] ppc64 iSeries: allow read only virtual disks

From: Stephen Rothwell <sfr@canb.auug.org.au>

It is possible to attach a virtual disk to a logical partition on an iSeries
machine so that it is read only to the partition.  This patch allows Linux to
use such virtual disks.

22 years ago[PATCH] ppc64: strengthen I/O and memory barriers
Andrew Morton [Fri, 14 May 2004 12:56:19 +0000 (05:56 -0700)]
[PATCH] ppc64: strengthen I/O and memory barriers

From: Paul Mackerras <paulus@samba.org>

After I sent the recent patch to include/asm-ppc64/io.h which put stronger
barriers in the I/O accessor macros, Paul McKenney pointed out to me that a
writex/outx could still slide out from inside a spinlocked region.  This patch
makes the barriers a bit stronger so that this can't happen.  It means that we
need to use a sync instruction for wmb (a full "heavyweight" sync), since
drivers rely on wmb for ordering between writes to system memory and writes to
a device.

I have left smb_wmb() as a lighter-weight barrier that orders stores, and
doesn't impose an ordering between cacheable and non-cacheable accesses (the
amusingly-named eieio instruction).  I am assuming here that smp_wmb is only
used for ordering stores to system memory so that another cpu will see them in
order.  It can't be used for enforcing any ordering that a device will see,
because it is just a gcc barrier on UP.

This also changes the spinlock/rwlock unlock code to use lwsync ("light-weight
sync") rather than eieio, since eieio doesn't order loads, and we need to
ensure that loads stay inside the spinlocked region.

22 years ago[PATCH] ppc64: Kconfig bits for CONFIG_SPINLINE
Andrew Morton [Fri, 14 May 2004 12:56:08 +0000 (05:56 -0700)]
[PATCH] ppc64: Kconfig bits for CONFIG_SPINLINE

From: Paul Mackerras <paulus@samba.org>

When I sent the patch to uninline the spinlocks, I inadvertently left out
the change to arch/ppc64/Kconfig which defines the config symbol for
inlining the locks (CONFIG_SPINLINE now).  This patch adds it.  It also
adds a symbol CONFIG_PPC_SPLPAR which enables the code for calling the
hypervisor on shared-processor logically-partitioned system to yield the
physical processor to the lock holder when spinning.  (The code that
depends on this symbol is already present in arch/ppc64/lib/locks.c.)

22 years ago[PATCH] ppc64: remove iseries interrupt recursion workaround
Andrew Morton [Fri, 14 May 2004 12:55:58 +0000 (05:55 -0700)]
[PATCH] ppc64: remove iseries interrupt recursion workaround

From: Anton Blanchard <anton@samba.org>

It turns out we do avoid irq recursion on iseries so remove the workaround.

22 years ago[PATCH] ppc64: NVRAM fixes
Andrew Morton [Fri, 14 May 2004 12:55:47 +0000 (05:55 -0700)]
[PATCH] ppc64: NVRAM fixes

From: Anton Blanchard <anton@samba.org>

We check nvram_fetch/nvram_store against -1, so better not make these
unsigned.

22 years ago[PATCH] ppc64: align some heavily used variables
Andrew Morton [Fri, 14 May 2004 12:55:37 +0000 (05:55 -0700)]
[PATCH] ppc64: align some heavily used variables

From: Anton Blanchard <anton@samba.org>

Based on feedback from the hardware guys align jiffies and tb_last_stamp.
We update both regularly and there are other read only, heavily accessed
things that share those cachelines.

22 years ago[PATCH] ppc64: set MSR_RI in iseries exception code
Andrew Morton [Fri, 14 May 2004 12:55:26 +0000 (05:55 -0700)]
[PATCH] ppc64: set MSR_RI in iseries exception code

From: Anton Blanchard <anton@samba.org>

We need to set MSR_RI in iseries exception prolog.

22 years ago[PATCH] ppc64: fix radix tree allocation under spinlock
Andrew Morton [Fri, 14 May 2004 12:55:15 +0000 (05:55 -0700)]
[PATCH] ppc64: fix radix tree allocation under spinlock

From: Anton Blanchard <anton@samba.org>

We were allocating radix tree nodes in the interrupt code with GFP_KERNEL
under a spinlock.  Change it to GFP_ATOMIC.

22 years ago[PATCH] ppc32: Move declarations into headers
Andrew Morton [Fri, 14 May 2004 12:55:05 +0000 (05:55 -0700)]
[PATCH] ppc32: Move declarations into headers

From: Paul Mackerras <paulus@samba.org>

The patch below moves some declarations from C files into the appropriate
header file in include/asm-ppc (and removes an unused local variable in a
function).

22 years ago[PATCH] ppc32: Fix pmac compile after OCP changes
Andrew Morton [Fri, 14 May 2004 12:54:54 +0000 (05:54 -0700)]
[PATCH] ppc32: Fix pmac compile after OCP changes

From: Paul Mackerras <paulus@samba.org>

Matt Porter's recent changes broke the compile for non-4xx ppc32 systems,
unfortunately.  I get an error that mfdcr is not defined in
include/asm-ppc/ocp.h when compiling for powermac (reasonable, since the
mfdcr instruction only exists on 4xx processors).  The patch below fixes
it.

22 years ago[PATCH] PPC32: PPC44x ports for new OCP
Andrew Morton [Fri, 14 May 2004 12:54:43 +0000 (05:54 -0700)]
[PATCH] PPC32: PPC44x ports for new OCP

From: Matt Porter <mporter@kernel.crashing.org>

Merge all current PPC44x ports against new OCP.

22 years ago[PATCH] PPC32: PPC40x ports for new OCP
Andrew Morton [Fri, 14 May 2004 12:54:32 +0000 (05:54 -0700)]
[PATCH] PPC32: PPC40x ports for new OCP

From: Matt Porter <mporter@kernel.crashing.org>

Merge all current PPC40x ports against new OCP.

22 years ago[PATCH] PPC32: Update 4xx defconfigs
Andrew Morton [Fri, 14 May 2004 12:54:21 +0000 (05:54 -0700)]
[PATCH] PPC32: Update 4xx defconfigs

From: Matt Porter <mporter@kernel.crashing.org>

Update all current 4xx defconfigs for new OCP.

22 years ago[PATCH] PPC32: 4xx core fixes and 440gx PIC support
Andrew Morton [Fri, 14 May 2004 12:54:10 +0000 (05:54 -0700)]
[PATCH] PPC32: 4xx core fixes and 440gx PIC support

From: Matt Porter <mporter@kernel.crashing.org>

Merge misc.  4xx core fixes and support for the new cascade scheme in the
440gx.

22 years ago[PATCH] PPC32: IBM PPC4xx-specific OCP support
Andrew Morton [Fri, 14 May 2004 12:53:59 +0000 (05:53 -0700)]
[PATCH] PPC32: IBM PPC4xx-specific OCP support

From: Matt Porter <mporter@kernel.crashing.org>

Merge PPC4xx-specific OCP support for new OCP core.

22 years ago[PATCH] PPC32: PPC44x lib support
Andrew Morton [Fri, 14 May 2004 12:53:48 +0000 (05:53 -0700)]
[PATCH] PPC32: PPC44x lib support

From: Matt Porter <mporter@kernel.crashing.org>

Merge PPC44x library support against new OCP.

22 years ago[PATCH] PPC32: Bubinga/405EP for new OCP
Andrew Morton [Fri, 14 May 2004 12:53:37 +0000 (05:53 -0700)]
[PATCH] PPC32: Bubinga/405EP for new OCP

From: Matt Porter <mporter@kernel.crashing.org>

Merge Bubinga/405EP support against new OCP.

22 years ago[PATCH] PPC32: New OCP core support (updated)
Andrew Morton [Fri, 14 May 2004 12:53:26 +0000 (05:53 -0700)]
[PATCH] PPC32: New OCP core support (updated)

From: Matt Porter <mporter@kernel.crashing.org>

New OCP infrastructure ported from 2.4 along with several enhancements.
Updated patch with comments from hch and Valdis.

22 years ago[PATCH] PPC32: Add Book E / PPC44x specific exception support
Andrew Morton [Fri, 14 May 2004 12:52:43 +0000 (05:52 -0700)]
[PATCH] PPC32: Add Book E / PPC44x specific exception support

From: Matt Porter <mporter@kernel.crashing.org>

Adds general Book E machine check exception support and PPC44x-specific
machine check exception implementation.

22 years ago[PATCH] PPC32: Add Book E / PPC44x specific exception support
Andrew Morton [Fri, 14 May 2004 12:52:31 +0000 (05:52 -0700)]
[PATCH] PPC32: Add Book E / PPC44x specific exception support

From: Matt Porter <mporter@kernel.crashing.org>

Adds general Book E debug exception support and PPC44x-specific debug
exception implementation.

22 years ago[PATCH] PPC32: Fix copy prefetch on non coherent PPCs
Andrew Morton [Fri, 14 May 2004 12:52:21 +0000 (05:52 -0700)]
[PATCH] PPC32: Fix copy prefetch on non coherent PPCs

From: Matt Porter <mporter@kernel.crashing.org>

This patch fixes the condition where prefetching cache lines beyond a
buffer can cause data corruption on non cache coherent PPCs.  It is a port
of the version that went into 2.4.  From Eugene Surovegin
<ebs@ebshome.net>.

22 years ago[PATCH] PPC32: Fix __flush_dcache_icache_phys() for Book E
Andrew Morton [Fri, 14 May 2004 12:52:10 +0000 (05:52 -0700)]
[PATCH] PPC32: Fix __flush_dcache_icache_phys() for Book E

From: Matt Porter <mporter@kernel.crashing.org>

This patch implements/uses __flush_dcache_icache_page() which kmaps on a
Book E part, but keeps the existing behavior on other PowerPCs which can
disable the MMU.

22 years ago[PATCH] export clear_pages on ppc32
Andrew Morton [Fri, 14 May 2004 12:51:59 +0000 (05:51 -0700)]
[PATCH] export clear_pages on ppc32

From: Olaf Hering <olh@suse.de>

ext3 as module is not possible in 2.6.6, clear_pages, called from clear_page,
is not exported.

Also, unexport clear_page(), which is an inline.

22 years ago[PATCH] befs: inode->i_flags thinko fix
Andrew Morton [Fri, 14 May 2004 12:51:48 +0000 (05:51 -0700)]
[PATCH] befs: inode->i_flags thinko fix

Jorn Engel <joern@wohnheim.fh-wedel.de>

inode->i_flags should never contain fs-specific flags.  In fact, it doesn't;
the checks against it cause "chattr +T" to be useless for ext[23].  Same bug
was in befs as well.

22 years ago[PATCH] befs: maintainer update
Andrew Morton [Fri, 14 May 2004 12:51:37 +0000 (05:51 -0700)]
[PATCH] befs: maintainer update

From: "Sergey S. Kostyliov" <rathamahata@php4.ru>

Acked by Will Dyson.

22 years ago[PATCH] befs: debugging code cleanup
Andrew Morton [Fri, 14 May 2004 12:51:27 +0000 (05:51 -0700)]
[PATCH] befs: debugging code cleanup

From: "Sergey S. Kostyliov" <rathamahata@php4.ru>

- Reduce stack usage.
- Kill useless duplication of error and warning messages when debug is on. Old
behaviour was:
...
BeFS(hda1):

22 years ago[PATCH] befs: typo fix
Andrew Morton [Fri, 14 May 2004 12:51:16 +0000 (05:51 -0700)]
[PATCH] befs: typo fix

From: "Sergey S. Kostyliov" <rathamahata@php4.ru>

Fix really old typo in config help

22 years ago[PATCH] befs: binary search microoptimisation
Andrew Morton [Fri, 14 May 2004 12:51:06 +0000 (05:51 -0700)]
[PATCH] befs: binary search microoptimisation

From: "Sergey S. Kostyliov" <rathamahata@php4.ru>

Move value initialisation out of the loop body.

22 years ago[PATCH] befs: microoptimisation, use befs_bread() instead of befs_bread_iaddr()
Andrew Morton [Fri, 14 May 2004 12:50:55 +0000 (05:50 -0700)]
[PATCH] befs: microoptimisation, use befs_bread() instead of befs_bread_iaddr()

From: "Sergey S. Kostyliov" <rathamahata@php4.ru>

We already have block number (inode->i_ino), so there is no need to calculate
it from befs_block_run before sb_bread() call (this is what befs_bread_iaddr()
do).

22 years ago[PATCH] befs: LBD support
Andrew Morton [Fri, 14 May 2004 12:50:44 +0000 (05:50 -0700)]
[PATCH] befs: LBD support

From: "Sergey S. Kostyliov" <rathamahata@php4.ru>

LBD patch merged long time ago, so it is safe to pass u64 block numbers to
sb_bread() when sector_t is large enough.

22 years ago[PATCH] s390: network driver
Andrew Morton [Fri, 14 May 2004 12:50:33 +0000 (05:50 -0700)]
[PATCH] s390: network driver

From: Martin Schwidefsky <schwidefsky@de.ibm.com>

Network driver changes:
 - lcs: Add missing irb error checking.
 - lcs: Fix multicasting.
 - lcs: Use a seperate lock (ipm_lock) for multicast list.
 - lcs: Add missing in_dev_put in multicase address list handling.
 - iucv: Set static variables to NULL after kfree.
 - iucv: Do bus_unregister if module initialization fails.
 - netiucv: Convert iucvMagic to EBCDIC in con_action_start.
 - netiucv: Remove administration of ifno-stuff for device name,
 - netiucv: Add attribute to remove a netiucv device.
 - qeth: Add version string that is displayed at driver load time.
 - qeth: Fix memory leak in qeth_arp_query.
 - qeth: Remove duplicate case statements in qeth_do_ioctl.
 - qeth: Fix OSA broadcast filtering.
 - qeth: Increase timeout for purge ARP cache IPA.
 - qeth: Fix hsi device naming.
 - qeth: Add do_QDIO count to qeth performance statistics.
 - qeth: Allow writing to IP address takeover attribute only in
         state DOWN or RECOVER.
 - qeth: Fix hang when removing a vlan device.
 - qeth: Cleanup error messages for ARP commands.
 - qeth: Return EOPNOTSUPP for purge ARP on HiperSockets.
 - qeth: Drop skbs if the net_device of a qeth device is down.
 - qeth: Simplify ip address list processing.

22 years ago[PATCH] s390: zfcp host adapter
Andrew Morton [Fri, 14 May 2004 12:50:22 +0000 (05:50 -0700)]
[PATCH] s390: zfcp host adapter

From: Martin Schwidefsky <schwidefsky@de.ibm.com>

zfcp host adapter change:
 - Prevent infinite retry of SCSI commands when FCP adapter is unavailable.
 - Always queue error recovery structure to the error recovery running list.
 - Add help text to zfcp config option.

22 years ago[PATCH] s390: 3270 console driver
Andrew Morton [Fri, 14 May 2004 12:50:11 +0000 (05:50 -0700)]
[PATCH] s390: 3270 console driver

From: Martin Schwidefsky <schwidefsky@de.ibm.com>

3270 device driver change:
 - Don't allow activation of views while the initial size sensing is still
   in progress. Replace RAW3270_FLAGS_SHUTDOWN with RAW3270_FLAGS_READY.
 - Make 3270 views loadable as modules.

22 years ago[PATCH] s390: dasd driver
Andrew Morton [Fri, 14 May 2004 12:50:00 +0000 (05:50 -0700)]
[PATCH] s390: dasd driver

From: Martin Schwidefsky <schwidefsky@de.ibm.com>

dasd driver changes:
 - Do error recovery for error recovery requests.
 - Retry request if the start_IO failed because of a timeout.

22 years ago[PATCH] s390: common i/o layer
Andrew Morton [Fri, 14 May 2004 12:49:49 +0000 (05:49 -0700)]
[PATCH] s390: common i/o layer

From: Martin Schwidefsky <schwidefsky@de.ibm.com>

Common i/o layer changes:
 - Delay unregister/register of ccw devices reappering on a different
   subchannel. Search for the old ccw_device & subchannel for the
   reattached device and deregister it too to avoid inconsistencies.
 - Fix path grouping for devices that present command reject for
   SetPGID but not for SensePGID.

22 years ago[PATCH] s390: core
Andrew Morton [Fri, 14 May 2004 12:49:38 +0000 (05:49 -0700)]
[PATCH] s390: core

From: Martin Schwidefsky <schwidefsky@de.ibm.com>

s390 core changes:
 - Rename idle_cpu_mask to nohz_cpu_mask as agreed with Dipankar.
 - Refine compiler version check for "Q" constraints in uaccess.h.
 - Store per process ptrace information to the correct place.
 - Fix per cpu data access for 64-bit modules.
 - Add topology_init function for cpu hotplug.
 - Define TASK_SIZE dependent on TIF_31BIT and define MM_VM_SIZE
   to 4TB to get rid of elf_map32 and arch_get_unmapped_area.

22 years ago[PATCH] Add del_single_shot_timer()
Andrew Morton [Fri, 14 May 2004 12:49:27 +0000 (05:49 -0700)]
[PATCH] Add del_single_shot_timer()

From: Geoff Gustafson <geoff@linux.jf.intel.com>,
      "Chen, Kenneth W" <kenneth.w.chen@intel.com>,
      Ingo Molnar <mingo@elte.hu>,
      me.

The big-SMP guys are seeing high CPU load due to del_timer_sync()'s
inefficiencies.  The callers are fs/aio.c and schedule_timeout().

We note that neither of these callers' timer handlers actually re-add the
timer - they are single-shot.

So we don't need all that complexity in del_timer_sync() - we can just run
del_timer() and if that worked we know the timer is dead.

Add del_single_shot_timer(), export it to modules and use it in AIO and
schedule_timeout().

(these numbers are for an earlier patch, but they'll be close)

Before:             32p     4p
     Warm cache   29,000    505
     Cold cache   37,800   1220

After:              32p     4p
     Warm cache       95     88
     Cold cache    1,800    140

[Measurements are CPU cycles spent in a call to del_timer_sync, the average
of 1000 calls. 32p is 16-node NUMA, 4p is SMP.]

(I cleaned up a few things and added some commentary)

22 years ago[PATCH] H8/300: more cleanup
Andrew Morton [Fri, 14 May 2004 12:49:16 +0000 (05:49 -0700)]
[PATCH] H8/300: more cleanup

From: Yoshinori Sato <ysato@users.sourceforge.jp>

- gcc-3.4 warning fix.
- io access address fix.
- cleanup code.

22 years ago[PATCH] H8/300: delete headers
Andrew Morton [Fri, 14 May 2004 12:49:05 +0000 (05:49 -0700)]
[PATCH] H8/300: delete headers

From: Yoshinori Sato <ysato@users.sourceforge.jp>

- Delete obsolete header files

22 years ago[PATCH] H8/300: Kconfig
Andrew Morton [Fri, 14 May 2004 12:48:53 +0000 (05:48 -0700)]
[PATCH] H8/300: Kconfig

From: Yoshinori Sato <ysato@users.sourceforge.jp>

- Separate taget depends config.

22 years ago[PATCH] H8/300: ne driver
Andrew Morton [Fri, 14 May 2004 12:48:42 +0000 (05:48 -0700)]
[PATCH] H8/300: ne driver

From: Yoshinori Sato <ysato@users.sourceforge.jp>

- ne2k compatible NIC support

22 years ago[PATCH] H8/300: SCI driver fix
Andrew Morton [Fri, 14 May 2004 12:48:31 +0000 (05:48 -0700)]
[PATCH] H8/300: SCI driver fix

From: Yoshinori Sato <ysato@users.sourceforge.jp>

- fix h8300 depend setup sequence

22 years ago[PATCH] H8/300: preempt support
Andrew Morton [Fri, 14 May 2004 12:48:20 +0000 (05:48 -0700)]
[PATCH] H8/300: preempt support

From: Yoshinori Sato <ysato@users.sourceforge.jp>

- add preempt support
- add new syscalls
- code cleanup

22 years ago[PATCH] H/8300 pic support fix
Andrew Morton [Fri, 14 May 2004 12:48:09 +0000 (05:48 -0700)]
[PATCH] H/8300 pic support fix

From: Yoshinori Sato <ysato@users.sourceforge.jp>

Sorry. There was the file which lacked.

22 years ago[PATCH] H8/300: pic support
Andrew Morton [Fri, 14 May 2004 12:47:58 +0000 (05:47 -0700)]
[PATCH] H8/300: pic support

From: Yoshinori Sato <ysato@users.sourceforge.jp>

- add PIC binary support

22 years ago[PATCH] H8/300: ldscripts fix
Andrew Morton [Fri, 14 May 2004 12:47:47 +0000 (05:47 -0700)]
[PATCH] H8/300: ldscripts fix

From: Yoshinori Sato <ysato@users.sourceforge.jp>

- symbol prefix (use h8300 and v850) support
- include headers

22 years ago[PATCH] H8/300: bitops.h add find_next_bit
Andrew Morton [Fri, 14 May 2004 12:47:36 +0000 (05:47 -0700)]
[PATCH] H8/300: bitops.h add find_next_bit

From: Yoshinori Sato <ysato@users.sourceforge.jp>

- add find_next_bit

22 years ago[PATCH] dentry layout tweaks
Andrew Morton [Fri, 14 May 2004 12:47:27 +0000 (05:47 -0700)]
[PATCH] dentry layout tweaks

Lookup typically touches three fields of the dentry: d_bucket, d_name.hash and
d_parent.

Change the layout of things so that these will always be in the same
cacheline.

22 years ago[PATCH] more dentry shrinkage
Andrew Morton [Fri, 14 May 2004 12:47:16 +0000 (05:47 -0700)]
[PATCH] more dentry shrinkage

- d_vfs_flags can be removed - just use d_flags.  All modifications of
  dentry->d_flags are under dentry->d_lock.

On x86 this takes the internal string size up to 40 bytes.  The
internal/external ratio on my 1.5M files hits 96%.

22 years ago[PATCH] dentry d_bucket fix
Andrew Morton [Fri, 14 May 2004 12:47:06 +0000 (05:47 -0700)]
[PATCH] dentry d_bucket fix

The gap between checking d_bucket and sampling d_move_count looks like a bug
to me.

It feels safer to be checking d_bucket after taking the lock, when we know
that it is stable.

And it's a little faster to check d_bucket after having checked the hash
rather than before.

22 years ago[PATCH] dentry qstr consolidation
Andrew Morton [Fri, 14 May 2004 12:46:55 +0000 (05:46 -0700)]
[PATCH] dentry qstr consolidation

When dentries are given an external name we currently allocate an entire qstr
for the external name.

This isn't needed.  We can use the internal qstr and kmalloc only the string
itself.  This saves 12 bytes from externally-allocated names and 4 bytes from
the dentry itself.

The saving of 4 bytes from the dentry doesn't actually decrease the dentry's
storage requirements, but it makes four more bytes available for internal
names, taking the internal/external ratio from 89% up to 93% on my 1.5M files.

Fix:

The qstr consolidation wasn't quite right, because it can cause qstr->len to
be unstable during lookup lockless traverasl.

Fix that up by taking d_lock earlier in lookup.  This serialises against
d_move.

Take the lock after comparing the parent and hash to preserve the
mostly-lockless behaviour.

This obsoletes d_movecount, which is removed.

22 years ago[PATCH] dentry shrinkage
Andrew Morton [Fri, 14 May 2004 12:46:44 +0000 (05:46 -0700)]
[PATCH] dentry shrinkage

Rework dentries so that the inline name length is between 31 and 48 bytes.

On SMP P4-compiled x86 each dentry consumes 160 bytes (24 per page).

Here's the histogram of name lengths on all 1.5M files on my workstation:

1:  0%
2:  0%
3:  1%
4:  5%
5:  8%
6:  13%
7:  19%
8:  26%
9:  33%
10:  42%
11:  49%
12:  55%
13:  60%
14:  64%
15:  67%
16:  69%
17:  71%
18:  73%
19:  75%
20:  76%
21:  78%
22:  79%
23:  80%
24:  81%
25:  82%
26:  83%
27:  85%
28:  86%
29:  87%
30:  88%
31:  89%
32:  90%
33:  91%
34:  92%
35:  93%
36:  94%
37:  95%
38:  96%
39:  96%
40:  96%
41:  96%
42:  96%
43:  96%
44:  97%
45:  97%
46:  97%
47:  97%
48:  97%
49:  98%
50:  98%
51:  98%
52:  98%
53:  98%
54:  98%
55:  98%
56:  98%
57:  98%
58:  98%
59:  98%
60:  99%
61:  99%
62:  99%
63:  99%
64:  99%

So on x86 we'll fit 89% of filenames into the inline name.

The patch also removes the NAME_ALLOC_LEN() rounding-up of the storage for the
out-of-line names.  That seems unnecessary.

22 years ago[PATCH] d_vfs_flags locking fix
Andrew Morton [Fri, 14 May 2004 12:46:33 +0000 (05:46 -0700)]
[PATCH] d_vfs_flags locking fix

Be consistent about d_vfs_flags locking: take dentry->d_lock when modifying
it.

22 years ago[PATCH] d_flags locking fixes
Andrew Morton [Fri, 14 May 2004 12:46:23 +0000 (05:46 -0700)]
[PATCH] d_flags locking fixes

A few filesystems modify dentry.d_flags under non-obvious locking.  To
consolidate that field wth d_vfs_flags they need to take ->d_lock

22 years ago[PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o-makefile-cleanup.patch
Andrew Morton [Fri, 14 May 2004 12:46:12 +0000 (05:46 -0700)]
[PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o-makefile-cleanup.patch

From: Markus Lidel <Markus.Lidel@shadowconnect.com>

* The Kconfig and Makefile in drivers/message/i2o still got a CONFIG_I2O_PCI
  entry, which is not used anymore.  This one is replaced by a
  CONFIG_I2O_CONFIG entry, which now builds the i2o_config module.

22 years ago[PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o-64-bit-fix.patch
Andrew Morton [Fri, 14 May 2004 12:46:01 +0000 (05:46 -0700)]
[PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o-64-bit-fix.patch

From: Markus Lidel <Markus.Lidel@shadowconnect.com>

* provides i2o_context_list_*() functions, which maps 64-bit pointers to
  32-bit context id's in a dynamic list.  On 32-bit systems the functions are
  replaced with a static inline.

* i2o_scsi now uses the i2o_context_list_*() functions for transaction
  context, and therefore now work on 64-bit systems too.

22 years ago[PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o_block-cleanup.patch
Andrew Morton [Fri, 14 May 2004 12:45:50 +0000 (05:45 -0700)]
[PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o_block-cleanup.patch

From: Markus Lidel <Markus.Lidel@shadowconnect.com>

* more than 3 "visible" disks (hda, hdb, hdc, hdd) lead to kernel panics.

* removes some unused code with partitions.

* I2O_LOCK was often called with the addresses of the controller, and not
  with the address of the device.  Fixed.

* the cleanup function for gendisk (del_gendisk) doesn't work if the queue
  is shared between different devices.  To workaround the queue is removed
  before.

* redundant code removed in module initialization and remove, use
  i2ob_new_device and i2ob_del_device instead.

* removed atomic_t queue_depth

* removed unnecessary and bogus code for queue handling

22 years ago[PATCH] i2o: 64-bit fixes
Andrew Morton [Fri, 14 May 2004 12:45:39 +0000 (05:45 -0700)]
[PATCH] i2o: 64-bit fixes

From: Markus Lidel <Markus.Lidel@shadowconnect.com>

Fix 64-bit problems.

22 years ago[PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o-passthru.patch
Andrew Morton [Fri, 14 May 2004 12:45:29 +0000 (05:45 -0700)]
[PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o-passthru.patch

From: Markus Lidel <Markus.Lidel@shadowconnect.com>

* Add a pass-thru ioctl to i2o_config, which is needed to work with the
  Adaptec management software.

22 years ago[PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o-config-clean.patch
Andrew Morton [Fri, 14 May 2004 12:45:18 +0000 (05:45 -0700)]
[PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o-config-clean.patch

From: Markus Lidel <Markus.Lidel@shadowconnect.com>

* Changes the formating of the header in i2o_config.c

22 years ago[PATCH] Module ref counting for vt console drivers
Andrew Morton [Fri, 14 May 2004 12:45:07 +0000 (05:45 -0700)]
[PATCH] Module ref counting for vt console drivers

From: Herbert Xu <herbert@gondor.apana.org.au>

The following patch adds basic module reference counting to vt console
drivers.  Currently modules like fbcon are not counted at all.

22 years ago[PATCH] ia64 cpu hotplug: core
Andrew Morton [Fri, 14 May 2004 12:44:57 +0000 (05:44 -0700)]
[PATCH] ia64 cpu hotplug: core

From: Ashok Raj <ashok.raj@intel.com>

Supports basic ability to enable hotplug functions for IA64.
Code is just evolving, and there are several loose ends to tie up.

What this code drop does
- Support logical online and offline
- Handles interrupt migration without loss of interrupts.
- Handles stress fine > 24+ hrs with make -j/ftp/rcp workloads
- Handles irq migration from a dying cpu without loss of interrupts.

What needs to be done
- Boot CPU removal support, with platform level authentication
- Putting cpu being removed in BOOT_RENDEZ mode.

22 years ago[PATCH] Revisited: ia64-cpu-hotplug-cpu_present.patch
Andrew Morton [Fri, 14 May 2004 12:44:45 +0000 (05:44 -0700)]
[PATCH] Revisited: ia64-cpu-hotplug-cpu_present.patch

From: Paul Jackson <pj@sgi.com>

With a hotplug capable kernel, there is a requirement to distinguish a
possible CPU from one actually present.  The set of possible CPU numbers
doesn't change during a single system boot, but the set of present CPUs
changes as CPUs are physically inserted into or removed from a system.  The
cpu_possible_map does not change once initialized at boot, but the
cpu_present_map changes dynamically as CPUs are inserted or removed.

Paul Jackson <pj@sgi.com> provided an expanded explanation:

Ashok's cpu hot plug patch adds a cpu_present_map, resulting in the following
cpu maps being available.  All the following maps are fixed size bitmaps of
size NR_CPUS.

#ifdef CONFIG_HOTPLUG_CPU
cpu_possible_map - map with all NR_CPUS bits set
cpu_present_map - map with bit 'cpu' set iff cpu is populated
cpu_online_map - map with bit 'cpu' set iff cpu available to scheduler
#else
cpu_possible_map - map with bit 'cpu' set iff cpu is populated
cpu_present_map - copy of cpu_possible_map
cpu_online_map - map with bit 'cpu' set iff cpu available to scheduler
#endif

In either case, NR_CPUS is fixed at compile time, as the static size of these
bitmaps.  The cpu_possible_map is fixed at boot time, as the set of CPU id's
that it is possible might ever be plugged in at anytime during the life of
that system boot.  The cpu_present_map is dynamic(*), representing which CPUs
are currently plugged in.  And cpu_online_map is the dynamic subset of
cpu_present_map, indicating those CPUs available for scheduling.

If HOTPLUG is enabled, then cpu_possible_map is forced to have all NR_CPUS
bits set, otherwise it is just the set of CPUs that ACPI reports present at
boot.

If HOTPLUG is enabled, then cpu_present_map varies dynamically, depending on
what ACPI reports as currently plugged in, otherwise cpu_present_map is just a
copy of cpu_possible_map.

(*) Well, cpu_present_map is dynamic in the hotplug case.  If not hotplug,
    it's the same as cpu_possible_map, hence fixed at boot.

22 years ago[PATCH] ia64 cpu hotplug: /proc rework
Andrew Morton [Fri, 14 May 2004 12:44:34 +0000 (05:44 -0700)]
[PATCH] ia64 cpu hotplug: /proc rework

From: Ashok Raj <ashok.raj@intel.com>

Changes proc entries for cpu hotplug to be created via the cpu hotplug
notifier callbacks.  Also fixed a bug in the removal code that did not remove
proc entries as expected.

22 years ago[PATCH] ia64 cpu hotplug: IRQ affinity work
Andrew Morton [Fri, 14 May 2004 12:44:23 +0000 (05:44 -0700)]
[PATCH] ia64 cpu hotplug: IRQ affinity work

From: Ashok Raj <ashok.raj@intel.com>

irq affinity setting via /proc was forcing iosapic rte programming by force.
The correct way to do this is to perform this when a interrupt is pending.

22 years ago[PATCH] ia64 cpu hotplug: sysfs additions
Andrew Morton [Fri, 14 May 2004 12:44:13 +0000 (05:44 -0700)]
[PATCH] ia64 cpu hotplug: sysfs additions

From: Ashok Raj <ashok.raj@intel.com>

Creation of sysfs via topology_init() creates sysfs entries.  The creation of
the online control file is created separately when the cpu_up is invoked in
arch independent code.

22 years ago[PATCH] ia64 cpu hotplug: init section fixes
Andrew Morton [Fri, 14 May 2004 12:44:02 +0000 (05:44 -0700)]
[PATCH] ia64 cpu hotplug: init section fixes

From: Ashok Raj <ashok.raj@intel.com>

Contains changes from __init to __devinit to support cpu hotplug Changes only
arch/ia64 portions of the kernel tree.

22 years ago[PATCH] ia64 cpu hotplug: core kernel initialisation
Andrew Morton [Fri, 14 May 2004 12:43:50 +0000 (05:43 -0700)]
[PATCH] ia64 cpu hotplug: core kernel initialisation

From: Ashok Raj <ashok.raj@intel.com>

This patch changes __init to __devinit to init_idle so that when a new cpu
arrives, it can call these functions at a later time.

22 years ago[PATCH] swap speedups and fix
Andrew Morton [Fri, 14 May 2004 12:43:39 +0000 (05:43 -0700)]
[PATCH] swap speedups and fix

From: Andrea Arcangeli <andrea@suse.de>

I don't think we need an install_swap_bdev/remove_swap_bdev anymore, we should
use the swap_info->bdev, not the swap_bdevs.  the swap_info already has a
->bdev field, the only point of remove_swap_bdev/install_swap_bdev was to
unplug all devices as efficiently as possible, we don't need that anymore with
the page parameter.

Plus the semaphore should be a rwsem to allow parallel unplug from multiple
pages.

After that I don't need to take the semaphore anymore during swapon, no
swapcache with swp_type() pointing to such bdev, will be allowed until swapon
is complete (SWP_ACTIVE is set a lot later after setting p->bdev).

In swapoff I only need a dummy serialization with the readers, after
try_to_unuse is complete:

  err = try_to_unuse(type);
  current->flags &= ~PF_SWAPOFF;

  /* wait for any unplug function to finish */
  down_write(&swap_unplug_sem);
  up_write(&swap_unplug_sem);

that's all, no other locking and no install_swap_bdev/remove_swap_bdev.

(and the swap_bdevs[] compression code was busted)

22 years ago[PATCH] blk_run_page(): we don't trust bh->b_page
Andrew Morton [Fri, 14 May 2004 12:43:29 +0000 (05:43 -0700)]
[PATCH] blk_run_page(): we don't trust bh->b_page

We don't trust bh->b_page to point to the right thing across all filesystems,
so revert this bit.

22 years ago[PATCH] blk_run_page(): fixup for swap_unplug_io_fn()
Andrew Morton [Fri, 14 May 2004 12:43:18 +0000 (05:43 -0700)]
[PATCH] blk_run_page(): fixup for swap_unplug_io_fn()

22 years ago[PATCH] Add blk_run_page()
Andrew Morton [Fri, 14 May 2004 12:43:07 +0000 (05:43 -0700)]
[PATCH] Add blk_run_page()

From: Andrea Arcangeli <andrea@suse.de>

From: Jens Axboe

Add blk_run_page() API.  This is so that we can pass the target page all the
way down to (for example) the swap unplug function.  So swap can work out
which blockdevs back this particular page.

22 years ago[PATCH] rmap-5-swap_unplug-page-revert
Andrew Morton [Fri, 14 May 2004 12:42:56 +0000 (05:42 -0700)]
[PATCH] rmap-5-swap_unplug-page-revert

Revert the pre-2.6.6 per-address-space unplugging changes.  This removes a
swapper_space exceptionality, syncs things with Andrea and provides for
simplification of the swap unplug function.

22 years ago[PATCH] rename rmap_lock to page_map_lock
Andrew Morton [Fri, 14 May 2004 12:42:45 +0000 (05:42 -0700)]
[PATCH] rename rmap_lock to page_map_lock

Sync this up with Andrea's patches.

22 years ago[PATCH] filtered wakeups: apply to buffer_head functions
Andrew Morton [Fri, 14 May 2004 12:42:34 +0000 (05:42 -0700)]
[PATCH] filtered wakeups: apply to buffer_head functions

From: William Lee Irwin III <wli@holomorphy.com>

This patch implements wake-one semantics for buffer_head wakeups in a single
step.  The buffer_head being waited on is passed to the waiter's wakeup
function by the waker, and the wakeup function compares that to the a pointer
stored in its on-stack structure and checking the readiness of the bit there
also.  Wake-one semantics are achieved by using WQ_FLAG_EXCLUSIVE in the
codepaths waiting to acquire the bit for mutual exclusion.

22 years ago[PATCH] filtered wakeups: apply to pagecache functions
Andrew Morton [Fri, 14 May 2004 12:42:25 +0000 (05:42 -0700)]
[PATCH] filtered wakeups: apply to pagecache functions

From: William Lee Irwin III <wli@holomorphy.com>

This patch implements wake-one semantics for page wakeups in a single step.
Discrimination between distinct pages is achieved by passing the page to the
wakeup function, which compares it to a pointer in its own on-stack structure
containing the waitqueue element and the page.  Bit discrimination is achieved
by storing the bit number in that same structure and testing the bit in the
wakeup function.  Wake-one semantics are achieved by using WQ_FLAG_EXCLUSIVE
in the codepaths waiting to acquire the bit for mutual exclusion.

22 years ago[PATCH] filtered wakeups: wakeup enhancements
Andrew Morton [Fri, 14 May 2004 12:42:14 +0000 (05:42 -0700)]
[PATCH] filtered wakeups: wakeup enhancements

From: William Lee Irwin III <wli@holomorphy.com>

This patch provides an additional argument to __wake_up_common() so that the
information wakefunc.patch made waiters ready to receive may be passed to them
by wakers.  This is provided as a separate patch so that the overhead of the
additional argument to __wake_up_common() can be measured in isolation.  No
change in performance was observable here.

22 years ago[PATCH] filtered wakeups
Andrew Morton [Fri, 14 May 2004 12:42:03 +0000 (05:42 -0700)]
[PATCH] filtered wakeups

From: William Lee Irwin III <wli@holomorphy.com>

This patch series is solving the "thundering herd" problem that occurs in the
mainline implementation of hashed waitqueues.  There are two sources of
spurious wakeups in such arrangements:

(a) Hash collisions that place waiters on different objects on the same
    waitqueue, which wakes threads falsely when any of the objects hashed to
    the same queue receives a wakeup.  i.e.  loss of information about which
    object a wakeup event is related to.

(b) Loss of information about which object a given waiter is waiting on.
    This precludes wake-one semantics for mutual exclusion scenarios.  For
    instance, a lock bit may be slept on.  If there are any waiters on the
    object, a lock bit release event must wake at least one of them so as to
    prevent deadlock.  But without information as to which waiter is waiting
    on which object, we must resort to waking all waiters who could possibly
    be waiting on it.  Now, as the lock bit provides mutual exclusion, only
    one of the waiters woken can proceed, and the remainder will go back to
    sleep and wait for another event, creating unnecessary system load.  Once
    wake-one semantics are established, only one of the waiters waiting to
    acquire a lock bit need to be woken, which measurably reduces system load
    and improves efficiency (i.e.  it's the subject of the benchmarking I've
    been sending to you).

Even beyond the measurable efficiency gains, there are reasons of robustness
and responsiveness to motivate addressing the issue of thundering herds.  In a
real-life scenario I've been personally involved in resolving, the thundering
herd issue caused powerful modern SMP machines with fast IO systems to be
unresponsive to user input for a minute at a time or more.  Analogues of these
patches for the distro kernels involved fully resolved the issue to the
customer's satisfaction and obviated workarounds to limit the pagecache's
size.

The latest spin of these patches basically shoves more pieces of the logic
into the wakeup functions, with some efficiency gains from sharing the hot
codepath with the rest of the kernel, and a slightly larger diff than the
patches with the newly-introduced entrypoint.  Writing these was motivated by
the push to insulate sched.c from more of the details of wakeup semantics by
putting more of the logic into the wakeup functions.  In order to accomplish
this while still solving (b), the wakeup functions grew a new argument for
communication about what object a wakeup event is related to to be passed by
the waker.

=========

This patch provides an additional argument to wakeup functions so that
information may be passed from the waker to the waiter.  This is provided as a
separate patch so that the overhead of the additional argument can be measured
in isolation.  No change in performance was observable here.

22 years ago[PATCH] do_mounts_rd-malloc-fix
Andrew Morton [Fri, 14 May 2004 12:41:52 +0000 (05:41 -0700)]
[PATCH] do_mounts_rd-malloc-fix

gcc-3.4.0 sez:

init/do_mounts_rd.c:309: warning: conflicting types for built-in function 'malloc'

22 years ago[PATCH] VM accounting fix
Andrew Morton [Fri, 14 May 2004 12:41:41 +0000 (05:41 -0700)]
[PATCH] VM accounting fix

From: Hugh Dickins <hugh@veritas.com>

Stas Sergeev <stsp@aknet.ru> wrote:

   mprotect() fails to merge VMAs because one VMA can end up with
   VM_ACCOUNT flag set, and another without that flag.  That makes several
   apps of mine to malfuncate.

Great find!  Someone has got their test the wrong way round.  Since that
VM_MAYACCT macro is being used in one place only, and just hiding what it's
actually about, fold it into its callsite.

22 years ago[PATCH] revert the process-migration-speedup patch
Andrew Morton [Fri, 14 May 2004 12:41:31 +0000 (05:41 -0700)]
[PATCH] revert the process-migration-speedup patch

David Mosberger asked that this be backed out:

"I do not believe that flushing the TLB before migration is be the right thing
to do on ia64 machines which support global TLB purges (i.e., all but SGI's
machines)."

It was of huge benefit for the SGI machines, so work is ongoing.

22 years ago[PATCH] MSEC_TO_JIFFIES to msec_to_jiffies
Andrew Morton [Fri, 14 May 2004 12:41:20 +0000 (05:41 -0700)]
[PATCH] MSEC_TO_JIFFIES to msec_to_jiffies

Switch all users of MSEC[S]_TO_JIFFIES and JIFFIES_TO_MSEC[S] over to use
jiffies_to_msecs() and msecs_to_jiffies().  Withdraw MSECS_TO_JIFFIES() and
JIFFIES_TO_MSECS() from the kernel API.

22 years ago[PATCH] Covert drivers to use msec_to_jiffies
Andrew Morton [Fri, 14 May 2004 12:41:08 +0000 (05:41 -0700)]
[PATCH] Covert drivers to use msec_to_jiffies

Remove various private implementations of msecs_to_jiffies() and
jiffies_to_msecs().

There are various uppercase versions which should be consolidated.

22 years ago[PATCH] MSEC_TO_JIFFIES consolidation
Andrew Morton [Fri, 14 May 2004 12:40:57 +0000 (05:40 -0700)]
[PATCH] MSEC_TO_JIFFIES consolidation

From: Ingo Molnar <mingo@elte.hu>

We have various different implementations of MSEC[S]_TO_JIFFIES and
JIFFIES_TO_MSEC[S].  We recently had a compile-time clash in USB.

Fix all that up.

- The SCTP version was very inefficient.  Hopefully this version is accurate
  enough.

- Optimise for the HZ=100 and HZ=1000 cases

- This version does round-up, so sleep(9 milliseconds) works OK on 100HZ.

- We still have lots of jiffies_to_msec and msec_to_jiffies implementations.

From: William Lee Irwin III <wli@holomorphy.com>

  Optimize the cases where HZ is a divisor of 1000 or vice-versa in
  JIFFIES_TO_MSECS() and MSECS_TO_JIFFIES() by allowing the nonvanishing(!)
  integral ratios to appear as a parenthesized expressions eligible for
  constant folding optimizations.

From: me

  Use typesafe inlines for the jiffies-to-millisecond conversion functions.

  This means that milliseconds officially takes the type `unsigned int'.
  All current callers seem to be OK with that.

  Drivers need to be fixed up to use this instead of their private versions.

22 years ago[PATCH] sched: add missing local_irq_enable()
Andrew Morton [Fri, 14 May 2004 12:40:46 +0000 (05:40 -0700)]
[PATCH] sched: add missing local_irq_enable()

From: Nick Piggin <nickpiggin@yahoo.com.au>

this_rq_lock does a local_irq_disable, and sched_yield() needs to undo that.

22 years ago[PATCH] Fix page double-freeing race
Andrew Morton [Fri, 14 May 2004 12:40:34 +0000 (05:40 -0700)]
[PATCH] Fix page double-freeing race

This has been there for nearly two years.  See bugzilla #1403

vmscan.c does, in two places:

spin_lock(zone->lru_lock)
page = lru_to_page(&zone->inactive_list);
if (page_count(page) == 0) {
/* erk, it's being freed by __page_cache_release() or
 * release_pages()
 */
put_it_back_on_the_lru();

} else {

--> window 1 <--

page_cache_get(page);
put_in_on_private_list();
}
spin_unlock(zone->lru_lock)

use_the_private_list();

page_cache_release(page);

whereas __page_cache_release() and release_pages() do:

if (put_page_testzero(page)) {

--> window 2 <--

spin_lock(lru->lock);
if (page_count(page) == 0) {
remove_it_from_the_lru();
really_free_the_page()
}
spin_unlock(zone->lru_lock)
}

The race occurs if the vmscan.c path sees page_count()==1 and then the
page_cache_release() path happens in that few-instruction "window 1" before
vmscan's page_cache_get().

The page_cache_release() path does put_page_testzero(), which returns true.
Then this CPU takes an interrupt...

The vmscan.c path then does page_cache_get(), taking the refcount to one.
Then it uses the page and does page_cache_release(), taking the refcount to
zero and the page is really freed.

Now, the CPU running page_cache_release() returns from the interrupt, takes
the LRU lock, sees the page still has a refcount of zero and frees it again.
Boom.

The patch fixes this by closing "window 1".  We provide a
"get_page_testone()" which grabs a ref on the page and returns true if the
refcount was previously zero.  If that happens the vmscan.c code simply drops
the page's refcount again and leaves the page on the LRU.

All this happens under the zone->lru_lock, which is also taken by
__page_cache_release() and release_pages(), so the vmscan code knows that the
page has not been returned to the page allocator yet.

In terms of implementation, the page counts are now offset by one: a free page
has page->_count of -1.  This is so that we can use atomic_add_negative() and
atomic_inc_and_test() to provide put_page_testzero() and get_page_testone().

The macros hide all of this so the public interpretation of page_count() and
set_page_count() remains unaltered.

The compiler can usually constant-fold the offsetting of page->count.  This
patch increases an x86 SMP kernel's text by 32 bytes.

The patch renames page->count to page->_count to break callers who aren't
using the macros.

This patch requires that the architecture implement atomic_add_negative().  It
is currently present on

arm
arm26
i386
ia64
mips
ppc
s390
v850
x86_64

ppc implements this as

#define atomic_add_negative(a, v) (atomic_add_return((a), (v)) < 0)

and atomic_add_return() is implemented on

alpha
cris
h8300
ia64
m68knommu
mips
parisc
ppc
ppc
ppc64
s390
sh
sparc
v850

so we're looking pretty good.

22 years ago[PATCH] sparc64: implement atomic_add_negative()
Andrew Morton [Fri, 14 May 2004 12:40:23 +0000 (05:40 -0700)]
[PATCH] sparc64: implement atomic_add_negative()

22 years ago[PATCH] ia64 atomic_inc_and_test fix
Andrew Morton [Fri, 14 May 2004 12:40:13 +0000 (05:40 -0700)]
[PATCH] ia64 atomic_inc_and_test fix

From: David Mosberger <davidm@napali.hpl.hp.com>

22 years ago[PATCH] alpha: atomic_inc_and_test()
Andrew Morton [Fri, 14 May 2004 12:40:02 +0000 (05:40 -0700)]
[PATCH] alpha: atomic_inc_and_test()

From: Ivan Kokshaysky <ink@jurassic.park.msu.ru>

It seems atomic_inc_and_test() is missing on alpha.

22 years ago[PATCH] Implement atomic_inc_and_test() on various architectures
Andrew Morton [Fri, 14 May 2004 12:39:51 +0000 (05:39 -0700)]
[PATCH] Implement atomic_inc_and_test() on various architectures

It's easy to do when the arch provides atomic_inc_return().

22 years ago[PATCH] Implement atomic_add_negative() on various architectures
Andrew Morton [Fri, 14 May 2004 12:39:40 +0000 (05:39 -0700)]
[PATCH] Implement atomic_add_negative() on various architectures

Lots of architectures have atomic_add_return() and no atomic_add_negative().

We can implement the latter in terms of the former.

22 years ago[PATCH] Make users of page->count use the provided macros
Andrew Morton [Fri, 14 May 2004 12:39:29 +0000 (05:39 -0700)]
[PATCH] Make users of page->count use the provided macros

I'm about to change the meaning (and name) of page->count.  Go through and fix
up all those places which are open-coding references to it.

22 years agoMerge redhat.com:/spare/repo/linux-2.6
Jeff Garzik [Fri, 14 May 2004 16:48:09 +0000 (12:48 -0400)]
Merge redhat.com:/spare/repo/linux-2.6
into redhat.com:/spare/repo/net-drivers-2.6

22 years agoMerge bk://kernel.bkbits.net/gregkh/linux/i2c-2.6
Linus Torvalds [Fri, 14 May 2004 09:46:22 +0000 (02:46 -0700)]
Merge bk://kernel.bkbits.net/gregkh/linux/i2c-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux

22 years agoMerge bk://kernel.bkbits.net/gregkh/linux/driver-2.6
Linus Torvalds [Fri, 14 May 2004 09:26:40 +0000 (02:26 -0700)]
Merge bk://kernel.bkbits.net/gregkh/linux/driver-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux