* [PATCH] add support for pci in the pvpanic driver @ 2021-02-03 14:43 Mihai Carabas 2021-02-03 14:43 ` [PATCH 1/2] misc/pvpanic: split-up generic and platform dependent code Mihai Carabas 2021-02-03 14:43 ` [PATCH 2/2] misc/pvpanic: add pci driver Mihai Carabas 0 siblings, 2 replies; 9+ messages in thread From: Mihai Carabas @ 2021-02-03 14:43 UTC (permalink / raw) To: linux-kernel Cc: gregkh, arnd, andriy.shevchenko, bobo.shaobowang, Mihai Carabas This patchset adds support for pci in the pvpanic driver. The device already got in qemu [1]. [1] https://github.com/qemu/qemu/commit/9df52f58e76e904fb141b10318362d718f470db2 Mihai Carabas (2): misc/pvpanic: split-up generic and platform dependent code misc/pvpanic: add pci driver drivers/misc/Kconfig | 9 +-- drivers/misc/Makefile | 2 +- drivers/misc/pvpanic.c | 111 ------------------------------------ drivers/misc/pvpanic/Kconfig | 28 +++++++++ drivers/misc/pvpanic/Makefile | 9 +++ drivers/misc/pvpanic/pvpanic-mmio.c | 83 +++++++++++++++++++++++++++ drivers/misc/pvpanic/pvpanic-pci.c | 54 ++++++++++++++++++ drivers/misc/pvpanic/pvpanic.c | 59 +++++++++++++++++++ drivers/misc/pvpanic/pvpanic.h | 17 ++++++ 9 files changed, 252 insertions(+), 120 deletions(-) delete mode 100644 drivers/misc/pvpanic.c create mode 100644 drivers/misc/pvpanic/Kconfig create mode 100644 drivers/misc/pvpanic/Makefile create mode 100644 drivers/misc/pvpanic/pvpanic-mmio.c create mode 100644 drivers/misc/pvpanic/pvpanic-pci.c create mode 100644 drivers/misc/pvpanic/pvpanic.c create mode 100644 drivers/misc/pvpanic/pvpanic.h -- 1.8.3.1 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/2] misc/pvpanic: split-up generic and platform dependent code 2021-02-03 14:43 [PATCH] add support for pci in the pvpanic driver Mihai Carabas @ 2021-02-03 14:43 ` Mihai Carabas 2021-02-03 15:44 ` Greg KH ` (3 more replies) 2021-02-03 14:43 ` [PATCH 2/2] misc/pvpanic: add pci driver Mihai Carabas 1 sibling, 4 replies; 9+ messages in thread From: Mihai Carabas @ 2021-02-03 14:43 UTC (permalink / raw) To: linux-kernel Cc: gregkh, arnd, andriy.shevchenko, bobo.shaobowang, Mihai Carabas Split-up generic and platform dependent code in order to introduce pvpanic pci device driver later. Signed-off-by: Mihai Carabas <mihai.carabas@oracle.com> --- drivers/misc/Kconfig | 9 +-- drivers/misc/Makefile | 2 +- drivers/misc/pvpanic.c | 111 ------------------------------------ drivers/misc/pvpanic/Kconfig | 14 +++++ drivers/misc/pvpanic/Makefile | 2 + drivers/misc/pvpanic/pvpanic-mmio.c | 83 +++++++++++++++++++++++++++ drivers/misc/pvpanic/pvpanic.c | 59 +++++++++++++++++++ drivers/misc/pvpanic/pvpanic.h | 17 ++++++ 8 files changed, 177 insertions(+), 120 deletions(-) delete mode 100644 drivers/misc/pvpanic.c create mode 100644 drivers/misc/pvpanic/Kconfig create mode 100644 drivers/misc/pvpanic/Makefile create mode 100644 drivers/misc/pvpanic/pvpanic-mmio.c create mode 100644 drivers/misc/pvpanic/pvpanic.c create mode 100644 drivers/misc/pvpanic/pvpanic.h diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index fafa8b0..0273ecb 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig @@ -448,14 +448,6 @@ config MISC_RTSX tristate default MISC_RTSX_PCI || MISC_RTSX_USB -config PVPANIC - tristate "pvpanic device support" - depends on HAS_IOMEM && (ACPI || OF) - help - This driver provides support for the pvpanic device. pvpanic is - a paravirtualized device provided by QEMU; it lets a virtual machine - (guest) communicate panic events to the host. - config HISI_HIKEY_USB tristate "USB GPIO Hub on HiSilicon Hikey 960/970 Platform" depends on (OF && GPIOLIB) || COMPILE_TEST @@ -481,4 +473,5 @@ source "drivers/misc/ocxl/Kconfig" source "drivers/misc/cardreader/Kconfig" source "drivers/misc/habanalabs/Kconfig" source "drivers/misc/uacce/Kconfig" +source "drivers/misc/pvpanic/Kconfig" endmenu diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile index d23231e..9f411b8 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -52,7 +52,7 @@ obj-$(CONFIG_CXL_BASE) += cxl/ obj-$(CONFIG_PCI_ENDPOINT_TEST) += pci_endpoint_test.o obj-$(CONFIG_OCXL) += ocxl/ obj-y += cardreader/ -obj-$(CONFIG_PVPANIC) += pvpanic.o +obj-$(CONFIG_PVPANIC) += pvpanic/ obj-$(CONFIG_HABANA_AI) += habanalabs/ obj-$(CONFIG_UACCE) += uacce/ obj-$(CONFIG_XILINX_SDFEC) += xilinx_sdfec.o diff --git a/drivers/misc/pvpanic.c b/drivers/misc/pvpanic.c deleted file mode 100644 index 41cab29..00000000 --- a/drivers/misc/pvpanic.c +++ /dev/null @@ -1,111 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0+ -/* - * Pvpanic Device Support - * - * Copyright (C) 2013 Fujitsu. - * Copyright (C) 2018 ZTE. - */ - -#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt - -#include <linux/io.h> -#include <linux/kernel.h> -#include <linux/kexec.h> -#include <linux/mod_devicetable.h> -#include <linux/module.h> -#include <linux/platform_device.h> -#include <linux/types.h> - -#include <uapi/misc/pvpanic.h> - -static void __iomem *base; - -MODULE_AUTHOR("Hu Tao <hutao@cn.fujitsu.com>"); -MODULE_DESCRIPTION("pvpanic device driver"); -MODULE_LICENSE("GPL"); - -static void -pvpanic_send_event(unsigned int event) -{ - iowrite8(event, base); -} - -static int -pvpanic_panic_notify(struct notifier_block *nb, unsigned long code, - void *unused) -{ - unsigned int event = PVPANIC_PANICKED; - - if (kexec_crash_loaded()) - event = PVPANIC_CRASH_LOADED; - - pvpanic_send_event(event); - - return NOTIFY_DONE; -} - -static struct notifier_block pvpanic_panic_nb = { - .notifier_call = pvpanic_panic_notify, - .priority = 1, /* let this called before broken drm_fb_helper */ -}; - -static int pvpanic_mmio_probe(struct platform_device *pdev) -{ - struct device *dev = &pdev->dev; - struct resource *res; - - res = platform_get_mem_or_io(pdev, 0); - if (!res) - return -EINVAL; - - switch (resource_type(res)) { - case IORESOURCE_IO: - base = devm_ioport_map(dev, res->start, resource_size(res)); - if (!base) - return -ENOMEM; - break; - case IORESOURCE_MEM: - base = devm_ioremap_resource(dev, res); - if (IS_ERR(base)) - return PTR_ERR(base); - break; - default: - return -EINVAL; - } - - atomic_notifier_chain_register(&panic_notifier_list, - &pvpanic_panic_nb); - - return 0; -} - -static int pvpanic_mmio_remove(struct platform_device *pdev) -{ - - atomic_notifier_chain_unregister(&panic_notifier_list, - &pvpanic_panic_nb); - - return 0; -} - -static const struct of_device_id pvpanic_mmio_match[] = { - { .compatible = "qemu,pvpanic-mmio", }, - {} -}; - -static const struct acpi_device_id pvpanic_device_ids[] = { - { "QEMU0001", 0 }, - { "", 0 } -}; -MODULE_DEVICE_TABLE(acpi, pvpanic_device_ids); - -static struct platform_driver pvpanic_mmio_driver = { - .driver = { - .name = "pvpanic-mmio", - .of_match_table = pvpanic_mmio_match, - .acpi_match_table = pvpanic_device_ids, - }, - .probe = pvpanic_mmio_probe, - .remove = pvpanic_mmio_remove, -}; -module_platform_driver(pvpanic_mmio_driver); diff --git a/drivers/misc/pvpanic/Kconfig b/drivers/misc/pvpanic/Kconfig new file mode 100644 index 00000000..12bb017 --- /dev/null +++ b/drivers/misc/pvpanic/Kconfig @@ -0,0 +1,14 @@ +config PVPANIC + bool "pvpanic device support" + depends on PVPANIC_MMIO + help + This option enable generic code for pvpanic device driver logic. + +config PVPANIC_MMIO + tristate "pvpanic mmio device support" + depends on HAS_IOMEM && (ACPI || OF) + select PVPANIC + help + This driver provides support for the pvpanic device. pvpanic is + a paravirtualized device provided by QEMU; it lets a virtual machine + (guest) communicate panic events to the host. diff --git a/drivers/misc/pvpanic/Makefile b/drivers/misc/pvpanic/Makefile new file mode 100644 index 00000000..d08379b --- /dev/null +++ b/drivers/misc/pvpanic/Makefile @@ -0,0 +1,2 @@ +obj-$(CONFIG_PVPANIC) += pvpanic.o +obj-$(CONFIG_PVPANIC_MMIO) += pvpanic-mmio.o diff --git a/drivers/misc/pvpanic/pvpanic-mmio.c b/drivers/misc/pvpanic/pvpanic-mmio.c new file mode 100644 index 00000000..f361747 --- /dev/null +++ b/drivers/misc/pvpanic/pvpanic-mmio.c @@ -0,0 +1,83 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Pvpanic Device Support + * + * Copyright (C) 2013 Fujitsu. + * Copyright (C) 2018 ZTE. + * Copyright (C) 2021 Oracle. +*/ + +#include <linux/io.h> +#include <linux/kernel.h> +#include <linux/kexec.h> +#include <linux/mod_devicetable.h> +#include <linux/module.h> +#include <linux/platform_device.h> +#include <linux/types.h> + +#include <uapi/misc/pvpanic.h> +#include "pvpanic.h" + +MODULE_AUTHOR("Hu Tao <hutao@cn.fujitsu.com>"); +MODULE_DESCRIPTION("pvpanic device driver"); +MODULE_LICENSE("GPL"); + +static int pvpanic_mmio_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct resource *res; + void __iomem *base; + + res = platform_get_mem_or_io(pdev, 0); + if (!res) + return -EINVAL; + + switch (resource_type(res)) { + case IORESOURCE_IO: + base = devm_ioport_map(dev, res->start, resource_size(res)); + if (!base) + return -ENOMEM; + break; + case IORESOURCE_MEM: + base = devm_ioremap_resource(dev, res); + if (IS_ERR(base)) + return PTR_ERR(base); + break; + default: + return -EINVAL; + } + + pvpanic_probe(base); + + return 0; +} + +static int pvpanic_mmio_remove(struct platform_device *pdev) +{ + + pvpanic_remove(); + + return 0; +} + +static const struct of_device_id pvpanic_mmio_match[] = { + { .compatible = "qemu,pvpanic-mmio", }, + {} +}; + +static const struct acpi_device_id pvpanic_device_ids[] = { + { "QEMU0001", 0 }, + { "", 0 } +}; +MODULE_DEVICE_TABLE(acpi, pvpanic_device_ids); + +static struct platform_driver pvpanic_mmio_driver = { + .driver = { + .name = "pvpanic-mmio", + .of_match_table = pvpanic_mmio_match, + .acpi_match_table = pvpanic_device_ids, + }, + .probe = pvpanic_mmio_probe, + .remove = pvpanic_mmio_remove, +}; +module_platform_driver(pvpanic_mmio_driver); diff --git a/drivers/misc/pvpanic/pvpanic.c b/drivers/misc/pvpanic/pvpanic.c new file mode 100644 index 00000000..b4e5bbc --- /dev/null +++ b/drivers/misc/pvpanic/pvpanic.c @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Pvpanic Device Support + * + * Copyright (C) 2013 Fujitsu. + * Copyright (C) 2018 ZTE. + * Copyright (C) 2021 Oracle. + */ + +#include <linux/io.h> +#include <linux/kernel.h> +#include <linux/kexec.h> +#include <linux/mod_devicetable.h> +#include <linux/module.h> +#include <linux/platform_device.h> +#include <linux/types.h> + +#include <uapi/misc/pvpanic.h> + +static void __iomem *base; + +static void +pvpanic_send_event(unsigned int event) +{ + iowrite8(event, base); +} + +static int +pvpanic_panic_notify(struct notifier_block *nb, unsigned long code, + void *unused) +{ + unsigned int event = PVPANIC_PANICKED; + + if (kexec_crash_loaded()) + event = PVPANIC_CRASH_LOADED; + + pvpanic_send_event(event); + + return NOTIFY_DONE; +} + +static struct notifier_block pvpanic_panic_nb = { + .notifier_call = pvpanic_panic_notify, + .priority = 1, /* let this called before broken drm_fb_helper */ +}; + +void pvpanic_probe(void __iomem *pbase) +{ + base = pbase; + atomic_notifier_chain_register(&panic_notifier_list, + &pvpanic_panic_nb); +} + +void pvpanic_remove(void) +{ + + atomic_notifier_chain_unregister(&panic_notifier_list, + &pvpanic_panic_nb); +} diff --git a/drivers/misc/pvpanic/pvpanic.h b/drivers/misc/pvpanic/pvpanic.h new file mode 100644 index 00000000..a3aca5a --- /dev/null +++ b/drivers/misc/pvpanic/pvpanic.h @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Pvpanic Device Support + * + * Copyright (C) 2021 Oracle. + */ + +#ifndef PVPANIC_H_ +#define PVPANIC_H_ + + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +void pvpanic_probe(void __iomem *base); +void pvpanic_remove(void); + +#endif /* PVPANIC_H_ */ -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] misc/pvpanic: split-up generic and platform dependent code 2021-02-03 14:43 ` [PATCH 1/2] misc/pvpanic: split-up generic and platform dependent code Mihai Carabas @ 2021-02-03 15:44 ` Greg KH 2021-02-03 17:13 ` Randy Dunlap ` (2 subsequent siblings) 3 siblings, 0 replies; 9+ messages in thread From: Greg KH @ 2021-02-03 15:44 UTC (permalink / raw) To: Mihai Carabas; +Cc: linux-kernel, arnd, andriy.shevchenko, bobo.shaobowang On Wed, Feb 03, 2021 at 04:43:58PM +0200, Mihai Carabas wrote: > Split-up generic and platform dependent code in order to introduce pvpanic pci > device driver later. What is "later"? And did you just create a new driver/module in this change? Why? And how did you test? This new module looks to probably taint the kernel, correct? How about doing this at the very least, 2 patches, one to move to the new directory, and the second to split into two modules. And of course, please TEST THIS! thanks, greg k-h ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] misc/pvpanic: split-up generic and platform dependent code 2021-02-03 14:43 ` [PATCH 1/2] misc/pvpanic: split-up generic and platform dependent code Mihai Carabas 2021-02-03 15:44 ` Greg KH @ 2021-02-03 17:13 ` Randy Dunlap 2021-02-03 19:57 ` kernel test robot 2021-02-03 23:18 ` kernel test robot 3 siblings, 0 replies; 9+ messages in thread From: Randy Dunlap @ 2021-02-03 17:13 UTC (permalink / raw) To: Mihai Carabas, linux-kernel Cc: gregkh, arnd, andriy.shevchenko, bobo.shaobowang On 2/3/21 6:43 AM, Mihai Carabas wrote: > diff --git a/drivers/misc/pvpanic/Kconfig b/drivers/misc/pvpanic/Kconfig > new file mode 100644 > index 00000000..12bb017 > --- /dev/null > +++ b/drivers/misc/pvpanic/Kconfig > @@ -0,0 +1,14 @@ > +config PVPANIC > + bool "pvpanic device support" > + depends on PVPANIC_MMIO > + help > + This option enable generic code for pvpanic device driver logic. > + > +config PVPANIC_MMIO > + tristate "pvpanic mmio device support" MMIO Also capitalize PCI in the other patch in the similar location. > + depends on HAS_IOMEM && (ACPI || OF) > + select PVPANIC > + help > + This driver provides support for the pvpanic device. pvpanic is > + a paravirtualized device provided by QEMU; it lets a virtual machine > + (guest) communicate panic events to the host. thanks. -- ~Randy ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] misc/pvpanic: split-up generic and platform dependent code 2021-02-03 14:43 ` [PATCH 1/2] misc/pvpanic: split-up generic and platform dependent code Mihai Carabas 2021-02-03 15:44 ` Greg KH 2021-02-03 17:13 ` Randy Dunlap @ 2021-02-03 19:57 ` kernel test robot 2021-02-03 23:18 ` kernel test robot 3 siblings, 0 replies; 9+ messages in thread From: kernel test robot @ 2021-02-03 19:57 UTC (permalink / raw) To: Mihai Carabas, linux-kernel Cc: kbuild-all, gregkh, arnd, andriy.shevchenko, bobo.shaobowang, Mihai Carabas [-- Attachment #1: Type: text/plain, Size: 2849 bytes --] Hi Mihai, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on linux/master] [also build test WARNING on soc/for-next linus/master v5.11-rc6 next-20210125] [cannot apply to char-misc/char-misc-testing] [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/0day-ci/linux/commits/Mihai-Carabas/misc-pvpanic-split-up-generic-and-platform-dependent-code/20210203-234431 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2ab38c17aac10bf55ab3efde4c4db3893d8691d2 config: m68k-allmodconfig (attached as .config) compiler: m68k-linux-gcc (GCC) 9.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/0day-ci/linux/commit/a1b3e466013502c380f409d8a4635c796f8fc1ef git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Mihai-Carabas/misc-pvpanic-split-up-generic-and-platform-dependent-code/20210203-234431 git checkout a1b3e466013502c380f409d8a4635c796f8fc1ef # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k 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 >>): In file included from drivers/misc/pvpanic/pvpanic-mmio.c:19: >> drivers/misc/pvpanic/pvpanic.h:12: warning: "pr_fmt" redefined 12 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt | In file included from include/linux/kernel.h:16, from include/asm-generic/bug.h:20, from arch/m68k/include/asm/bug.h:32, from include/linux/bug.h:5, from include/linux/io.h:11, from drivers/misc/pvpanic/pvpanic-mmio.c:10: include/linux/printk.h:301: note: this is the location of the previous definition 301 | #define pr_fmt(fmt) fmt | -- >> drivers/misc/pvpanic/pvpanic.c:47:6: warning: no previous prototype for 'pvpanic_probe' [-Wmissing-prototypes] 47 | void pvpanic_probe(void __iomem *pbase) | ^~~~~~~~~~~~~ >> drivers/misc/pvpanic/pvpanic.c:54:6: warning: no previous prototype for 'pvpanic_remove' [-Wmissing-prototypes] 54 | void pvpanic_remove(void) | ^~~~~~~~~~~~~~ vim +/pr_fmt +12 drivers/misc/pvpanic/pvpanic.h 10 11 > 12 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 13 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 59615 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] misc/pvpanic: split-up generic and platform dependent code 2021-02-03 14:43 ` [PATCH 1/2] misc/pvpanic: split-up generic and platform dependent code Mihai Carabas ` (2 preceding siblings ...) 2021-02-03 19:57 ` kernel test robot @ 2021-02-03 23:18 ` kernel test robot 3 siblings, 0 replies; 9+ messages in thread From: kernel test robot @ 2021-02-03 23:18 UTC (permalink / raw) To: Mihai Carabas, linux-kernel Cc: kbuild-all, gregkh, arnd, andriy.shevchenko, bobo.shaobowang, Mihai Carabas [-- Attachment #1: Type: text/plain, Size: 1859 bytes --] Hi Mihai, Thank you for the patch! Yet something to improve: [auto build test ERROR on linux/master] [also build test ERROR on soc/for-next linus/master v5.11-rc6] [cannot apply to char-misc/char-misc-testing] [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/0day-ci/linux/commits/Mihai-Carabas/misc-pvpanic-split-up-generic-and-platform-dependent-code/20210203-234431 base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 2ab38c17aac10bf55ab3efde4c4db3893d8691d2 config: s390-allmodconfig (attached as .config) compiler: s390-linux-gcc (GCC) 9.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/0day-ci/linux/commit/a1b3e466013502c380f409d8a4635c796f8fc1ef git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Mihai-Carabas/misc-pvpanic-split-up-generic-and-platform-dependent-code/20210203-234431 git checkout a1b3e466013502c380f409d8a4635c796f8fc1ef # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=s390 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 >>, old ones prefixed by <<): >> ERROR: modpost: "pvpanic_probe" [drivers/misc/pvpanic/pvpanic-mmio.ko] undefined! >> ERROR: modpost: "pvpanic_remove" [drivers/misc/pvpanic/pvpanic-mmio.ko] undefined! --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 51780 bytes --] ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/2] misc/pvpanic: add pci driver 2021-02-03 14:43 [PATCH] add support for pci in the pvpanic driver Mihai Carabas 2021-02-03 14:43 ` [PATCH 1/2] misc/pvpanic: split-up generic and platform dependent code Mihai Carabas @ 2021-02-03 14:43 ` Mihai Carabas 2021-02-03 15:41 ` Greg KH 2021-02-03 15:44 ` Greg KH 1 sibling, 2 replies; 9+ messages in thread From: Mihai Carabas @ 2021-02-03 14:43 UTC (permalink / raw) To: linux-kernel Cc: gregkh, arnd, andriy.shevchenko, bobo.shaobowang, Mihai Carabas Add pvpanic pci device driver support. Signed-off-by: Mihai Carabas <mihai.carabas@oracle.com> --- drivers/misc/pvpanic/Kconfig | 16 ++++++++++- drivers/misc/pvpanic/Makefile | 7 +++++ drivers/misc/pvpanic/pvpanic-pci.c | 54 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 drivers/misc/pvpanic/pvpanic-pci.c diff --git a/drivers/misc/pvpanic/Kconfig b/drivers/misc/pvpanic/Kconfig index 12bb017..4a96e8d 100644 --- a/drivers/misc/pvpanic/Kconfig +++ b/drivers/misc/pvpanic/Kconfig @@ -1,6 +1,11 @@ +# SPDX-License-Identifier: GPL-2.0-only +# +# pvpanic device +# + config PVPANIC bool "pvpanic device support" - depends on PVPANIC_MMIO + depends on (PVPANIC_MMIO || PVPANIC_PCI) help This option enable generic code for pvpanic device driver logic. @@ -12,3 +17,12 @@ config PVPANIC_MMIO This driver provides support for the pvpanic device. pvpanic is a paravirtualized device provided by QEMU; it lets a virtual machine (guest) communicate panic events to the host. + +config PVPANIC_PCI + tristate "pvpanic pci device support" + depends on PCI + select PVPANIC + help + This driver provides support for the pvpanic device. pvpanic is + a paravirtualized device provided by QEMU; it lets a virtual machine + (guest) communicate panic events to the host. diff --git a/drivers/misc/pvpanic/Makefile b/drivers/misc/pvpanic/Makefile index d08379b..fe57d1f 100644 --- a/drivers/misc/pvpanic/Makefile +++ b/drivers/misc/pvpanic/Makefile @@ -1,2 +1,9 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Makefile for pvpanic device. +# + + obj-$(CONFIG_PVPANIC) += pvpanic.o obj-$(CONFIG_PVPANIC_MMIO) += pvpanic-mmio.o +obj-$(CONFIG_PVPANIC_PCI) += pvpanic-pci.o diff --git a/drivers/misc/pvpanic/pvpanic-pci.c b/drivers/misc/pvpanic/pvpanic-pci.c new file mode 100644 index 00000000..1d25d11 --- /dev/null +++ b/drivers/misc/pvpanic/pvpanic-pci.c @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * pvpanic pci driver. + * + * Copyright (C) 2021 Oracle. + */ + +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/pci.h> +#include <linux/types.h> +#include "pvpanic.h" + +#define PCI_VENDOR_ID_REDHAT 0x1b36 +#define PCI_DEVICE_ID_REDHAT_PVPANIC 0x0011 + +static const struct pci_device_id pvpanic_pci_id_tbl[] = { + { PCI_DEVICE(PCI_VENDOR_ID_REDHAT, PCI_DEVICE_ID_REDHAT_PVPANIC),}, + {} +}; + +static int pvpanic_pci_probe(struct pci_dev *pdev, + const struct pci_device_id *ent) +{ + int ret; + struct resource res; + void __iomem *base; + + ret = pcim_enable_device(pdev); + if (ret < 0) + return ret; + + base = pci_iomap(pdev, 0, 0); + if (IS_ERR(base)) + return PTR_ERR(base); + + pvpanic_probe(base); + + return 0; +} + +static void pvpanic_pci_remove(struct pci_dev *pdev) +{ + pvpanic_remove(); +} + +static struct pci_driver pvpanic_pci_driver = { + .name = "pvpanic-pci", + .id_table = pvpanic_pci_id_tbl, + .probe = pvpanic_pci_probe, + .remove = pvpanic_pci_remove, +}; + +module_pci_driver(pvpanic_pci_driver); -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] misc/pvpanic: add pci driver 2021-02-03 14:43 ` [PATCH 2/2] misc/pvpanic: add pci driver Mihai Carabas @ 2021-02-03 15:41 ` Greg KH 2021-02-03 15:44 ` Greg KH 1 sibling, 0 replies; 9+ messages in thread From: Greg KH @ 2021-02-03 15:41 UTC (permalink / raw) To: Mihai Carabas; +Cc: linux-kernel, arnd, andriy.shevchenko, bobo.shaobowang On Wed, Feb 03, 2021 at 04:43:59PM +0200, Mihai Carabas wrote: > Add pvpanic pci device driver support. What does that mean? Please provide more changelog text here. > > Signed-off-by: Mihai Carabas <mihai.carabas@oracle.com> > --- > drivers/misc/pvpanic/Kconfig | 16 ++++++++++- > drivers/misc/pvpanic/Makefile | 7 +++++ > drivers/misc/pvpanic/pvpanic-pci.c | 54 ++++++++++++++++++++++++++++++++++++++ > 3 files changed, 76 insertions(+), 1 deletion(-) > create mode 100644 drivers/misc/pvpanic/pvpanic-pci.c > > diff --git a/drivers/misc/pvpanic/Kconfig b/drivers/misc/pvpanic/Kconfig > index 12bb017..4a96e8d 100644 > --- a/drivers/misc/pvpanic/Kconfig > +++ b/drivers/misc/pvpanic/Kconfig > @@ -1,6 +1,11 @@ > +# SPDX-License-Identifier: GPL-2.0-only > +# > +# pvpanic device > +# While nice, why add this now? > + > config PVPANIC > bool "pvpanic device support" > - depends on PVPANIC_MMIO > + depends on (PVPANIC_MMIO || PVPANIC_PCI) > help > This option enable generic code for pvpanic device driver logic. > > @@ -12,3 +17,12 @@ config PVPANIC_MMIO > This driver provides support for the pvpanic device. pvpanic is > a paravirtualized device provided by QEMU; it lets a virtual machine > (guest) communicate panic events to the host. > + > +config PVPANIC_PCI > + tristate "pvpanic pci device support" > + depends on PCI > + select PVPANIC > + help > + This driver provides support for the pvpanic device. pvpanic is > + a paravirtualized device provided by QEMU; it lets a virtual machine > + (guest) communicate panic events to the host. > diff --git a/drivers/misc/pvpanic/Makefile b/drivers/misc/pvpanic/Makefile > index d08379b..fe57d1f 100644 > --- a/drivers/misc/pvpanic/Makefile > +++ b/drivers/misc/pvpanic/Makefile > @@ -1,2 +1,9 @@ > +# SPDX-License-Identifier: GPL-2.0 > +# > +# Makefile for pvpanic device. > +# Again, nice, but nothing to do with this change. Please only do "one thing" per patch. thanks, greg k-h ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] misc/pvpanic: add pci driver 2021-02-03 14:43 ` [PATCH 2/2] misc/pvpanic: add pci driver Mihai Carabas 2021-02-03 15:41 ` Greg KH @ 2021-02-03 15:44 ` Greg KH 1 sibling, 0 replies; 9+ messages in thread From: Greg KH @ 2021-02-03 15:44 UTC (permalink / raw) To: Mihai Carabas; +Cc: linux-kernel, arnd, andriy.shevchenko, bobo.shaobowang On Wed, Feb 03, 2021 at 04:43:59PM +0200, Mihai Carabas wrote: > Add pvpanic pci device driver support. > > Signed-off-by: Mihai Carabas <mihai.carabas@oracle.com> > --- > drivers/misc/pvpanic/Kconfig | 16 ++++++++++- > drivers/misc/pvpanic/Makefile | 7 +++++ > drivers/misc/pvpanic/pvpanic-pci.c | 54 ++++++++++++++++++++++++++++++++++++++ > 3 files changed, 76 insertions(+), 1 deletion(-) > create mode 100644 drivers/misc/pvpanic/pvpanic-pci.c > > diff --git a/drivers/misc/pvpanic/Kconfig b/drivers/misc/pvpanic/Kconfig > index 12bb017..4a96e8d 100644 > --- a/drivers/misc/pvpanic/Kconfig > +++ b/drivers/misc/pvpanic/Kconfig > @@ -1,6 +1,11 @@ > +# SPDX-License-Identifier: GPL-2.0-only > +# > +# pvpanic device > +# > + > config PVPANIC > bool "pvpanic device support" > - depends on PVPANIC_MMIO > + depends on (PVPANIC_MMIO || PVPANIC_PCI) > help > This option enable generic code for pvpanic device driver logic. > > @@ -12,3 +17,12 @@ config PVPANIC_MMIO > This driver provides support for the pvpanic device. pvpanic is > a paravirtualized device provided by QEMU; it lets a virtual machine > (guest) communicate panic events to the host. > + > +config PVPANIC_PCI > + tristate "pvpanic pci device support" > + depends on PCI > + select PVPANIC > + help > + This driver provides support for the pvpanic device. pvpanic is > + a paravirtualized device provided by QEMU; it lets a virtual machine > + (guest) communicate panic events to the host. > diff --git a/drivers/misc/pvpanic/Makefile b/drivers/misc/pvpanic/Makefile > index d08379b..fe57d1f 100644 > --- a/drivers/misc/pvpanic/Makefile > +++ b/drivers/misc/pvpanic/Makefile > @@ -1,2 +1,9 @@ > +# SPDX-License-Identifier: GPL-2.0 > +# > +# Makefile for pvpanic device. > +# > + > + > obj-$(CONFIG_PVPANIC) += pvpanic.o > obj-$(CONFIG_PVPANIC_MMIO) += pvpanic-mmio.o > +obj-$(CONFIG_PVPANIC_PCI) += pvpanic-pci.o > diff --git a/drivers/misc/pvpanic/pvpanic-pci.c b/drivers/misc/pvpanic/pvpanic-pci.c > new file mode 100644 > index 00000000..1d25d11 > --- /dev/null > +++ b/drivers/misc/pvpanic/pvpanic-pci.c > @@ -0,0 +1,54 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * pvpanic pci driver. > + * > + * Copyright (C) 2021 Oracle. > + */ > + > +#include <linux/kernel.h> > +#include <linux/module.h> > +#include <linux/pci.h> > +#include <linux/types.h> > +#include "pvpanic.h" > + > +#define PCI_VENDOR_ID_REDHAT 0x1b36 > +#define PCI_DEVICE_ID_REDHAT_PVPANIC 0x0011 > + > +static const struct pci_device_id pvpanic_pci_id_tbl[] = { > + { PCI_DEVICE(PCI_VENDOR_ID_REDHAT, PCI_DEVICE_ID_REDHAT_PVPANIC),}, > + {} > +}; > + > +static int pvpanic_pci_probe(struct pci_dev *pdev, > + const struct pci_device_id *ent) > +{ > + int ret; > + struct resource res; > + void __iomem *base; > + > + ret = pcim_enable_device(pdev); > + if (ret < 0) > + return ret; > + > + base = pci_iomap(pdev, 0, 0); > + if (IS_ERR(base)) > + return PTR_ERR(base); > + > + pvpanic_probe(base); > + > + return 0; > +} > + > +static void pvpanic_pci_remove(struct pci_dev *pdev) > +{ > + pvpanic_remove(); So no real device here? That feels really wrong, you can't have a single global instance anymore :( thanks, greg k-h ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-02-03 23:21 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-02-03 14:43 [PATCH] add support for pci in the pvpanic driver Mihai Carabas 2021-02-03 14:43 ` [PATCH 1/2] misc/pvpanic: split-up generic and platform dependent code Mihai Carabas 2021-02-03 15:44 ` Greg KH 2021-02-03 17:13 ` Randy Dunlap 2021-02-03 19:57 ` kernel test robot 2021-02-03 23:18 ` kernel test robot 2021-02-03 14:43 ` [PATCH 2/2] misc/pvpanic: add pci driver Mihai Carabas 2021-02-03 15:41 ` Greg KH 2021-02-03 15:44 ` Greg KH
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).