git: 0e981d79b19d - main - LinuxKPI: move pm_message_t from kernel.h to pm.h

From: Bjoern A. Zeeb <bz_at_FreeBSD.org>
Date: Fri, 10 Jun 2022 14:07:38 UTC
The branch main has been updated by bz:

URL: https://cgit.FreeBSD.org/src/commit/?id=0e981d79b19da8fc550ea0dbe46e8658be988db4

commit 0e981d79b19da8fc550ea0dbe46e8658be988db4
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2022-05-20 21:50:01 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2022-06-10 14:05:12 +0000

    LinuxKPI: move pm_message_t from kernel.h to pm.h
    
    Move pm_message_t from kernel.h to pm.h and remove a private define
    in usb.h as well as adjust the implementation in linux_usb.c.
    This cleans up what I believe to be a historic shortcut and is
    needed for future wireless driver updates.
    
    Leave a note in UPDATING that drm-kmod users need to update to the
    latest version before re-compiling a new kernel to avoid errors
    (see PR).
    
    Sponsored by:   The FreeBSD Foundation
    MFC after:      3 days
    PR:             264449 (drm-kmod port update, thanks wulf)
    Obtained from:  bz_git_iwlwifi (Dec 2020) (partly)
    Reviewed by:    hselasky, imp
    Differential Revision: https://reviews.freebsd.org/D35276
---
 UPDATING                                          | 4 ++++
 sys/compat/linuxkpi/common/include/linux/kernel.h | 4 ----
 sys/compat/linuxkpi/common/include/linux/pci.h    | 1 +
 sys/compat/linuxkpi/common/include/linux/pm.h     | 4 ++++
 sys/compat/linuxkpi/common/include/linux/usb.h    | 3 ++-
 sys/compat/linuxkpi/common/src/linux_usb.c        | 7 +++++--
 6 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/UPDATING b/UPDATING
index 2c4013a669b2..7d9f9aa05a64 100644
--- a/UPDATING
+++ b/UPDATING
@@ -27,6 +27,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 14.x IS SLOW:
 	world, or to merely disable the most expensive debugging functionality
 	at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
+20220610:
+	LinuxKPI pm.h changes require an update to the latest drm-kmod version
+	before re-compiling to avoid errors.
+
 20211230:
 	The macros provided for the manipulation of CPU sets (e.g. CPU_AND)
 	have been modified to take 2 source arguments instead of only 1.
diff --git a/sys/compat/linuxkpi/common/include/linux/kernel.h b/sys/compat/linuxkpi/common/include/linux/kernel.h
index 51f2ffe01e15..4987c582f0f3 100644
--- a/sys/compat/linuxkpi/common/include/linux/kernel.h
+++ b/sys/compat/linuxkpi/common/include/linux/kernel.h
@@ -597,10 +597,6 @@ extern bool linux_cpu_has_clflush;
 #define	cpu_has_clflush		linux_cpu_has_clflush
 #endif
 
-typedef struct pm_message {
-	int event;
-} pm_message_t;
-
 /* Swap values of a and b */
 #define swap(a, b) do {			\
 	typeof(a) _swap_tmp = a;	\
diff --git a/sys/compat/linuxkpi/common/include/linux/pci.h b/sys/compat/linuxkpi/common/include/linux/pci.h
index d87cf51cf173..695965673050 100644
--- a/sys/compat/linuxkpi/common/include/linux/pci.h
+++ b/sys/compat/linuxkpi/common/include/linux/pci.h
@@ -59,6 +59,7 @@
 #include <asm/atomic.h>
 #include <linux/device.h>
 #include <linux/pci_ids.h>
+#include <linux/pm.h>
 
 struct pci_device_id {
 	uint32_t	vendor;
diff --git a/sys/compat/linuxkpi/common/include/linux/pm.h b/sys/compat/linuxkpi/common/include/linux/pm.h
index 6b8a7e768a8c..255c9bf0ea8b 100644
--- a/sys/compat/linuxkpi/common/include/linux/pm.h
+++ b/sys/compat/linuxkpi/common/include/linux/pm.h
@@ -33,6 +33,10 @@
 #ifndef	_LINUXKPI_LINUX_PM_H
 #define	_LINUXKPI_LINUX_PM_H
 
+typedef struct pm_message {
+	int event;
+} pm_message_t;
+
 #ifdef CONFIG_PM_SLEEP
 #define	SIMPLE_DEV_PM_OPS(_name, _suspendfunc, _resumefunc)	\
 const struct dev_pm_ops _name = {				\
diff --git a/sys/compat/linuxkpi/common/include/linux/usb.h b/sys/compat/linuxkpi/common/include/linux/usb.h
index 032c1e53a015..3b7c8a2cde78 100644
--- a/sys/compat/linuxkpi/common/include/linux/usb.h
+++ b/sys/compat/linuxkpi/common/include/linux/usb.h
@@ -37,12 +37,13 @@
 #include <dev/usb/usbdi.h>
 #include <dev/usb/usbdi_util.h>
 
+#include <linux/pm.h>
+
 struct usb_device;
 struct usb_interface;
 struct usb_driver;
 struct urb;
 
-typedef void *pm_message_t;
 typedef void (usb_complete_t)(struct urb *);
 
 #define	USB_MAX_FULL_SPEED_ISOC_FRAMES (60 * 1)
diff --git a/sys/compat/linuxkpi/common/src/linux_usb.c b/sys/compat/linuxkpi/common/src/linux_usb.c
index dd1cb5bed9c3..ed46acc4020f 100644
--- a/sys/compat/linuxkpi/common/src/linux_usb.c
+++ b/sys/compat/linuxkpi/common/src/linux_usb.c
@@ -339,11 +339,14 @@ usb_linux_suspend(device_t dev)
 {
 	struct usb_linux_softc *sc = device_get_softc(dev);
 	struct usb_driver *udrv = usb_linux_get_usb_driver(sc);
+	pm_message_t pm_msg;
 	int err;
 
 	err = 0;
-	if (udrv && udrv->suspend)
-		err = (udrv->suspend) (sc->sc_ui, 0);
+	if (udrv && udrv->suspend) {
+		pm_msg.event = 0;				/* XXX */
+		err = (udrv->suspend) (sc->sc_ui, pm_msg);
+	}
 	return (-err);
 }