linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andy Shevchenko <andy.shevchenko@gmail.com>
To: peng.hao2@zte.com.cn, "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Andy Shevchenko <andy@infradead.org>,
	Darren Hart <dvhart@infradead.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Platform Driver <platform-driver-x86@vger.kernel.org>,
	hutao@cn.fujitsu.com
Subject: Re: [PATCH V2 1/4] misc/pvpanic: move pvpanic to misc as common driver
Date: Wed, 24 Oct 2018 16:08:30 +0300	[thread overview]
Message-ID: <CAHp75VdJ2LykRx0A8_qHFbA-RCVoeBJq7Sj_0OzVJ0jZXAXA5g@mail.gmail.com> (raw)
In-Reply-To: <1540401136-78500-1-git-send-email-peng.hao2@zte.com.cn>

On Wed, Oct 24, 2018 at 12:02 PM Peng Hao <peng.hao2@zte.com.cn> wrote:
>
> move pvpanic.c from drivers/platform/x86 to drivers/misc.
> following patches will use pvpanic device in arm64.
>

-C -M usually helps in such patches.

The question is perhaps this should go under drivers/acpi?

Rafael, what do you think?

> Signed-off-by: Peng Hao <peng.hao2@zte.com.cn>
> ---
>  drivers/misc/Kconfig           |   7 +++
>  drivers/misc/Makefile          |   1 +
>  drivers/misc/pvpanic.c         | 124 +++++++++++++++++++++++++++++++++++++++++
>  drivers/platform/Kconfig       |   3 +
>  drivers/platform/Makefile      |   1 +
>  drivers/platform/x86/Kconfig   |   8 ---
>  drivers/platform/x86/Makefile  |   1 -
>  drivers/platform/x86/pvpanic.c | 124 -----------------------------------------
>  8 files changed, 136 insertions(+), 133 deletions(-)
>  create mode 100644 drivers/misc/pvpanic.c
>  delete mode 100644 drivers/platform/x86/pvpanic.c
>
> diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
> index 5d71300..ca55c94 100644
> --- a/drivers/misc/Kconfig
> +++ b/drivers/misc/Kconfig
> @@ -499,6 +499,13 @@ config MISC_RTSX
>         tristate
>         default MISC_RTSX_PCI || MISC_RTSX_USB
>
> +config PVPANIC
> +       tristate "pvpanic device support"
> +       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.
> +
>  source "drivers/misc/c2port/Kconfig"
>  source "drivers/misc/eeprom/Kconfig"
>  source "drivers/misc/cb710/Kconfig"
> diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
> index 20be70c..39dc005 100644
> --- a/drivers/misc/Makefile
> +++ b/drivers/misc/Makefile
> @@ -57,3 +57,4 @@ obj-$(CONFIG_ASPEED_LPC_SNOOP)        += aspeed-lpc-snoop.o
>  obj-$(CONFIG_PCI_ENDPOINT_TEST)        += pci_endpoint_test.o
>  obj-$(CONFIG_OCXL)             += ocxl/
>  obj-$(CONFIG_MISC_RTSX)                += cardreader/
> +obj-$(CONFIG_PVPANIC)                  += pvpanic.o
> diff --git a/drivers/misc/pvpanic.c b/drivers/misc/pvpanic.c
> new file mode 100644
> index 0000000..fd86dab
> --- /dev/null
> +++ b/drivers/misc/pvpanic.c
> @@ -0,0 +1,124 @@
> +/*
> + *  pvpanic.c - pvpanic Device Support
> + *
> + *  Copyright (C) 2013 Fujitsu.
> + *
> + *  This program is free software; you can redistribute it and/or modify
> + *  it under the terms of the GNU General Public License as published by
> + *  the Free Software Foundation; either version 2 of the License, or
> + *  (at your option) any later version.
> + *
> + *  This program is distributed in the hope that it will be useful,
> + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *  GNU General Public License for more details.
> + *
> + *  You should have received a copy of the GNU General Public License
> + *  along with this program; if not, write to the Free Software
> + *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
> + */
> +
> +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
> +
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/init.h>
> +#include <linux/types.h>
> +#include <linux/acpi.h>
> +
> +MODULE_AUTHOR("Hu Tao <hutao@cn.fujitsu.com>");
> +MODULE_DESCRIPTION("pvpanic device driver");
> +MODULE_LICENSE("GPL");
> +
> +static int pvpanic_add(struct acpi_device *device);
> +static int pvpanic_remove(struct acpi_device *device);
> +
> +static const struct acpi_device_id pvpanic_device_ids[] = {
> +       { "QEMU0001", 0 },
> +       { "", 0 },
> +};
> +MODULE_DEVICE_TABLE(acpi, pvpanic_device_ids);
> +
> +#define PVPANIC_PANICKED       (1 << 0)
> +
> +static u16 port;
> +
> +static struct acpi_driver pvpanic_driver = {
> +       .name =         "pvpanic",
> +       .class =        "QEMU",
> +       .ids =          pvpanic_device_ids,
> +       .ops =          {
> +                               .add =          pvpanic_add,
> +                               .remove =       pvpanic_remove,
> +                       },
> +       .owner =        THIS_MODULE,
> +};
> +
> +static void
> +pvpanic_send_event(unsigned int event)
> +{
> +       outb(event, port);
> +}
> +
> +static int
> +pvpanic_panic_notify(struct notifier_block *nb, unsigned long code,
> +                    void *unused)
> +{
> +       pvpanic_send_event(PVPANIC_PANICKED);
> +       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 acpi_status
> +pvpanic_walk_resources(struct acpi_resource *res, void *context)
> +{
> +       switch (res->type) {
> +       case ACPI_RESOURCE_TYPE_END_TAG:
> +               return AE_OK;
> +
> +       case ACPI_RESOURCE_TYPE_IO:
> +               port = res->data.io.minimum;
> +               return AE_OK;
> +
> +       default:
> +               return AE_ERROR;
> +       }
> +}
> +
> +static int pvpanic_add(struct acpi_device *device)
> +{
> +       int ret;
> +
> +       ret = acpi_bus_get_status(device);
> +       if (ret < 0)
> +               return ret;
> +
> +       if (!device->status.enabled || !device->status.functional)
> +               return -ENODEV;
> +
> +       acpi_walk_resources(device->handle, METHOD_NAME__CRS,
> +                           pvpanic_walk_resources, NULL);
> +
> +       if (!port)
> +               return -ENODEV;
> +
> +       atomic_notifier_chain_register(&panic_notifier_list,
> +                                      &pvpanic_panic_nb);
> +
> +       return 0;
> +}
> +
> +static int pvpanic_remove(struct acpi_device *device)
> +{
> +
> +       atomic_notifier_chain_unregister(&panic_notifier_list,
> +                                        &pvpanic_panic_nb);
> +       return 0;
> +}
> +
> +module_acpi_driver(pvpanic_driver);
> diff --git a/drivers/platform/Kconfig b/drivers/platform/Kconfig
> index d4c2e42..8b64b78 100644
> --- a/drivers/platform/Kconfig
> +++ b/drivers/platform/Kconfig
> @@ -1,3 +1,6 @@
> +if ARM64
> +source "drivers/platform/arm/Kconfig"
> +endif
>  if X86
>  source "drivers/platform/x86/Kconfig"
>  endif
> diff --git a/drivers/platform/Makefile b/drivers/platform/Makefile
> index 4b2ce58..232231c 100644
> --- a/drivers/platform/Makefile
> +++ b/drivers/platform/Makefile
> @@ -3,6 +3,7 @@
>  # Makefile for linux/drivers/platform
>  #
>
> +obj-$(CONFIG_ARM64)               += arm/
>  obj-$(CONFIG_X86)              += x86/
>  obj-$(CONFIG_MELLANOX_PLATFORM)        += mellanox/
>  obj-$(CONFIG_MIPS)             += mips/
> diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
> index ef016e4..a6b412e 100644
> --- a/drivers/platform/x86/Kconfig
> +++ b/drivers/platform/x86/Kconfig
> @@ -1119,14 +1119,6 @@ config INTEL_SMARTCONNECT
>           This driver checks to determine whether the device has Intel Smart
>           Connect enabled, and if so disables it.
>
> -config PVPANIC
> -       tristate "pvpanic device support"
> -       depends on ACPI
> -       ---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 INTEL_PMC_IPC
>         tristate "Intel PMC IPC Driver"
>         depends on ACPI
> diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
> index 2ba6cb7..a4ec299 100644
> --- a/drivers/platform/x86/Makefile
> +++ b/drivers/platform/x86/Makefile
> @@ -75,7 +75,6 @@ obj-$(CONFIG_APPLE_GMUX)      += apple-gmux.o
>  obj-$(CONFIG_INTEL_RST)                += intel-rst.o
>  obj-$(CONFIG_INTEL_SMARTCONNECT)       += intel-smartconnect.o
>
> -obj-$(CONFIG_PVPANIC)           += pvpanic.o
>  obj-$(CONFIG_ALIENWARE_WMI)    += alienware-wmi.o
>  obj-$(CONFIG_INTEL_PMC_IPC)    += intel_pmc_ipc.o
>  obj-$(CONFIG_SILEAD_DMI)       += silead_dmi.o
> diff --git a/drivers/platform/x86/pvpanic.c b/drivers/platform/x86/pvpanic.c
> deleted file mode 100644
> index fd86dab..0000000
> --- a/drivers/platform/x86/pvpanic.c
> +++ /dev/null
> @@ -1,124 +0,0 @@
> -/*
> - *  pvpanic.c - pvpanic Device Support
> - *
> - *  Copyright (C) 2013 Fujitsu.
> - *
> - *  This program is free software; you can redistribute it and/or modify
> - *  it under the terms of the GNU General Public License as published by
> - *  the Free Software Foundation; either version 2 of the License, or
> - *  (at your option) any later version.
> - *
> - *  This program is distributed in the hope that it will be useful,
> - *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - *  GNU General Public License for more details.
> - *
> - *  You should have received a copy of the GNU General Public License
> - *  along with this program; if not, write to the Free Software
> - *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
> - */
> -
> -#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
> -
> -#include <linux/kernel.h>
> -#include <linux/module.h>
> -#include <linux/init.h>
> -#include <linux/types.h>
> -#include <linux/acpi.h>
> -
> -MODULE_AUTHOR("Hu Tao <hutao@cn.fujitsu.com>");
> -MODULE_DESCRIPTION("pvpanic device driver");
> -MODULE_LICENSE("GPL");
> -
> -static int pvpanic_add(struct acpi_device *device);
> -static int pvpanic_remove(struct acpi_device *device);
> -
> -static const struct acpi_device_id pvpanic_device_ids[] = {
> -       { "QEMU0001", 0 },
> -       { "", 0 },
> -};
> -MODULE_DEVICE_TABLE(acpi, pvpanic_device_ids);
> -
> -#define PVPANIC_PANICKED       (1 << 0)
> -
> -static u16 port;
> -
> -static struct acpi_driver pvpanic_driver = {
> -       .name =         "pvpanic",
> -       .class =        "QEMU",
> -       .ids =          pvpanic_device_ids,
> -       .ops =          {
> -                               .add =          pvpanic_add,
> -                               .remove =       pvpanic_remove,
> -                       },
> -       .owner =        THIS_MODULE,
> -};
> -
> -static void
> -pvpanic_send_event(unsigned int event)
> -{
> -       outb(event, port);
> -}
> -
> -static int
> -pvpanic_panic_notify(struct notifier_block *nb, unsigned long code,
> -                    void *unused)
> -{
> -       pvpanic_send_event(PVPANIC_PANICKED);
> -       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 acpi_status
> -pvpanic_walk_resources(struct acpi_resource *res, void *context)
> -{
> -       switch (res->type) {
> -       case ACPI_RESOURCE_TYPE_END_TAG:
> -               return AE_OK;
> -
> -       case ACPI_RESOURCE_TYPE_IO:
> -               port = res->data.io.minimum;
> -               return AE_OK;
> -
> -       default:
> -               return AE_ERROR;
> -       }
> -}
> -
> -static int pvpanic_add(struct acpi_device *device)
> -{
> -       int ret;
> -
> -       ret = acpi_bus_get_status(device);
> -       if (ret < 0)
> -               return ret;
> -
> -       if (!device->status.enabled || !device->status.functional)
> -               return -ENODEV;
> -
> -       acpi_walk_resources(device->handle, METHOD_NAME__CRS,
> -                           pvpanic_walk_resources, NULL);
> -
> -       if (!port)
> -               return -ENODEV;
> -
> -       atomic_notifier_chain_register(&panic_notifier_list,
> -                                      &pvpanic_panic_nb);
> -
> -       return 0;
> -}
> -
> -static int pvpanic_remove(struct acpi_device *device)
> -{
> -
> -       atomic_notifier_chain_unregister(&panic_notifier_list,
> -                                        &pvpanic_panic_nb);
> -       return 0;
> -}
> -
> -module_acpi_driver(pvpanic_driver);
> --
> 1.8.3.1
>


-- 
With Best Regards,
Andy Shevchenko

  reply	other threads:[~2018-10-24 13:08 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-24 17:12 [PATCH V2 1/4] misc/pvpanic: move pvpanic to misc as common driver Peng Hao
2018-10-24 13:08 ` Andy Shevchenko [this message]
2018-10-24 17:12 ` [PATCH V2 2/4] misc/pvpanic: add MMIO support Peng Hao
2018-10-24 13:09   ` Andy Shevchenko
     [not found]     ` <201810261140543493998@zte.com.cn>
2018-10-26  7:11       ` Arnd Bergmann
2018-10-24 17:12 ` [PATCH V2 3/4] misc/pvpanic: add support to pvpanic device information by using FDT Peng Hao
2018-10-24 13:12   ` Andy Shevchenko
2018-10-24 17:12 ` [PATCH V2 4/4] misc/pvpanic : pvpanic: add document for pvpanic-mmio DT Peng Hao
2018-10-24 13:35   ` Rob Herring

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=CAHp75VdJ2LykRx0A8_qHFbA-RCVoeBJq7Sj_0OzVJ0jZXAXA5g@mail.gmail.com \
    --to=andy.shevchenko@gmail.com \
    --cc=andy@infradead.org \
    --cc=arnd@arndb.de \
    --cc=dvhart@infradead.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hutao@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=peng.hao2@zte.com.cn \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rjw@rjwysocki.net \
    --cc=robh+dt@kernel.org \
    /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 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).