diff mbox series

[10/10] rpmsg: ns: Make Name service module transport agnostic

Message ID 20200922001000.899956-11-mathieu.poirier@linaro.org
State Superseded
Headers show
Series rpmsg: Make RPMSG name service modular | expand

Commit Message

Mathieu Poirier Sept. 22, 2020, 12:10 a.m. UTC
Make name service module transport agnostic by using the rpmsg
device specific byte conversion routine.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 drivers/rpmsg/rpmsg_ns.c | 10 ++++------
 include/linux/rpmsg_ns.h |  4 ++--
 2 files changed, 6 insertions(+), 8 deletions(-)

Comments

kernel test robot Sept. 23, 2020, 2:39 a.m. UTC | #1
Hi Mathieu,

I love your patch! Perhaps something to improve:

[auto build test WARNING on next-20200921]
[cannot apply to linux/master linus/master rpmsg/for-next v5.9-rc6 v5.9-rc5 v5.9-rc4 v5.9-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Mathieu-Poirier/rpmsg-Make-RPMSG-name-service-modular/20200922-081745
base:    b10b8ad862118bf42c28a98b0f067619aadcfb23
config: i386-randconfig-s001-20200921 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.2-201-g24bdaac6-dirty
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

   drivers/rpmsg/virtio_rpmsg_bus.c:165:43: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected restricted __virtio16 [usertype] val @@     got unsigned short [usertype] val @@
   drivers/rpmsg/virtio_rpmsg_bus.c:165:43: sparse:     expected restricted __virtio16 [usertype] val
   drivers/rpmsg/virtio_rpmsg_bus.c:165:43: sparse:     got unsigned short [usertype] val
   drivers/rpmsg/virtio_rpmsg_bus.c:173:31: sparse: sparse: incorrect type in return expression (different base types) @@     expected unsigned short @@     got restricted __virtio16 @@
   drivers/rpmsg/virtio_rpmsg_bus.c:173:31: sparse:     expected unsigned short
   drivers/rpmsg/virtio_rpmsg_bus.c:173:31: sparse:     got restricted __virtio16
   drivers/rpmsg/virtio_rpmsg_bus.c:181:43: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected restricted __virtio32 [usertype] val @@     got unsigned int [usertype] val @@
   drivers/rpmsg/virtio_rpmsg_bus.c:181:43: sparse:     expected restricted __virtio32 [usertype] val
   drivers/rpmsg/virtio_rpmsg_bus.c:181:43: sparse:     got unsigned int [usertype] val
   drivers/rpmsg/virtio_rpmsg_bus.c:189:31: sparse: sparse: incorrect type in return expression (different base types) @@     expected unsigned int @@     got restricted __virtio32 @@
   drivers/rpmsg/virtio_rpmsg_bus.c:189:31: sparse:     expected unsigned int
   drivers/rpmsg/virtio_rpmsg_bus.c:189:31: sparse:     got restricted __virtio32
>> drivers/rpmsg/virtio_rpmsg_bus.c:267:26: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [addressable] [usertype] addr @@     got restricted __virtio32 @@
>> drivers/rpmsg/virtio_rpmsg_bus.c:267:26: sparse:     expected unsigned int [addressable] [usertype] addr
   drivers/rpmsg/virtio_rpmsg_bus.c:267:26: sparse:     got restricted __virtio32
>> drivers/rpmsg/virtio_rpmsg_bus.c:268:27: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [addressable] [usertype] flags @@     got restricted __virtio32 @@
>> drivers/rpmsg/virtio_rpmsg_bus.c:268:27: sparse:     expected unsigned int [addressable] [usertype] flags
   drivers/rpmsg/virtio_rpmsg_bus.c:268:27: sparse:     got restricted __virtio32
   drivers/rpmsg/virtio_rpmsg_bus.c:291:26: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [addressable] [usertype] addr @@     got restricted __virtio32 @@
   drivers/rpmsg/virtio_rpmsg_bus.c:291:26: sparse:     expected unsigned int [addressable] [usertype] addr
   drivers/rpmsg/virtio_rpmsg_bus.c:291:26: sparse:     got restricted __virtio32
   drivers/rpmsg/virtio_rpmsg_bus.c:292:27: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [addressable] [usertype] flags @@     got restricted __virtio32 @@
   drivers/rpmsg/virtio_rpmsg_bus.c:292:27: sparse:     expected unsigned int [addressable] [usertype] flags
   drivers/rpmsg/virtio_rpmsg_bus.c:292:27: sparse:     got restricted __virtio32

# https://github.com/0day-ci/linux/commit/ab159ea48198df2ab06ff9fe97e63cca354bff20
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Mathieu-Poirier/rpmsg-Make-RPMSG-name-service-modular/20200922-081745
git checkout ab159ea48198df2ab06ff9fe97e63cca354bff20
vim +267 drivers/rpmsg/virtio_rpmsg_bus.c

dd032e0b67fcd61 Mathieu Poirier       2020-09-21  167  
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  168  static u16 virtio_rpmsg_cpu_to_transport16(struct rpmsg_device *rpdev, u16 val)
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  169  {
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  170  	struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(rpdev);
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  171  	struct virtproc_info *vrp = vch->vrp;
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  172  
dd032e0b67fcd61 Mathieu Poirier       2020-09-21 @173  	return cpu_to_virtio16(vrp->vdev, val);
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  174  }
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  175  
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  176  static u32 virtio_rpmsg_transport32_to_cpu(struct rpmsg_device *rpdev, u32 val)
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  177  {
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  178  	struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(rpdev);
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  179  	struct virtproc_info *vrp = vch->vrp;
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  180  
dd032e0b67fcd61 Mathieu Poirier       2020-09-21 @181  	return virtio32_to_cpu(vrp->vdev, val);
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  182  }
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  183  
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  184  static u32 virtio_rpmsg_cpu_to_transport32(struct rpmsg_device *rpdev, u32 val)
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  185  {
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  186  	struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(rpdev);
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  187  	struct virtproc_info *vrp = vch->vrp;
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  188  
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  189  	return cpu_to_virtio32(vrp->vdev, val);
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  190  }
dd032e0b67fcd61 Mathieu Poirier       2020-09-21  191  
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  192  static struct rpmsg_device *
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  193  virtio_rpmsg_create_channel(struct rpmsg_device *rpdev,
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  194  			    struct rpmsg_channel_info *chinfo)
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  195  {
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  196  	struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(rpdev);
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  197  	struct virtproc_info *vrp = vch->vrp;
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  198  
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  199  	return __rpmsg_create_channel(vrp, chinfo);
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  200  }
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  201  
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  202  static int virtio_rpmsg_release_channel(struct rpmsg_device *rpdev,
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  203  					struct rpmsg_channel_info *chinfo)
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  204  {
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  205  	struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(rpdev);
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  206  	struct virtproc_info *vrp = vch->vrp;
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  207  
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  208  	return rpmsg_unregister_device(&vrp->vdev->dev, chinfo);
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  209  }
644f6e9ac5ebdd8 Arnaud Pouliquen      2020-09-21  210  
36b72c7dca71871 Bjorn Andersson       2016-09-01  211  static struct rpmsg_endpoint *virtio_rpmsg_create_ept(struct rpmsg_device *rpdev,
36b72c7dca71871 Bjorn Andersson       2016-09-01  212  						      rpmsg_rx_cb_t cb,
36b72c7dca71871 Bjorn Andersson       2016-09-01  213  						      void *priv,
36b72c7dca71871 Bjorn Andersson       2016-09-01  214  						      struct rpmsg_channel_info chinfo)
36b72c7dca71871 Bjorn Andersson       2016-09-01  215  {
3bf950ff23337fc Bjorn Andersson       2016-09-01  216  	struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(rpdev);
3bf950ff23337fc Bjorn Andersson       2016-09-01  217  
3bf950ff23337fc Bjorn Andersson       2016-09-01  218  	return __rpmsg_create_ept(vch->vrp, rpdev, cb, priv, chinfo.src);
36b72c7dca71871 Bjorn Andersson       2016-09-01  219  }
36b72c7dca71871 Bjorn Andersson       2016-09-01  220  
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  221  /**
fa2d7795b2e8595 Ohad Ben-Cohen        2012-02-09  222   * __rpmsg_destroy_ept() - destroy an existing rpmsg endpoint
fa2d7795b2e8595 Ohad Ben-Cohen        2012-02-09  223   * @vrp: virtproc which owns this ept
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  224   * @ept: endpoing to destroy
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  225   *
fa2d7795b2e8595 Ohad Ben-Cohen        2012-02-09  226   * An internal function which destroy an ept without assuming it is
fa2d7795b2e8595 Ohad Ben-Cohen        2012-02-09  227   * bound to an rpmsg channel. This is needed for handling the internal
fa2d7795b2e8595 Ohad Ben-Cohen        2012-02-09  228   * name service endpoint, which isn't bound to an rpmsg channel.
fa2d7795b2e8595 Ohad Ben-Cohen        2012-02-09  229   * See also __rpmsg_create_ept().
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  230   */
fa2d7795b2e8595 Ohad Ben-Cohen        2012-02-09  231  static void
fa2d7795b2e8595 Ohad Ben-Cohen        2012-02-09  232  __rpmsg_destroy_ept(struct virtproc_info *vrp, struct rpmsg_endpoint *ept)
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  233  {
15fd943af50dbc5 Ohad Ben-Cohen        2012-06-07  234  	/* make sure new inbound messages can't find this ept anymore */
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  235  	mutex_lock(&vrp->endpoints_lock);
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  236  	idr_remove(&vrp->endpoints, ept->addr);
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  237  	mutex_unlock(&vrp->endpoints_lock);
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  238  
15fd943af50dbc5 Ohad Ben-Cohen        2012-06-07  239  	/* make sure in-flight inbound messages won't invoke cb anymore */
15fd943af50dbc5 Ohad Ben-Cohen        2012-06-07  240  	mutex_lock(&ept->cb_lock);
15fd943af50dbc5 Ohad Ben-Cohen        2012-06-07  241  	ept->cb = NULL;
15fd943af50dbc5 Ohad Ben-Cohen        2012-06-07  242  	mutex_unlock(&ept->cb_lock);
15fd943af50dbc5 Ohad Ben-Cohen        2012-06-07  243  
5a081caa0414b9b Ohad Ben-Cohen        2012-06-06  244  	kref_put(&ept->refcount, __ept_release);
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  245  }
fa2d7795b2e8595 Ohad Ben-Cohen        2012-02-09  246  
8a228ecfe086b84 Bjorn Andersson       2016-09-01  247  static void virtio_rpmsg_destroy_ept(struct rpmsg_endpoint *ept)
8a228ecfe086b84 Bjorn Andersson       2016-09-01  248  {
3bf950ff23337fc Bjorn Andersson       2016-09-01  249  	struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(ept->rpdev);
3bf950ff23337fc Bjorn Andersson       2016-09-01  250  
3bf950ff23337fc Bjorn Andersson       2016-09-01  251  	__rpmsg_destroy_ept(vch->vrp, ept);
8a228ecfe086b84 Bjorn Andersson       2016-09-01  252  }
8a228ecfe086b84 Bjorn Andersson       2016-09-01  253  
36b72c7dca71871 Bjorn Andersson       2016-09-01  254  static int virtio_rpmsg_announce_create(struct rpmsg_device *rpdev)
36b72c7dca71871 Bjorn Andersson       2016-09-01  255  {
3bf950ff23337fc Bjorn Andersson       2016-09-01  256  	struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(rpdev);
3bf950ff23337fc Bjorn Andersson       2016-09-01  257  	struct virtproc_info *vrp = vch->vrp;
36b72c7dca71871 Bjorn Andersson       2016-09-01  258  	struct device *dev = &rpdev->dev;
36b72c7dca71871 Bjorn Andersson       2016-09-01  259  	int err = 0;
36b72c7dca71871 Bjorn Andersson       2016-09-01  260  
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  261  	/* need to tell remote processor's name service about this channel ? */
b2599ebffb2d32e Henri Roosen          2017-06-02  262  	if (rpdev->announce && rpdev->ept &&
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  263  	    virtio_has_feature(vrp->vdev, VIRTIO_RPMSG_F_NS)) {
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  264  		struct rpmsg_ns_msg nsm;
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  265  
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  266  		strncpy(nsm.name, rpdev->id.name, RPMSG_NAME_SIZE);
111d1089700cdb7 Guennadi Liakhovetski 2020-07-21 @267  		nsm.addr = cpu_to_virtio32(vrp->vdev, rpdev->ept->addr);
111d1089700cdb7 Guennadi Liakhovetski 2020-07-21 @268  		nsm.flags = cpu_to_virtio32(vrp->vdev, RPMSG_NS_CREATE);
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  269  
2a48d7322dc88f1 Bjorn Andersson       2016-09-01  270  		err = rpmsg_sendto(rpdev->ept, &nsm, sizeof(nsm), RPMSG_NS_ADDR);
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  271  		if (err)
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  272  			dev_err(dev, "failed to announce service %d\n", err);
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  273  	}
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  274  
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  275  	return err;
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  276  }
bcabbccabffe732 Ohad Ben-Cohen        2011-10-20  277  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Guennadi Liakhovetski Sept. 30, 2020, 7:13 a.m. UTC | #2
On Mon, Sep 21, 2020 at 06:10:00PM -0600, Mathieu Poirier wrote:
> Make name service module transport agnostic by using the rpmsg
> device specific byte conversion routine.
> 
> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> ---
>  drivers/rpmsg/rpmsg_ns.c | 10 ++++------
>  include/linux/rpmsg_ns.h |  4 ++--
>  2 files changed, 6 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/rpmsg/rpmsg_ns.c b/drivers/rpmsg/rpmsg_ns.c
> index b3318bf84433..1df3aaadfe10 100644
> --- a/drivers/rpmsg/rpmsg_ns.c
> +++ b/drivers/rpmsg/rpmsg_ns.c
> @@ -18,9 +18,7 @@ static int rpmsg_ns_cb(struct rpmsg_device *rpdev, void *data, int len,
>  	struct rpmsg_ns_msg *msg = data;
>  	struct rpmsg_device *newch;
>  	struct rpmsg_channel_info chinfo;
> -	struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(rpdev);
> -	struct virtproc_info *vrp = vch->vrp;
> -	struct device *dev = &vrp->vdev->dev;
> +	struct device *dev = &rpdev->dev;
>  	int ret;
>  
>  #if defined(CONFIG_DYNAMIC_DEBUG)
> @@ -38,13 +36,13 @@ static int rpmsg_ns_cb(struct rpmsg_device *rpdev, void *data, int len,
>  
>  	strncpy(chinfo.name, msg->name, sizeof(chinfo.name));
>  	chinfo.src = RPMSG_ADDR_ANY;
> -	chinfo.dst = virtio32_to_cpu(vrp->vdev, msg->addr);
> +	chinfo.dst = rpmsg32_to_cpu(rpdev, msg->addr);
>  
>  	dev_info(dev, "%sing channel %s addr 0x%x\n",
> -		 virtio32_to_cpu(vrp->vdev, msg->flags) & RPMSG_NS_DESTROY ?
> +		 rpmsg32_to_cpu(rpdev, msg->flags) & RPMSG_NS_DESTROY ?
>  		 "destroy" : "creat", msg->name, chinfo.dst);
>  
> -	if (virtio32_to_cpu(vrp->vdev, msg->flags) & RPMSG_NS_DESTROY) {
> +	if (rpmsg32_to_cpu(rpdev, msg->flags) & RPMSG_NS_DESTROY) {
>  		ret = rpmsg_release_channel(rpdev, &chinfo);
>  		if (ret)
>  			dev_err(dev, "rpmsg_destroy_channel failed: %d\n", ret);
> diff --git a/include/linux/rpmsg_ns.h b/include/linux/rpmsg_ns.h
> index aabc6c3c0d6d..9f3030b2145b 100644
> --- a/include/linux/rpmsg_ns.h
> +++ b/include/linux/rpmsg_ns.h
> @@ -41,8 +41,8 @@ struct rpmsg_hdr {
>   */
>  struct rpmsg_ns_msg {
>  	char name[RPMSG_NAME_SIZE];
> -	__virtio32 addr;
> -	__virtio32 flags;
> +	u32 addr;
> +	u32 flags;

These aren't (necessarily) native endianness, right? Don't they deserve a 
separate type? __rpmsg32?

Thanks
Guennadi

>  } __packed;
>  
>  /**
> -- 
> 2.25.1
>
Mathieu Poirier Oct. 7, 2020, 5:26 p.m. UTC | #3
On Wed, Sep 30, 2020 at 09:13:27AM +0200, Guennadi Liakhovetski wrote:
> On Mon, Sep 21, 2020 at 06:10:00PM -0600, Mathieu Poirier wrote:
> > Make name service module transport agnostic by using the rpmsg
> > device specific byte conversion routine.
> > 
> > Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> > ---
> >  drivers/rpmsg/rpmsg_ns.c | 10 ++++------
> >  include/linux/rpmsg_ns.h |  4 ++--
> >  2 files changed, 6 insertions(+), 8 deletions(-)
> > 
> > diff --git a/drivers/rpmsg/rpmsg_ns.c b/drivers/rpmsg/rpmsg_ns.c
> > index b3318bf84433..1df3aaadfe10 100644
> > --- a/drivers/rpmsg/rpmsg_ns.c
> > +++ b/drivers/rpmsg/rpmsg_ns.c
> > @@ -18,9 +18,7 @@ static int rpmsg_ns_cb(struct rpmsg_device *rpdev, void *data, int len,
> >  	struct rpmsg_ns_msg *msg = data;
> >  	struct rpmsg_device *newch;
> >  	struct rpmsg_channel_info chinfo;
> > -	struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(rpdev);
> > -	struct virtproc_info *vrp = vch->vrp;
> > -	struct device *dev = &vrp->vdev->dev;
> > +	struct device *dev = &rpdev->dev;
> >  	int ret;
> >  
> >  #if defined(CONFIG_DYNAMIC_DEBUG)
> > @@ -38,13 +36,13 @@ static int rpmsg_ns_cb(struct rpmsg_device *rpdev, void *data, int len,
> >  
> >  	strncpy(chinfo.name, msg->name, sizeof(chinfo.name));
> >  	chinfo.src = RPMSG_ADDR_ANY;
> > -	chinfo.dst = virtio32_to_cpu(vrp->vdev, msg->addr);
> > +	chinfo.dst = rpmsg32_to_cpu(rpdev, msg->addr);
> >  
> >  	dev_info(dev, "%sing channel %s addr 0x%x\n",
> > -		 virtio32_to_cpu(vrp->vdev, msg->flags) & RPMSG_NS_DESTROY ?
> > +		 rpmsg32_to_cpu(rpdev, msg->flags) & RPMSG_NS_DESTROY ?
> >  		 "destroy" : "creat", msg->name, chinfo.dst);
> >  
> > -	if (virtio32_to_cpu(vrp->vdev, msg->flags) & RPMSG_NS_DESTROY) {
> > +	if (rpmsg32_to_cpu(rpdev, msg->flags) & RPMSG_NS_DESTROY) {
> >  		ret = rpmsg_release_channel(rpdev, &chinfo);
> >  		if (ret)
> >  			dev_err(dev, "rpmsg_destroy_channel failed: %d\n", ret);
> > diff --git a/include/linux/rpmsg_ns.h b/include/linux/rpmsg_ns.h
> > index aabc6c3c0d6d..9f3030b2145b 100644
> > --- a/include/linux/rpmsg_ns.h
> > +++ b/include/linux/rpmsg_ns.h
> > @@ -41,8 +41,8 @@ struct rpmsg_hdr {
> >   */
> >  struct rpmsg_ns_msg {
> >  	char name[RPMSG_NAME_SIZE];
> > -	__virtio32 addr;
> > -	__virtio32 flags;
> > +	u32 addr;
> > +	u32 flags;
> 
> These aren't (necessarily) native endianness, right? Don't they deserve a 
> separate type? __rpmsg32?
> 

I kept them as u32 type to be as generic as possible and let the endianness
conversion callback do the work.  Making them a __rpmsg32 is a good idea, it
would force a proper implementation. 

> Thanks
> Guennadi
> 
> >  } __packed;
> >  
> >  /**
> > -- 
> > 2.25.1
> >
diff mbox series

Patch

diff --git a/drivers/rpmsg/rpmsg_ns.c b/drivers/rpmsg/rpmsg_ns.c
index b3318bf84433..1df3aaadfe10 100644
--- a/drivers/rpmsg/rpmsg_ns.c
+++ b/drivers/rpmsg/rpmsg_ns.c
@@ -18,9 +18,7 @@  static int rpmsg_ns_cb(struct rpmsg_device *rpdev, void *data, int len,
 	struct rpmsg_ns_msg *msg = data;
 	struct rpmsg_device *newch;
 	struct rpmsg_channel_info chinfo;
-	struct virtio_rpmsg_channel *vch = to_virtio_rpmsg_channel(rpdev);
-	struct virtproc_info *vrp = vch->vrp;
-	struct device *dev = &vrp->vdev->dev;
+	struct device *dev = &rpdev->dev;
 	int ret;
 
 #if defined(CONFIG_DYNAMIC_DEBUG)
@@ -38,13 +36,13 @@  static int rpmsg_ns_cb(struct rpmsg_device *rpdev, void *data, int len,
 
 	strncpy(chinfo.name, msg->name, sizeof(chinfo.name));
 	chinfo.src = RPMSG_ADDR_ANY;
-	chinfo.dst = virtio32_to_cpu(vrp->vdev, msg->addr);
+	chinfo.dst = rpmsg32_to_cpu(rpdev, msg->addr);
 
 	dev_info(dev, "%sing channel %s addr 0x%x\n",
-		 virtio32_to_cpu(vrp->vdev, msg->flags) & RPMSG_NS_DESTROY ?
+		 rpmsg32_to_cpu(rpdev, msg->flags) & RPMSG_NS_DESTROY ?
 		 "destroy" : "creat", msg->name, chinfo.dst);
 
-	if (virtio32_to_cpu(vrp->vdev, msg->flags) & RPMSG_NS_DESTROY) {
+	if (rpmsg32_to_cpu(rpdev, msg->flags) & RPMSG_NS_DESTROY) {
 		ret = rpmsg_release_channel(rpdev, &chinfo);
 		if (ret)
 			dev_err(dev, "rpmsg_destroy_channel failed: %d\n", ret);
diff --git a/include/linux/rpmsg_ns.h b/include/linux/rpmsg_ns.h
index aabc6c3c0d6d..9f3030b2145b 100644
--- a/include/linux/rpmsg_ns.h
+++ b/include/linux/rpmsg_ns.h
@@ -41,8 +41,8 @@  struct rpmsg_hdr {
  */
 struct rpmsg_ns_msg {
 	char name[RPMSG_NAME_SIZE];
-	__virtio32 addr;
-	__virtio32 flags;
+	u32 addr;
+	u32 flags;
 } __packed;
 
 /**