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