Re: [PATCH v2] KVM: arm64: nvhe: Fix build with profile optimization

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 11 Oct 2022 03:15:36 +0100,
Denis Nikitin <denik@xxxxxxxxxxxx> wrote:
> 
> On Sat, Oct 8, 2022 at 7:22 PM Marc Zyngier <maz@xxxxxxxxxx> wrote:
> >
> > On Thu, 06 Oct 2022 17:28:17 +0100,
> > Denis Nikitin <denik@xxxxxxxxxxxx> wrote:
> > >
> > > Hi Mark,
> >
> > s/k/c/
> >
> > >
> > > This problem currently blocks the PGO roll on the ChromeOS kernel and
> > > we need some kind of a solution.
> >
> > I'm sorry, but I don't feel constrained by your internal deadlines. I
> > have my own...
> >
> > > Could you please take a look?
> >
> > I have asked for a reproducer. All I got for an answer is "this is
> > hard". Providing a profiling file would help, for example.
> 
> Could you please try the following profile on the 5.15 branch?
> 
> $ cat <<EOF > prof.txt
> kvm_pgtable_walk:100:10
>  2: 5
>  3: 5
>  5: 5
>  6: 5
>  10: 5
>  10: _kvm_pgtable_walk:50
>   5: 5
>   7: 5
>   10: 5
>   13.2: 5
>   14: 5
>   16: 5 __kvm_pgtable_walk:5
>   13: kvm_pgd_page_idx:30
>    2: __kvm_pgd_page_idx:30
>     2: 5
>     3: 5
>     5: 5
>     2: kvm_granule_shift:5
>      3: 5
> EOF
> 
> $ make LLVM=1 ARCH=arm64 KCFLAGS=-fprofile-sample-use=prof.txt -j8 vmlinux

Thanks, this was helpful, as I was able to reproduce the build failure.

FWIW, it seems pretty easy to work around by filtering out the
offending option, making it consistent with the mechanism we already
use for tracing and the like.

I came up with the hack below, which does the trick and is IMHO better
than dropping the section (extra work) or adding the negation of this
option (which depends on the compiler option evaluation order).

	M.

diff --git a/arch/arm64/kvm/hyp/nvhe/Makefile b/arch/arm64/kvm/hyp/nvhe/Makefile
index 48f6ae7cc6e6..7df1b6afca7f 100644
--- a/arch/arm64/kvm/hyp/nvhe/Makefile
+++ b/arch/arm64/kvm/hyp/nvhe/Makefile
@@ -91,7 +91,7 @@ quiet_cmd_hypcopy = HYPCOPY $@
 
 # Remove ftrace, Shadow Call Stack, and CFI CFLAGS.
 # This is equivalent to the 'notrace', '__noscs', and '__nocfi' annotations.
-KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS) $(CC_FLAGS_CFI), $(KBUILD_CFLAGS))
+KBUILD_CFLAGS := $(filter-out $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS) $(CC_FLAGS_CFI) -fprofile-sample-use=%, $(KBUILD_CFLAGS))
 
 # KVM nVHE code is run at a different exception code with a different map, so
 # compiler instrumentation that inserts callbacks or checks into the code may


-- 
Without deviation from the norm, progress is not possible.
_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm



[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux