27 Sep, 2016
2 commits
-
When performing DMA operations on a MCB device, the device needed
for using the DMA API is "mcb_device->bus_carrier".
This is rather lengthy, so a shortcut is introduced to struct mcb_device
in order to ensure the MCB device driver uses the correct device for DMA
operations.Signed-off-by: Michael Moese
Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman -
In order to successfully perform DMA operations on PCI devices,
it is necessary to enble PCI bus mastering, so enable it by default.Signed-off-by: Michael Moese
Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman
31 Aug, 2016
3 commits
-
The MEN Chameleon specification states that a chameleon FPGA can include a
bridge descriptor, which then opens up a new bus behind this bridge. MCB
included subdevice handling code in the core, but no support for bus
descriptors in the parser, due to a lack of hardware access.As this is technically dead code, but it gets executed on a device add,
I've decided to remove it.Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman -
Added support for the bar descriptor. This type is used for FPGAs
connect to the LPC or to a non PCI bus.The Bar descriptor could have a maximum of 6 BARs. Each of the
devices within the FPGA could be mapped to a different BAR.
The BAR descriptor is comparable to the PCI header.Signed-off-by: Andreas Werner
[ free bar descriptor in the non-error case ]
Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman -
Add support for MCB bases FPGAs connected to the LPC or
non PCI Bus.This driver currently supports the SC24 board. The FPGA
is connected to the LPC bus and is identified using the BIOS
DMI string.Signed-off-by: Andreas Werner
Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman
14 Jun, 2016
2 commits
-
Acquire a reference to the carrier's kernel module in bus code, so
it can't be removed from the kernel while it still has a bus and thus
possibly devices attached to it.Signed-off-by: Johannes Thumshirn
Reported-by: Andreas Werner
Tested-by: Andreas Werner
Signed-off-by: Greg Kroah-Hartman -
mcb_probe() does not aqcuire a reference to the probed device but drops one
when removing the device. As it is actually using the device, it should grab
a reference via get_device().This could lead to a panic found with a rmmod/modprobe stress test
Signed-off-by: Johannes Thumshirn
Reported-by: Andreas Werner
Tested-by: Andreas Werner
Signed-off-by: Greg Kroah-Hartman
04 May, 2016
6 commits
-
The num_cells variable is only used in the dev_dbg print,
but we can directly use the ret variable which also includes the same
value.Signed-off-by: Andreas Werner
Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman -
The bar number is found in reg2 within the gdd. Therefore
we need to change the assigment from reg1 to reg2 which
is the correct location.Signed-off-by: Andreas Werner
Fixes: '3764e82e5' drivers: Introduce MEN Chameleon Bus
Cc: stable@vger.kernel.org # v3.15+
Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman -
Replaced ioremap with devm_ioremap and request_mem_region with
devm_request_mem_region. This makes the code much more cleaner.Signed-off-by: Andreas Werner
Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman -
The mcb_bus structure previously was released in mcb_release_bus. This lead to
the following warning on module unload:------------[ cut here ]------------
WARNING: CPU: 1 PID: 2032 at drivers/base/core.c:251 device_release+0x73/0x90
Device 'mcb:0' does not have a release() function, it is broken and must be fixed.
Modules linked in: men_z135_uart mcb_pci(-) mcb
CPU: 1 PID: 2032 Comm: rmmod Not tainted 4.6.0-rc4+ #3
Hardware name: N/A N/A/COMe-mBTi10, BIOS MVV1R921 X64 10/14/2015
00000286 00000286 c0117de4 c12d6f16 c0117e2c c18be0d3 c0117dfc c104f6e1
000000fb f5ccbe08 f5ccbe00 f5c64600 c0117e18 c104f728 00000009 00000000
c0117e10 c18db674 c0117e2c c0117e3c c13ce5c3 c18be0d3 000000fb c18db674
Call Trace:
[] dump_stack+0x47/0x61
[] __warn+0xc1/0xe0
[] warn_slowpath_fmt+0x28/0x30
[] device_release+0x73/0x90
[] kobject_release+0x34/0x80
[] ? kobject_del+0x2d/0x40
[] kobject_put+0x25/0x50
[] put_device+0xf/0x20
[] klist_devices_put+0xb/0x10
[] klist_next+0x73/0xf0
[] ? unbind_store+0x100/0x100
[] ? mcb_bus_add_devices+0x30/0x30 [mcb]
[] bus_for_each_dev+0x51/0x80
[] mcb_release_bus+0x19/0x40 [mcb]
[] ? mcb_bus_add_devices+0x30/0x30 [mcb]
[] mcb_pci_remove+0x13/0x20 [mcb_pci]
[] pci_device_remove+0x28/0xb0
[] __device_release_driver+0x7b/0x110
[] driver_detach+0x87/0x90
[] bus_remove_driver+0x3b/0x80
[] driver_unregister+0x20/0x50
[] pci_unregister_driver+0x13/0x60
[] mcb_pci_driver_exit+0xd/0xf [mcb_pci]
[] SyS_delete_module+0x138/0x200
[] ? ____fput+0x8/0x10
[] ? task_work_run+0x74/0x90
[] do_fast_syscall_32+0x69/0x120
[] sysenter_past_esp+0x40/0x6a
---[ end trace 1ed34c2aa3019875 ]---Release a mcb_bus' memory on the device's release callback, to avoid above
warning.Signed-off-by: Johannes Thumshirn
Reported-by: Andreas Werner
Tested-by: Andreas Werner
Signed-off-by: Greg Kroah-Hartman -
Export information about the bus stored in the FPGA's header to userspace via
sysfs, instead of hiding it in pr_debug()s from everyone.Signed-off-by: Johannes Thumshirn
Reviewed-by: Andreas Werner
Tested-by: Andreas Werner
Signed-off-by: Greg Kroah-Hartman -
The mcb bus' device member wasn't correctly initialized and thus wasn't placed
correctly into the driver model.Signed-off-by: Johannes Thumshirn
Reviewed-by: Andreas Werner
Tested-by: Andreas Werner
Signed-off-by: Greg Kroah-Hartman
29 Oct, 2015
2 commits
-
Destroy mcb_ida on module_unload
Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman -
There is an error path in mcb_pci_probe() where
it returns zero instead of error code.Found by Linux Driver Verification project (linuxtesting.org).
Signed-off-by: Alexey Khoroshilov
Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman
05 Oct, 2015
1 commit
-
If a MCB PCI Carrier device is IO mapped insted of memory-mapped,
the memory of the PCI device is still not unmapped.Also the patch adds deallocation of the bus
if chameleon_parse_cells() fails.Found by Linux Driver Verification project (linuxtesting.org).
Signed-off-by: Alexey Khoroshilov
Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman
03 Apr, 2015
1 commit
-
The code here is checking for IS_ERR() when request_mem_region() only
returns NULL on error and never an ERR_PTR.Signed-off-by: Dan Carpenter
Signed-off-by: Greg Kroah-Hartman
04 Feb, 2015
1 commit
-
If a MCB PCI Carrier device is IO mapped insted of memory-mapped (which is
currently unsupported by the upstream driver) the probe function bails out
with -ENOTSUPP.In this case the memory of the PCI device was not unmapped.
Also rename error label to reflect what will happen at the destination (suggested
by Julia Lawall .Signed-off-by: Johannes Thumshirn
Reported-by: kbuild test robot
Signed-off-by: Greg Kroah-Hartman
10 Jan, 2015
1 commit
-
Currently it is not possible to have a kernel with built-in MCB attached
devices. This results out of the fact that mcb-pci requests PCI BAR 0, then
parses the chameleon table and calls the driver's probe function before
releasing BAR 0 again. When building the kernel with modules this is not a
problem (and therefore it wasn't detected by my tests yet).A solution is to only remap the 1st 0x200 bytes of a Chameleon PCI device.
0x200 bytes is the maximum size of a Chameleon v2 Table.Also this patch stops disabling the PCI device on successful registration of MCB
devices.Signed-off-by: Johannes Thumshirn
Suggested-by: Bjorn Helgaas
Reviewed-by: Bjorn Helgaas
Signed-off-by: Greg Kroah-Hartman
28 May, 2014
1 commit
-
Add support for shared PCI IRQs to mcb and mcb-pci.
Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman
17 Apr, 2014
1 commit
-
chameleon_parse_cells() bails out if chameleon descriptor type is
invalid but does not free the storage 'header' points to.Signed-off-by: Christoph Jaeger
Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman
10 Mar, 2014
1 commit
-
Make mcb depend on HAS_IOMEM and mcb-pci depend on PCI. This fixes build errors
discovered by the 0-day kernel build testing system.Signed-off-by: Johannes Thumshirn
Reported-by: kbuild test robot
Signed-off-by: Greg Kroah-Hartman
09 Mar, 2014
1 commit
-
Coverage builds found this build fail in ARM ebsa110_defconfig:
drivers/mcb/mcb-parse.c: In function 'chameleon_parse_cells':
drivers/mcb/mcb-parse.c:105:2: error: implicit declaration of function 'memcpy_fromio' [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors
make[2]: *** [drivers/mcb/mcb-parse.o] Error 1A simple bisect will output this:
3764e82e5150d87b205c10cd78a9c9ab86fbfa51 is the first bad commit
commit 3764e82e5150d87b205c10cd78a9c9ab86fbfa51
Author: Johannes Thumshirn
Date: Wed Feb 26 17:29:05 2014 +0100drivers: Introduce MEN Chameleon Bus
The above commit used "default m" which is wrong. New drivers
should never be globally enabled with "default y/m". Whether
this driver makes sense to build on ARM is an independent issue.Here we delete the "default m" line, which is the equivalent of
"default n".Cc: Johannes Thumshirn
Cc: Greg Kroah-Hartman
Signed-off-by: Paul Gortmaker
Signed-off-by: Greg Kroah-Hartman
01 Mar, 2014
2 commits
-
Add support for MCB over PCI devices. Both PCI attached on-board Chameleon FPGAs
as well as CompactPCI based MCB carrier cards are supported with this driver.Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman -
The MCB (MEN Chameleon Bus) is a Bus specific to MEN Mikroelektronik
FPGA based devices. It is used to identify MCB based IP-Cores within
an FPGA and provide the necessary framework for instantiating drivers
for these devices.Signed-off-by: Johannes Thumshirn
Signed-off-by: Greg Kroah-Hartman