09 Jun, 2017

4 commits


08 Jun, 2017

3 commits

  • - move imx_rpmsg from arch/arm/ to drivers/rpmsg.
    - use the new MU generic APIs in the rpmsg implementation.
    - Validated the pingpong test on both imx6sx and imx7d sdb boards.

    Signed-off-by: Richard Zhu

    Richard Zhu
     
  • Message can be transferred between remote
    device and iMX7ULP M4.
    Then the message can be transferred between A7
    and M4 by rpmsg channel.
    demo howto:
    - insmode the imx_rpmsg_tty.ko module after
    login A7/Linux.
    - Receive messages. Used the following command
    to dump out the msg from the virtual tty.
    ./unit_tests/mxc_mcc_tty_test.out /dev/ttyRPMSG 115200 R 100 1000 &
    - Send: use the following command to send the
    message to M4.
    echo /dev/ttyRPMSG

    Signed-off-by: Richard Zhu

    Richard Zhu
     
  • rpmsg core didn't take care of high memory case which may be triggered
    in 1:3 kernel/userspace memory split. Get correct page by vmalloc_to_page
    instead of virt_to_page.

    Signed-off-by: Robin Gong

    Robin Gong
     

23 Feb, 2017

3 commits


26 Jan, 2017

1 commit

  • commit 63447646ac657fde00bb658ce21a3431940ae0ad upstream.

    Since commit 4dffed5b3ac796b ("rpmsg: Name rpmsg devices based on
    channel id"), it is no more possible for a firmware to register twice
    a service (on different endpoints). rpmsg_register_device function
    is failing when calling device_add for the second time as second
    device has the same name as first one already register.
    It is because name is based only on service name and so is not more
    unique. Previously name was unique thanks to the use of rpmsg_dev_index.

    This patch adds destination and source endpoint numbers device name to
    create an unique identifier.

    Fixes: 4dffed5b3ac7 ("rpmsg: Name rpmsg devices based on channel id")
    Acked-by: Peter Griffin
    Signed-off-by: Loic Pallardy
    [bjorn: flipped name and address in device name]
    Signed-off-by: Bjorn Andersson
    Signed-off-by: Greg Kroah-Hartman

    Loic Pallardy
     

12 Jan, 2017

1 commit

  • commit 1d74e7ed5dc1903ac081574a9b6aa94e7ba4ad45 upstream.

    qcom_smd_send() should return -EAGAIN for non-blocking channels with
    insufficient space, so that we can propagate this event to user space.

    Fixes: 53e2822e56c7 ("rpmsg: Introduce Qualcomm SMD backend")
    Signed-off-by: Bjorn Andersson
    Signed-off-by: Greg Kroah-Hartman

    Bjorn Andersson
     

12 Sep, 2016

1 commit

  • The ARM allmodconfig build broke with the addition of the SMD rpmsg
    driver that conflicts with the driver its replaces:

    WARNING: drivers/soc/qcom/smd: 'qcom_smd_register_edge' exported twice. Previous export was in drivers/rpmsg/qcom_smd.ko
    WARNING: drivers/soc/qcom/smd: 'qcom_smd_unregister_edge' exported twice. Previous export was in drivers/rpmsg/qcom_smd.ko

    There is already a dependency that is meant to avoid the broken
    configuration, but that only prevents the case where at least
    one of the two are built-in, but not if both are modules.

    This changes the dependency to "=n", to ensure that the new driver
    can only be enabled if the other one is completely disabled.

    Signed-off-by: Arnd Bergmann
    Fixes: 53e2822e56c7 ("rpmsg: Introduce Qualcomm SMD backend")
    Signed-off-by: Bjorn Andersson

    Arnd Bergmann
     

09 Sep, 2016

17 commits


13 Aug, 2016

5 commits

  • There are couple of print_hex_dump traces used in rpmsg code which
    prints the actual byte messages being transferred between host and
    the remote processors. These traces are quiet verbose and affects
    performance, if the appropriate trace level is enabled. These hex
    dumps are needed rather rarely, but are quite useful when debugging
    complex IPC corner cases. So, this patch switches these hex dump
    traces to use the dynamic_hex_dump() API.

    The hex dump traces are also enabled only when CONFIG_DYNAMIC_DEBUG
    is enabled. This switch allows flexibility of controlling these
    traces through dynamic debug, instead of removing them completely.

    Signed-off-by: Suman Anna
    Signed-off-by: Bjorn Andersson

    Anna, Suman
     
  • This patch fixes most of the existing alignment checkpatch check
    warnings of the type "Alignment should match open parenthesis"
    in the virtio rpmsg bus code. A couple of them have been left as
    is to not exceed the 80-char limit.

    Signed-off-by: Suman Anna
    Signed-off-by: Bjorn Andersson

    Anna, Suman
     
  • The dma_addr_t types can be printed properly using the %pad
    printk format-specifier, there is no need to resort to the
    unsigned long long type-casting to deal with different possible
    type sizes.

    Signed-off-by: Suman Anna
    Signed-off-by: Bjorn Andersson

    Anna, Suman
     
  • These types of error prints are superfluous. The system will
    pick up on OOM issues and let the user know. While at this,
    fix the usage of using a structure instead of the actual
    variable in one of the allocations.

    Signed-off-by: Suman Anna
    Signed-off-by: Bjorn Andersson

    Anna, Suman
     
  • It should never have been there in the first place.

    Signed-off-by: Lee Jones
    Signed-off-by: Bjorn Andersson

    Lee Jones
     

11 Aug, 2016

1 commit


07 May, 2016

1 commit


13 Jan, 2016

1 commit

  • checkpatch.pl wants arrays of strings declared as follows:

    static const char * const names[] = { "vq-1", "vq-2", "vq-3" };

    Currently the find_vqs() function takes a const char *names[] argument
    so passing checkpatch.pl's const char * const names[] results in a
    compiler error due to losing the second const.

    This patch adjusts the find_vqs() prototype and updates all virtio
    transports. This makes it possible for virtio_balloon.c, virtio_input.c,
    virtgpu_kms.c, and virtio_rpmsg_bus.c to use the checkpatch.pl-friendly
    type.

    Signed-off-by: Stefan Hajnoczi
    Signed-off-by: Michael S. Tsirkin
    Acked-by: Bjorn Andersson

    Stefan Hajnoczi
     

13 Mar, 2015

1 commit

  • virtio spec requires that all drivers set DRIVER_OK
    before using devices. While rpmsg isn't yet
    included in the virtio 1 spec, previous spec versions
    also required this.

    virtio rpmsg violates this rule: is calls kick
    before setting DRIVER_OK.

    The fix isn't trivial since simply calling virtio_device_ready earlier
    would mean we might get an interrupt in parallel with adding buffers.

    Instead, split kick out to prepare+notify calls. prepare before
    virtio_device_ready - when we know we won't get interrupts. notify right
    afterwards.

    Signed-off-by: Michael S. Tsirkin
    Acked-by: Ohad Ben-Cohen
    Signed-off-by: Rusty Russell

    Michael S. Tsirkin
     

27 Nov, 2014

1 commit

  • Adjust the number of rpmsg buffers to rely on the size of the
    vring, instead of using the hard coded value of 512 (256 per
    direction).

    This is needed when small vrings are being used, where 256
    buffers are too much to fit in a vring.

    While considering the vring size, keep using the 512 hard coded
    value as an upper limit to avoid wacky resource tables consuming
    unreasonable amount of memory.

    NOTE: The number of buffers is already assumed to be symmetrical
    in each direction, and that logic is unchanged.

    Signed-off-by: Suman Anna
    [edit commit message, small code and comment simplification]
    Signed-off-by: Ohad Ben-Cohen

    Suman Anna