Alexandre Bounine
e8de370188
rapidio: add mport char device driver
...
Add mport character device driver to provide user space interface to
basic RapidIO subsystem operations.
See included Documentation/rapidio/mport_cdev.txt for more details.
[akpm@linux-foundation.org: fix printk warning on i386]
[dan.carpenter@oracle.com: mport_cdev: fix some error codes]
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com>
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Tested-by: Barry Wood <barry.wood@idt.com>
Cc: Matt Porter <mporter@kernel.crashing.org>
Cc: Aurelien Jacquiot <a-jacquiot@ti.com>
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com>
Cc: Barry Wood <barry.wood@idt.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2016-03-22 15:36:02 -07:00
Alexandre Bounine
458bdf6e39
rapidio/tsi721_dma: fix hardware error handling
...
Add DMA channel re-initialization after an error to avoid termination of
all pending transfer requests.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Reported-by: Barry Wood <barry.wood@idt.com >
Tested-by: Barry Wood <barry.wood@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Cc: Barry Wood <barry.wood@idt.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
e680b672a2
rapidio/tsi721_dma: fix synchronization issues
...
Fix synchronization issues found during testing using multiple DMA
transfer requests to the same channel:
- lost MSI-X interrupt notifications
- non-synchronized attempts to start DMA channel HW resulting in error
message from the driver
- cookie tracking/update race conditions resulting in incorrect DMA
transfer status report
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Reported-by: Barry Wood <barry.wood@idt.com >
Tested-by: Barry Wood <barry.wood@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Cc: Barry Wood <barry.wood@idt.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
8347245750
rapidio/tsi721_dma: update error reporting from prep_sg callback
...
Switch to returning error-valued pointer instead of simple NULL pointer.
This allows to properly identify situation when request queue is full
and therefore gives to upper layer an option to retry operation later.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
72d8a0d230
rapidio/tsi721: add filtered debug output
...
Replace "all-or-nothing" debug output with controlled debug output using
functional block masks. This allows run time control of debug messages
through 'dbg_level' module parameter.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
1679e8dabf
rapidio/tsi721: add outbound windows mapping support
...
Add device-specific callback functions to support outbound windows
mapping and release.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
93bdaca501
rapidio: add outbound window support
...
Add RapidIO controller (mport) outbound window configuration operations.
This patch is a part of the original patch submitted by Li Yang:
https://lists.ozlabs.org/pipermail/linuxppc-dev/2009-April/071210.html
For some reason the original part was not applied to mainline code
tree. The inbound window mapping part has been applied later during
tsi721 mport driver submission. Now goes the second part with
corresponding HW support.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Li Yang <leoli@freescale.com >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
2ece1caf66
rapidio/tsi721: fix locking in OB_MSG processing
...
- Add spinlock protection into outbound message queuing routine.
- Change outbound message interrupt handler to avoid deadlock when
calling registered callback routine.
- Allow infinite retries for outbound messages to avoid retry threshold
error signaling in systems with nodes that have slow message receive
queue processing.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
9a0b062742
rapidio: add global inbound port write interfaces
...
Add new Port Write handler registration interfaces that attach PW
handlers to local mport device objects. This is different from old
interface that attaches PW callback to individual RapidIO device. The
new interfaces are intended for use for common event handling (e.g.
hot-plug notifications) while the old interface is available for
individual device drivers.
This patch is based on patch proposed by Andre van Herk but preserves
existing per-device interface and adds lock protection for list
handling.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Cc: Stephen Rothwell <sfr@canb.auug.org.au >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
b6cb95e8eb
rapidio: move rio_pw_enable into core code
...
Make rio_pw_enable() routine available to other RapidIO drivers.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
5024622f58
rapidio: move rio_local_set_device_id function to the common core
...
Make function rio_local_set_device_id() common for all components of
RapidIO subsystem.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
a7b4c636d8
rapidio: add lock protection for doorbell list
...
Add lock protection around doorbell list handling to prevent list
corruption on SMP platforms.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
748353cc2d
rapidio/tsi721: add HW specific mport removal
...
Add hardware-specific device removal support for Tsi721 PCIe-to-RapidIO
bridge. To avoid excessive data type conversions, parameters passed to
some internal functions have been revised. Dynamic memory allocations
of rio_mport and rio_ops have been replaced to reduce references between
data structures.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
b77a2030df
rapidio: add core mport removal support
...
Add common mport removal support functions into the RapidIO subsystem
core.
Changes to the existing mport registration process have been made to
avoid race conditions with active subsystem interfaces immediately after
mport device registration: part of initialization code from
rio_register_mport() have been moved into separate function
rio_mport_initialize() to allow to perform mport registration as the
final step of setup process.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
e6b585ca6e
rapidio: move net allocation into core code
...
Make net allocation/release routines available to all components of
RapidIO subsystem by moving code from rio-scan enumerator.
Make destination ID allocation method private to existing enumerator
because other enumeration methods can use their own algorithm.
Setup net device object as a parent of all RapidIO devices residing in
it and register net as a child of active mport device.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
b74ec56e8a
rapidio: rework common RIO device add/delete routines
...
This patch moves per-net device list handling from rio-scan to common
RapidIO core and adds a matching device deletion routine. This makes
device object creation/removal available to other implementations of
enumeration/discovery process.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
e3dd8cd477
rapidio/tsi721: add shutdown notification callback
...
Add device driver specific shutdown notification callback.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
83dc2cbc11
rapidio: add shutdown notification for RapidIO devices
...
Add bus-specific callback to stop RapidIO devices during a system
shutdown.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
dbe74afe6a
rapidio/tsi721: add query_mport callback
...
Add device-specific implementation of query_mport callback function.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
8b189fdbc5
rapidio: add query_mport operation
...
Add mport query operation to report master port RapidIO capabilities and
run time configuration to upper level drivers.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
d2a321f37e
rapidio/tsi721_dma: fix pending transaction queue handling
...
Fix pending DMA request queue handling to avoid broken ordering during
concurrent request submissions.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
9673b883c2
rapidio/tsi721: add option to configure direct mapping of IB window
...
Add an option to configure mapping of Inbound Window without RIO-to-PCIe
address translation.
If a local memory buffer is not properly aligned to meet HW requirements
for RapidIO address mapping with address translation, caller can request
an inbound window with matching RapidIO address assigned to it. This
implementation selects RapidIO base address and size for inbound window
that are capable to accommodate the local memory buffer.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
ba5d141b55
rapidio/tsi721: add check for overlapped IB window mappings
...
Add check for attempts to request mapping of inbound RapidIO address
space that overlaps with existing active mapping windows.
Tsi721 device does not support overlapped inbound windows and SRIO
address decoding behavior is not defined in such cases.
This patch is applicable to kernel versions starting from v3.7.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Alexandre Bounine
174f1a71cc
rapidio/tsi721: fix hardcoded MRRS setting
...
Remove use of hardcoded setting for Maximum Read Request Size (MRRS)
value and use one set by PCIe bus driver.
Using hardcoded value can cause PCIe bus errors on platforms that have
tsi721 device on PCIe path that allows only smaller read request sizes.
This fix is applicable to kernel versions starting from v3.2.
Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com >
Cc: Matt Porter <mporter@kernel.crashing.org >
Cc: Aurelien Jacquiot <a-jacquiot@ti.com >
Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com >
Signed-off-by: Andrew Morton <akpm@linux-foundation.org >
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org >
2016-03-22 15:36:02 -07:00
Toshi Kani
9a975bee4b
drivers: Initialize resource entry to zero
...
I/O resource descriptor, 'desc' in struct resource, needs to be
initialized to zero by default. Some drivers call kmalloc() to
allocate a resource entry, but do not initialize it to zero by
memset(). Change these drivers to call kzalloc(), instead.
Signed-off-by: Toshi Kani <toshi.kani@hpe.com >
Signed-off-by: Borislav Petkov <bp@suse.de >
Acked-by: Alexandre Bounine <alexandre.bounine@idt.com >
Acked-by: Helge Deller <deller@gmx.de >
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com >
Acked-by: Simon Horman <horms+renesas@verge.net.au >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Andy Lutomirski <luto@amacapital.net >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Brian Gerst <brgerst@gmail.com >
Cc: Denys Vlasenko <dvlasenk@redhat.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Luis R. Rodriguez <mcgrof@suse.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: Toshi Kani <toshi.kani@hp.com >
Cc: linux-acpi@vger.kernel.org
Cc: linux-arch@vger.kernel.org
Cc: linux-mm <linux-mm@kvack.org >
Cc: linux-parisc@vger.kernel.org
Cc: linux-renesas-soc@vger.kernel.org
Cc: linux-sh@vger.kernel.org
Link: http://lkml.kernel.org/r/1453841853-11383-10-git-send-email-bp@alien8.de
Signed-off-by: Ingo Molnar <mingo@kernel.org >
2016-01-30 09:49:58 +01:00