lkml.org 
[lkml]   [2020]   [Nov]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH] powerpc: fix the allyesconfig build
    From
    Date
    On 2020/11/28 9:56, Jakub Kicinski wrote:
    > On Sat, 28 Nov 2020 12:28:19 +1100 Stephen Rothwell wrote:
    >> There are 2 drivers that have arrays of packed structures that contain
    >> pointers that end up at unaligned offsets. These produce warnings in
    >> the PowerPC allyesconfig build like this:
    >>
    >> WARNING: 148 bad relocations
    >> c00000000e56510b R_PPC64_UADDR64 .rodata+0x0000000001c72378
    >> c00000000e565126 R_PPC64_UADDR64 .rodata+0x0000000001c723c0
    >>
    >> They are not drivers that are used on PowerPC (I assume), so mark them
    >> to not be built on PPC64 when CONFIG_RELOCATABLE is enabled.
    >
    > 😳😳
    >
    > What's the offending structure in hisilicon? I'd rather have a look
    > packing structs with pointers in 'em sounds questionable.
    >
    > I only see these two:
    >
    > $ git grep packed drivers/net/ethernet/hisilicon/
    > drivers/net/ethernet/hisilicon/hns/hnae.h:struct __packed hnae_desc {
    > drivers/net/ethernet/hisilicon/hns3/hns3_enet.h:struct __packed hns3_desc {

    I assmue "struct __packed hnae_desc" is the offending structure, because
    flag_ipoffset field is defined as __le32 and is not 32 bit aligned.

    struct __packed hnae_desc {
    __le64 addr; //0
    union {
    struct { //64
    union {
    __le16 asid_bufnum_pid;
    __le16 asid;
    };
    __le16 send_size; //92
    union {
    __le32 flag_ipoffset; //*108*
    struct {
    __u8 bn_pid;
    __u8 ra_ri_cs_fe_vld;
    __u8 ip_offset;
    __u8 tse_vlan_snap_v6_sctp_nth;
    };
    };
    __le16 mss;
    __u8 l4_len;
    __u8 reserved1;
    __le16 paylen;
    __u8 vmid;
    __u8 qid;
    __le32 reserved2[2];
    } tx;

    struct {
    __le32 ipoff_bnum_pid_flag;
    __le16 pkt_len;
    __le16 size;
    union {
    __le32 vlan_pri_asid;
    struct {
    __le16 asid;
    __le16 vlan_cfi_pri;
    };
    };
    __le32 rss_hash;
    __le32 reserved_1[2];
    } rx;
    };
    };

    > .
    >

    \
     
     \ /
      Last update: 2020-11-28 03:53    [W:3.481 / U:0.924 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site