mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
synced 2025-09-13 11:07:46 +10:00
rpmsg updates for v6.16
Remove some dead and unused code from core and virtio modules. Improve the error messages from the Qualcomm SMD driver and initialize an uninitialized variable in the send path. -----BEGIN PGP SIGNATURE----- iQJJBAABCAAzFiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAmg9sFYVHGFuZGVyc3Nv bkBrZXJuZWwub3JnAAoJEAsfOT8Nma3F/LsP/1JeB/MInje78x7x17XGBhWowkIo McOFs4IOp3Q7YvD/tJHEoVnhFNl90WtljoQZGWhSaXr1vfReC9xkAMtxbaqRQqxR bTnt5Q7LdExuyS9m8EAGEVRpMKUKGbwXN6Z8233qJhZodatc2d8VXBptq11VJILb n76iQhssGaXT/Npxjcc5lnfbJOSCx0/HVblr0onPatRjnuFxfQC6RS9VprfOszlX zdToPyB0VMUYh2SvMZCpeBFwNEe2QJxahtYT17KIf55EFV8vme7Dv/Tizz5J/DLl aR/4VijJtEML9TjonpsbpcsY6RUnTzc6LhlDuk7Ce74WMPMglGcETNh+AT9SeP1K CPDBMDzBofUTzjyxOl+e4hUVyx9FKSbZPtd9zzm06cwXSPyA4dA4CEQhKlGcLXVk NKthqWnd6yYOnVIMQwpJTuw7ncHxT5u8FUGpiTDqWCJpEC5JPoyN82lJT1pZM+Za ONSdE8bo0pGI+xwjvQDj6uRpSYwYojB/8Q+B0xylq3ms2MwfMUPDnSUlOuZ8G6Xs 8QW6aN4PPzBTwfWFqlaI4NeTmbJB03FHxjDLg5oKDqGPdrLz37DIr03AdX7Yhlow jrO/5WZDUXkaFTgFVVE8osrEJBhbZ41OL0H+Gy6qBdlZrxRUL38FmalgawpSzlqs OoEgqSi44uQVgYS1 =+K4g -----END PGP SIGNATURE----- Merge tag 'rpmsg-v6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux Pull rpmsg updates from Bjorn Andersson: - Remove some dead and unused code from core and virtio modules - Improve the error messages from the Qualcomm SMD driver and initialize an uninitialized variable in the send path * tag 'rpmsg-v6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux: rpmsg: qcom_smd: Fix uninitialized return variable in __qcom_smd_send() rpmsg: qcom_smd: Improve error handling for qcom_smd_parse_edge rpmsg: Remove unused method pointers *send_offchannel rpmsg: virtio: Remove uncallable offchannel functions rpmsg: core: Remove deadcode
This commit is contained in:
commit
b509c16e1d
@ -110,31 +110,6 @@ or a timeout of 15 seconds elapses. When the latter happens,
|
||||
The function can only be called from a process context (for now).
|
||||
Returns 0 on success and an appropriate error value on failure.
|
||||
|
||||
::
|
||||
|
||||
int rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst,
|
||||
void *data, int len);
|
||||
|
||||
|
||||
sends a message across to the remote processor, using the src and dst
|
||||
addresses provided by the user.
|
||||
|
||||
The caller should specify the endpoint, the data it wants to send,
|
||||
its length (in bytes), and explicit source and destination addresses.
|
||||
The message will then be sent to the remote processor to which the
|
||||
endpoint's channel belongs, but the endpoint's src and channel dst
|
||||
addresses will be ignored (and the user-provided addresses will
|
||||
be used instead).
|
||||
|
||||
In case there are no TX buffers available, the function will block until
|
||||
one becomes available (i.e. until the remote processor consumes
|
||||
a tx buffer and puts it back on virtio's used descriptor ring),
|
||||
or a timeout of 15 seconds elapses. When the latter happens,
|
||||
-ERESTARTSYS is returned.
|
||||
|
||||
The function can only be called from a process context (for now).
|
||||
Returns 0 on success and an appropriate error value on failure.
|
||||
|
||||
::
|
||||
|
||||
int rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len);
|
||||
@ -173,27 +148,6 @@ return -ENOMEM without waiting until one becomes available.
|
||||
The function can only be called from a process context (for now).
|
||||
Returns 0 on success and an appropriate error value on failure.
|
||||
|
||||
::
|
||||
|
||||
int rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst,
|
||||
void *data, int len);
|
||||
|
||||
|
||||
sends a message across to the remote processor, using source and
|
||||
destination addresses provided by the user.
|
||||
|
||||
The user should specify the channel, the data it wants to send,
|
||||
its length (in bytes), and explicit source and destination addresses.
|
||||
The message will then be sent to the remote processor to which the
|
||||
channel belongs, but the channel's src and dst addresses will be
|
||||
ignored (and the user-provided addresses will be used instead).
|
||||
|
||||
In case there are no TX buffers available, the function will immediately
|
||||
return -ENOMEM without waiting until one becomes available.
|
||||
|
||||
The function can only be called from a process context (for now).
|
||||
Returns 0 on success and an appropriate error value on failure.
|
||||
|
||||
::
|
||||
|
||||
struct rpmsg_endpoint *rpmsg_create_ept(struct rpmsg_device *rpdev,
|
||||
|
@ -746,7 +746,7 @@ static int __qcom_smd_send(struct qcom_smd_channel *channel, const void *data,
|
||||
__le32 hdr[5] = { cpu_to_le32(len), };
|
||||
int tlen = sizeof(hdr) + len;
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
int ret = 0;
|
||||
|
||||
/* Word aligned channels only accept word size aligned data */
|
||||
if (channel->info_word && len % 4)
|
||||
@ -1369,7 +1369,8 @@ static int qcom_smd_parse_edge(struct device *dev,
|
||||
edge->mbox_chan = mbox_request_channel(&edge->mbox_client, 0);
|
||||
if (IS_ERR(edge->mbox_chan)) {
|
||||
if (PTR_ERR(edge->mbox_chan) != -ENODEV) {
|
||||
ret = PTR_ERR(edge->mbox_chan);
|
||||
ret = dev_err_probe(dev, PTR_ERR(edge->mbox_chan),
|
||||
"failed to acquire IPC mailbox\n");
|
||||
goto put_node;
|
||||
}
|
||||
|
||||
@ -1386,6 +1387,7 @@ static int qcom_smd_parse_edge(struct device *dev,
|
||||
of_node_put(syscon_np);
|
||||
if (IS_ERR(edge->ipc_regmap)) {
|
||||
ret = PTR_ERR(edge->ipc_regmap);
|
||||
dev_err(dev, "failed to get regmap from syscon: %d\n", ret);
|
||||
goto put_node;
|
||||
}
|
||||
|
||||
@ -1501,10 +1503,8 @@ struct qcom_smd_edge *qcom_smd_register_edge(struct device *parent,
|
||||
}
|
||||
|
||||
ret = qcom_smd_parse_edge(&edge->dev, node, edge);
|
||||
if (ret) {
|
||||
dev_err(&edge->dev, "failed to parse smd edge\n");
|
||||
if (ret)
|
||||
goto unregister_dev;
|
||||
}
|
||||
|
||||
ret = qcom_smd_create_chrdev(edge);
|
||||
if (ret) {
|
||||
|
@ -193,38 +193,6 @@ int rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst)
|
||||
}
|
||||
EXPORT_SYMBOL(rpmsg_sendto);
|
||||
|
||||
/**
|
||||
* rpmsg_send_offchannel() - send a message using explicit src/dst addresses
|
||||
* @ept: the rpmsg endpoint
|
||||
* @src: source address
|
||||
* @dst: destination address
|
||||
* @data: payload of message
|
||||
* @len: length of payload
|
||||
*
|
||||
* This function sends @data of length @len to the remote @dst address,
|
||||
* and uses @src as the source address.
|
||||
* The message will be sent to the remote processor which the @ept
|
||||
* endpoint belongs to.
|
||||
* In case there are no TX buffers available, the function will block until
|
||||
* one becomes available, or a timeout of 15 seconds elapses. When the latter
|
||||
* happens, -ERESTARTSYS is returned.
|
||||
*
|
||||
* Can only be called from process context (for now).
|
||||
*
|
||||
* Return: 0 on success and an appropriate error value on failure.
|
||||
*/
|
||||
int rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst,
|
||||
void *data, int len)
|
||||
{
|
||||
if (WARN_ON(!ept))
|
||||
return -EINVAL;
|
||||
if (!ept->ops->send_offchannel)
|
||||
return -ENXIO;
|
||||
|
||||
return ept->ops->send_offchannel(ept, src, dst, data, len);
|
||||
}
|
||||
EXPORT_SYMBOL(rpmsg_send_offchannel);
|
||||
|
||||
/**
|
||||
* rpmsg_trysend() - send a message across to the remote processor
|
||||
* @ept: the rpmsg endpoint
|
||||
@ -301,37 +269,6 @@ __poll_t rpmsg_poll(struct rpmsg_endpoint *ept, struct file *filp,
|
||||
}
|
||||
EXPORT_SYMBOL(rpmsg_poll);
|
||||
|
||||
/**
|
||||
* rpmsg_trysend_offchannel() - send a message using explicit src/dst addresses
|
||||
* @ept: the rpmsg endpoint
|
||||
* @src: source address
|
||||
* @dst: destination address
|
||||
* @data: payload of message
|
||||
* @len: length of payload
|
||||
*
|
||||
* This function sends @data of length @len to the remote @dst address,
|
||||
* and uses @src as the source address.
|
||||
* The message will be sent to the remote processor which the @ept
|
||||
* endpoint belongs to.
|
||||
* In case there are no TX buffers available, the function will immediately
|
||||
* return -ENOMEM without waiting until one becomes available.
|
||||
*
|
||||
* Can only be called from process context (for now).
|
||||
*
|
||||
* Return: 0 on success and an appropriate error value on failure.
|
||||
*/
|
||||
int rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst,
|
||||
void *data, int len)
|
||||
{
|
||||
if (WARN_ON(!ept))
|
||||
return -EINVAL;
|
||||
if (!ept->ops->trysend_offchannel)
|
||||
return -ENXIO;
|
||||
|
||||
return ept->ops->trysend_offchannel(ept, src, dst, data, len);
|
||||
}
|
||||
EXPORT_SYMBOL(rpmsg_trysend_offchannel);
|
||||
|
||||
/**
|
||||
* rpmsg_set_flow_control() - request remote to pause/resume transmission
|
||||
* @ept: the rpmsg endpoint
|
||||
|
@ -50,10 +50,8 @@ struct rpmsg_device_ops {
|
||||
* @destroy_ept: see @rpmsg_destroy_ept(), required
|
||||
* @send: see @rpmsg_send(), required
|
||||
* @sendto: see @rpmsg_sendto(), optional
|
||||
* @send_offchannel: see @rpmsg_send_offchannel(), optional
|
||||
* @trysend: see @rpmsg_trysend(), required
|
||||
* @trysendto: see @rpmsg_trysendto(), optional
|
||||
* @trysend_offchannel: see @rpmsg_trysend_offchannel(), optional
|
||||
* @poll: see @rpmsg_poll(), optional
|
||||
* @set_flow_control: see @rpmsg_set_flow_control(), optional
|
||||
* @get_mtu: see @rpmsg_get_mtu(), optional
|
||||
@ -67,13 +65,9 @@ struct rpmsg_endpoint_ops {
|
||||
|
||||
int (*send)(struct rpmsg_endpoint *ept, void *data, int len);
|
||||
int (*sendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst);
|
||||
int (*send_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst,
|
||||
void *data, int len);
|
||||
|
||||
int (*trysend)(struct rpmsg_endpoint *ept, void *data, int len);
|
||||
int (*trysendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst);
|
||||
int (*trysend_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst,
|
||||
void *data, int len);
|
||||
__poll_t (*poll)(struct rpmsg_endpoint *ept, struct file *filp,
|
||||
poll_table *wait);
|
||||
int (*set_flow_control)(struct rpmsg_endpoint *ept, bool pause, u32 dst);
|
||||
|
@ -141,13 +141,9 @@ static void virtio_rpmsg_destroy_ept(struct rpmsg_endpoint *ept);
|
||||
static int virtio_rpmsg_send(struct rpmsg_endpoint *ept, void *data, int len);
|
||||
static int virtio_rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len,
|
||||
u32 dst);
|
||||
static int virtio_rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src,
|
||||
u32 dst, void *data, int len);
|
||||
static int virtio_rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len);
|
||||
static int virtio_rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data,
|
||||
int len, u32 dst);
|
||||
static int virtio_rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src,
|
||||
u32 dst, void *data, int len);
|
||||
static ssize_t virtio_rpmsg_get_mtu(struct rpmsg_endpoint *ept);
|
||||
static struct rpmsg_device *__rpmsg_create_channel(struct virtproc_info *vrp,
|
||||
struct rpmsg_channel_info *chinfo);
|
||||
@ -156,10 +152,8 @@ static const struct rpmsg_endpoint_ops virtio_endpoint_ops = {
|
||||
.destroy_ept = virtio_rpmsg_destroy_ept,
|
||||
.send = virtio_rpmsg_send,
|
||||
.sendto = virtio_rpmsg_sendto,
|
||||
.send_offchannel = virtio_rpmsg_send_offchannel,
|
||||
.trysend = virtio_rpmsg_trysend,
|
||||
.trysendto = virtio_rpmsg_trysendto,
|
||||
.trysend_offchannel = virtio_rpmsg_trysend_offchannel,
|
||||
.get_mtu = virtio_rpmsg_get_mtu,
|
||||
};
|
||||
|
||||
@ -545,7 +539,7 @@ static void rpmsg_downref_sleepers(struct virtproc_info *vrp)
|
||||
* the function will immediately fail, and -ENOMEM will be returned.
|
||||
*
|
||||
* Normally drivers shouldn't use this function directly; instead, drivers
|
||||
* should use the appropriate rpmsg_{try}send{to, _offchannel} API
|
||||
* should use the appropriate rpmsg_{try}send{to} API
|
||||
* (see include/linux/rpmsg.h).
|
||||
*
|
||||
* Return: 0 on success and an appropriate error value on failure.
|
||||
@ -665,14 +659,6 @@ static int virtio_rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len,
|
||||
return rpmsg_send_offchannel_raw(rpdev, src, dst, data, len, true);
|
||||
}
|
||||
|
||||
static int virtio_rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src,
|
||||
u32 dst, void *data, int len)
|
||||
{
|
||||
struct rpmsg_device *rpdev = ept->rpdev;
|
||||
|
||||
return rpmsg_send_offchannel_raw(rpdev, src, dst, data, len, true);
|
||||
}
|
||||
|
||||
static int virtio_rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len)
|
||||
{
|
||||
struct rpmsg_device *rpdev = ept->rpdev;
|
||||
@ -690,14 +676,6 @@ static int virtio_rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data,
|
||||
return rpmsg_send_offchannel_raw(rpdev, src, dst, data, len, false);
|
||||
}
|
||||
|
||||
static int virtio_rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src,
|
||||
u32 dst, void *data, int len)
|
||||
{
|
||||
struct rpmsg_device *rpdev = ept->rpdev;
|
||||
|
||||
return rpmsg_send_offchannel_raw(rpdev, src, dst, data, len, false);
|
||||
}
|
||||
|
||||
static ssize_t virtio_rpmsg_get_mtu(struct rpmsg_endpoint *ept)
|
||||
{
|
||||
struct rpmsg_device *rpdev = ept->rpdev;
|
||||
|
@ -184,13 +184,9 @@ struct rpmsg_endpoint *rpmsg_create_ept(struct rpmsg_device *,
|
||||
|
||||
int rpmsg_send(struct rpmsg_endpoint *ept, void *data, int len);
|
||||
int rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst);
|
||||
int rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst,
|
||||
void *data, int len);
|
||||
|
||||
int rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len);
|
||||
int rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst);
|
||||
int rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst,
|
||||
void *data, int len);
|
||||
|
||||
__poll_t rpmsg_poll(struct rpmsg_endpoint *ept, struct file *filp,
|
||||
poll_table *wait);
|
||||
@ -271,15 +267,6 @@ static inline int rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len,
|
||||
|
||||
}
|
||||
|
||||
static inline int rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src,
|
||||
u32 dst, void *data, int len)
|
||||
{
|
||||
/* This shouldn't be possible */
|
||||
WARN_ON(1);
|
||||
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
static inline int rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len)
|
||||
{
|
||||
/* This shouldn't be possible */
|
||||
@ -297,15 +284,6 @@ static inline int rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data,
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
static inline int rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src,
|
||||
u32 dst, void *data, int len)
|
||||
{
|
||||
/* This shouldn't be possible */
|
||||
WARN_ON(1);
|
||||
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
static inline __poll_t rpmsg_poll(struct rpmsg_endpoint *ept,
|
||||
struct file *filp, poll_table *wait)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user