Message ID | 20220426200842.98655-11-mjrosato@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: s390: enable zPCI for interpretive execution | expand |
Hi Matthew, I love your patch! Perhaps something to improve: [auto build test WARNING on v5.18-rc4] [cannot apply to s390/features kvms390/next awilliam-vfio/next next-20220427] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/intel-lab-lkp/linux/commits/Matthew-Rosato/KVM-s390-enable-zPCI-for-interpretive-execution/20220427-041853 base: af2d861d4cd2a4da5137f795ee3509e6f944a25b config: s390-defconfig (https://download.01.org/0day-ci/archive/20220427/202204271653.1ZoYsV9W-lkp@intel.com/config) compiler: s390-linux-gcc (GCC) 11.3.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://github.com/intel-lab-lkp/linux/commit/e6d8c620090a7b184afdf5b5123d10ac45776eaf git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Matthew-Rosato/KVM-s390-enable-zPCI-for-interpretive-execution/20220427-041853 git checkout e6d8c620090a7b184afdf5b5123d10ac45776eaf # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=s390 SHELL=/bin/bash arch/s390/kvm/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): >> arch/s390/kvm/pci.c:14:5: warning: no previous prototype for 'kvm_s390_pci_dev_open' [-Wmissing-prototypes] 14 | int kvm_s390_pci_dev_open(struct zpci_dev *zdev) | ^~~~~~~~~~~~~~~~~~~~~ >> arch/s390/kvm/pci.c:29:6: warning: no previous prototype for 'kvm_s390_pci_dev_release' [-Wmissing-prototypes] 29 | void kvm_s390_pci_dev_release(struct zpci_dev *zdev) | ^~~~~~~~~~~~~~~~~~~~~~~~ vim +/kvm_s390_pci_dev_open +14 arch/s390/kvm/pci.c 13 > 14 int kvm_s390_pci_dev_open(struct zpci_dev *zdev) 15 { 16 struct kvm_zdev *kzdev; 17 18 kzdev = kzalloc(sizeof(struct kvm_zdev), GFP_KERNEL); 19 if (!kzdev) 20 return -ENOMEM; 21 22 kzdev->zdev = zdev; 23 zdev->kzdev = kzdev; 24 25 return 0; 26 } 27 EXPORT_SYMBOL_GPL(kvm_s390_pci_dev_open); 28 > 29 void kvm_s390_pci_dev_release(struct zpci_dev *zdev)
On 4/27/22 4:41 AM, kernel test robot wrote: > Hi Matthew, > > I love your patch! Perhaps something to improve: > > [auto build test WARNING on v5.18-rc4] > [cannot apply to s390/features kvms390/next awilliam-vfio/next next-20220427] > [If your patch is applied to the wrong git tree, kindly drop us a note. > And when submitting patch, we suggest to use '--base' as documented in > https://git-scm.com/docs/git-format-patch] > > url: https://github.com/intel-lab-lkp/linux/commits/Matthew-Rosato/KVM-s390-enable-zPCI-for-interpretive-execution/20220427-041853 > base: af2d861d4cd2a4da5137f795ee3509e6f944a25b > config: s390-defconfig (https://download.01.org/0day-ci/archive/20220427/202204271653.1ZoYsV9W-lkp@intel.com/config) > compiler: s390-linux-gcc (GCC) 11.3.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://github.com/intel-lab-lkp/linux/commit/e6d8c620090a7b184afdf5b5123d10ac45776eaf > git remote add linux-review https://github.com/intel-lab-lkp/linux > git fetch --no-tags linux-review Matthew-Rosato/KVM-s390-enable-zPCI-for-interpretive-execution/20220427-041853 > git checkout e6d8c620090a7b184afdf5b5123d10ac45776eaf > # save the config file > mkdir build_dir && cp config build_dir/.config > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=s390 SHELL=/bin/bash arch/s390/kvm/ > > If you fix the issue, kindly add following tag as appropriate > Reported-by: kernel test robot <lkp@intel.com> > > All warnings (new ones prefixed by >>): > >>> arch/s390/kvm/pci.c:14:5: warning: no previous prototype for 'kvm_s390_pci_dev_open' [-Wmissing-prototypes] > 14 | int kvm_s390_pci_dev_open(struct zpci_dev *zdev) > | ^~~~~~~~~~~~~~~~~~~~~ >>> arch/s390/kvm/pci.c:29:6: warning: no previous prototype for 'kvm_s390_pci_dev_release' [-Wmissing-prototypes] > 29 | void kvm_s390_pci_dev_release(struct zpci_dev *zdev) > | ^~~~~~~~~~~~~~~~~~~~~~~~ > Oops, these 2 functions no longer need to be externalized and can simply be marked static. > > vim +/kvm_s390_pci_dev_open +14 arch/s390/kvm/pci.c > > 13 > > 14 int kvm_s390_pci_dev_open(struct zpci_dev *zdev) > 15 { > 16 struct kvm_zdev *kzdev; > 17 > 18 kzdev = kzalloc(sizeof(struct kvm_zdev), GFP_KERNEL); > 19 if (!kzdev) > 20 return -ENOMEM; > 21 > 22 kzdev->zdev = zdev; > 23 zdev->kzdev = kzdev; > 24 > 25 return 0; > 26 } > 27 EXPORT_SYMBOL_GPL(kvm_s390_pci_dev_open); > 28 > > 29 void kvm_s390_pci_dev_release(struct zpci_dev *zdev) >
diff --git a/arch/s390/include/asm/pci.h b/arch/s390/include/asm/pci.h index 4c5b8fbc2079..50f1851edfbe 100644 --- a/arch/s390/include/asm/pci.h +++ b/arch/s390/include/asm/pci.h @@ -97,6 +97,7 @@ struct zpci_bar_struct { }; struct s390_domain; +struct kvm_zdev; #define ZPCI_FUNCTIONS_PER_BUS 256 struct zpci_bus { @@ -189,7 +190,9 @@ struct zpci_dev { struct dentry *debugfs_dev; + /* IOMMU and passthrough */ struct s390_domain *s390_domain; /* s390 IOMMU domain data */ + struct kvm_zdev *kzdev; }; static inline bool zdev_enabled(struct zpci_dev *zdev) diff --git a/arch/s390/kvm/Makefile b/arch/s390/kvm/Makefile index 26f4a74e5ce4..00cf6853d93f 100644 --- a/arch/s390/kvm/Makefile +++ b/arch/s390/kvm/Makefile @@ -10,4 +10,5 @@ ccflags-y := -Ivirt/kvm -Iarch/s390/kvm kvm-y += kvm-s390.o intercept.o interrupt.o priv.o sigp.o kvm-y += diag.o gaccess.o guestdbg.o vsie.o pv.o +kvm-$(CONFIG_PCI) += pci.o obj-$(CONFIG_KVM) += kvm.o diff --git a/arch/s390/kvm/pci.c b/arch/s390/kvm/pci.c new file mode 100644 index 000000000000..213be236c05a --- /dev/null +++ b/arch/s390/kvm/pci.c @@ -0,0 +1,38 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * s390 kvm PCI passthrough support + * + * Copyright IBM Corp. 2022 + * + * Author(s): Matthew Rosato <mjrosato@linux.ibm.com> + */ + +#include <linux/kvm_host.h> +#include <linux/pci.h> +#include "pci.h" + +int kvm_s390_pci_dev_open(struct zpci_dev *zdev) +{ + struct kvm_zdev *kzdev; + + kzdev = kzalloc(sizeof(struct kvm_zdev), GFP_KERNEL); + if (!kzdev) + return -ENOMEM; + + kzdev->zdev = zdev; + zdev->kzdev = kzdev; + + return 0; +} +EXPORT_SYMBOL_GPL(kvm_s390_pci_dev_open); + +void kvm_s390_pci_dev_release(struct zpci_dev *zdev) +{ + struct kvm_zdev *kzdev; + + kzdev = zdev->kzdev; + WARN_ON(kzdev->zdev != zdev); + zdev->kzdev = 0; + kfree(kzdev); +} +EXPORT_SYMBOL_GPL(kvm_s390_pci_dev_release); diff --git a/arch/s390/kvm/pci.h b/arch/s390/kvm/pci.h new file mode 100644 index 000000000000..ce93978e8913 --- /dev/null +++ b/arch/s390/kvm/pci.h @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * s390 kvm PCI passthrough support + * + * Copyright IBM Corp. 2022 + * + * Author(s): Matthew Rosato <mjrosato@linux.ibm.com> + */ + +#ifndef __KVM_S390_PCI_H +#define __KVM_S390_PCI_H + +#include <linux/kvm_host.h> +#include <linux/pci.h> + +struct kvm_zdev { + struct zpci_dev *zdev; + struct kvm *kvm; +}; + +#endif /* __KVM_S390_PCI_H */