From 0e981d79b19da8fc550ea0dbe46e8658be988db4 Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Fri, 20 May 2022 21:50:01 +0000 Subject: [PATCH] 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 #include #include +#include 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 #include +#include + 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); }