linux/drivers
Alexander Schmidt 6773f079b7 IB/ehca: Discard double CQE for one WR
Under rare circumstances, the ehca hardware might erroneously generate
two CQEs for the same WQE, which is not compliant to the IB spec and
will cause unpredictable errors like memory being freed twice. To
avoid this problem, the driver needs to detect the second CQE and
discard it.

For this purpose, introduce an array holding as many elements as the
SQ of the QP, called sq_map. Each sq_map entry stores a "reported"
flag for one WQE in the SQ. When a work request is posted to the SQ,
the respective "reported" flag is set to zero. After the arrival of a
CQE, the flag is set to 1, which allows to detect the occurence of a
second CQE.

The mapping between WQE / CQE and the corresponding sq_map element is
implemented by replacing the lowest 16 Bits of the wr_id with the
index in the queue map. The original 16 Bits are stored in the sq_map
entry and are restored when the CQE is passed to the application.

Signed-off-by: Alexander Schmidt <alexs@linux.vnet.ibm.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2008-08-12 11:34:59 -07:00
..
accessibility
acpi Remove newline from the description of module parameters 2008-08-01 12:46:41 -07:00
amba
ata pata_it821x: Driver updates and reworking 2008-07-31 02:04:50 -04:00
atm atm: fix direct casts of pointers to u32 in the InterPhase driver 2008-07-30 16:33:05 -07:00
auxdisplay auxdisplay: small cleanups 2008-07-24 10:47:41 -07:00
base Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-08-01 11:52:39 -07:00
block xen-blkfront.c: make blkif_ioctl() static 2008-08-06 12:30:04 +02:00
bluetooth [Bluetooth] Add full quirk implementation for btusb driver 2008-08-07 22:26:56 +02:00
cdrom cdrom: don't check CDC_PLAY_AUDIO in cdrom_count_tracks() 2008-08-05 18:17:02 +02:00
char Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-08-08 11:15:23 -07:00
clocksource Fix printk format warning in clocksource/acpi_pm.c 2008-07-15 11:01:39 -07:00
connector
cpufreq cpufreq acpi: only call _PPC after cpufreq ACPI init funcs got called already 2008-07-30 09:41:43 -07:00
cpuidle ACPI/CPUIDLE: prevent setting pm_idle to NULL 2008-07-28 08:31:58 -07:00
crypto crypto: talitos - sparse fix 2008-07-17 20:20:59 +08:00
dca Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx 2008-07-23 12:03:18 -07:00
dio dio: use dio_match_device() in dio_bus_match() 2008-07-20 17:24:40 -07:00
dma list.h: Add list_splice_tail() and list_splice_tail_init() 2008-08-07 09:49:42 -04:00
edac edac: mpc85xx fix pci ofdev 2nd pass 2008-07-25 10:53:49 -07:00
eisa driver core: remove DEVICE_NAME_SIZE define 2008-07-21 21:54:53 -07:00
firewire Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2008-08-06 12:03:43 -07:00
firmware iscsi_ibft_find: fix modpost warning 2008-07-30 09:41:44 -07:00
gpio gpio: max732x driver 2008-07-25 10:53:30 -07:00
gpu Remove newline from the description of module parameters 2008-08-01 12:46:41 -07:00
hid Merge branches 'upstream' and 'upstream-fixes' into for-linus 2008-07-23 15:26:10 +02:00
hwmon hwmon: (it87) Support for 16-bit fan reading in it8705 >= rev 0x03 2008-08-06 22:41:06 +02:00
i2c i2c: Blackfin I2C Driver: Functional power management support 2008-07-28 12:41:03 +01:00
ide ide: ->cable_detect method cannot be marked __devinit 2008-08-05 18:17:04 +02:00
ieee1394 PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
infiniband IB/ehca: Discard double CQE for one WR 2008-08-12 11:34:59 -07:00
input sparc: i8042-sparcio.h: fix warning 2008-08-06 02:43:24 -07:00
isdn Add DIP switch readout for HFC-4S IOB4ST 2008-08-02 16:40:37 +02:00
leds leds: Ensure led->trigger is set earlier 2008-07-23 09:49:56 +01:00
lguest lguest: use cpu capability accessors 2008-07-29 09:58:34 +10:00
macintosh remove unnecessary <linux/hdreg.h> includes 2008-08-05 18:16:58 +02:00
mca driver core: remove DEVICE_NAME_SIZE define 2008-07-21 21:54:53 -07:00
md Merge branch 'for-linus' of git://neil.brown.name/md 2008-08-01 11:56:07 -07:00
media V4L/DVB (8617): uvcvideo: don't use stack-based buffers for USB transfers. 2008-08-06 06:57:37 -03:00
memstick memstick: use fully asynchronous request processing 2008-07-26 12:00:04 -07:00
message Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 2008-07-27 10:04:52 -07:00
mfd mfd: accept pure device as a parent, not only platform_device 2008-07-29 01:30:26 +02:00
misc Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2008-08-06 11:46:39 -07:00
mmc au1xmmc: raise segment size limit. 2008-08-01 19:04:26 +02:00
mtd Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2008-08-03 10:39:02 -07:00
net bnx2x: fix logical op 2008-08-07 20:33:19 -07:00
nubus
of spi: Add OF binding support for SPI busses 2008-07-25 22:34:40 -04:00
oprofile
parisc
parport make parport_cs_release() static 2008-07-26 12:00:11 -07:00
pci PCI: add D3 power state avoidance quirk 2008-07-28 15:12:11 -07:00
pcmcia Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-fixes-2.6 2008-08-04 17:14:21 -07:00
pnp PNP: fix formatting of dbg_pnp_show_resources() output 2008-08-01 12:46:41 -07:00
power Merge branch 'master' of /home/cbou/linux-2.6 2008-07-30 02:05:23 +04:00
ps3
rapidio
regulator regulator: TI bq24022 Li-Ion Charger driver 2008-07-30 10:10:23 +01:00
rtc blackfin RTC driver: drop PIE/stopwatch code since the hardware can only do a max of 1HZ and this same functionality is provided by UIE 2008-08-05 14:33:48 -07:00
s390 [S390] qeth: avoid use of include/asm-s390 2008-08-01 16:39:36 +02:00
sbus sparc64: fix up bus_id changes in sparc core code 2008-07-21 21:55:03 -07:00
scsi Re-introduce "[SCSI] extend the last_sector_bug flag to cover more sectors" 2008-08-05 21:42:21 -07:00
serial cris: Fixup compile problems 2008-08-04 17:12:07 -07:00
sh sh: Fix up broken kerneldoc comments. 2008-08-04 12:51:06 +09:00
sn
spi spi: new orion_spi driver 2008-08-05 14:33:46 -07:00
ssb
tc
telephony ixj: push BKL into driver and wrap ioctls 2008-07-25 10:53:43 -07:00
thermal
uio UIO: add generic UIO platform driver 2008-07-21 21:54:55 -07:00
usb list.h: Add list_splice_tail() and list_splice_tail_init() 2008-08-07 09:49:42 -04:00
video atyfb_base.c: fix warning 2008-08-05 14:33:49 -07:00
virtio virtio: Add transport feature handling stub for virtio_ring. 2008-07-25 12:06:14 +10:00
w1 w1/ds2482: Convert to a new-style driver 2008-07-16 19:30:07 +02:00
watchdog Fix up duplicate '__s3c2410wdt_stop()' function 2008-08-07 18:10:12 -07:00
xen sysdev: Pass the attribute to the low level sysdev show/store function 2008-07-21 21:55:02 -07:00
zorro move memory_read_from_buffer() from fs.h to string.h 2008-07-24 10:47:13 -07:00
Kconfig
Makefile regulator: core kbuild files 2008-07-30 10:10:22 +01:00