From mboxrd@z Thu Jan 1 00:00:00 1970 From: Leon Romanovsky Subject: Re: [iproute] rdma broken on 32 bit Date: Tue, 11 Dec 2018 17:33:19 +0000 Message-ID: <20181211173315.GF3933@mtr-leonro.mtl.com> References: <20181210141020.535f042a@xeon-e3> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="m+jEI8cDoTn6Mu9E" Cc: David Ahern , "netdev@vger.kernel.org" To: Stephen Hemminger Return-path: Received: from mail-eopbgr150049.outbound.protection.outlook.com ([40.107.15.49]:57630 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726212AbeLKReC (ORCPT ); Tue, 11 Dec 2018 12:34:02 -0500 In-Reply-To: <20181210141020.535f042a@xeon-e3> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: --m+jEI8cDoTn6Mu9E Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Dec 10, 2018 at 02:10:20PM -0800, Stephen Hemminger wrote: > It appears that RDMA is broken on 32 bit platforms. > Sure you don't run on 32bit, but iproute2 needs to build everywhere. > > The issue is that you are assuming a C enum can hold 64 bits. > The standard says enum only has to hold "int" values. > So it breaks on 32bit. > > The issue is deeper than just a trivial fix. Please either change iproute > config script to not build RDMA if sizeof(enum) < 64 or fix the code to > use a safe value like uint64_t. > > rdma > CC rdma.o > CC utils.o > CC dev.o > CC link.o > In file included from rdma.h:26:0, > from dev.c:12: > dev.c: In function =E2=80=98dev_caps_to_str=E2=80=99: > ../include/utils.h:269:38: warning: left shift count >=3D width of type [= -Wshift-count-overflow] > #define BIT(nr) (1UL << (nr)) > ^ > rdma.h:32:61: note: in expansion of macro =E2=80=98BIT=E2=80=99 > #define RDMA_BITMAP_ENUM(name, bit_no) RDMA_BITMAP_##name =3D BIT(bit_no= ), > ^~~ > If you wade through the macro swamp: > dev.c > #define RDMA_DEV_FLAGS(x) \ > > x(SG_GAPS_REG, 32) \ > > enum { RDMA_DEV_FLAGS(RDMA_BITMAP_ENUM) }; > > Expands to: > enum { > RDMA_BITMAP_SG_GAPS_REG =3D (1UL << (32)), > }; > Thanks for the report, I reproduced and will do my best to send patches tom= orrow. --m+jEI8cDoTn6Mu9E Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIcBAEBAgAGBQJcD/TbAAoJEORje4g2cline6cP/jRgmOG4bOW/Qz9/eI9ttFFL ra/0fNM2zFLVlJ9HjD+6LuQsPMREs7/YZ2vLBpYQ8gXTrgMK15W9y0NqWZbSFXzq OKeg5Rh/Ehuxf+ZpIQO0XgwDT9UsNNp90q5L5Gvl7le7zX3CiVoaH07GLPu6D5Er JiKpvELq+gzRupSxByVfbQcvKVpjSV/L7CPql7qP9zuIxDVMwm4zvXG1Wp04AltD eOzaH3hFfF03ZTXjgj+i1tWOsU6V6psqNp3qk2BeFzpxEYsZPd7vfwr9OR1a3pyO C1HA56DHmzE01HaT5N4dnbGmWhsOw3WUbsEpULFwQ4LKsBV1lp673WyrorvkJfjt iatnXhnTvh9exA73N+VffM+lxGtbJt9NT8uTC/BZJPxfmRWhPxGMWa4cC0n+CDoj ggQWQmQKG3LcCTj9T/atjtQgOADNYzQE3fiBpcCeWV2yGzGN6IZy3n81qdtHPK1A 4ihIuLkV+czfmJJjT20lCOXteVRjTXx07ZaZphrGthNr9j2CsR0jVZwaN6RIIsvP +IcqgPjTEO9qoHPVp68HS7yorkDce6oDJJIoyay4jDeDFK3lI58lxKejZI/73fPs xUKwV4jtkXsK2NqFeGibpgkPGropELjph2+CI8W1fvhq5XfTOZLqu4sSL+O8+zbE Dn5nZ+xpnUOHXxABbfT4 =7sFW -----END PGP SIGNATURE----- --m+jEI8cDoTn6Mu9E--