Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp4534055iog; Wed, 22 Jun 2022 00:08:48 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uzXrpSdibnKQRwyGSbjnYFAGKBcIN9ERAq6dPkKt+Yp7ShO8uENighRPFw9x69J5i4RaJl X-Received: by 2002:a17:902:c2c6:b0:168:d8ce:90b2 with SMTP id c6-20020a170902c2c600b00168d8ce90b2mr33311871pla.110.1655881728094; Wed, 22 Jun 2022 00:08:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655881728; cv=none; d=google.com; s=arc-20160816; b=M9eB2fqCeW/3kwrxZ1dubsK81c7xsyJOy6/p/kKy2gr2Vcl/V0TfMxY3p7PAUp7U00 RayoaZWnOz83zvkEgfAZ5490UzCKqzOwyO1iGFxH95J1bl8R/mXO5qws8yXOa1d0uQm+ fl8M92TzUC7EdjJH1lqfPlwz+My2Z5C0jiAyW2GVKc4wSrG6T5sadS70h0QzWRw6o6L4 O66pFZxRWcDknWl0t9fbwihsWYi3HHzK42Kljb/5Ivrg5joo2HkblXiVc/UmGoD5sLd2 UpSYIQ1tlKcJRE4/LnRVshUcgiSHMXgwftc+M4GPVORw7dR/Lce+q4x0UuoEhfkqWYsL OIoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:references :cc:to:from:content-language:subject:user-agent:mime-version:date :message-id:dkim-signature; bh=H9Q+6TcB54BTdw1TZgpEIKdLHEZXFlF8aDl9td7310U=; b=U/eTyoW0cJSDcKoFQe24yXnmqOb7QbLxnuaQM0SwznzMH6pKg6Cbz0+EAllZYv5dla hHvNhujdHDIVfQPsRJz4EWiUSrndHgs23lft6KrmMygvtHRAmgMLcosuesL9w7J/kHue 8M9aL82nmtXxhDYn8Pv67JsgPZyaWHG+9r9TwVJqrMevEBxcjPt8HtcyL2ZBkaLBNVwS WXSJVP1Y8RfS9DFU/1YAcc5WO997r6nADG9odnF5bZAaqQ2yY3YIZwwgORkKcxXwC45i OTSQld5opAwIFG+E1kHp8NpVQtvbUdxBgo9ggkqYNdqqAiVgOts13Ls5w3ljOz+acvb2 Vzzg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ozlabs-ru.20210112.gappssmtp.com header.s=20210112 header.b=BjhC0Df9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i16-20020aa78d90000000b005251778054asi13469524pfr.337.2022.06.22.00.08.35; Wed, 22 Jun 2022 00:08:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@ozlabs-ru.20210112.gappssmtp.com header.s=20210112 header.b=BjhC0Df9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351659AbiFVG4P (ORCPT + 99 others); Wed, 22 Jun 2022 02:56:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37206 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232226AbiFVG4O (ORCPT ); Wed, 22 Jun 2022 02:56:14 -0400 Received: from mail-pj1-x1031.google.com (mail-pj1-x1031.google.com [IPv6:2607:f8b0:4864:20::1031]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3D2E855BC for ; Tue, 21 Jun 2022 23:56:11 -0700 (PDT) Received: by mail-pj1-x1031.google.com with SMTP id g16-20020a17090a7d1000b001ea9f820449so15863401pjl.5 for ; Tue, 21 Jun 2022 23:56:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ozlabs-ru.20210112.gappssmtp.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:content-language :from:to:cc:references:in-reply-to:content-transfer-encoding; bh=H9Q+6TcB54BTdw1TZgpEIKdLHEZXFlF8aDl9td7310U=; b=BjhC0Df9Jo86rj8WcdrxSUmhjqjSOxSilp7u3KgsFTlGv/dCDTmjZSLhXn4aNl7SBT GnTfeuZFC+v17uwzhSlWY64QsDhpAFt4hr5elfNqLl43XWJVOm8N2NALcrCu375xo63C thxpRgTzjroSZbO13bF/5glDma+mOFAq1l7pEo3oa3ybZB0XCP3rZiJGJT4M8M1hsRG7 DYGm1rEFp9ia8nou+YSjhIH3+YVd7/jD2W/mIhLsIMXjdnguSsa05clqXMPW/iY8oZtN QXhcXh3KO0QKbf9L3Wr142+9WFftoe8MRYXQKKJHf24rM8TDCPulAgdntpc3JNe5hcib mPsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:from:to:cc:references:in-reply-to :content-transfer-encoding; bh=H9Q+6TcB54BTdw1TZgpEIKdLHEZXFlF8aDl9td7310U=; b=ZufbKwXD3vaXQudpKwmo6O9aTPHG2ukfXxWXqmvibhCFiw+tqgvLz4AjKB3W97+DI8 PiH6hccqZenp32kr9mInwd4o4y7Ggns2NJbbXTGhorV7cF9/9iOBYJ4G6b366L7aGCc1 VtsKKjuj6recA3YZeQtGI7zwTcZHqHM+MRFTZSrLcwVARa03QQnwOZaKcQLvXQx/mpMZ RobUFoxDSz7FVZgGSgnDGFiJHOLzfhDX0OA+cFSMtRr1X1xFv06L6kR4TuCMiFD5w4nT QyUUtQ+IrqAf78BQASw4XqRic7tlLuvUQPB5zt+Py8ImayHDsFZzftvRuqWCjqRx9opc 6l7Q== X-Gm-Message-State: AJIora8fTT2IArVhPFV6t8kG9GZz2wcUBVVyFDhFu+jsR73oHS8ttvqt zI/tdhpdGn1Z9R3U++9CQbX2jg== X-Received: by 2002:a17:902:cec9:b0:16a:416c:3d27 with SMTP id d9-20020a170902cec900b0016a416c3d27mr4153397plg.107.1655880970715; Tue, 21 Jun 2022 23:56:10 -0700 (PDT) Received: from [10.61.2.177] (110-175-254-242.static.tpgi.com.au. [110.175.254.242]) by smtp.gmail.com with ESMTPSA id s24-20020a170902b19800b00161ccdc172dsm6630239plr.300.2022.06.21.23.56.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 21 Jun 2022 23:56:09 -0700 (PDT) Message-ID: Date: Wed, 22 Jun 2022 16:56:05 +1000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.0 Subject: Re: [PATCH kernel v2] zstd: Fixing mixed module-builtin objects Content-Language: en-US From: Alexey Kardashevskiy To: Nathan Chancellor , Nick Terrell Cc: linux-kernel@vger.kernel.org, Nick Desaulniers , Masahiro Yamada References: <20220429053329.2278740-1-aik@ozlabs.ru> <7d30583e-7e58-5184-be2d-773882dd9092@ozlabs.ru> In-Reply-To: <7d30583e-7e58-5184-be2d-773882dd9092@ozlabs.ru> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Ping? It's about 2 months now :) On 6/6/22 15:12, Alexey Kardashevskiy wrote: > Ping? > > > On 5/17/22 09:52, Nathan Chancellor wrote: >> Hi Nick, >> >> Did you have any thoughts on this patch? It is necessary for enabling >> LTO with PowerPC: >> >> https://lore.kernel.org/20220429064547.2334280-1-aik@ozlabs.ru/ >> >> If you don't have anything to send to Linus for the next cycle, perhaps >> this patch could be carried by the PowerPC folks with your ack? >> >> Cheers, >> Nathan >> >> On Fri, Apr 29, 2022 at 03:33:29PM +1000, Alexey Kardashevskiy wrote: >>> With CONFIG_ZSTD_COMPRESS=m and CONFIG_ZSTD_DECOMPRESS=y we end up in >>> a situation when files from lib/zstd/common/ are compiled once to be >>> linked later for ZSTD_DECOMPRESS (build-in) and ZSTD_COMPRESS (module) >>> even though CFLAGS are different for builtins and modules. >>> So far somehow this was not a problem but enabling LLVM LTO exposes >>> the problem as: >>> >>> ld.lld: error: linking module flags 'Code Model': IDs have >>> conflicting values in 'lib/built-in.a(zstd_common.o at 5868)' and >>> 'ld-temp.o' >>> >>> This particular conflict is caused by KBUILD_CFLAGS=-mcmodel=medium vs. >>> KBUILD_CFLAGS_MODULE=-mcmodel=large , modules use the large model on >>> POWERPC as explained at >>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/powerpc/Makefile?h=v5.18-rc4#n127 >>> but the current use of common files is wrong anyway. >>> >>> This works around the issue by introducing a zstd_common module with >>> shared code. >>> >>> Cc: Masahiro Yamada >>> Signed-off-by: Alexey Kardashevskiy >>> --- >>> Changes: >>> v2: >>> * add a new module instead of inlining common bits >>> >>> --- >>>   lib/zstd/Makefile                | 18 ++++++++---------- >>>   lib/zstd/common/entropy_common.c |  4 +++- >>>   lib/zstd/common/zstd_common.c    |  7 +++++++ >>>   lib/Kconfig                      |  8 ++++++-- >>>   4 files changed, 24 insertions(+), 13 deletions(-) >>> >>> diff --git a/lib/zstd/Makefile b/lib/zstd/Makefile >>> index fc45339fc3a3..440bd0007ae2 100644 >>> --- a/lib/zstd/Makefile >>> +++ b/lib/zstd/Makefile >>> @@ -10,14 +10,10 @@ >>>   # ################################################################ >>>   obj-$(CONFIG_ZSTD_COMPRESS) += zstd_compress.o >>>   obj-$(CONFIG_ZSTD_DECOMPRESS) += zstd_decompress.o >>> +obj-$(CONFIG_ZSTD_COMMON) += zstd_common.o >>>   zstd_compress-y := \ >>>           zstd_compress_module.o \ >>> -        common/debug.o \ >>> -        common/entropy_common.o \ >>> -        common/error_private.o \ >>> -        common/fse_decompress.o \ >>> -        common/zstd_common.o \ >>>           compress/fse_compress.o \ >>>           compress/hist.o \ >>>           compress/huf_compress.o \ >>> @@ -33,12 +29,14 @@ zstd_compress-y := \ >>>   zstd_decompress-y := \ >>>           zstd_decompress_module.o \ >>> -        common/debug.o \ >>> -        common/entropy_common.o \ >>> -        common/error_private.o \ >>> -        common/fse_decompress.o \ >>> -        common/zstd_common.o \ >>>           decompress/huf_decompress.o \ >>>           decompress/zstd_ddict.o \ >>>           decompress/zstd_decompress.o \ >>>           decompress/zstd_decompress_block.o \ >>> + >>> +zstd_common-y := \ >>> +        common/debug.o \ >>> +        common/entropy_common.o \ >>> +        common/error_private.o \ >>> +        common/fse_decompress.o \ >>> +        common/zstd_common.o \ >>> diff --git a/lib/zstd/common/entropy_common.c >>> b/lib/zstd/common/entropy_common.c >>> index 53b47a2b52ff..f84612627471 100644 >>> --- a/lib/zstd/common/entropy_common.c >>> +++ b/lib/zstd/common/entropy_common.c >>> @@ -15,6 +15,7 @@ >>>   /* ************************************* >>>   *  Dependencies >>>   ***************************************/ >>> +#include >>>   #include "mem.h" >>>   #include "error_private.h"       /* ERR_*, ERROR */ >>>   #define FSE_STATIC_LINKING_ONLY  /* FSE_MIN_TABLELOG */ >>> @@ -239,7 +240,7 @@ size_t FSE_readNCount( >>>   { >>>       return FSE_readNCount_bmi2(normalizedCounter, maxSVPtr, >>> tableLogPtr, headerBuffer, hbSize, /* bmi2 */ 0); >>>   } >>> - >>> +EXPORT_SYMBOL_GPL(FSE_readNCount); >>>   /*! HUF_readStats() : >>>       Read compact Huffman tree, saved by HUF_writeCTable(). >>> @@ -255,6 +256,7 @@ size_t HUF_readStats(BYTE* huffWeight, size_t >>> hwSize, U32* rankStats, >>>       U32 wksp[HUF_READ_STATS_WORKSPACE_SIZE_U32]; >>>       return HUF_readStats_wksp(huffWeight, hwSize, rankStats, >>> nbSymbolsPtr, tableLogPtr, src, srcSize, wksp, sizeof(wksp), /* bmi2 >>> */ 0); >>>   } >>> +EXPORT_SYMBOL_GPL(HUF_readStats); >>>   FORCE_INLINE_TEMPLATE size_t >>>   HUF_readStats_body(BYTE* huffWeight, size_t hwSize, U32* rankStats, >>> diff --git a/lib/zstd/common/zstd_common.c >>> b/lib/zstd/common/zstd_common.c >>> index 3d7e35b309b5..06f62b2026d5 100644 >>> --- a/lib/zstd/common/zstd_common.c >>> +++ b/lib/zstd/common/zstd_common.c >>> @@ -13,6 +13,7 @@ >>>   /*-************************************* >>>   *  Dependencies >>>   ***************************************/ >>> +#include >>>   #define ZSTD_DEPS_NEED_MALLOC >>>   #include "zstd_deps.h"   /* ZSTD_malloc, ZSTD_calloc, ZSTD_free, >>> ZSTD_memset */ >>>   #include "error_private.h" >>> @@ -59,6 +60,7 @@ void* ZSTD_customMalloc(size_t size, ZSTD_customMem >>> customMem) >>>           return customMem.customAlloc(customMem.opaque, size); >>>       return ZSTD_malloc(size); >>>   } >>> +EXPORT_SYMBOL_GPL(ZSTD_customMalloc); >>>   void* ZSTD_customCalloc(size_t size, ZSTD_customMem customMem) >>>   { >>> @@ -71,6 +73,7 @@ void* ZSTD_customCalloc(size_t size, ZSTD_customMem >>> customMem) >>>       } >>>       return ZSTD_calloc(1, size); >>>   } >>> +EXPORT_SYMBOL_GPL(ZSTD_customCalloc); >>>   void ZSTD_customFree(void* ptr, ZSTD_customMem customMem) >>>   { >>> @@ -81,3 +84,7 @@ void ZSTD_customFree(void* ptr, ZSTD_customMem >>> customMem) >>>               ZSTD_free(ptr); >>>       } >>>   } >>> +EXPORT_SYMBOL_GPL(ZSTD_customFree); >>> + >>> +MODULE_LICENSE("Dual BSD/GPL"); >>> +MODULE_DESCRIPTION("Zstd Common"); >>> diff --git a/lib/Kconfig b/lib/Kconfig >>> index 087e06b4cdfd..33f3a7054cdd 100644 >>> --- a/lib/Kconfig >>> +++ b/lib/Kconfig >>> @@ -333,12 +333,16 @@ config LZ4HC_COMPRESS >>>   config LZ4_DECOMPRESS >>>       tristate >>> +config ZSTD_COMMON >>> +    select XXHASH >>> +    tristate >>> + >>>   config ZSTD_COMPRESS >>> -    select XXHASH >>> +    select ZSTD_COMMON >>>       tristate >>>   config ZSTD_DECOMPRESS >>> -    select XXHASH >>> +    select ZSTD_COMMON >>>       tristate >>>   source "lib/xz/Kconfig" >>> -- >>> 2.30.2 >>> >>> > -- Alexey