tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: f120c2ab14341c60bcc055c700c0a29dce5837ac
commit: 4213ff7957de370c1cfe528c2bad1eb2e499038a [7604/7622] net/ethernet/huawei/hinic3: Add the CQM on which the RDMA depends
:::::: branch date: 16 hours ago
:::::: commit date: 3 days ago
compiler: clang version 18.1.4 (https://github.com/llvm/llvm-project e6c3289804a67ea0bb6a86fadbe454dd93b8d855)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp(a)intel.com>
| Closes: https://lore.kernel.org/r/202404291225.3zIqKn4U-lkp@intel.com/
includecheck warnings: (new ones prefixed by >>)
>> drivers/net/ethernet/huawei/hinic3/hw/hinic3_multi_host_mgmt.c: hinic3_hwif.h is included more than once.
vim +19 drivers/net/ethernet/huawei/hinic3/hw/hinic3_multi_host_mgmt.c
13
14 #include "ossl_knl.h"
15 #include "hinic3_common.h"
16 #include "hinic3_hw.h"
17 #include "hinic3_hwdev.h"
18 #include "hinic3_csr.h"
> 19 #include "hinic3_hwif.h"
20 #include "hinic3_api_cmd.h"
21 #include "hinic3_mgmt.h"
22 #include "hinic3_mbox.h"
> 23 #include "hinic3_hwif.h"
24 #include "hinic3_multi_host_mgmt.h"
25 #include "hinic3_hw_cfg.h"
26
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
tree: https://gitee.com/openeuler/kernel.git OLK-5.10
head: ae52f9c522ddf14090fc55bfe6f466c29c68bc95
commit: 0378ac5f333ca75e4fae5a8a8ed499ed374f3bdd [29977/30000] net/ethernet/huawei/hinic3: Add the CQM on which the RDMA depends
reproduce: (https://download.01.org/0day-ci/archive/20240430/202404301948.EL7XVbul-lkp@…)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp(a)intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404301948.EL7XVbul-lkp@intel.com/
All warnings (new ones prefixed by >>):
Warning: arch/riscv/kvm/vcpu.c references a file that doesn't exist: Documentation/virtual/kvm/vcpu-requests.rst
Warning: crypto/asymmetric_keys/pgp_preload.c references a file that doesn't exist: Documentation/security/keys-crypto.txt
Warning: drivers/irqchip/Kconfig references a file that doesn't exist: Documentation/loongarch/irq-chip-model.rst
Warning: drivers/net/ethernet/yunsilicon/xsc/common/xsc_ioctl.h references a file that doesn't exist: Documentation/ioctl/ioctl-number.txt
Warning: openEuler/MAINTAINERS references a file that doesn't exist: Documentation/admin-guide/perf/hisi-pcie-pmu.rst
>> Warning: openEuler/MAINTAINERS references a file that doesn't exist: Documentation/networking/hinic3.rst
Warning: /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibbias is defined 2 times: ./Documentation/ABI/testing/sysfs-bus-iio:394 ./Documentation/ABI/testing/sysfs-bus-iio-icm42600:0
Warning: /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibbias is defined 2 times: ./Documentation/ABI/testing/sysfs-bus-iio:395 ./Documentation/ABI/testing/sysfs-bus-iio-icm42600:1
Warning: /sys/bus/iio/devices/iio:deviceX/in_accel_z_calibbias is defined 2 times: ./Documentation/ABI/testing/sysfs-bus-iio:396 ./Documentation/ABI/testing/sysfs-bus-iio-icm42600:2
Warning: /sys/bus/iio/devices/iio:deviceX/in_anglvel_x_calibbias is defined 2 times: ./Documentation/ABI/testing/sysfs-bus-iio:397 ./Documentation/ABI/testing/sysfs-bus-iio-icm42600:3
Warning: /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_calibbias is defined 2 times: ./Documentation/ABI/testing/sysfs-bus-iio:398 ./Documentation/ABI/testing/sysfs-bus-iio-icm42600:4
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I99VPY
CVE: NA
--------------------------------
When hiboost is enabled, set the turbo+ profile to Steady fixed mode, and
set the board-level power capping target value and failure action in bmc,
if the current power capping is higher than the target power capping, BIOS
will reduce the core/uncore frequency, the nominal_freq recorded by the
kernel is equal to lowest_freq, then perf_to_khz conversion error, the
return frequency will be fixed to nominal_freq.
Fix this by adding the branch processing logic where nominal_freq is equal
to lowest_freq.
Fixes: ec1c7ad47664 ("cpufreq: CPPC: Fix performance/frequency conversion")
Signed-off-by: liwei <liwei728(a)huawei.com>
---
drivers/cpufreq/cppc_cpufreq.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/cpufreq/cppc_cpufreq.c b/drivers/cpufreq/cppc_cpufreq.c
index 156ef2c40464..ecd2b192772f 100644
--- a/drivers/cpufreq/cppc_cpufreq.c
+++ b/drivers/cpufreq/cppc_cpufreq.c
@@ -109,8 +109,14 @@ static unsigned int cppc_cpufreq_perf_to_khz(struct cppc_cpudata *cpu_data,
u64 mul, div;
if (caps->lowest_freq && caps->nominal_freq) {
- mul = caps->nominal_freq - caps->lowest_freq;
- div = caps->nominal_perf - caps->lowest_perf;
+ /* Avoid the special case when nominal_freq is equal to lowest_freq */
+ if (caps->nominal_freq == caps->lowest_freq) {
+ mul = caps->nominal_freq;
+ div = caps->nominal_perf;
+ } else {
+ mul = caps->nominal_freq - caps->lowest_freq;
+ div = caps->nominal_perf - caps->lowest_perf;
+ }
offset = caps->nominal_freq - div64_u64(caps->nominal_perf * mul, div);
} else {
if (!max_khz)
--
2.25.1
From: Petr Mladek <pmladek(a)suse.com>
stable inclusion
from stable-v6.6.23
commit a3b17859c818a4a9a861e8ec0b9c01d28c0770d2
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I9KZP4
CVE: NA
Reference:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
[ Upstream commit d04d5882cd678b898a9d7c5aee6afbe9e6e77fcd ]
The commit d51507098ff91 ("printk: disable optimistic spin
during panic") added checks to avoid becoming a console waiter
if a panic is in progress.
However, the transition to panic can occur while there is
already a waiter. The current owner should not pass the lock to
the waiter because it might get stopped or blocked anytime.
Also the panic context might pass the console lock owner to an
already stopped waiter by mistake. It might happen when
console_flush_on_panic() ignores the current lock owner, for
example:
CPU0 CPU1
---- ----
console_lock_spinning_enable()
console_trylock_spinning()
[CPU1 now console waiter]
NMI: panic()
panic_other_cpus_shutdown()
[stopped as console waiter]
console_flush_on_panic()
console_lock_spinning_enable()
[print 1 record]
console_lock_spinning_disable_and_check()
[handover to stopped CPU1]
This results in panic() not flushing the panic messages.
Fix these problems by disabling all spinning operations
completely during panic().
Another advantage is that it prevents possible deadlocks caused
by "console_owner_lock". The panic() context does not need to
take it any longer. The lockless checks are safe because the
functions become NOPs when they see the panic in progress. All
operations manipulating the state are still synchronized by the
lock even when non-panic CPUs would notice the panic
synchronously.
The current owner might stay spinning. But non-panic() CPUs
would get stopped anyway and the panic context will never start
spinning.
Fixes: dbdda842fe96 ("printk: Add console owner and waiter logic to load balance console writes")
Signed-off-by: John Ogness <john.ogness(a)linutronix.de>
Link: https://lore.kernel.org/r/20240207134103.1357162-12-john.ogness@linutronix.…
Signed-off-by: Petr Mladek <pmladek(a)suse.com>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Ye Weihua <yeweihua4(a)huawei.com>
---
kernel/printk/printk.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index 8bccea05df1b..6ebcf40241fd 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -1850,10 +1850,23 @@ static bool console_waiter;
*/
static void console_lock_spinning_enable(void)
{
+ /*
+ * Do not use spinning in panic(). The panic CPU wants to keep the lock.
+ * Non-panic CPUs abandon the flush anyway.
+ *
+ * Just keep the lockdep annotation. The panic-CPU should avoid
+ * taking console_owner_lock because it might cause a deadlock.
+ * This looks like the easiest way how to prevent false lockdep
+ * reports without handling races a lockless way.
+ */
+ if (panic_in_progress())
+ goto lockdep;
+
raw_spin_lock(&console_owner_lock);
console_owner = current;
raw_spin_unlock(&console_owner_lock);
+lockdep:
/* The waiter may spin on us after setting console_owner */
spin_acquire(&console_owner_dep_map, 0, 0, _THIS_IP_);
}
@@ -1878,6 +1891,22 @@ static int console_lock_spinning_disable_and_check(int cookie)
{
int waiter;
+ /*
+ * Ignore spinning waiters during panic() because they might get stopped
+ * or blocked at any time,
+ *
+ * It is safe because nobody is allowed to start spinning during panic
+ * in the first place. If there has been a waiter then non panic CPUs
+ * might stay spinning. They would get stopped anyway. The panic context
+ * will never start spinning and an interrupted spin on panic CPU will
+ * never continue.
+ */
+ if (panic_in_progress()) {
+ /* Keep lockdep happy. */
+ spin_release(&console_owner_dep_map, _THIS_IP_);
+ return 0;
+ }
+
raw_spin_lock(&console_owner_lock);
waiter = READ_ONCE(console_waiter);
console_owner = NULL;
--
2.34.1