From: Nathan Chancellor <nathan@kernel.org>
To: Nicholas Piggin <npiggin@gmail.com>,
Arnd Bergmann <arnd@arndb.de>, kernel test robot <lkp@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
clang-built-linux@googlegroups.com, kbuild-all@lists.01.org,
Kees Cook <keescook@chromium.org>,
linux-kernel@vger.kernel.org,
Linux Memory Management List <linux-mm@kvack.org>,
linuxppc-dev@lists.ozlabs.org, kvm-ppc@vger.kernel.org
Subject: Re: arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kvmhv_enter_nested_guest'
Date: Sun, 20 Jun 2021 22:53:22 -0700 [thread overview]
Message-ID: <e6167885-30e5-d149-bcde-3e9ad9f5d381@kernel.org> (raw)
In-Reply-To: <1624232938.d90brlmh3p.astroid@bobo.none>
On 6/20/2021 4:59 PM, Nicholas Piggin wrote:
> Excerpts from kernel test robot's message of April 3, 2021 8:47 pm:
>> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
>> head: d93a0d43e3d0ba9e19387be4dae4a8d5b175a8d7
>> commit: 97e4910232fa1f81e806aa60c25a0450276d99a2 linux/compiler-clang.h: define HAVE_BUILTIN_BSWAP*
>> date: 3 weeks ago
>> config: powerpc64-randconfig-r006-20210403 (attached as .config)
>> compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 0fe8af94688aa03c01913c2001d6a1a911f42ce6)
>> reproduce (this is a W=1 build):
>> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>> chmod +x ~/bin/make.cross
>> # install powerpc64 cross compiling tool for clang build
>> # apt-get install binutils-powerpc64-linux-gnu
>> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=97e4910232fa1f81e806aa60c25a0450276d99a2
>> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>> git fetch --no-tags linus master
>> git checkout 97e4910232fa1f81e806aa60c25a0450276d99a2
>> # save the attached .config to linux build tree
>> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <lkp@intel.com>
>>
>> All errors (new ones prefixed by >>):
>>
>>>> arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kvmhv_enter_nested_guest' [-Werror,-Wframe-larger-than=]
>> long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
>> ^
>> 1 error generated.
>>
>>
>> vim +/kvmhv_enter_nested_guest +264 arch/powerpc/kvm/book3s_hv_nested.c
>
> Not much changed here recently. It's not that big a concern because it's
> only called in the KVM ioctl path, not in any deep IO paths or anything,
> and doesn't recurse. Might be a bit of inlining or stack spilling put it
> over the edge.
It appears to be the fact that LLVM's PowerPC backend does not emit
efficient byteswap assembly:
https://github.com/ClangBuiltLinux/linux/issues/1292
https://bugs.llvm.org/show_bug.cgi?id=49610
> powerpc does make it an error though, would be good to avoid that so the
> robot doesn't keep tripping over.
Marking byteswap_pt_regs as 'noinline_for_stack' drastically reduces the
stack usage. If that is an acceptable solution, I can send it along
tomorrow.
Cheers,
Nathan
> Thanks,
> Nick
>
>
>>
>> afe75049303f75 Ravi Bangoria 2020-12-16 263
>> 360cae313702cd Paul Mackerras 2018-10-08 @264 long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
>> 360cae313702cd Paul Mackerras 2018-10-08 265 {
>> 360cae313702cd Paul Mackerras 2018-10-08 266 long int err, r;
>> 360cae313702cd Paul Mackerras 2018-10-08 267 struct kvm_nested_guest *l2;
>> 360cae313702cd Paul Mackerras 2018-10-08 268 struct pt_regs l2_regs, saved_l1_regs;
>> afe75049303f75 Ravi Bangoria 2020-12-16 269 struct hv_guest_state l2_hv = {0}, saved_l1_hv;
>> 360cae313702cd Paul Mackerras 2018-10-08 270 struct kvmppc_vcore *vc = vcpu->arch.vcore;
>> 360cae313702cd Paul Mackerras 2018-10-08 271 u64 hv_ptr, regs_ptr;
>> 360cae313702cd Paul Mackerras 2018-10-08 272 u64 hdec_exp;
>> 360cae313702cd Paul Mackerras 2018-10-08 273 s64 delta_purr, delta_spurr, delta_ic, delta_vtb;
>> 360cae313702cd Paul Mackerras 2018-10-08 274 u64 mask;
>> 360cae313702cd Paul Mackerras 2018-10-08 275 unsigned long lpcr;
>> 360cae313702cd Paul Mackerras 2018-10-08 276
>> 360cae313702cd Paul Mackerras 2018-10-08 277 if (vcpu->kvm->arch.l1_ptcr == 0)
>> 360cae313702cd Paul Mackerras 2018-10-08 278 return H_NOT_AVAILABLE;
>> 360cae313702cd Paul Mackerras 2018-10-08 279
>> 360cae313702cd Paul Mackerras 2018-10-08 280 /* copy parameters in */
>> 360cae313702cd Paul Mackerras 2018-10-08 281 hv_ptr = kvmppc_get_gpr(vcpu, 4);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 282 regs_ptr = kvmppc_get_gpr(vcpu, 5);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 283 vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
>> afe75049303f75 Ravi Bangoria 2020-12-16 284 err = kvmhv_read_guest_state_and_regs(vcpu, &l2_hv, &l2_regs,
>> afe75049303f75 Ravi Bangoria 2020-12-16 285 hv_ptr, regs_ptr);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 286 srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
>> 360cae313702cd Paul Mackerras 2018-10-08 287 if (err)
>> 360cae313702cd Paul Mackerras 2018-10-08 288 return H_PARAMETER;
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 289
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 290 if (kvmppc_need_byteswap(vcpu))
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 291 byteswap_hv_regs(&l2_hv);
>> afe75049303f75 Ravi Bangoria 2020-12-16 292 if (l2_hv.version > HV_GUEST_STATE_VERSION)
>> 360cae313702cd Paul Mackerras 2018-10-08 293 return H_P2;
>> 360cae313702cd Paul Mackerras 2018-10-08 294
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 295 if (kvmppc_need_byteswap(vcpu))
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 296 byteswap_pt_regs(&l2_regs);
>> 9d0b048da788c1 Suraj Jitindar Singh 2018-10-08 297 if (l2_hv.vcpu_token >= NR_CPUS)
>> 9d0b048da788c1 Suraj Jitindar Singh 2018-10-08 298 return H_PARAMETER;
>> 9d0b048da788c1 Suraj Jitindar Singh 2018-10-08 299
>> 360cae313702cd Paul Mackerras 2018-10-08 300 /* translate lpid */
>> 360cae313702cd Paul Mackerras 2018-10-08 301 l2 = kvmhv_get_nested(vcpu->kvm, l2_hv.lpid, true);
>> 360cae313702cd Paul Mackerras 2018-10-08 302 if (!l2)
>> 360cae313702cd Paul Mackerras 2018-10-08 303 return H_PARAMETER;
>> 360cae313702cd Paul Mackerras 2018-10-08 304 if (!l2->l1_gr_to_hr) {
>> 360cae313702cd Paul Mackerras 2018-10-08 305 mutex_lock(&l2->tlb_lock);
>> 360cae313702cd Paul Mackerras 2018-10-08 306 kvmhv_update_ptbl_cache(l2);
>> 360cae313702cd Paul Mackerras 2018-10-08 307 mutex_unlock(&l2->tlb_lock);
>> 360cae313702cd Paul Mackerras 2018-10-08 308 }
>> 360cae313702cd Paul Mackerras 2018-10-08 309
>> 360cae313702cd Paul Mackerras 2018-10-08 310 /* save l1 values of things */
>> 360cae313702cd Paul Mackerras 2018-10-08 311 vcpu->arch.regs.msr = vcpu->arch.shregs.msr;
>> 360cae313702cd Paul Mackerras 2018-10-08 312 saved_l1_regs = vcpu->arch.regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 313 kvmhv_save_hv_regs(vcpu, &saved_l1_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 314
>> 360cae313702cd Paul Mackerras 2018-10-08 315 /* convert TB values/offsets to host (L0) values */
>> 360cae313702cd Paul Mackerras 2018-10-08 316 hdec_exp = l2_hv.hdec_expiry - vc->tb_offset;
>> 360cae313702cd Paul Mackerras 2018-10-08 317 vc->tb_offset += l2_hv.tb_offset;
>> 360cae313702cd Paul Mackerras 2018-10-08 318
>> 360cae313702cd Paul Mackerras 2018-10-08 319 /* set L1 state to L2 state */
>> 360cae313702cd Paul Mackerras 2018-10-08 320 vcpu->arch.nested = l2;
>> 360cae313702cd Paul Mackerras 2018-10-08 321 vcpu->arch.nested_vcpu_id = l2_hv.vcpu_token;
>> 360cae313702cd Paul Mackerras 2018-10-08 322 vcpu->arch.regs = l2_regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 323 vcpu->arch.shregs.msr = vcpu->arch.regs.msr;
>> 360cae313702cd Paul Mackerras 2018-10-08 324 mask = LPCR_DPFD | LPCR_ILE | LPCR_TC | LPCR_AIL | LPCR_LD |
>> 360cae313702cd Paul Mackerras 2018-10-08 325 LPCR_LPES | LPCR_MER;
>> 360cae313702cd Paul Mackerras 2018-10-08 326 lpcr = (vc->lpcr & ~mask) | (l2_hv.lpcr & mask);
>> 73937deb4b2d7f Suraj Jitindar Singh 2018-10-08 327 sanitise_hv_regs(vcpu, &l2_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 328 restore_hv_regs(vcpu, &l2_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 329
>> 360cae313702cd Paul Mackerras 2018-10-08 330 vcpu->arch.ret = RESUME_GUEST;
>> 360cae313702cd Paul Mackerras 2018-10-08 331 vcpu->arch.trap = 0;
>> 360cae313702cd Paul Mackerras 2018-10-08 332 do {
>> 360cae313702cd Paul Mackerras 2018-10-08 333 if (mftb() >= hdec_exp) {
>> 360cae313702cd Paul Mackerras 2018-10-08 334 vcpu->arch.trap = BOOK3S_INTERRUPT_HV_DECREMENTER;
>> 360cae313702cd Paul Mackerras 2018-10-08 335 r = RESUME_HOST;
>> 360cae313702cd Paul Mackerras 2018-10-08 336 break;
>> 360cae313702cd Paul Mackerras 2018-10-08 337 }
>> 8c99d34578628b Tianjia Zhang 2020-04-27 338 r = kvmhv_run_single_vcpu(vcpu, hdec_exp, lpcr);
>> 360cae313702cd Paul Mackerras 2018-10-08 339 } while (is_kvmppc_resume_guest(r));
>> 360cae313702cd Paul Mackerras 2018-10-08 340
>> 360cae313702cd Paul Mackerras 2018-10-08 341 /* save L2 state for return */
>> 360cae313702cd Paul Mackerras 2018-10-08 342 l2_regs = vcpu->arch.regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 343 l2_regs.msr = vcpu->arch.shregs.msr;
>> 360cae313702cd Paul Mackerras 2018-10-08 344 delta_purr = vcpu->arch.purr - l2_hv.purr;
>> 360cae313702cd Paul Mackerras 2018-10-08 345 delta_spurr = vcpu->arch.spurr - l2_hv.spurr;
>> 360cae313702cd Paul Mackerras 2018-10-08 346 delta_ic = vcpu->arch.ic - l2_hv.ic;
>> 360cae313702cd Paul Mackerras 2018-10-08 347 delta_vtb = vc->vtb - l2_hv.vtb;
>> 360cae313702cd Paul Mackerras 2018-10-08 348 save_hv_return_state(vcpu, vcpu->arch.trap, &l2_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 349
>> 360cae313702cd Paul Mackerras 2018-10-08 350 /* restore L1 state */
>> 360cae313702cd Paul Mackerras 2018-10-08 351 vcpu->arch.nested = NULL;
>> 360cae313702cd Paul Mackerras 2018-10-08 352 vcpu->arch.regs = saved_l1_regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 353 vcpu->arch.shregs.msr = saved_l1_regs.msr & ~MSR_TS_MASK;
>> 360cae313702cd Paul Mackerras 2018-10-08 354 /* set L1 MSR TS field according to L2 transaction state */
>> 360cae313702cd Paul Mackerras 2018-10-08 355 if (l2_regs.msr & MSR_TS_MASK)
>> 360cae313702cd Paul Mackerras 2018-10-08 356 vcpu->arch.shregs.msr |= MSR_TS_S;
>> 360cae313702cd Paul Mackerras 2018-10-08 357 vc->tb_offset = saved_l1_hv.tb_offset;
>> 360cae313702cd Paul Mackerras 2018-10-08 358 restore_hv_regs(vcpu, &saved_l1_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 359 vcpu->arch.purr += delta_purr;
>> 360cae313702cd Paul Mackerras 2018-10-08 360 vcpu->arch.spurr += delta_spurr;
>> 360cae313702cd Paul Mackerras 2018-10-08 361 vcpu->arch.ic += delta_ic;
>> 360cae313702cd Paul Mackerras 2018-10-08 362 vc->vtb += delta_vtb;
>> 360cae313702cd Paul Mackerras 2018-10-08 363
>> 360cae313702cd Paul Mackerras 2018-10-08 364 kvmhv_put_nested(l2);
>> 360cae313702cd Paul Mackerras 2018-10-08 365
>> 360cae313702cd Paul Mackerras 2018-10-08 366 /* copy l2_hv_state and regs back to guest */
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 367 if (kvmppc_need_byteswap(vcpu)) {
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 368 byteswap_hv_regs(&l2_hv);
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 369 byteswap_pt_regs(&l2_regs);
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 370 }
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 371 vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
>> afe75049303f75 Ravi Bangoria 2020-12-16 372 err = kvmhv_write_guest_state_and_regs(vcpu, &l2_hv, &l2_regs,
>> afe75049303f75 Ravi Bangoria 2020-12-16 373 hv_ptr, regs_ptr);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 374 srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
>> 360cae313702cd Paul Mackerras 2018-10-08 375 if (err)
>> 360cae313702cd Paul Mackerras 2018-10-08 376 return H_AUTHORITY;
>> 360cae313702cd Paul Mackerras 2018-10-08 377
>> 360cae313702cd Paul Mackerras 2018-10-08 378 if (r == -EINTR)
>> 360cae313702cd Paul Mackerras 2018-10-08 379 return H_INTERRUPT;
>> 360cae313702cd Paul Mackerras 2018-10-08 380
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 381 if (vcpu->mmio_needed) {
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 382 kvmhv_nested_mmio_needed(vcpu, regs_ptr);
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 383 return H_TOO_HARD;
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 384 }
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 385
>> 360cae313702cd Paul Mackerras 2018-10-08 386 return vcpu->arch.trap;
>> 360cae313702cd Paul Mackerras 2018-10-08 387 }
>> 360cae313702cd Paul Mackerras 2018-10-08 388
>>
>> :::::: The code at line 264 was first introduced by commit
>> :::::: 360cae313702cdd0b90f82c261a8302fecef030a KVM: PPC: Book3S HV: Nested guest entry via hypercall
>>
>> :::::: TO: Paul Mackerras <paulus@ozlabs.org>
>> :::::: CC: Michael Ellerman <mpe@ellerman.id.au>
>>
>> ---
>> 0-DAY CI Kernel Test Service, Intel Corporation
>> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
>>
WARNING: multiple messages have this Message-ID (diff)
From: Nathan Chancellor <nathan@kernel.org>
To: Nicholas Piggin <npiggin@gmail.com>,
Arnd Bergmann <arnd@arndb.de>, kernel test robot <lkp@intel.com>
Cc: kbuild-all@lists.01.org, Kees Cook <keescook@chromium.org>,
clang-built-linux@googlegroups.com, linux-kernel@vger.kernel.org,
kvm-ppc@vger.kernel.org,
Linux Memory Management List <linux-mm@kvack.org>,
Andrew Morton <akpm@linux-foundation.org>,
linuxppc-dev@lists.ozlabs.org
Subject: Re: arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kvmhv_enter_nested_guest'
Date: Sun, 20 Jun 2021 22:53:22 -0700 [thread overview]
Message-ID: <e6167885-30e5-d149-bcde-3e9ad9f5d381@kernel.org> (raw)
In-Reply-To: <1624232938.d90brlmh3p.astroid@bobo.none>
On 6/20/2021 4:59 PM, Nicholas Piggin wrote:
> Excerpts from kernel test robot's message of April 3, 2021 8:47 pm:
>> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
>> head: d93a0d43e3d0ba9e19387be4dae4a8d5b175a8d7
>> commit: 97e4910232fa1f81e806aa60c25a0450276d99a2 linux/compiler-clang.h: define HAVE_BUILTIN_BSWAP*
>> date: 3 weeks ago
>> config: powerpc64-randconfig-r006-20210403 (attached as .config)
>> compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 0fe8af94688aa03c01913c2001d6a1a911f42ce6)
>> reproduce (this is a W=1 build):
>> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>> chmod +x ~/bin/make.cross
>> # install powerpc64 cross compiling tool for clang build
>> # apt-get install binutils-powerpc64-linux-gnu
>> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=97e4910232fa1f81e806aa60c25a0450276d99a2
>> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>> git fetch --no-tags linus master
>> git checkout 97e4910232fa1f81e806aa60c25a0450276d99a2
>> # save the attached .config to linux build tree
>> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <lkp@intel.com>
>>
>> All errors (new ones prefixed by >>):
>>
>>>> arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kvmhv_enter_nested_guest' [-Werror,-Wframe-larger-than=]
>> long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
>> ^
>> 1 error generated.
>>
>>
>> vim +/kvmhv_enter_nested_guest +264 arch/powerpc/kvm/book3s_hv_nested.c
>
> Not much changed here recently. It's not that big a concern because it's
> only called in the KVM ioctl path, not in any deep IO paths or anything,
> and doesn't recurse. Might be a bit of inlining or stack spilling put it
> over the edge.
It appears to be the fact that LLVM's PowerPC backend does not emit
efficient byteswap assembly:
https://github.com/ClangBuiltLinux/linux/issues/1292
https://bugs.llvm.org/show_bug.cgi?id=49610
> powerpc does make it an error though, would be good to avoid that so the
> robot doesn't keep tripping over.
Marking byteswap_pt_regs as 'noinline_for_stack' drastically reduces the
stack usage. If that is an acceptable solution, I can send it along
tomorrow.
Cheers,
Nathan
> Thanks,
> Nick
>
>
>>
>> afe75049303f75 Ravi Bangoria 2020-12-16 263
>> 360cae313702cd Paul Mackerras 2018-10-08 @264 long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
>> 360cae313702cd Paul Mackerras 2018-10-08 265 {
>> 360cae313702cd Paul Mackerras 2018-10-08 266 long int err, r;
>> 360cae313702cd Paul Mackerras 2018-10-08 267 struct kvm_nested_guest *l2;
>> 360cae313702cd Paul Mackerras 2018-10-08 268 struct pt_regs l2_regs, saved_l1_regs;
>> afe75049303f75 Ravi Bangoria 2020-12-16 269 struct hv_guest_state l2_hv = {0}, saved_l1_hv;
>> 360cae313702cd Paul Mackerras 2018-10-08 270 struct kvmppc_vcore *vc = vcpu->arch.vcore;
>> 360cae313702cd Paul Mackerras 2018-10-08 271 u64 hv_ptr, regs_ptr;
>> 360cae313702cd Paul Mackerras 2018-10-08 272 u64 hdec_exp;
>> 360cae313702cd Paul Mackerras 2018-10-08 273 s64 delta_purr, delta_spurr, delta_ic, delta_vtb;
>> 360cae313702cd Paul Mackerras 2018-10-08 274 u64 mask;
>> 360cae313702cd Paul Mackerras 2018-10-08 275 unsigned long lpcr;
>> 360cae313702cd Paul Mackerras 2018-10-08 276
>> 360cae313702cd Paul Mackerras 2018-10-08 277 if (vcpu->kvm->arch.l1_ptcr == 0)
>> 360cae313702cd Paul Mackerras 2018-10-08 278 return H_NOT_AVAILABLE;
>> 360cae313702cd Paul Mackerras 2018-10-08 279
>> 360cae313702cd Paul Mackerras 2018-10-08 280 /* copy parameters in */
>> 360cae313702cd Paul Mackerras 2018-10-08 281 hv_ptr = kvmppc_get_gpr(vcpu, 4);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 282 regs_ptr = kvmppc_get_gpr(vcpu, 5);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 283 vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
>> afe75049303f75 Ravi Bangoria 2020-12-16 284 err = kvmhv_read_guest_state_and_regs(vcpu, &l2_hv, &l2_regs,
>> afe75049303f75 Ravi Bangoria 2020-12-16 285 hv_ptr, regs_ptr);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 286 srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
>> 360cae313702cd Paul Mackerras 2018-10-08 287 if (err)
>> 360cae313702cd Paul Mackerras 2018-10-08 288 return H_PARAMETER;
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 289
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 290 if (kvmppc_need_byteswap(vcpu))
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 291 byteswap_hv_regs(&l2_hv);
>> afe75049303f75 Ravi Bangoria 2020-12-16 292 if (l2_hv.version > HV_GUEST_STATE_VERSION)
>> 360cae313702cd Paul Mackerras 2018-10-08 293 return H_P2;
>> 360cae313702cd Paul Mackerras 2018-10-08 294
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 295 if (kvmppc_need_byteswap(vcpu))
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 296 byteswap_pt_regs(&l2_regs);
>> 9d0b048da788c1 Suraj Jitindar Singh 2018-10-08 297 if (l2_hv.vcpu_token >= NR_CPUS)
>> 9d0b048da788c1 Suraj Jitindar Singh 2018-10-08 298 return H_PARAMETER;
>> 9d0b048da788c1 Suraj Jitindar Singh 2018-10-08 299
>> 360cae313702cd Paul Mackerras 2018-10-08 300 /* translate lpid */
>> 360cae313702cd Paul Mackerras 2018-10-08 301 l2 = kvmhv_get_nested(vcpu->kvm, l2_hv.lpid, true);
>> 360cae313702cd Paul Mackerras 2018-10-08 302 if (!l2)
>> 360cae313702cd Paul Mackerras 2018-10-08 303 return H_PARAMETER;
>> 360cae313702cd Paul Mackerras 2018-10-08 304 if (!l2->l1_gr_to_hr) {
>> 360cae313702cd Paul Mackerras 2018-10-08 305 mutex_lock(&l2->tlb_lock);
>> 360cae313702cd Paul Mackerras 2018-10-08 306 kvmhv_update_ptbl_cache(l2);
>> 360cae313702cd Paul Mackerras 2018-10-08 307 mutex_unlock(&l2->tlb_lock);
>> 360cae313702cd Paul Mackerras 2018-10-08 308 }
>> 360cae313702cd Paul Mackerras 2018-10-08 309
>> 360cae313702cd Paul Mackerras 2018-10-08 310 /* save l1 values of things */
>> 360cae313702cd Paul Mackerras 2018-10-08 311 vcpu->arch.regs.msr = vcpu->arch.shregs.msr;
>> 360cae313702cd Paul Mackerras 2018-10-08 312 saved_l1_regs = vcpu->arch.regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 313 kvmhv_save_hv_regs(vcpu, &saved_l1_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 314
>> 360cae313702cd Paul Mackerras 2018-10-08 315 /* convert TB values/offsets to host (L0) values */
>> 360cae313702cd Paul Mackerras 2018-10-08 316 hdec_exp = l2_hv.hdec_expiry - vc->tb_offset;
>> 360cae313702cd Paul Mackerras 2018-10-08 317 vc->tb_offset += l2_hv.tb_offset;
>> 360cae313702cd Paul Mackerras 2018-10-08 318
>> 360cae313702cd Paul Mackerras 2018-10-08 319 /* set L1 state to L2 state */
>> 360cae313702cd Paul Mackerras 2018-10-08 320 vcpu->arch.nested = l2;
>> 360cae313702cd Paul Mackerras 2018-10-08 321 vcpu->arch.nested_vcpu_id = l2_hv.vcpu_token;
>> 360cae313702cd Paul Mackerras 2018-10-08 322 vcpu->arch.regs = l2_regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 323 vcpu->arch.shregs.msr = vcpu->arch.regs.msr;
>> 360cae313702cd Paul Mackerras 2018-10-08 324 mask = LPCR_DPFD | LPCR_ILE | LPCR_TC | LPCR_AIL | LPCR_LD |
>> 360cae313702cd Paul Mackerras 2018-10-08 325 LPCR_LPES | LPCR_MER;
>> 360cae313702cd Paul Mackerras 2018-10-08 326 lpcr = (vc->lpcr & ~mask) | (l2_hv.lpcr & mask);
>> 73937deb4b2d7f Suraj Jitindar Singh 2018-10-08 327 sanitise_hv_regs(vcpu, &l2_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 328 restore_hv_regs(vcpu, &l2_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 329
>> 360cae313702cd Paul Mackerras 2018-10-08 330 vcpu->arch.ret = RESUME_GUEST;
>> 360cae313702cd Paul Mackerras 2018-10-08 331 vcpu->arch.trap = 0;
>> 360cae313702cd Paul Mackerras 2018-10-08 332 do {
>> 360cae313702cd Paul Mackerras 2018-10-08 333 if (mftb() >= hdec_exp) {
>> 360cae313702cd Paul Mackerras 2018-10-08 334 vcpu->arch.trap = BOOK3S_INTERRUPT_HV_DECREMENTER;
>> 360cae313702cd Paul Mackerras 2018-10-08 335 r = RESUME_HOST;
>> 360cae313702cd Paul Mackerras 2018-10-08 336 break;
>> 360cae313702cd Paul Mackerras 2018-10-08 337 }
>> 8c99d34578628b Tianjia Zhang 2020-04-27 338 r = kvmhv_run_single_vcpu(vcpu, hdec_exp, lpcr);
>> 360cae313702cd Paul Mackerras 2018-10-08 339 } while (is_kvmppc_resume_guest(r));
>> 360cae313702cd Paul Mackerras 2018-10-08 340
>> 360cae313702cd Paul Mackerras 2018-10-08 341 /* save L2 state for return */
>> 360cae313702cd Paul Mackerras 2018-10-08 342 l2_regs = vcpu->arch.regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 343 l2_regs.msr = vcpu->arch.shregs.msr;
>> 360cae313702cd Paul Mackerras 2018-10-08 344 delta_purr = vcpu->arch.purr - l2_hv.purr;
>> 360cae313702cd Paul Mackerras 2018-10-08 345 delta_spurr = vcpu->arch.spurr - l2_hv.spurr;
>> 360cae313702cd Paul Mackerras 2018-10-08 346 delta_ic = vcpu->arch.ic - l2_hv.ic;
>> 360cae313702cd Paul Mackerras 2018-10-08 347 delta_vtb = vc->vtb - l2_hv.vtb;
>> 360cae313702cd Paul Mackerras 2018-10-08 348 save_hv_return_state(vcpu, vcpu->arch.trap, &l2_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 349
>> 360cae313702cd Paul Mackerras 2018-10-08 350 /* restore L1 state */
>> 360cae313702cd Paul Mackerras 2018-10-08 351 vcpu->arch.nested = NULL;
>> 360cae313702cd Paul Mackerras 2018-10-08 352 vcpu->arch.regs = saved_l1_regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 353 vcpu->arch.shregs.msr = saved_l1_regs.msr & ~MSR_TS_MASK;
>> 360cae313702cd Paul Mackerras 2018-10-08 354 /* set L1 MSR TS field according to L2 transaction state */
>> 360cae313702cd Paul Mackerras 2018-10-08 355 if (l2_regs.msr & MSR_TS_MASK)
>> 360cae313702cd Paul Mackerras 2018-10-08 356 vcpu->arch.shregs.msr |= MSR_TS_S;
>> 360cae313702cd Paul Mackerras 2018-10-08 357 vc->tb_offset = saved_l1_hv.tb_offset;
>> 360cae313702cd Paul Mackerras 2018-10-08 358 restore_hv_regs(vcpu, &saved_l1_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 359 vcpu->arch.purr += delta_purr;
>> 360cae313702cd Paul Mackerras 2018-10-08 360 vcpu->arch.spurr += delta_spurr;
>> 360cae313702cd Paul Mackerras 2018-10-08 361 vcpu->arch.ic += delta_ic;
>> 360cae313702cd Paul Mackerras 2018-10-08 362 vc->vtb += delta_vtb;
>> 360cae313702cd Paul Mackerras 2018-10-08 363
>> 360cae313702cd Paul Mackerras 2018-10-08 364 kvmhv_put_nested(l2);
>> 360cae313702cd Paul Mackerras 2018-10-08 365
>> 360cae313702cd Paul Mackerras 2018-10-08 366 /* copy l2_hv_state and regs back to guest */
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 367 if (kvmppc_need_byteswap(vcpu)) {
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 368 byteswap_hv_regs(&l2_hv);
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 369 byteswap_pt_regs(&l2_regs);
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 370 }
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 371 vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
>> afe75049303f75 Ravi Bangoria 2020-12-16 372 err = kvmhv_write_guest_state_and_regs(vcpu, &l2_hv, &l2_regs,
>> afe75049303f75 Ravi Bangoria 2020-12-16 373 hv_ptr, regs_ptr);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 374 srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
>> 360cae313702cd Paul Mackerras 2018-10-08 375 if (err)
>> 360cae313702cd Paul Mackerras 2018-10-08 376 return H_AUTHORITY;
>> 360cae313702cd Paul Mackerras 2018-10-08 377
>> 360cae313702cd Paul Mackerras 2018-10-08 378 if (r == -EINTR)
>> 360cae313702cd Paul Mackerras 2018-10-08 379 return H_INTERRUPT;
>> 360cae313702cd Paul Mackerras 2018-10-08 380
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 381 if (vcpu->mmio_needed) {
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 382 kvmhv_nested_mmio_needed(vcpu, regs_ptr);
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 383 return H_TOO_HARD;
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 384 }
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 385
>> 360cae313702cd Paul Mackerras 2018-10-08 386 return vcpu->arch.trap;
>> 360cae313702cd Paul Mackerras 2018-10-08 387 }
>> 360cae313702cd Paul Mackerras 2018-10-08 388
>>
>> :::::: The code at line 264 was first introduced by commit
>> :::::: 360cae313702cdd0b90f82c261a8302fecef030a KVM: PPC: Book3S HV: Nested guest entry via hypercall
>>
>> :::::: TO: Paul Mackerras <paulus@ozlabs.org>
>> :::::: CC: Michael Ellerman <mpe@ellerman.id.au>
>>
>> ---
>> 0-DAY CI Kernel Test Service, Intel Corporation
>> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
>>
WARNING: multiple messages have this Message-ID (diff)
From: Nathan Chancellor <nathan@kernel.org>
To: kbuild-all@lists.01.org
Subject: Re: arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kvmhv_enter_nested_guest'
Date: Sun, 20 Jun 2021 22:53:22 -0700 [thread overview]
Message-ID: <e6167885-30e5-d149-bcde-3e9ad9f5d381@kernel.org> (raw)
In-Reply-To: <1624232938.d90brlmh3p.astroid@bobo.none>
[-- Attachment #1: Type: text/plain, Size: 13741 bytes --]
On 6/20/2021 4:59 PM, Nicholas Piggin wrote:
> Excerpts from kernel test robot's message of April 3, 2021 8:47 pm:
>> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
>> head: d93a0d43e3d0ba9e19387be4dae4a8d5b175a8d7
>> commit: 97e4910232fa1f81e806aa60c25a0450276d99a2 linux/compiler-clang.h: define HAVE_BUILTIN_BSWAP*
>> date: 3 weeks ago
>> config: powerpc64-randconfig-r006-20210403 (attached as .config)
>> compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 0fe8af94688aa03c01913c2001d6a1a911f42ce6)
>> reproduce (this is a W=1 build):
>> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>> chmod +x ~/bin/make.cross
>> # install powerpc64 cross compiling tool for clang build
>> # apt-get install binutils-powerpc64-linux-gnu
>> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=97e4910232fa1f81e806aa60c25a0450276d99a2
>> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>> git fetch --no-tags linus master
>> git checkout 97e4910232fa1f81e806aa60c25a0450276d99a2
>> # save the attached .config to linux build tree
>> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <lkp@intel.com>
>>
>> All errors (new ones prefixed by >>):
>>
>>>> arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kvmhv_enter_nested_guest' [-Werror,-Wframe-larger-than=]
>> long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
>> ^
>> 1 error generated.
>>
>>
>> vim +/kvmhv_enter_nested_guest +264 arch/powerpc/kvm/book3s_hv_nested.c
>
> Not much changed here recently. It's not that big a concern because it's
> only called in the KVM ioctl path, not in any deep IO paths or anything,
> and doesn't recurse. Might be a bit of inlining or stack spilling put it
> over the edge.
It appears to be the fact that LLVM's PowerPC backend does not emit
efficient byteswap assembly:
https://github.com/ClangBuiltLinux/linux/issues/1292
https://bugs.llvm.org/show_bug.cgi?id=49610
> powerpc does make it an error though, would be good to avoid that so the
> robot doesn't keep tripping over.
Marking byteswap_pt_regs as 'noinline_for_stack' drastically reduces the
stack usage. If that is an acceptable solution, I can send it along
tomorrow.
Cheers,
Nathan
> Thanks,
> Nick
>
>
>>
>> afe75049303f75 Ravi Bangoria 2020-12-16 263
>> 360cae313702cd Paul Mackerras 2018-10-08 @264 long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
>> 360cae313702cd Paul Mackerras 2018-10-08 265 {
>> 360cae313702cd Paul Mackerras 2018-10-08 266 long int err, r;
>> 360cae313702cd Paul Mackerras 2018-10-08 267 struct kvm_nested_guest *l2;
>> 360cae313702cd Paul Mackerras 2018-10-08 268 struct pt_regs l2_regs, saved_l1_regs;
>> afe75049303f75 Ravi Bangoria 2020-12-16 269 struct hv_guest_state l2_hv = {0}, saved_l1_hv;
>> 360cae313702cd Paul Mackerras 2018-10-08 270 struct kvmppc_vcore *vc = vcpu->arch.vcore;
>> 360cae313702cd Paul Mackerras 2018-10-08 271 u64 hv_ptr, regs_ptr;
>> 360cae313702cd Paul Mackerras 2018-10-08 272 u64 hdec_exp;
>> 360cae313702cd Paul Mackerras 2018-10-08 273 s64 delta_purr, delta_spurr, delta_ic, delta_vtb;
>> 360cae313702cd Paul Mackerras 2018-10-08 274 u64 mask;
>> 360cae313702cd Paul Mackerras 2018-10-08 275 unsigned long lpcr;
>> 360cae313702cd Paul Mackerras 2018-10-08 276
>> 360cae313702cd Paul Mackerras 2018-10-08 277 if (vcpu->kvm->arch.l1_ptcr == 0)
>> 360cae313702cd Paul Mackerras 2018-10-08 278 return H_NOT_AVAILABLE;
>> 360cae313702cd Paul Mackerras 2018-10-08 279
>> 360cae313702cd Paul Mackerras 2018-10-08 280 /* copy parameters in */
>> 360cae313702cd Paul Mackerras 2018-10-08 281 hv_ptr = kvmppc_get_gpr(vcpu, 4);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 282 regs_ptr = kvmppc_get_gpr(vcpu, 5);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 283 vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
>> afe75049303f75 Ravi Bangoria 2020-12-16 284 err = kvmhv_read_guest_state_and_regs(vcpu, &l2_hv, &l2_regs,
>> afe75049303f75 Ravi Bangoria 2020-12-16 285 hv_ptr, regs_ptr);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 286 srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
>> 360cae313702cd Paul Mackerras 2018-10-08 287 if (err)
>> 360cae313702cd Paul Mackerras 2018-10-08 288 return H_PARAMETER;
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 289
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 290 if (kvmppc_need_byteswap(vcpu))
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 291 byteswap_hv_regs(&l2_hv);
>> afe75049303f75 Ravi Bangoria 2020-12-16 292 if (l2_hv.version > HV_GUEST_STATE_VERSION)
>> 360cae313702cd Paul Mackerras 2018-10-08 293 return H_P2;
>> 360cae313702cd Paul Mackerras 2018-10-08 294
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 295 if (kvmppc_need_byteswap(vcpu))
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 296 byteswap_pt_regs(&l2_regs);
>> 9d0b048da788c1 Suraj Jitindar Singh 2018-10-08 297 if (l2_hv.vcpu_token >= NR_CPUS)
>> 9d0b048da788c1 Suraj Jitindar Singh 2018-10-08 298 return H_PARAMETER;
>> 9d0b048da788c1 Suraj Jitindar Singh 2018-10-08 299
>> 360cae313702cd Paul Mackerras 2018-10-08 300 /* translate lpid */
>> 360cae313702cd Paul Mackerras 2018-10-08 301 l2 = kvmhv_get_nested(vcpu->kvm, l2_hv.lpid, true);
>> 360cae313702cd Paul Mackerras 2018-10-08 302 if (!l2)
>> 360cae313702cd Paul Mackerras 2018-10-08 303 return H_PARAMETER;
>> 360cae313702cd Paul Mackerras 2018-10-08 304 if (!l2->l1_gr_to_hr) {
>> 360cae313702cd Paul Mackerras 2018-10-08 305 mutex_lock(&l2->tlb_lock);
>> 360cae313702cd Paul Mackerras 2018-10-08 306 kvmhv_update_ptbl_cache(l2);
>> 360cae313702cd Paul Mackerras 2018-10-08 307 mutex_unlock(&l2->tlb_lock);
>> 360cae313702cd Paul Mackerras 2018-10-08 308 }
>> 360cae313702cd Paul Mackerras 2018-10-08 309
>> 360cae313702cd Paul Mackerras 2018-10-08 310 /* save l1 values of things */
>> 360cae313702cd Paul Mackerras 2018-10-08 311 vcpu->arch.regs.msr = vcpu->arch.shregs.msr;
>> 360cae313702cd Paul Mackerras 2018-10-08 312 saved_l1_regs = vcpu->arch.regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 313 kvmhv_save_hv_regs(vcpu, &saved_l1_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 314
>> 360cae313702cd Paul Mackerras 2018-10-08 315 /* convert TB values/offsets to host (L0) values */
>> 360cae313702cd Paul Mackerras 2018-10-08 316 hdec_exp = l2_hv.hdec_expiry - vc->tb_offset;
>> 360cae313702cd Paul Mackerras 2018-10-08 317 vc->tb_offset += l2_hv.tb_offset;
>> 360cae313702cd Paul Mackerras 2018-10-08 318
>> 360cae313702cd Paul Mackerras 2018-10-08 319 /* set L1 state to L2 state */
>> 360cae313702cd Paul Mackerras 2018-10-08 320 vcpu->arch.nested = l2;
>> 360cae313702cd Paul Mackerras 2018-10-08 321 vcpu->arch.nested_vcpu_id = l2_hv.vcpu_token;
>> 360cae313702cd Paul Mackerras 2018-10-08 322 vcpu->arch.regs = l2_regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 323 vcpu->arch.shregs.msr = vcpu->arch.regs.msr;
>> 360cae313702cd Paul Mackerras 2018-10-08 324 mask = LPCR_DPFD | LPCR_ILE | LPCR_TC | LPCR_AIL | LPCR_LD |
>> 360cae313702cd Paul Mackerras 2018-10-08 325 LPCR_LPES | LPCR_MER;
>> 360cae313702cd Paul Mackerras 2018-10-08 326 lpcr = (vc->lpcr & ~mask) | (l2_hv.lpcr & mask);
>> 73937deb4b2d7f Suraj Jitindar Singh 2018-10-08 327 sanitise_hv_regs(vcpu, &l2_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 328 restore_hv_regs(vcpu, &l2_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 329
>> 360cae313702cd Paul Mackerras 2018-10-08 330 vcpu->arch.ret = RESUME_GUEST;
>> 360cae313702cd Paul Mackerras 2018-10-08 331 vcpu->arch.trap = 0;
>> 360cae313702cd Paul Mackerras 2018-10-08 332 do {
>> 360cae313702cd Paul Mackerras 2018-10-08 333 if (mftb() >= hdec_exp) {
>> 360cae313702cd Paul Mackerras 2018-10-08 334 vcpu->arch.trap = BOOK3S_INTERRUPT_HV_DECREMENTER;
>> 360cae313702cd Paul Mackerras 2018-10-08 335 r = RESUME_HOST;
>> 360cae313702cd Paul Mackerras 2018-10-08 336 break;
>> 360cae313702cd Paul Mackerras 2018-10-08 337 }
>> 8c99d34578628b Tianjia Zhang 2020-04-27 338 r = kvmhv_run_single_vcpu(vcpu, hdec_exp, lpcr);
>> 360cae313702cd Paul Mackerras 2018-10-08 339 } while (is_kvmppc_resume_guest(r));
>> 360cae313702cd Paul Mackerras 2018-10-08 340
>> 360cae313702cd Paul Mackerras 2018-10-08 341 /* save L2 state for return */
>> 360cae313702cd Paul Mackerras 2018-10-08 342 l2_regs = vcpu->arch.regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 343 l2_regs.msr = vcpu->arch.shregs.msr;
>> 360cae313702cd Paul Mackerras 2018-10-08 344 delta_purr = vcpu->arch.purr - l2_hv.purr;
>> 360cae313702cd Paul Mackerras 2018-10-08 345 delta_spurr = vcpu->arch.spurr - l2_hv.spurr;
>> 360cae313702cd Paul Mackerras 2018-10-08 346 delta_ic = vcpu->arch.ic - l2_hv.ic;
>> 360cae313702cd Paul Mackerras 2018-10-08 347 delta_vtb = vc->vtb - l2_hv.vtb;
>> 360cae313702cd Paul Mackerras 2018-10-08 348 save_hv_return_state(vcpu, vcpu->arch.trap, &l2_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 349
>> 360cae313702cd Paul Mackerras 2018-10-08 350 /* restore L1 state */
>> 360cae313702cd Paul Mackerras 2018-10-08 351 vcpu->arch.nested = NULL;
>> 360cae313702cd Paul Mackerras 2018-10-08 352 vcpu->arch.regs = saved_l1_regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 353 vcpu->arch.shregs.msr = saved_l1_regs.msr & ~MSR_TS_MASK;
>> 360cae313702cd Paul Mackerras 2018-10-08 354 /* set L1 MSR TS field according to L2 transaction state */
>> 360cae313702cd Paul Mackerras 2018-10-08 355 if (l2_regs.msr & MSR_TS_MASK)
>> 360cae313702cd Paul Mackerras 2018-10-08 356 vcpu->arch.shregs.msr |= MSR_TS_S;
>> 360cae313702cd Paul Mackerras 2018-10-08 357 vc->tb_offset = saved_l1_hv.tb_offset;
>> 360cae313702cd Paul Mackerras 2018-10-08 358 restore_hv_regs(vcpu, &saved_l1_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 359 vcpu->arch.purr += delta_purr;
>> 360cae313702cd Paul Mackerras 2018-10-08 360 vcpu->arch.spurr += delta_spurr;
>> 360cae313702cd Paul Mackerras 2018-10-08 361 vcpu->arch.ic += delta_ic;
>> 360cae313702cd Paul Mackerras 2018-10-08 362 vc->vtb += delta_vtb;
>> 360cae313702cd Paul Mackerras 2018-10-08 363
>> 360cae313702cd Paul Mackerras 2018-10-08 364 kvmhv_put_nested(l2);
>> 360cae313702cd Paul Mackerras 2018-10-08 365
>> 360cae313702cd Paul Mackerras 2018-10-08 366 /* copy l2_hv_state and regs back to guest */
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 367 if (kvmppc_need_byteswap(vcpu)) {
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 368 byteswap_hv_regs(&l2_hv);
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 369 byteswap_pt_regs(&l2_regs);
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 370 }
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 371 vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
>> afe75049303f75 Ravi Bangoria 2020-12-16 372 err = kvmhv_write_guest_state_and_regs(vcpu, &l2_hv, &l2_regs,
>> afe75049303f75 Ravi Bangoria 2020-12-16 373 hv_ptr, regs_ptr);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 374 srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
>> 360cae313702cd Paul Mackerras 2018-10-08 375 if (err)
>> 360cae313702cd Paul Mackerras 2018-10-08 376 return H_AUTHORITY;
>> 360cae313702cd Paul Mackerras 2018-10-08 377
>> 360cae313702cd Paul Mackerras 2018-10-08 378 if (r == -EINTR)
>> 360cae313702cd Paul Mackerras 2018-10-08 379 return H_INTERRUPT;
>> 360cae313702cd Paul Mackerras 2018-10-08 380
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 381 if (vcpu->mmio_needed) {
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 382 kvmhv_nested_mmio_needed(vcpu, regs_ptr);
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 383 return H_TOO_HARD;
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 384 }
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 385
>> 360cae313702cd Paul Mackerras 2018-10-08 386 return vcpu->arch.trap;
>> 360cae313702cd Paul Mackerras 2018-10-08 387 }
>> 360cae313702cd Paul Mackerras 2018-10-08 388
>>
>> :::::: The code at line 264 was first introduced by commit
>> :::::: 360cae313702cdd0b90f82c261a8302fecef030a KVM: PPC: Book3S HV: Nested guest entry via hypercall
>>
>> :::::: TO: Paul Mackerras <paulus@ozlabs.org>
>> :::::: CC: Michael Ellerman <mpe@ellerman.id.au>
>>
>> ---
>> 0-DAY CI Kernel Test Service, Intel Corporation
>> https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
>>
WARNING: multiple messages have this Message-ID (diff)
From: Nathan Chancellor <nathan@kernel.org>
To: Nicholas Piggin <npiggin@gmail.com>,
Arnd Bergmann <arnd@arndb.de>, kernel test robot <lkp@intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
clang-built-linux@googlegroups.com, kbuild-all@lists.01.org,
Kees Cook <keescook@chromium.org>,
linux-kernel@vger.kernel.org,
Linux Memory Management List <linux-mm@kvack.org>,
linuxppc-dev@lists.ozlabs.org, kvm-ppc@vger.kernel.org
Subject: Re: arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kv
Date: Mon, 21 Jun 2021 05:53:22 +0000 [thread overview]
Message-ID: <e6167885-30e5-d149-bcde-3e9ad9f5d381@kernel.org> (raw)
In-Reply-To: <1624232938.d90brlmh3p.astroid@bobo.none>
On 6/20/2021 4:59 PM, Nicholas Piggin wrote:
> Excerpts from kernel test robot's message of April 3, 2021 8:47 pm:
>> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
>> head: d93a0d43e3d0ba9e19387be4dae4a8d5b175a8d7
>> commit: 97e4910232fa1f81e806aa60c25a0450276d99a2 linux/compiler-clang.h: define HAVE_BUILTIN_BSWAP*
>> date: 3 weeks ago
>> config: powerpc64-randconfig-r006-20210403 (attached as .config)
>> compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 0fe8af94688aa03c01913c2001d6a1a911f42ce6)
>> reproduce (this is a W=1 build):
>> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>> chmod +x ~/bin/make.cross
>> # install powerpc64 cross compiling tool for clang build
>> # apt-get install binutils-powerpc64-linux-gnu
>> # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id—e4910232fa1f81e806aa60c25a0450276d99a2
>> git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>> git fetch --no-tags linus master
>> git checkout 97e4910232fa1f81e806aa60c25a0450276d99a2
>> # save the attached .config to linux build tree
>> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <lkp@intel.com>
>>
>> All errors (new ones prefixed by >>):
>>
>>>> arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kvmhv_enter_nested_guest' [-Werror,-Wframe-larger-than=]
>> long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
>> ^
>> 1 error generated.
>>
>>
>> vim +/kvmhv_enter_nested_guest +264 arch/powerpc/kvm/book3s_hv_nested.c
>
> Not much changed here recently. It's not that big a concern because it's
> only called in the KVM ioctl path, not in any deep IO paths or anything,
> and doesn't recurse. Might be a bit of inlining or stack spilling put it
> over the edge.
It appears to be the fact that LLVM's PowerPC backend does not emit
efficient byteswap assembly:
https://github.com/ClangBuiltLinux/linux/issues/1292
https://bugs.llvm.org/show_bug.cgi?idI610
> powerpc does make it an error though, would be good to avoid that so the
> robot doesn't keep tripping over.
Marking byteswap_pt_regs as 'noinline_for_stack' drastically reduces the
stack usage. If that is an acceptable solution, I can send it along
tomorrow.
Cheers,
Nathan
> Thanks,
> Nick
>
>
>>
>> afe75049303f75 Ravi Bangoria 2020-12-16 263
>> 360cae313702cd Paul Mackerras 2018-10-08 @264 long kvmhv_enter_nested_guest(struct kvm_vcpu *vcpu)
>> 360cae313702cd Paul Mackerras 2018-10-08 265 {
>> 360cae313702cd Paul Mackerras 2018-10-08 266 long int err, r;
>> 360cae313702cd Paul Mackerras 2018-10-08 267 struct kvm_nested_guest *l2;
>> 360cae313702cd Paul Mackerras 2018-10-08 268 struct pt_regs l2_regs, saved_l1_regs;
>> afe75049303f75 Ravi Bangoria 2020-12-16 269 struct hv_guest_state l2_hv = {0}, saved_l1_hv;
>> 360cae313702cd Paul Mackerras 2018-10-08 270 struct kvmppc_vcore *vc = vcpu->arch.vcore;
>> 360cae313702cd Paul Mackerras 2018-10-08 271 u64 hv_ptr, regs_ptr;
>> 360cae313702cd Paul Mackerras 2018-10-08 272 u64 hdec_exp;
>> 360cae313702cd Paul Mackerras 2018-10-08 273 s64 delta_purr, delta_spurr, delta_ic, delta_vtb;
>> 360cae313702cd Paul Mackerras 2018-10-08 274 u64 mask;
>> 360cae313702cd Paul Mackerras 2018-10-08 275 unsigned long lpcr;
>> 360cae313702cd Paul Mackerras 2018-10-08 276
>> 360cae313702cd Paul Mackerras 2018-10-08 277 if (vcpu->kvm->arch.l1_ptcr = 0)
>> 360cae313702cd Paul Mackerras 2018-10-08 278 return H_NOT_AVAILABLE;
>> 360cae313702cd Paul Mackerras 2018-10-08 279
>> 360cae313702cd Paul Mackerras 2018-10-08 280 /* copy parameters in */
>> 360cae313702cd Paul Mackerras 2018-10-08 281 hv_ptr = kvmppc_get_gpr(vcpu, 4);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 282 regs_ptr = kvmppc_get_gpr(vcpu, 5);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 283 vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
>> afe75049303f75 Ravi Bangoria 2020-12-16 284 err = kvmhv_read_guest_state_and_regs(vcpu, &l2_hv, &l2_regs,
>> afe75049303f75 Ravi Bangoria 2020-12-16 285 hv_ptr, regs_ptr);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 286 srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
>> 360cae313702cd Paul Mackerras 2018-10-08 287 if (err)
>> 360cae313702cd Paul Mackerras 2018-10-08 288 return H_PARAMETER;
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 289
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 290 if (kvmppc_need_byteswap(vcpu))
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 291 byteswap_hv_regs(&l2_hv);
>> afe75049303f75 Ravi Bangoria 2020-12-16 292 if (l2_hv.version > HV_GUEST_STATE_VERSION)
>> 360cae313702cd Paul Mackerras 2018-10-08 293 return H_P2;
>> 360cae313702cd Paul Mackerras 2018-10-08 294
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 295 if (kvmppc_need_byteswap(vcpu))
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 296 byteswap_pt_regs(&l2_regs);
>> 9d0b048da788c1 Suraj Jitindar Singh 2018-10-08 297 if (l2_hv.vcpu_token >= NR_CPUS)
>> 9d0b048da788c1 Suraj Jitindar Singh 2018-10-08 298 return H_PARAMETER;
>> 9d0b048da788c1 Suraj Jitindar Singh 2018-10-08 299
>> 360cae313702cd Paul Mackerras 2018-10-08 300 /* translate lpid */
>> 360cae313702cd Paul Mackerras 2018-10-08 301 l2 = kvmhv_get_nested(vcpu->kvm, l2_hv.lpid, true);
>> 360cae313702cd Paul Mackerras 2018-10-08 302 if (!l2)
>> 360cae313702cd Paul Mackerras 2018-10-08 303 return H_PARAMETER;
>> 360cae313702cd Paul Mackerras 2018-10-08 304 if (!l2->l1_gr_to_hr) {
>> 360cae313702cd Paul Mackerras 2018-10-08 305 mutex_lock(&l2->tlb_lock);
>> 360cae313702cd Paul Mackerras 2018-10-08 306 kvmhv_update_ptbl_cache(l2);
>> 360cae313702cd Paul Mackerras 2018-10-08 307 mutex_unlock(&l2->tlb_lock);
>> 360cae313702cd Paul Mackerras 2018-10-08 308 }
>> 360cae313702cd Paul Mackerras 2018-10-08 309
>> 360cae313702cd Paul Mackerras 2018-10-08 310 /* save l1 values of things */
>> 360cae313702cd Paul Mackerras 2018-10-08 311 vcpu->arch.regs.msr = vcpu->arch.shregs.msr;
>> 360cae313702cd Paul Mackerras 2018-10-08 312 saved_l1_regs = vcpu->arch.regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 313 kvmhv_save_hv_regs(vcpu, &saved_l1_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 314
>> 360cae313702cd Paul Mackerras 2018-10-08 315 /* convert TB values/offsets to host (L0) values */
>> 360cae313702cd Paul Mackerras 2018-10-08 316 hdec_exp = l2_hv.hdec_expiry - vc->tb_offset;
>> 360cae313702cd Paul Mackerras 2018-10-08 317 vc->tb_offset += l2_hv.tb_offset;
>> 360cae313702cd Paul Mackerras 2018-10-08 318
>> 360cae313702cd Paul Mackerras 2018-10-08 319 /* set L1 state to L2 state */
>> 360cae313702cd Paul Mackerras 2018-10-08 320 vcpu->arch.nested = l2;
>> 360cae313702cd Paul Mackerras 2018-10-08 321 vcpu->arch.nested_vcpu_id = l2_hv.vcpu_token;
>> 360cae313702cd Paul Mackerras 2018-10-08 322 vcpu->arch.regs = l2_regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 323 vcpu->arch.shregs.msr = vcpu->arch.regs.msr;
>> 360cae313702cd Paul Mackerras 2018-10-08 324 mask = LPCR_DPFD | LPCR_ILE | LPCR_TC | LPCR_AIL | LPCR_LD |
>> 360cae313702cd Paul Mackerras 2018-10-08 325 LPCR_LPES | LPCR_MER;
>> 360cae313702cd Paul Mackerras 2018-10-08 326 lpcr = (vc->lpcr & ~mask) | (l2_hv.lpcr & mask);
>> 73937deb4b2d7f Suraj Jitindar Singh 2018-10-08 327 sanitise_hv_regs(vcpu, &l2_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 328 restore_hv_regs(vcpu, &l2_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 329
>> 360cae313702cd Paul Mackerras 2018-10-08 330 vcpu->arch.ret = RESUME_GUEST;
>> 360cae313702cd Paul Mackerras 2018-10-08 331 vcpu->arch.trap = 0;
>> 360cae313702cd Paul Mackerras 2018-10-08 332 do {
>> 360cae313702cd Paul Mackerras 2018-10-08 333 if (mftb() >= hdec_exp) {
>> 360cae313702cd Paul Mackerras 2018-10-08 334 vcpu->arch.trap = BOOK3S_INTERRUPT_HV_DECREMENTER;
>> 360cae313702cd Paul Mackerras 2018-10-08 335 r = RESUME_HOST;
>> 360cae313702cd Paul Mackerras 2018-10-08 336 break;
>> 360cae313702cd Paul Mackerras 2018-10-08 337 }
>> 8c99d34578628b Tianjia Zhang 2020-04-27 338 r = kvmhv_run_single_vcpu(vcpu, hdec_exp, lpcr);
>> 360cae313702cd Paul Mackerras 2018-10-08 339 } while (is_kvmppc_resume_guest(r));
>> 360cae313702cd Paul Mackerras 2018-10-08 340
>> 360cae313702cd Paul Mackerras 2018-10-08 341 /* save L2 state for return */
>> 360cae313702cd Paul Mackerras 2018-10-08 342 l2_regs = vcpu->arch.regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 343 l2_regs.msr = vcpu->arch.shregs.msr;
>> 360cae313702cd Paul Mackerras 2018-10-08 344 delta_purr = vcpu->arch.purr - l2_hv.purr;
>> 360cae313702cd Paul Mackerras 2018-10-08 345 delta_spurr = vcpu->arch.spurr - l2_hv.spurr;
>> 360cae313702cd Paul Mackerras 2018-10-08 346 delta_ic = vcpu->arch.ic - l2_hv.ic;
>> 360cae313702cd Paul Mackerras 2018-10-08 347 delta_vtb = vc->vtb - l2_hv.vtb;
>> 360cae313702cd Paul Mackerras 2018-10-08 348 save_hv_return_state(vcpu, vcpu->arch.trap, &l2_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 349
>> 360cae313702cd Paul Mackerras 2018-10-08 350 /* restore L1 state */
>> 360cae313702cd Paul Mackerras 2018-10-08 351 vcpu->arch.nested = NULL;
>> 360cae313702cd Paul Mackerras 2018-10-08 352 vcpu->arch.regs = saved_l1_regs;
>> 360cae313702cd Paul Mackerras 2018-10-08 353 vcpu->arch.shregs.msr = saved_l1_regs.msr & ~MSR_TS_MASK;
>> 360cae313702cd Paul Mackerras 2018-10-08 354 /* set L1 MSR TS field according to L2 transaction state */
>> 360cae313702cd Paul Mackerras 2018-10-08 355 if (l2_regs.msr & MSR_TS_MASK)
>> 360cae313702cd Paul Mackerras 2018-10-08 356 vcpu->arch.shregs.msr |= MSR_TS_S;
>> 360cae313702cd Paul Mackerras 2018-10-08 357 vc->tb_offset = saved_l1_hv.tb_offset;
>> 360cae313702cd Paul Mackerras 2018-10-08 358 restore_hv_regs(vcpu, &saved_l1_hv);
>> 360cae313702cd Paul Mackerras 2018-10-08 359 vcpu->arch.purr += delta_purr;
>> 360cae313702cd Paul Mackerras 2018-10-08 360 vcpu->arch.spurr += delta_spurr;
>> 360cae313702cd Paul Mackerras 2018-10-08 361 vcpu->arch.ic += delta_ic;
>> 360cae313702cd Paul Mackerras 2018-10-08 362 vc->vtb += delta_vtb;
>> 360cae313702cd Paul Mackerras 2018-10-08 363
>> 360cae313702cd Paul Mackerras 2018-10-08 364 kvmhv_put_nested(l2);
>> 360cae313702cd Paul Mackerras 2018-10-08 365
>> 360cae313702cd Paul Mackerras 2018-10-08 366 /* copy l2_hv_state and regs back to guest */
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 367 if (kvmppc_need_byteswap(vcpu)) {
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 368 byteswap_hv_regs(&l2_hv);
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 369 byteswap_pt_regs(&l2_regs);
>> 10b5022db7861a Suraj Jitindar Singh 2018-10-08 370 }
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 371 vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu);
>> afe75049303f75 Ravi Bangoria 2020-12-16 372 err = kvmhv_write_guest_state_and_regs(vcpu, &l2_hv, &l2_regs,
>> afe75049303f75 Ravi Bangoria 2020-12-16 373 hv_ptr, regs_ptr);
>> 1508c22f112ce1 Alexey Kardashevskiy 2020-06-09 374 srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx);
>> 360cae313702cd Paul Mackerras 2018-10-08 375 if (err)
>> 360cae313702cd Paul Mackerras 2018-10-08 376 return H_AUTHORITY;
>> 360cae313702cd Paul Mackerras 2018-10-08 377
>> 360cae313702cd Paul Mackerras 2018-10-08 378 if (r = -EINTR)
>> 360cae313702cd Paul Mackerras 2018-10-08 379 return H_INTERRUPT;
>> 360cae313702cd Paul Mackerras 2018-10-08 380
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 381 if (vcpu->mmio_needed) {
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 382 kvmhv_nested_mmio_needed(vcpu, regs_ptr);
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 383 return H_TOO_HARD;
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 384 }
>> 873db2cd9a6d7f Suraj Jitindar Singh 2018-12-14 385
>> 360cae313702cd Paul Mackerras 2018-10-08 386 return vcpu->arch.trap;
>> 360cae313702cd Paul Mackerras 2018-10-08 387 }
>> 360cae313702cd Paul Mackerras 2018-10-08 388
>>
>> :::::: The code at line 264 was first introduced by commit
>> :::::: 360cae313702cdd0b90f82c261a8302fecef030a KVM: PPC: Book3S HV: Nested guest entry via hypercall
>>
>> :::::: TO: Paul Mackerras <paulus@ozlabs.org>
>> :::::: CC: Michael Ellerman <mpe@ellerman.id.au>
>>
>> ---
>> 0-DAY CI Kernel Test Service, Intel Corporation
>> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
>>
next prev parent reply other threads:[~2021-06-21 5:53 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-03 10:47 arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kvmhv_enter_nested_guest' kernel test robot
2021-04-03 10:47 ` kernel test robot
2021-06-20 23:59 ` Nicholas Piggin
2021-06-20 23:59 ` arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kv Nicholas Piggin
2021-06-20 23:59 ` arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kvmhv_enter_nested_guest' Nicholas Piggin
2021-06-20 23:59 ` Nicholas Piggin
2021-06-21 5:53 ` Nathan Chancellor [this message]
2021-06-21 5:53 ` arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kv Nathan Chancellor
2021-06-21 5:53 ` arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kvmhv_enter_nested_guest' Nathan Chancellor
2021-06-21 5:53 ` Nathan Chancellor
2021-06-21 9:46 ` Michael Ellerman
2021-06-21 9:46 ` arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kv Michael Ellerman
2021-06-21 9:46 ` arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kvmhv_enter_nested_guest' Michael Ellerman
2021-06-21 9:46 ` Michael Ellerman
2021-06-21 11:53 ` Arnd Bergmann
2021-06-21 11:53 ` arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kv Arnd Bergmann
2021-06-21 11:53 ` arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kvmhv_enter_nested_guest' Arnd Bergmann
2021-06-21 11:53 ` Arnd Bergmann
2021-06-21 11:53 ` Arnd Bergmann
2021-06-21 18:01 ` Nathan Chancellor
2021-06-21 18:01 ` arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kv Nathan Chancellor
2021-06-21 18:01 ` arch/powerpc/kvm/book3s_hv_nested.c:264:6: error: stack frame size of 2304 bytes in function 'kvmhv_enter_nested_guest' Nathan Chancellor
2021-06-21 18:01 ` Nathan Chancellor
2021-06-21 18:03 ` Nathan Chancellor
2021-06-21 18:03 ` Nathan Chancellor
2021-06-21 18:03 ` Nathan Chancellor
2021-06-21 18:24 ` [PATCH] KVM: PPC: Book3S HV: Workaround high stack usage with clang Nathan Chancellor
2021-06-21 18:24 ` Nathan Chancellor
2021-06-21 18:24 ` Nathan Chancellor
2021-06-22 8:57 ` Nicholas Piggin
2021-06-22 8:57 ` Nicholas Piggin
2021-06-22 8:57 ` Nicholas Piggin
2021-06-24 13:59 ` Michael Ellerman
2021-06-24 13:59 ` Michael Ellerman
2021-06-24 13:59 ` Michael Ellerman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e6167885-30e5-d149-bcde-3e9ad9f5d381@kernel.org \
--to=nathan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=clang-built-linux@googlegroups.com \
--cc=kbuild-all@lists.01.org \
--cc=keescook@chromium.org \
--cc=kvm-ppc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lkp@intel.com \
--cc=npiggin@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.