27 Sep, 2016

1 commit

  • 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

    Michael Moese
     

31 Aug, 2016

1 commit

  • 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

    Johannes Thumshirn
     

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

    Johannes Thumshirn
     
  • 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

    Johannes Thumshirn
     

04 May, 2016

3 commits

  • 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

    Johannes Thumshirn
     
  • 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

    Johannes Thumshirn
     
  • 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

    Johannes Thumshirn
     

29 Oct, 2015

1 commit


28 May, 2014

1 commit


01 Mar, 2014

1 commit

  • 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

    Johannes Thumshirn