From b22da3d8526a935aa31e086e63f60ff3246cb61c Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Sat, 09 Dec 2023 07:24:11 +0000
Subject: [PATCH] add stmac read mac form eeprom
---
kernel/kernel/locking/rwlock-rt.c | 92 ++++++++++-----------------------------------
1 files changed, 21 insertions(+), 71 deletions(-)
diff --git a/kernel/kernel/locking/rwlock-rt.c b/kernel/kernel/locking/rwlock-rt.c
index 0ae8c62..3d2d1f1 100644
--- a/kernel/kernel/locking/rwlock-rt.c
+++ b/kernel/kernel/locking/rwlock-rt.c
@@ -1,5 +1,4 @@
-/*
- */
+// SPDX-License-Identifier: GPL-2.0-only
#include <linux/sched/debug.h>
#include <linux/export.h>
@@ -62,7 +61,7 @@
lock->rtmutex.save_state = 1;
}
-int __read_rt_trylock(struct rt_rw_lock *lock)
+static int __read_rt_trylock(struct rt_rw_lock *lock)
{
int r, old;
@@ -79,7 +78,7 @@
return 0;
}
-void __sched __read_rt_lock(struct rt_rw_lock *lock)
+static void __read_rt_lock(struct rt_rw_lock *lock)
{
struct rt_mutex *m = &lock->rtmutex;
struct rt_mutex_waiter waiter;
@@ -142,7 +141,7 @@
debug_rt_mutex_free_waiter(&waiter);
}
-void __read_rt_unlock(struct rt_rw_lock *lock)
+static void __read_rt_unlock(struct rt_rw_lock *lock)
{
struct rt_mutex *m = &lock->rtmutex;
struct task_struct *tsk;
@@ -178,7 +177,7 @@
rt_spin_lock_slowunlock(m);
}
-void __sched __write_rt_lock(struct rt_rw_lock *lock)
+static void __write_rt_lock(struct rt_rw_lock *lock)
{
struct rt_mutex *m = &lock->rtmutex;
struct task_struct *self = current;
@@ -212,7 +211,7 @@
raw_spin_unlock_irqrestore(&m->wait_lock, flags);
if (atomic_read(&lock->readers) != 0)
- schedule();
+ preempt_schedule_lock();
raw_spin_lock_irqsave(&m->wait_lock, flags);
@@ -222,7 +221,7 @@
}
}
-int __write_rt_trylock(struct rt_rw_lock *lock)
+static int __write_rt_trylock(struct rt_rw_lock *lock)
{
struct rt_mutex *m = &lock->rtmutex;
unsigned long flags;
@@ -242,50 +241,13 @@
return 0;
}
-void __write_rt_unlock(struct rt_rw_lock *lock)
+static void __write_rt_unlock(struct rt_rw_lock *lock)
{
struct rt_mutex *m = &lock->rtmutex;
unsigned long flags;
raw_spin_lock_irqsave(&m->wait_lock, flags);
__write_unlock_common(lock, WRITER_BIAS, flags);
-}
-
-/* Map the reader biased implementation */
-static inline int do_read_rt_trylock(rwlock_t *rwlock)
-{
- return __read_rt_trylock(rwlock);
-}
-
-static inline int do_write_rt_trylock(rwlock_t *rwlock)
-{
- return __write_rt_trylock(rwlock);
-}
-
-static inline void do_read_rt_lock(rwlock_t *rwlock)
-{
- __read_rt_lock(rwlock);
-}
-
-static inline void do_write_rt_lock(rwlock_t *rwlock)
-{
- __write_rt_lock(rwlock);
-}
-
-static inline void do_read_rt_unlock(rwlock_t *rwlock)
-{
- __read_rt_unlock(rwlock);
-}
-
-static inline void do_write_rt_unlock(rwlock_t *rwlock)
-{
- __write_rt_unlock(rwlock);
-}
-
-static inline void do_rwlock_rt_init(rwlock_t *rwlock, const char *name,
- struct lock_class_key *key)
-{
- __rwlock_biased_rt_init(rwlock, name, key);
}
int __lockfunc rt_read_can_lock(rwlock_t *rwlock)
@@ -305,15 +267,11 @@
{
int ret;
- sleeping_lock_inc();
- migrate_disable();
- ret = do_read_rt_trylock(rwlock);
+ ret = __read_rt_trylock(rwlock);
if (ret) {
rwlock_acquire_read(&rwlock->dep_map, 0, 1, _RET_IP_);
rcu_read_lock();
- } else {
- migrate_enable();
- sleeping_lock_dec();
+ migrate_disable();
}
return ret;
}
@@ -323,15 +281,11 @@
{
int ret;
- sleeping_lock_inc();
- migrate_disable();
- ret = do_write_rt_trylock(rwlock);
+ ret = __write_rt_trylock(rwlock);
if (ret) {
rwlock_acquire(&rwlock->dep_map, 0, 1, _RET_IP_);
rcu_read_lock();
- } else {
- migrate_enable();
- sleeping_lock_dec();
+ migrate_disable();
}
return ret;
}
@@ -339,46 +293,42 @@
void __lockfunc rt_read_lock(rwlock_t *rwlock)
{
- sleeping_lock_inc();
+ rwlock_acquire_read(&rwlock->dep_map, 0, 0, _RET_IP_);
+ __read_rt_lock(rwlock);
rcu_read_lock();
migrate_disable();
- rwlock_acquire_read(&rwlock->dep_map, 0, 0, _RET_IP_);
- do_read_rt_lock(rwlock);
}
EXPORT_SYMBOL(rt_read_lock);
void __lockfunc rt_write_lock(rwlock_t *rwlock)
{
- sleeping_lock_inc();
+ rwlock_acquire(&rwlock->dep_map, 0, 0, _RET_IP_);
+ __write_rt_lock(rwlock);
rcu_read_lock();
migrate_disable();
- rwlock_acquire(&rwlock->dep_map, 0, 0, _RET_IP_);
- do_write_rt_lock(rwlock);
}
EXPORT_SYMBOL(rt_write_lock);
void __lockfunc rt_read_unlock(rwlock_t *rwlock)
{
- rwlock_release(&rwlock->dep_map, 1, _RET_IP_);
- do_read_rt_unlock(rwlock);
+ rwlock_release(&rwlock->dep_map, _RET_IP_);
migrate_enable();
rcu_read_unlock();
- sleeping_lock_dec();
+ __read_rt_unlock(rwlock);
}
EXPORT_SYMBOL(rt_read_unlock);
void __lockfunc rt_write_unlock(rwlock_t *rwlock)
{
- rwlock_release(&rwlock->dep_map, 1, _RET_IP_);
- do_write_rt_unlock(rwlock);
+ rwlock_release(&rwlock->dep_map, _RET_IP_);
migrate_enable();
rcu_read_unlock();
- sleeping_lock_dec();
+ __write_rt_unlock(rwlock);
}
EXPORT_SYMBOL(rt_write_unlock);
void __rt_rwlock_init(rwlock_t *rwlock, char *name, struct lock_class_key *key)
{
- do_rwlock_rt_init(rwlock, name, key);
+ __rwlock_biased_rt_init(rwlock, name, key);
}
EXPORT_SYMBOL(__rt_rwlock_init);
--
Gitblit v1.6.2