Received: by 2002:a05:6a10:c604:0:0:0:0 with SMTP id y4csp4659168pxt; Wed, 11 Aug 2021 10:57:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwTWcKy98j5HIgvycFuSFKg69y1ZQ+wXcdr44ivxG4a0k0C+UiSRoBMT1qfd4xQybxFxK8G X-Received: by 2002:a17:906:a3d8:: with SMTP id ca24mr4882891ejb.533.1628704674649; Wed, 11 Aug 2021 10:57:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628704674; cv=none; d=google.com; s=arc-20160816; b=A6jpEbDWHq6+QxpZiAJ+Qfuv0hl/hwzXrKz+ZJqllW7YPDu3LJAF0oWNfkX0qmqI4N Vw6br8KjW3M/HFhhNqKuX3KyJ3mt8/vANkrNWLuMMJbHDU908oFnVclXUHcnVC5noojn Cz8P75FKU64qxxtLbRFoSwSRHOqhAj/rHkttT2s16j6JP2MGSigrT2oQSK9jBTFlZBba vp3GvH4FEafTnxVoJUMFU48POqbZgeGpnUyyWbPUwcqC1ofnEXnTc8FiWLRzCwTQlAom AzRY/FC419Cv1q2fPgzWLARn/1sHgMTXuorqHuIVE/LSAHL1NrCDyq2lLqnGgmA0aP4P qm/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=rUQ8qsIKb0jmCsRmsVCtriK4A1g1bFbYlRoFYCo5voI=; b=lxaWZE4SLIn9d103MvrbhodsYZNDXVGL0FuFlMY8hpHqFV6g6FmckPQ31JRfUhjdsk ZVovm9jzlOdjqWHJKj9A0oUTeZ6oc5bLGpCt2LN35RobidW4ooPTDDXBku9OkMbiG23v 7lgKiIAuYi53OmbwlNzM4JpWQvb9v5MfBZcGeKTzt+6bEXBI7+NtpwxY9HcLUqWkNrbA 0HjFSGdyJf1O5UAfGUQv95aeBDuU2wpHocOdx+MzcD3PIofdw9nkD6beICx1KpWTEkdF uoIGW0pyPvYMgw8TMd5sxGei6T/uT/aGLnr+5SN/p/26eLJ8j3ZNlPK92B9rakt0G0u1 jpsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=tB+KQZXO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w10si1599923ejv.584.2021.08.11.10.57.31; Wed, 11 Aug 2021 10:57:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=tB+KQZXO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230042AbhHKRzp (ORCPT + 99 others); Wed, 11 Aug 2021 13:55:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49714 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229703AbhHKRzm (ORCPT ); Wed, 11 Aug 2021 13:55:42 -0400 Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BEC22C061765 for ; Wed, 11 Aug 2021 10:55:17 -0700 (PDT) Received: by mail-lf1-x12a.google.com with SMTP id z2so7564241lft.1 for ; Wed, 11 Aug 2021 10:55:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=rUQ8qsIKb0jmCsRmsVCtriK4A1g1bFbYlRoFYCo5voI=; b=tB+KQZXOO/VH5k3iAwjO8zaROvEBWLxhaHcvF8J4B6HMrT5mcLQpfeUn7rFKhP6lXx ABM692/sdKIwnqLA/uEEgEnXR+tOFI2w/3881DfTJzLkkUCI26k03ZwtMKGZ+JGFLrHz Ko3FtGy6dP3iv8mPDngC0kTs6tdUolYWHbNF7fxYIY31v92IPXhTnHUsLkLlGL2OAVEX tZ+mgPOO35Vn1xKgA0c+cP4u/cMuX4r2aiWTfyV/URnd7KulJPMykio09WEW5s9Cn6n5 lZ1431DDXbaQR6h7zYECFo8VOqWeIa58nPTfxPsXbd8rjMk/GyWyW47cflLc0SKidBFY Xdlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=rUQ8qsIKb0jmCsRmsVCtriK4A1g1bFbYlRoFYCo5voI=; b=j+k6YSJBE+B77C3/NRxNzoVqndASwRGsh6TZqAg1nLU8r1LZ+buQJxKQJ3bArTu6NT HNXtBp6bdv4+LPEJvkoGb1Q/LTGOeCfkdN6J9Av0G66mQcXgo1Q++Z1bqD8Lmo5p0tVb Ljq5FrJlkkgyEsYg/AlU1igb6dOnTXuP5oBE+VTK+jTYesvO2NdxrcJuhJvLC8BDevZv FA/7biYas01e1cLZ4zXLNtVJuJwjrOwkj/jjrXMI9kEokYZ7QqjXEu5Zx2tL6Dr722i3 igkj3cQD1XvsCloA3MweXYYfZsu1EhzV77VBPPGiUCeNCP1vAqPwNfK4BcGCPCZQpxIr RPIQ== X-Gm-Message-State: AOAM532n6viN551ID30vBFu9SJEIjs1Txn8Zu2Xt5zWlixmvtBEtsWDH X1aMnTf708SudKeddsSGjLFkNcdVUHWMP29/3YmjrA== X-Received: by 2002:ac2:5324:: with SMTP id f4mr37199lfh.106.1628704515892; Wed, 11 Aug 2021 10:55:15 -0700 (PDT) MIME-Version: 1.0 References: <20210811165346.3110715-1-seanjc@google.com> In-Reply-To: <20210811165346.3110715-1-seanjc@google.com> From: Jing Zhang Date: Wed, 11 Aug 2021 10:55:05 -0700 Message-ID: Subject: Re: [PATCH] KVM: Move binary stats helpers to header to effectively export them To: Sean Christopherson Cc: Paolo Bonzini , KVM , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Aug 11, 2021 at 9:53 AM Sean Christopherson wrote: > > Move kvm_stats_linear_hist_update() and kvm_stats_log_hist_update() to > kvm_host.h as static inline helpers to resolve a linker error on PPC, > which references the latter from module code. This also fixes a goof > where the functions are tagged as "inline", despite being externs and > thus not inline-friendy. > > ERROR: modpost: ".kvm_stats_log_hist_update" [arch/powerpc/kvm/kvm-hv.ko] undefined! > > Fixes: c8ba95948182 ("KVM: stats: Support linear and logarithmic histogram statistics") > Cc: Jing Zhang > Signed-off-by: Sean Christopherson > --- > include/linux/kvm_host.h | 38 +++++++++++++++++++++++++++++++++++--- > virt/kvm/binary_stats.c | 34 ---------------------------------- > 2 files changed, 35 insertions(+), 37 deletions(-) > > diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h > index d447b21cdd73..e4d712e9f760 100644 > --- a/include/linux/kvm_host.h > +++ b/include/linux/kvm_host.h > @@ -1467,9 +1467,41 @@ ssize_t kvm_stats_read(char *id, const struct kvm_stats_header *header, > const struct _kvm_stats_desc *desc, > void *stats, size_t size_stats, > char __user *user_buffer, size_t size, loff_t *offset); > -inline void kvm_stats_linear_hist_update(u64 *data, size_t size, > - u64 value, size_t bucket_size); > -inline void kvm_stats_log_hist_update(u64 *data, size_t size, u64 value); > + > +/** > + * kvm_stats_linear_hist_update() - Update bucket value for linear histogram > + * statistics data. > + * > + * @data: start address of the stats data > + * @size: the number of bucket of the stats data > + * @value: the new value used to update the linear histogram's bucket > + * @bucket_size: the size (width) of a bucket > + */ > +static inline void kvm_stats_linear_hist_update(u64 *data, size_t size, > + u64 value, size_t bucket_size) > +{ > + size_t index = div64_u64(value, bucket_size); > + > + index = min(index, size - 1); > + ++data[index]; > +} > + > +/** > + * kvm_stats_log_hist_update() - Update bucket value for logarithmic histogram > + * statistics data. > + * > + * @data: start address of the stats data > + * @size: the number of bucket of the stats data > + * @value: the new value used to update the logarithmic histogram's bucket > + */ > +static inline void kvm_stats_log_hist_update(u64 *data, size_t size, u64 value) > +{ > + size_t index = fls64(value); > + > + index = min(index, size - 1); > + ++data[index]; > +} > + > #define KVM_STATS_LINEAR_HIST_UPDATE(array, value, bsize) \ > kvm_stats_linear_hist_update(array, ARRAY_SIZE(array), value, bsize) > #define KVM_STATS_LOG_HIST_UPDATE(array, value) \ > diff --git a/virt/kvm/binary_stats.c b/virt/kvm/binary_stats.c > index 9bd595c92d3a..eefca6c69f51 100644 > --- a/virt/kvm/binary_stats.c > +++ b/virt/kvm/binary_stats.c > @@ -142,37 +142,3 @@ ssize_t kvm_stats_read(char *id, const struct kvm_stats_header *header, > *offset = pos; > return len; > } > - > -/** > - * kvm_stats_linear_hist_update() - Update bucket value for linear histogram > - * statistics data. > - * > - * @data: start address of the stats data > - * @size: the number of bucket of the stats data > - * @value: the new value used to update the linear histogram's bucket > - * @bucket_size: the size (width) of a bucket > - */ > -inline void kvm_stats_linear_hist_update(u64 *data, size_t size, > - u64 value, size_t bucket_size) > -{ > - size_t index = div64_u64(value, bucket_size); > - > - index = min(index, size - 1); > - ++data[index]; > -} > - > -/** > - * kvm_stats_log_hist_update() - Update bucket value for logarithmic histogram > - * statistics data. > - * > - * @data: start address of the stats data > - * @size: the number of bucket of the stats data > - * @value: the new value used to update the logarithmic histogram's bucket > - */ > -inline void kvm_stats_log_hist_update(u64 *data, size_t size, u64 value) > -{ > - size_t index = fls64(value); > - > - index = min(index, size - 1); > - ++data[index]; > -} > -- > 2.32.0.605.g8dce9f2422-goog > Thanks for fixing it, Sean! Reviewed-by: Jing Zhang