Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1374422 > unrolled thread

[PATCH] drivers/virtio/virtio_ring.c: Deinline virtqueue_add, save 1016 bytes

Started byDenys Vlasenko <dvlasenk@redhat.com>
First post2016-04-08 21:00 +0200
Last post2016-04-09 22:20 +0200
Articles 2 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH] drivers/virtio/virtio_ring.c: Deinline virtqueue_add, save 1016 bytes Denys Vlasenko <dvlasenk@redhat.com> - 2016-04-08 21:00 +0200
    Re: [PATCH] drivers/virtio/virtio_ring.c: Deinline virtqueue_add,  save 1016 bytes "Michael S. Tsirkin" <mst@redhat.com> - 2016-04-09 22:20 +0200

#1374422 — [PATCH] drivers/virtio/virtio_ring.c: Deinline virtqueue_add, save 1016 bytes

FromDenys Vlasenko <dvlasenk@redhat.com>
Date2016-04-08 21:00 +0200
Subject[PATCH] drivers/virtio/virtio_ring.c: Deinline virtqueue_add, save 1016 bytes
Message-ID<rlJNo-8ev-13@gated-at.bofh.it>
This function compiles to 839 bytes of machine code.
In C, it is ~150 lines long.

This function has 3 callsites.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
CC: "Michael S. Tsirkin" <mst@redhat.com>
CC: virtualization@lists.linux-foundation.org
CC: linux-kernel@vger.kernel.org
---
 drivers/virtio/virtio_ring.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index e12e385..77a4771 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -126,7 +126,7 @@ static struct vring_desc *alloc_indirect(struct virtqueue *_vq,
 	return desc;
 }
 
-static inline int virtqueue_add(struct virtqueue *_vq,
+static int virtqueue_add(struct virtqueue *_vq,
 				struct scatterlist *sgs[],
 				unsigned int total_sg,
 				unsigned int out_sgs,
-- 
2.1.0

[toc] | [next] | [standalone]


#1374667 — Re: [PATCH] drivers/virtio/virtio_ring.c: Deinline virtqueue_add, save 1016 bytes

From"Michael S. Tsirkin" <mst@redhat.com>
Date2016-04-09 22:20 +0200
SubjectRe: [PATCH] drivers/virtio/virtio_ring.c: Deinline virtqueue_add, save 1016 bytes
Message-ID<rm7wm-26y-1@gated-at.bofh.it>
In reply to#1374422
On Fri, Apr 08, 2016 at 08:58:44PM +0200, Denys Vlasenko wrote:
> This function compiles to 839 bytes of machine code.
> In C, it is ~150 lines long.
> 
> This function has 3 callsites.
> 
> Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
> CC: "Michael S. Tsirkin" <mst@redhat.com>
> CC: virtualization@lists.linux-foundation.org
> CC: linux-kernel@vger.kernel.org

This function is one of the most performance critical ones in the driver, a
bunch of tuning went into it, making this inline intentionally.  I'd
have to see some numbers showing making it non-inline is a worth-while
tradeoff.

> ---
>  drivers/virtio/virtio_ring.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
> index e12e385..77a4771 100644
> --- a/drivers/virtio/virtio_ring.c
> +++ b/drivers/virtio/virtio_ring.c
> @@ -126,7 +126,7 @@ static struct vring_desc *alloc_indirect(struct virtqueue *_vq,
>  	return desc;
>  }
>  
> -static inline int virtqueue_add(struct virtqueue *_vq,
> +static int virtqueue_add(struct virtqueue *_vq,
>  				struct scatterlist *sgs[],
>  				unsigned int total_sg,
>  				unsigned int out_sgs,
> -- 
> 2.1.0

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web