tree:
https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git queue-4.9
head: 397027034d454e3ad94e49e88938860ee15d7de6
commit: c035e85a46b8876f230aa17570cbc096a59be26a [92/170] KVM: s390: VSIE: correctly
handle MVPG when in VSIE
config: s390-allyesconfig (attached as .config)
compiler: s390-linux-gcc (GCC) 7.5.0
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
#
https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git/c...
git remote add sashal-linux-stable
https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git
git fetch --no-tags sashal-linux-stable queue-4.9
git checkout c035e85a46b8876f230aa17570cbc096a59be26a
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-7.5.0 make.cross W=1 ARCH=s390
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
arch/s390/kvm/vsie.c: In function 'vsie_handle_mvpg':
arch/s390/kvm/vsie.c:776:38: error: 'struct kvm_s390_sie_block' has no member
named 'mcic'; did you mean 'ckc'?
u64 *pei_block = &vsie_page->scb_o->mcic;
^~~~
ckc
> arch/s390/kvm/vsie.c:782:9: error: implicit declaration of
function '_kvm_s390_logical_to_effective'; did you mean
'kvm_s390_logical_to_effective'? [-Werror=implicit-function-declaration]
mask = _kvm_s390_logical_to_effective(&scb_s->gpsw, PAGE_MASK);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kvm_s390_logical_to_effective
> arch/s390/kvm/vsie.c:787:12: error: too many arguments to
function 'kvm_s390_shadow_fault'
rc_dest = kvm_s390_shadow_fault(vcpu,
vsie_page->gmap, dest, &pei_dest);
^~~~~~~~~~~~~~~~~~~~~
In file included from arch/s390/kvm/vsie.c:23:0:
arch/s390/kvm/gaccess.h:364:5: note: declared here
int kvm_s390_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *shadow,
^~~~~~~~~~~~~~~~~~~~~
arch/s390/kvm/vsie.c:788:11: error: too many arguments to function
'kvm_s390_shadow_fault'
rc_src = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, src, &pei_src);
^~~~~~~~~~~~~~~~~~~~~
In file included from arch/s390/kvm/vsie.c:23:0:
arch/s390/kvm/gaccess.h:364:5: note: declared here
int kvm_s390_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *shadow,
^~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +782 arch/s390/kvm/vsie.c
771
772 static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
773 {
774 struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s;
775 unsigned long pei_dest, pei_src, src, dest, mask;
776 u64 *pei_block = &vsie_page->scb_o->mcic;
777 int edat, rc_dest, rc_src;
778 union ctlreg0 cr0;
779
780 cr0.val = vcpu->arch.sie_block->gcr[0];
781 edat = cr0.edat && test_kvm_facility(vcpu->kvm, 8);
782 mask = _kvm_s390_logical_to_effective(&scb_s->gpsw,
PAGE_MASK);
783
784 dest = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 20) & mask;
785 src = vsie_get_register(vcpu, vsie_page, scb_s->ipb >> 16) & mask;
786
787 rc_dest = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, dest,
&pei_dest);
788 rc_src = kvm_s390_shadow_fault(vcpu, vsie_page->gmap,
src, &pei_src);
789 /*
790 * Either everything went well, or something non-critical went wrong
791 * e.g. because of a race. In either case, simply retry.
792 */
793 if (rc_dest == -EAGAIN || rc_src == -EAGAIN || (!rc_dest && !rc_src)) {
794 retry_vsie_icpt(vsie_page);
795 return -EAGAIN;
796 }
797 /* Something more serious went wrong, propagate the error */
798 if (rc_dest < 0)
799 return rc_dest;
800 if (rc_src < 0)
801 return rc_src;
802
803 /* The only possible suppressing exception: just deliver it */
804 if (rc_dest == PGM_TRANSLATION_SPEC || rc_src == PGM_TRANSLATION_SPEC) {
805 clear_vsie_icpt(vsie_page);
806 rc_dest = kvm_s390_inject_program_int(vcpu, PGM_TRANSLATION_SPEC);
807 WARN_ON_ONCE(rc_dest);
808 return 1;
809 }
810
811 /*
812 * Forward the PEI intercept to the guest if it was a page fault, or
813 * also for segment and region table faults if EDAT applies.
814 */
815 if (edat) {
816 rc_dest = rc_dest == PGM_ASCE_TYPE ? rc_dest : 0;
817 rc_src = rc_src == PGM_ASCE_TYPE ? rc_src : 0;
818 } else {
819 rc_dest = rc_dest != PGM_PAGE_TRANSLATION ? rc_dest : 0;
820 rc_src = rc_src != PGM_PAGE_TRANSLATION ? rc_src : 0;
821 }
822 if (!rc_dest && !rc_src) {
823 pei_block[0] = pei_dest;
824 pei_block[1] = pei_src;
825 return 1;
826 }
827
828 retry_vsie_icpt(vsie_page);
829
830 /*
831 * The host has edat, and the guest does not, or it was an ASCE type
832 * exception. The host needs to inject the appropriate DAT interrupts
833 * into the guest.
834 */
835 if (rc_dest)
836 return inject_fault(vcpu, rc_dest, dest, 1);
837 return inject_fault(vcpu, rc_src, src, 0);
838 }
839
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org