Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp711184ybl; Wed, 14 Aug 2019 04:58:21 -0700 (PDT) X-Google-Smtp-Source: APXvYqxP4pa+bpM8/CUPE4UaWLk23Gc94caagVr1UkCgdiH2clImqZG5GLr0JL1VSBktl6E1mXyd X-Received: by 2002:aa7:9882:: with SMTP id r2mr13991074pfl.146.1565783901274; Wed, 14 Aug 2019 04:58:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565783901; cv=none; d=google.com; s=arc-20160816; b=w+tNv9ikhDIv5DPRUWZx1GOv3MILMPzrzi3t9eMU/Q2iC5K58Cgum56SmVy3LSFF4J p0ZxdOHPdaNWgA/7SrWXsUnc6WCC5DKmNwbJ+0g2reNGkwM8C0RDP438bJP6UQmnNSkG Ex23YVpkVX3eSmBpI+q/KigdS/IQdVoe3MFtrNo0UmBq6okkPH24JKZ7GFNzrmXYIQWu 9Mp3g2N5CeCP+yUOAArZws6PyIVU8aF8Jkl1Aebbvvt0HN/bLjcsVXCZHZIFzN7y2zH/ hTpEI/FYscjZpyIWpQAfN58aaCxiqVCDueB4Q4YS52nw6T3agAu9RzqCa77afTYB0jpg CAaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:mail-followup-to :message-id:subject:to:from:date:dkim-signature; bh=NQRv3f2EYUb06woT418BGqq97YNnVB8OYMpYY5o3G2Q=; b=m/6+2hMNyZQTAGQvQLbPoG7LBbRq71moNQDjgp4/s8aaN3LhB2pJA3tSq9k64kfQot z+/N/j0HikkqaxmNMMumV1uvfbdPsDRytrr6NSybAYYg6EWk51DF7f5DPzO9MA5zv9Kk 080Gy6irsg7W6n4GMno1eghU9Mic9chk6VMm3eGzC9NGaU2nhybhm5pZuJrXUtdjk1rT z8m8QP9WtpYQ8VdPeIfB3h9iJ5AXhahVn8XE/tfiSdC+B+7tfjEcuoGtDQET8RPcmQkG Syl6vu1gvulTQK7ofsYBa2URqzmNoq5mzXZ1tG1kxZmpOIYlnN1mLDffxqevEdPXzMR/ vRDw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=pwWgDLh7; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j12si35680889pgp.261.2019.08.14.04.58.04; Wed, 14 Aug 2019 04:58:21 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=pwWgDLh7; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726951AbfHNL5J (ORCPT + 99 others); Wed, 14 Aug 2019 07:57:09 -0400 Received: from mail-lf1-f67.google.com ([209.85.167.67]:35385 "EHLO mail-lf1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725888AbfHNL5H (ORCPT ); Wed, 14 Aug 2019 07:57:07 -0400 Received: by mail-lf1-f67.google.com with SMTP id p197so79077244lfa.2 for ; Wed, 14 Aug 2019 04:57:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:subject:message-id:mail-followup-to:references :mime-version:content-disposition:in-reply-to:user-agent; bh=NQRv3f2EYUb06woT418BGqq97YNnVB8OYMpYY5o3G2Q=; b=pwWgDLh7iYR6sRQOCJzxTO6tecq64oUlC4c7f/4xtIwFCLccjuOyP6JyD4AXKJRbah JcDr1MWsPgGKFggJi6QbkZebYKci1OeAu222Yb7wkJpAquU0crFSRVMMp3sU4JsdHO4+ /uw0uBcRqK0pyKcfeE9mNM0bNYHDEkUC1dAQogzrPVk4VEdd700ntVYFugzInlldgdUy ATO6ZXEjSPyOVaL8Cl9bTbTgoCOkAJhCLZPtdfyfC5Ce5tgJ5jif3BbCwF8cL4X/l1/s JJ10aC9rgIeo6W+EHzWqPw7sziL3TvnVyLwRRt4/YfkF0NO0DthScobM+NzYy1feiiKr /NFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:mail-followup-to :references:mime-version:content-disposition:in-reply-to:user-agent; bh=NQRv3f2EYUb06woT418BGqq97YNnVB8OYMpYY5o3G2Q=; b=DhWbVAVLsnxAiCRZ9AYx0odERcC8ZM5lff0H+vCpe/9dO6XRqMEejUAPODbebzNwAH 80fNZ2XrtNHQowpJsU4o7BnyWdaYxn7xmyqbHmjMH2RX3VdJjLyeYe3R6xd02iwAyHd0 VC2/DMI9uKuMwxSdjqRf8m5KZ2x801EzxnoaMyFlcuedTOIH+IsgCkqc/cug+A2UiDO+ zCQgWknHNWb48J2+ZaZN+IHv7gVHSMFThzHY0kHbGu63QGsAApLrtOYqbciPJd4dTXEG YIOMwAAhT9GdhNqug+iKI9eACZ6EsfJ4zHpfY2dLwz54465x3rgQ/SL8ueXILxDRUCLi M/6g== X-Gm-Message-State: APjAAAVh3XpDnKR+PD1wYRcOWxAyZZwVgyPDZdCOaJKPA0wTrINBff0y hpMVLfiA7F8xu+SUx4tiKFIRAg== X-Received: by 2002:ac2:55a3:: with SMTP id y3mr26236068lfg.101.1565783824241; Wed, 14 Aug 2019 04:57:04 -0700 (PDT) Received: from khorivan (168-200-94-178.pool.ukrtel.net. [178.94.200.168]) by smtp.gmail.com with ESMTPSA id t25sm20124603lfg.7.2019.08.14.04.57.02 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 14 Aug 2019 04:57:03 -0700 (PDT) Date: Wed, 14 Aug 2019 14:57:01 +0300 From: Ivan Khoronzhuk To: Andrii Nakryiko , Magnus Karlsson , =?iso-8859-1?Q?Bj=F6rn_T=F6pel?= , "David S. Miller" , Jesper Dangaard Brouer , john fastabend , Jakub Kicinski , Daniel Borkmann , Networking , bpf , xdp-newbies@vger.kernel.org, open list Subject: Re: [PATCH bpf-next 1/3] libbpf: add asm/unistd.h to xsk to get __NR_mmap2 Message-ID: <20190814115659.GC4142@khorivan> Mail-Followup-To: Andrii Nakryiko , Magnus Karlsson , =?iso-8859-1?Q?Bj=F6rn_T=F6pel?= , "David S. Miller" , Jesper Dangaard Brouer , john fastabend , Jakub Kicinski , Daniel Borkmann , Networking , bpf , xdp-newbies@vger.kernel.org, open list References: <20190813102318.5521-1-ivan.khoronzhuk@linaro.org> <20190813102318.5521-2-ivan.khoronzhuk@linaro.org> <20190814092403.GA4142@khorivan> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <20190814092403.GA4142@khorivan> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Aug 14, 2019 at 12:24:05PM +0300, Ivan Khoronzhuk wrote: >On Tue, Aug 13, 2019 at 04:38:13PM -0700, Andrii Nakryiko wrote: > >Hi, Andrii > >>On Tue, Aug 13, 2019 at 3:24 AM Ivan Khoronzhuk >> wrote: >>> >>>That's needed to get __NR_mmap2 when mmap2 syscall is used. >>> >>>Signed-off-by: Ivan Khoronzhuk >>>--- >>> tools/lib/bpf/xsk.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>>diff --git a/tools/lib/bpf/xsk.c b/tools/lib/bpf/xsk.c >>>index 5007b5d4fd2c..f2fc40f9804c 100644 >>>--- a/tools/lib/bpf/xsk.c >>>+++ b/tools/lib/bpf/xsk.c >>>@@ -12,6 +12,7 @@ >>> #include >>> #include >>> #include >>>+#include >> >>asm/unistd.h is not present in Github libbpf projection. Is there any > >Look on includes from >tools/lib/bpf/libpf.c >tools/lib/bpf/bpf.c > >That's how it's done... Copping headers to arch/arm will not >solve this, it includes both of them anyway, and anyway it needs >asm/unistd.h inclusion here, only because xsk.c needs __NR_* > > There is one more radical solution for this I can send, but I'm not sure how it can impact on other syscals/arches... Looks like: diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile index 9312066a1ae3..8b2f8ff7ce44 100644 --- a/tools/lib/bpf/Makefile +++ b/tools/lib/bpf/Makefile @@ -113,6 +113,7 @@ override CFLAGS += -Werror -Wall override CFLAGS += -fPIC override CFLAGS += $(INCLUDES) override CFLAGS += -fvisibility=hidden +override CFLAGS += -D_FILE_OFFSET_BITS=64 ifeq ($(VERBOSE),1) Q = diff --git a/tools/lib/bpf/xsk.c b/tools/lib/bpf/xsk.c index f2fc40f9804c..ff2d03b8380d 100644 --- a/tools/lib/bpf/xsk.c +++ b/tools/lib/bpf/xsk.c @@ -75,23 +75,6 @@ struct xsk_nl_info { int fd; }; -/* For 32-bit systems, we need to use mmap2 as the offsets are 64-bit. - * Unfortunately, it is not part of glibc. - */ -static inline void *xsk_mmap(void *addr, size_t length, int prot, int flags, - int fd, __u64 offset) -{ -#ifdef __NR_mmap2 - unsigned int page_shift = __builtin_ffs(getpagesize()) - 1; - long ret = syscall(__NR_mmap2, addr, length, prot, flags, fd, - (off_t)(offset >> page_shift)); - - return (void *)ret; -#else - return mmap(addr, length, prot, flags, fd, offset); -#endif -} - int xsk_umem__fd(const struct xsk_umem *umem) { return umem ? umem->fd : -EINVAL; @@ -211,10 +194,9 @@ int xsk_umem__create(struct xsk_umem **umem_ptr, void *umem_area, __u64 size, goto out_socket; } - map = xsk_mmap(NULL, off.fr.desc + - umem->config.fill_size * sizeof(__u64), - PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE, - umem->fd, XDP_UMEM_PGOFF_FILL_RING); + map = mmap(NULL, off.fr.desc + umem->config.fill_size * sizeof(__u64), + PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE, umem->fd, + XDP_UMEM_PGOFF_FILL_RING); if (map == MAP_FAILED) { err = -errno; goto out_socket; @@ -228,10 +210,9 @@ int xsk_umem__create(struct xsk_umem **umem_ptr, void *umem_area, __u64 size, fill->ring = map + off.fr.desc; fill->cached_cons = umem->config.fill_size; - map = xsk_mmap(NULL, - off.cr.desc + umem->config.comp_size * sizeof(__u64), - PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE, - umem->fd, XDP_UMEM_PGOFF_COMPLETION_RING); + map = mmap(NULL, off.cr.desc + umem->config.comp_size * sizeof(__u64), + PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE, umem->fd, + XDP_UMEM_PGOFF_COMPLETION_RING); if (map == MAP_FAILED) { err = -errno; goto out_mmap; @@ -552,11 +533,10 @@ int xsk_socket__create(struct xsk_socket **xsk_ptr, const char *ifname, } if (rx) { - rx_map = xsk_mmap(NULL, off.rx.desc + - xsk->config.rx_size * sizeof(struct xdp_desc), - PROT_READ | PROT_WRITE, - MAP_SHARED | MAP_POPULATE, - xsk->fd, XDP_PGOFF_RX_RING); + rx_map = mmap(NULL, off.rx.desc + + xsk->config.rx_size * sizeof(struct xdp_desc), + PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE, + xsk->fd, XDP_PGOFF_RX_RING); if (rx_map == MAP_FAILED) { err = -errno; goto out_socket; @@ -571,11 +551,10 @@ int xsk_socket__create(struct xsk_socket **xsk_ptr, const char *ifname, xsk->rx = rx; if (tx) { - tx_map = xsk_mmap(NULL, off.tx.desc + - xsk->config.tx_size * sizeof(struct xdp_desc), - PROT_READ | PROT_WRITE, - MAP_SHARED | MAP_POPULATE, - xsk->fd, XDP_PGOFF_TX_RING); + tx_map = mmap(NULL, off.tx.desc + + xsk->config.tx_size * sizeof(struct xdp_desc), + PROT_READ | PROT_WRITE, MAP_SHARED | MAP_POPULATE, + xsk->fd, XDP_PGOFF_TX_RING); if (tx_map == MAP_FAILED) { err = -errno; goto out_mmap_rx; If maintainers are ready to accept this I can send. What do you say? -- Regards, Ivan Khoronzhuk