* [PATCH 1/4] kernel: Account for signature change of class_create in 6.4
[not found] <cover.1685530994.git.jan.kiszka@siemens.com>
@ 2023-05-31 11:03 ` Jan Kiszka
2023-05-31 11:03 ` [PATCH 2/4] cobalt/registry: Convert export_mutex to real mutex Jan Kiszka
` (2 subsequent siblings)
3 siblings, 0 replies; 4+ messages in thread
From: Jan Kiszka @ 2023-05-31 11:03 UTC (permalink / raw)
To: xenomai
From: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
kernel/cobalt/pipe.c | 4 ++++
kernel/cobalt/rtdm/device.c | 4 ++++
kernel/drivers/gpio/gpio-core.c | 4 ++++
kernel/drivers/net/stack/rtnet_module.c | 4 ++++
kernel/drivers/spi/spi-master.c | 7 +++++--
5 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/kernel/cobalt/pipe.c b/kernel/cobalt/pipe.c
index 33181101a0..7519f31651 100644
--- a/kernel/cobalt/pipe.c
+++ b/kernel/cobalt/pipe.c
@@ -1149,7 +1149,11 @@ int xnpipe_mount(void)
state->nroutq = 0;
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,4,0)
+ xnpipe_class = class_create("rtpipe");
+#else
xnpipe_class = class_create(THIS_MODULE, "rtpipe");
+#endif
if (IS_ERR(xnpipe_class)) {
printk(XENO_ERR "error creating rtpipe class, err=%ld\n",
PTR_ERR(xnpipe_class));
diff --git a/kernel/cobalt/rtdm/device.c b/kernel/cobalt/rtdm/device.c
index 33db21e63b..9d6837c393 100644
--- a/kernel/cobalt/rtdm/device.c
+++ b/kernel/cobalt/rtdm/device.c
@@ -630,7 +630,11 @@ int __init rtdm_init(void)
{
xntree_init(&protocol_devices);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,4,0)
+ rtdm_class = class_create("rtdm");
+#else
rtdm_class = class_create(THIS_MODULE, "rtdm");
+#endif
if (IS_ERR(rtdm_class)) {
printk(XENO_ERR "cannot create RTDM sysfs class\n");
return PTR_ERR(rtdm_class);
diff --git a/kernel/drivers/gpio/gpio-core.c b/kernel/drivers/gpio/gpio-core.c
index e58bce1616..ba5014f8bd 100644
--- a/kernel/drivers/gpio/gpio-core.c
+++ b/kernel/drivers/gpio/gpio-core.c
@@ -415,7 +415,11 @@ int rtdm_gpiochip_add(struct rtdm_gpio_chip *rgc,
{
int ret;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,4,0)
+ rgc->devclass = class_create(gc->label);
+#else
rgc->devclass = class_create(gc->owner, gc->label);
+#endif
if (IS_ERR(rgc->devclass)) {
printk(XENO_ERR "cannot create sysfs class\n");
return PTR_ERR(rgc->devclass);
diff --git a/kernel/drivers/net/stack/rtnet_module.c b/kernel/drivers/net/stack/rtnet_module.c
index 16dc91fda0..37c61289f6 100644
--- a/kernel/drivers/net/stack/rtnet_module.c
+++ b/kernel/drivers/net/stack/rtnet_module.c
@@ -324,7 +324,11 @@ int __init rtnet_init(void)
printk("\n*** RTnet for Xenomai v" XENO_VERSION_STRING " ***\n\n");
printk("RTnet: initialising real-time networking\n");
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,4,0)
+ rtnet_class = class_create("rtnet");
+#else
rtnet_class = class_create(THIS_MODULE, "rtnet");
+#endif
if (IS_ERR(rtnet_class))
return PTR_ERR(rtnet_class);
diff --git a/kernel/drivers/spi/spi-master.c b/kernel/drivers/spi/spi-master.c
index ccc50eedee..6c3af409d3 100644
--- a/kernel/drivers/spi/spi-master.c
+++ b/kernel/drivers/spi/spi-master.c
@@ -372,8 +372,11 @@ int __rtdm_spi_setup_driver(struct rtdm_spi_master *master)
{
master->classname = kstrdup(
dev_name(&master->controller->dev), GFP_KERNEL);
- master->devclass = class_create(THIS_MODULE,
- master->classname);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,4,0)
+ master->devclass = class_create(master->classname);
+#else
+ master->devclass = class_create(THIS_MODULE, master->classname);
+#endif
if (IS_ERR(master->devclass)) {
kfree(master->classname);
printk(XENO_ERR "cannot create sysfs class\n");
--
2.35.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/4] cobalt/registry: Convert export_mutex to real mutex
[not found] <cover.1685530994.git.jan.kiszka@siemens.com>
2023-05-31 11:03 ` [PATCH 1/4] kernel: Account for signature change of class_create in 6.4 Jan Kiszka
@ 2023-05-31 11:03 ` Jan Kiszka
2023-05-31 11:03 ` [PATCH 3/4] drivers/can: Convert rtcan_devices_nrt_lock " Jan Kiszka
2023-05-31 11:03 ` [PATCH 4/4] drivers/gpio: Ensure compatibility with kernel 6.4 Jan Kiszka
3 siblings, 0 replies; 4+ messages in thread
From: Jan Kiszka @ 2023-05-31 11:03 UTC (permalink / raw)
To: xenomai
From: Jan Kiszka <jan.kiszka@siemens.com>
A semaphore is semantically not a mutex, plus there are now changes in
its definition in 6.4. Therefore, just convert the export_mutex to a
real one.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
kernel/cobalt/registry.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/kernel/cobalt/registry.c b/kernel/cobalt/registry.c
index 211e0f76f0..02f4ebbbae 100644
--- a/kernel/cobalt/registry.c
+++ b/kernel/cobalt/registry.c
@@ -16,6 +16,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+#include <linux/mutex.h>
#include <linux/slab.h>
#include <cobalt/kernel/sched.h>
#include <cobalt/kernel/heap.h>
@@ -209,7 +210,7 @@ void xnregistry_cleanup(void)
#ifdef CONFIG_XENO_OPT_VFILE
-static DEFINE_SEMAPHORE(export_mutex);
+static DEFINE_MUTEX(export_mutex);
/*
* The following stuff implements the mechanism for delegating
@@ -232,7 +233,7 @@ static void proc_callback(struct work_struct *work)
int ret;
spl_t s;
- down(&export_mutex);
+ mutex_lock(&export_mutex);
xnlock_get_irqsave(&nklock, s);
@@ -324,7 +325,7 @@ static void proc_callback(struct work_struct *work)
xnlock_put_irqrestore(&nklock, s);
- up(&export_mutex);
+ mutex_unlock(&export_mutex);
}
static irqreturn_t registry_proc_schedule(int virq, void *dev_id)
--
2.35.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/4] drivers/can: Convert rtcan_devices_nrt_lock to real mutex
[not found] <cover.1685530994.git.jan.kiszka@siemens.com>
2023-05-31 11:03 ` [PATCH 1/4] kernel: Account for signature change of class_create in 6.4 Jan Kiszka
2023-05-31 11:03 ` [PATCH 2/4] cobalt/registry: Convert export_mutex to real mutex Jan Kiszka
@ 2023-05-31 11:03 ` Jan Kiszka
2023-05-31 11:03 ` [PATCH 4/4] drivers/gpio: Ensure compatibility with kernel 6.4 Jan Kiszka
3 siblings, 0 replies; 4+ messages in thread
From: Jan Kiszka @ 2023-05-31 11:03 UTC (permalink / raw)
To: xenomai
From: Jan Kiszka <jan.kiszka@siemens.com>
No need to use a semaphore here which is semantically not a real mutex
anyway. Also avoids to adjust to the kernel changes coming in with 6.4.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
kernel/drivers/can/rtcan_dev.c | 18 +++++++++---------
kernel/drivers/can/rtcan_dev.h | 4 ++--
kernel/drivers/can/rtcan_module.c | 12 ++++++------
3 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/kernel/drivers/can/rtcan_dev.c b/kernel/drivers/can/rtcan_dev.c
index da64be75ca..36d513152e 100644
--- a/kernel/drivers/can/rtcan_dev.c
+++ b/kernel/drivers/can/rtcan_dev.c
@@ -36,7 +36,7 @@
static struct rtcan_device *rtcan_devices[RTCAN_MAX_DEVICES];
static DEFINE_RTDM_LOCK(rtcan_devices_rt_lock);
-DEFINE_SEMAPHORE(rtcan_devices_nrt_lock);
+DEFINE_MUTEX(rtcan_devices_nrt_lock);
/* Spinlock for all reception lists and also for some members in
* struct rtcan_socket */
@@ -210,10 +210,10 @@ int rtcan_dev_register(struct rtcan_device *dev)
rtdm_lockctx_t context;
int ret;
- down(&rtcan_devices_nrt_lock);
+ mutex_lock(&rtcan_devices_nrt_lock);
if ((ret = __rtcan_dev_new_index()) < 0) {
- up(&rtcan_devices_nrt_lock);
+ mutex_unlock(&rtcan_devices_nrt_lock);
return ret;
}
dev->ifindex = ret;
@@ -222,7 +222,7 @@ int rtcan_dev_register(struct rtcan_device *dev)
rtcan_dev_alloc_name(dev, dev->name);
if (__rtcan_dev_get_by_name(dev->name) != NULL) {
- up(&rtcan_devices_nrt_lock);
+ mutex_unlock(&rtcan_devices_nrt_lock);
return -EEXIST;
}
@@ -233,7 +233,7 @@ int rtcan_dev_register(struct rtcan_device *dev)
rtdm_lock_put_irqrestore(&rtcan_devices_rt_lock, context);
rtcan_dev_create_proc(dev);
- up(&rtcan_devices_nrt_lock);
+ mutex_unlock(&rtcan_devices_nrt_lock);
printk("rtcan: registered %s\n", dev->name);
@@ -254,7 +254,7 @@ int rtcan_dev_unregister(struct rtcan_device *dev)
if (CAN_STATE_OPERATING(dev->state))
return -EBUSY;
- down(&rtcan_devices_nrt_lock);
+ mutex_lock(&rtcan_devices_nrt_lock);
rtcan_dev_remove_proc(dev);
@@ -263,21 +263,21 @@ int rtcan_dev_unregister(struct rtcan_device *dev)
#ifdef RTCAN_USE_REFCOUNT
while (atomic_read(&dev->refcount) > 0) {
rtdm_lock_put_irqrestore(&rtcan_devices_rt_lock, context);
- up(&rtcan_devices_nrt_lock);
+ mutex_unlock(&rtcan_devices_nrt_lock);
RTCAN_DBG("RTCAN: unregistering %s deferred (refcount = %d)\n",
dev->name, atomic_read(&dev->refcount));
set_current_state(TASK_UNINTERRUPTIBLE);
schedule_timeout(1*HZ); /* wait a second */
- down(&rtcan_devices_nrt_lock);
+ mutex_lock(&rtcan_devices_nrt_lock);
rtdm_lock_get_irqsave(&rtcan_devices_rt_lock, context);
}
#endif
rtcan_devices[dev->ifindex - 1] = NULL;
rtdm_lock_put_irqrestore(&rtcan_devices_rt_lock, context);
- up(&rtcan_devices_nrt_lock);
+ mutex_unlock(&rtcan_devices_nrt_lock);
#ifdef RTCAN_USE_REFCOUNT
RTCAN_ASSERT(atomic_read(&dev->refcount) == 0,
diff --git a/kernel/drivers/can/rtcan_dev.h b/kernel/drivers/can/rtcan_dev.h
index cc081f6e8b..9f7c9ae751 100644
--- a/kernel/drivers/can/rtcan_dev.h
+++ b/kernel/drivers/can/rtcan_dev.h
@@ -30,8 +30,8 @@
#ifdef __KERNEL__
#include <asm/atomic.h>
+#include <linux/mutex.h>
#include <linux/netdevice.h>
-#include <linux/semaphore.h>
#include "rtcan_list.h"
#include "rtcan_ethtool.h"
@@ -169,7 +169,7 @@ struct rtcan_device {
};
-extern struct semaphore rtcan_devices_nrt_lock;
+extern struct mutex rtcan_devices_nrt_lock;
void rtcan_dev_free(struct rtcan_device *dev);
diff --git a/kernel/drivers/can/rtcan_module.c b/kernel/drivers/can/rtcan_module.c
index 632c01bed2..81fdc7ffea 100644
--- a/kernel/drivers/can/rtcan_module.c
+++ b/kernel/drivers/can/rtcan_module.c
@@ -125,7 +125,7 @@ static int rtcan_read_proc_devices(struct seq_file *p, void *data)
struct rtcan_device *dev;
char state_name[20], baudrate_name[20];
- if (down_interruptible(&rtcan_devices_nrt_lock))
+ if (mutex_lock_interruptible(&rtcan_devices_nrt_lock))
return -ERESTARTSYS;
/* Name___________ _Baudrate State___ _TX_Counts _TX_Counts ____Errors
@@ -149,7 +149,7 @@ static int rtcan_read_proc_devices(struct seq_file *p, void *data)
}
}
- up(&rtcan_devices_nrt_lock);
+ mutex_unlock(&rtcan_devices_nrt_lock);
return 0;
}
@@ -175,7 +175,7 @@ static int rtcan_read_proc_sockets(struct seq_file *p, void *data)
rtdm_lockctx_t lock_ctx;
int ifindex;
- if (down_interruptible(&rtcan_devices_nrt_lock))
+ if (mutex_lock_interruptible(&rtcan_devices_nrt_lock))
return -ERESTARTSYS;
/* Name___________ Filter ErrMask RX_Timeout TX_Timeout RX_BufFull TX_Lo
@@ -211,7 +211,7 @@ static int rtcan_read_proc_sockets(struct seq_file *p, void *data)
rtdm_lock_put_irqrestore(&rtcan_recv_list_lock, lock_ctx);
- up(&rtcan_devices_nrt_lock);
+ mutex_unlock(&rtcan_devices_nrt_lock);
return 0;
}
@@ -233,7 +233,7 @@ static int rtcan_read_proc_info(struct seq_file *p, void *data)
char state_name[20], baudrate_name[20];
char ctrlmode_name[80], bittime_name[80];
- if (down_interruptible(&rtcan_devices_nrt_lock))
+ if (mutex_lock_interruptible(&rtcan_devices_nrt_lock))
return -ERESTARTSYS;
rtcan_dev_get_state_name(dev->state,
@@ -260,7 +260,7 @@ static int rtcan_read_proc_info(struct seq_file *p, void *data)
seq_printf(p, "Refcount %d\n", atomic_read(&dev->refcount));
#endif
- up(&rtcan_devices_nrt_lock);
+ mutex_unlock(&rtcan_devices_nrt_lock);
return 0;
}
--
2.35.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 4/4] drivers/gpio: Ensure compatibility with kernel 6.4
[not found] <cover.1685530994.git.jan.kiszka@siemens.com>
` (2 preceding siblings ...)
2023-05-31 11:03 ` [PATCH 3/4] drivers/can: Convert rtcan_devices_nrt_lock " Jan Kiszka
@ 2023-05-31 11:03 ` Jan Kiszka
3 siblings, 0 replies; 4+ messages in thread
From: Jan Kiszka @ 2023-05-31 11:03 UTC (permalink / raw)
To: xenomai
From: Jan Kiszka <jan.kiszka@siemens.com>
One include was missing, and gpio_export is now history. The latter can
be safely replaced by modern gpiod_export.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
kernel/drivers/gpio/gpio-core.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/drivers/gpio/gpio-core.c b/kernel/drivers/gpio/gpio-core.c
index ba5014f8bd..e12733466e 100644
--- a/kernel/drivers/gpio/gpio-core.c
+++ b/kernel/drivers/gpio/gpio-core.c
@@ -22,6 +22,7 @@
#include <linux/irq.h>
#include <linux/slab.h>
#include <linux/err.h>
+#include <linux/gpio/driver.h>
#include <rtdm/gpio.h>
struct rtdm_gpio_chan {
@@ -78,7 +79,7 @@ static int request_gpio_irq(unsigned int gpio, struct rtdm_gpio_pin *pin,
}
chan->has_direction = true;
- gpio_export(gpio, true);
+ gpiod_export(pin->desc, true);
rtdm_event_clear(&pin->event);
--
2.35.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-05-31 11:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <cover.1685530994.git.jan.kiszka@siemens.com>
2023-05-31 11:03 ` [PATCH 1/4] kernel: Account for signature change of class_create in 6.4 Jan Kiszka
2023-05-31 11:03 ` [PATCH 2/4] cobalt/registry: Convert export_mutex to real mutex Jan Kiszka
2023-05-31 11:03 ` [PATCH 3/4] drivers/can: Convert rtcan_devices_nrt_lock " Jan Kiszka
2023-05-31 11:03 ` [PATCH 4/4] drivers/gpio: Ensure compatibility with kernel 6.4 Jan Kiszka
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).