diff --git a/kernel-rt.spec b/kernel-rt.spec index 3a62424022973e9aa63dbcc42f3acc4b553418df..b8c6b9539ee81b8827b35e03fcfccc0c88991e65 100644 --- a/kernel-rt.spec +++ b/kernel-rt.spec @@ -40,9 +40,9 @@ rm -f test_openEuler_sign.ko test_openEuler_sign.ko.sig %global upstream_version 6.6 %global upstream_sublevel 0 -%global devel_release 79 +%global devel_release 98 %global maintenance_release .0.0 -%global pkg_release .6 +%global pkg_release .7 %global rt_release .rt30 %define with_debuginfo 1 @@ -1057,6 +1057,9 @@ fi %endif %changelog +* Thu Jun 19 2025 zhangyu - 6.6.0-98.0.0.7 +- update kernel-rt version to 6.6.0-98.0.0.7 + * Thu Feb 27 2025 zhangyu - 6.6.0-79.0.0.6 - update kernel-rt version to 6.6.0-79.0.0.6 diff --git a/patch-6.6.0-6.0.0-rt20.patch b/patch-6.6.0-6.0.0-rt20.patch index 0d8c872da0f62a7f82827a5bcb155476f66b9f34..0d02851bd529200f86c019b44c73390c0dd2ed8d 100644 --- a/patch-6.6.0-6.0.0-rt20.patch +++ b/patch-6.6.0-6.0.0-rt20.patch @@ -1,7 +1,7 @@ -From 033015fbad811f653c8b8bfc9f8fb9943d7104f1 Mon Sep 17 00:00:00 2001 +From 63307041cfe12c5a0c6d2141970c4e9dcac09554 Mon Sep 17 00:00:00 2001 From: zhangyu -Date: Thu, 27 Feb 2025 14:01:35 +0800 -Subject: [PATCH] openEuler-24.03-LTS +Date: Thu, 19 Jun 2025 15:33:31 +0800 +Subject: [PATCH] rt1 --- arch/arm/Kconfig | 6 +- @@ -41,6 +41,7 @@ Subject: [PATCH] openEuler-24.03-LTS drivers/gpu/drm/i915/i915_request.c | 2 - drivers/gpu/drm/i915/i915_trace.h | 6 +- drivers/gpu/drm/i915/i915_utils.h | 2 +- + .../ethernet/yunsilicon/xsc/common/xsc_core.h | 2 +- drivers/tty/serial/21285.c | 8 +- drivers/tty/serial/8250/8250_aspeed_vuart.c | 6 +- drivers/tty/serial/8250/8250_bcm7271.c | 28 +- @@ -115,7 +116,7 @@ Subject: [PATCH] openEuler-24.03-LTS drivers/tty/serial/uartlite.c | 18 +- drivers/tty/serial/ucc_uart.c | 4 +- drivers/tty/serial/vt8500_serial.c | 8 +- - drivers/tty/serial/xilinx_uartps.c | 56 +- + drivers/tty/serial/xilinx_uartps.c | 53 +- drivers/tty/tty_io.c | 11 +- fs/proc/consoles.c | 14 +- include/linux/bottom_half.h | 2 + @@ -170,7 +171,7 @@ Subject: [PATCH] openEuler-24.03-LTS kernel/trace/trace_output.c | 16 +- net/core/dev.c | 39 +- net/core/skbuff.c | 7 +- - 166 files changed, 5015 insertions(+), 1510 deletions(-) + 167 files changed, 5015 insertions(+), 1509 deletions(-) create mode 100644 kernel/printk/nbcon.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig @@ -435,7 +436,7 @@ index 7e8773a2d..9fde36fcb 100644 EXPORT_SYMBOL(kernel_neon_end); diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index 9da9d58f1..bedb0c9e5 100644 +index 6d9def7a9..376d97369 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -103,6 +103,7 @@ config ARM64 @@ -533,7 +534,7 @@ index 4ebf2ef28..381c3be3b 100644 select MPIC select OF_DYNAMIC diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c -index b1e6d275c..9a8d3970d 100644 +index a74f31362..178bdf3d8 100644 --- a/arch/powerpc/platforms/pseries/iommu.c +++ b/arch/powerpc/platforms/pseries/iommu.c @@ -25,6 +25,7 @@ @@ -840,7 +841,7 @@ index 1b8da4e40..2cb5e6514 100644 if (has_vector()) { if (riscv_v_setup_vsize()) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index 7efe93e4e..f05bebbc1 100644 +index e4c9e582a..75a3ec1f2 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -122,6 +122,7 @@ config X86 @@ -897,7 +898,7 @@ index d154b5d77..52f5ce0a9 100644 raw_local_irq_disable(); } diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c -index 42aff7991..d905e53f7 100644 +index d04ceeadb..9c2a78cf0 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -57,6 +57,41 @@ static void zram_free_page(struct zram *zram, size_t index); @@ -950,7 +951,7 @@ index 42aff7991..d905e53f7 100644 static inline bool init_done(struct zram *zram) { -@@ -1252,6 +1288,7 @@ static bool zram_meta_alloc(struct zram *zram, u64 disksize) +@@ -1253,6 +1289,7 @@ static bool zram_meta_alloc(struct zram *zram, u64 disksize) if (!huge_class_size) huge_class_size = zs_huge_class_size(zram->mem_pool); @@ -973,20 +974,20 @@ index d090753f9..833abc17d 100644 ktime_t ac_time; #endif diff --git a/drivers/crypto/ccp/hygon/psp-dev.c b/drivers/crypto/ccp/hygon/psp-dev.c -index c150aa163..cdd2d1a39 100644 +index 039e3ed6c..414fb25eb 100644 --- a/drivers/crypto/ccp/hygon/psp-dev.c +++ b/drivers/crypto/ccp/hygon/psp-dev.c -@@ -17,7 +17,7 @@ +@@ -15,7 +15,7 @@ + #include + #include #include - #include - #include -#include +//#include + #include #include "psp-dev.h" - diff --git a/drivers/crypto/ccp/hygon/tdm-dev.c b/drivers/crypto/ccp/hygon/tdm-dev.c -index 42322c6bd..46aa8b02d 100644 +index 9ff6a8906..957e128ca 100644 --- a/drivers/crypto/ccp/hygon/tdm-dev.c +++ b/drivers/crypto/ccp/hygon/tdm-dev.c @@ -12,7 +12,7 @@ @@ -1560,6 +1561,19 @@ index c61066498..48e19e55d 100644 # define _WAIT_FOR_ATOMIC_CHECK(ATOMIC) WARN_ON_ONCE((ATOMIC) && !in_atomic()) #else # define _WAIT_FOR_ATOMIC_CHECK(ATOMIC) do { } while (0) +diff --git a/drivers/net/ethernet/yunsilicon/xsc/common/xsc_core.h b/drivers/net/ethernet/yunsilicon/xsc/common/xsc_core.h +index 1eaaf0b3d..9874fdb74 100644 +--- a/drivers/net/ethernet/yunsilicon/xsc/common/xsc_core.h ++++ b/drivers/net/ethernet/yunsilicon/xsc/common/xsc_core.h +@@ -26,7 +26,7 @@ + #include + #include + #include +-#include ++//#include + + #include "common/xsc_cmd.h" + #include "common/xsc_ioctl.h" diff --git a/drivers/tty/serial/21285.c b/drivers/tty/serial/21285.c index d756fcc88..4de0c975e 100644 --- a/drivers/tty/serial/21285.c @@ -1740,7 +1754,7 @@ index 9afd5979c..db23b3a02 100644 return 0; diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c -index 3449f8790..30434718f 100644 +index c536028e9..efb6f1c19 100644 --- a/drivers/tty/serial/8250/8250_core.c +++ b/drivers/tty/serial/8250/8250_core.c @@ -259,7 +259,7 @@ static void serial8250_backup_timeout(struct timer_list *t) @@ -1843,7 +1857,7 @@ index 3449f8790..30434718f 100644 } /** -@@ -1194,9 +1234,9 @@ void serial8250_unregister_port(int line) +@@ -1197,9 +1237,9 @@ void serial8250_unregister_port(int line) if (uart->em485) { unsigned long flags; @@ -1856,7 +1870,7 @@ index 3449f8790..30434718f 100644 uart_remove_one_port(&serial8250_reg, &uart->port); diff --git a/drivers/tty/serial/8250/8250_dma.c b/drivers/tty/serial/8250/8250_dma.c -index 7fa665017..8b30ca8fd 100644 +index 7f2303781..cf51976ff 100644 --- a/drivers/tty/serial/8250/8250_dma.c +++ b/drivers/tty/serial/8250/8250_dma.c @@ -22,7 +22,7 @@ static void __dma_tx_complete(void *param) @@ -2238,7 +2252,7 @@ index a3b25779d..53e238c8c 100644 mutex_unlock(&tport->mutex); } diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c -index a17803da8..2d4e775cd 100644 +index c2778300e..1c116281a 100644 --- a/drivers/tty/serial/8250/8250_port.c +++ b/drivers/tty/serial/8250/8250_port.c @@ -557,6 +557,11 @@ static int serial8250_em485_init(struct uart_8250_port *p) @@ -2480,7 +2494,7 @@ index a17803da8..2d4e775cd 100644 serial8250_rpm_put(up); } -@@ -2205,7 +2222,7 @@ int serial8250_do_startup(struct uart_port *port) +@@ -2206,7 +2223,7 @@ int serial8250_do_startup(struct uart_port *port) * * Synchronize UART_IER access against the console. */ @@ -2489,7 +2503,7 @@ index a17803da8..2d4e775cd 100644 up->acr = 0; serial_port_out(port, UART_LCR, UART_LCR_CONF_MODE_B); serial_port_out(port, UART_EFR, UART_EFR_ECB); -@@ -2215,7 +2232,7 @@ int serial8250_do_startup(struct uart_port *port) +@@ -2216,7 +2233,7 @@ int serial8250_do_startup(struct uart_port *port) serial_port_out(port, UART_LCR, UART_LCR_CONF_MODE_B); serial_port_out(port, UART_EFR, UART_EFR_ECB); serial_port_out(port, UART_LCR, 0); @@ -2498,7 +2512,7 @@ index a17803da8..2d4e775cd 100644 } if (port->type == PORT_DA830) { -@@ -2224,10 +2241,10 @@ int serial8250_do_startup(struct uart_port *port) +@@ -2225,10 +2242,10 @@ int serial8250_do_startup(struct uart_port *port) * * Synchronize UART_IER access against the console. */ @@ -2511,7 +2525,7 @@ index a17803da8..2d4e775cd 100644 mdelay(10); /* Enable Tx, Rx and free run mode */ -@@ -2341,7 +2358,7 @@ int serial8250_do_startup(struct uart_port *port) +@@ -2342,7 +2359,7 @@ int serial8250_do_startup(struct uart_port *port) * * Synchronize UART_IER access against the console. */ @@ -2520,7 +2534,7 @@ index a17803da8..2d4e775cd 100644 wait_for_xmitr(up, UART_LSR_THRE); serial_port_out_sync(port, UART_IER, UART_IER_THRI); -@@ -2353,7 +2370,7 @@ int serial8250_do_startup(struct uart_port *port) +@@ -2354,7 +2371,7 @@ int serial8250_do_startup(struct uart_port *port) iir = serial_port_in(port, UART_IIR); serial_port_out(port, UART_IER, 0); @@ -2529,7 +2543,7 @@ index a17803da8..2d4e775cd 100644 if (port->irqflags & IRQF_SHARED) enable_irq(port->irq); -@@ -2376,7 +2393,7 @@ int serial8250_do_startup(struct uart_port *port) +@@ -2377,7 +2394,7 @@ int serial8250_do_startup(struct uart_port *port) */ serial_port_out(port, UART_LCR, UART_LCR_WLEN8); @@ -2538,7 +2552,7 @@ index a17803da8..2d4e775cd 100644 if (up->port.flags & UPF_FOURPORT) { if (!up->port.irq) up->port.mctrl |= TIOCM_OUT1; -@@ -2422,7 +2439,7 @@ int serial8250_do_startup(struct uart_port *port) +@@ -2423,7 +2440,7 @@ int serial8250_do_startup(struct uart_port *port) } dont_test_tx_en: @@ -2547,7 +2561,7 @@ index a17803da8..2d4e775cd 100644 /* * Clear the interrupt registers again for luck, and clear the -@@ -2493,17 +2510,17 @@ void serial8250_do_shutdown(struct uart_port *port) +@@ -2494,17 +2511,17 @@ void serial8250_do_shutdown(struct uart_port *port) * * Synchronize UART_IER access against the console. */ @@ -2568,7 +2582,7 @@ index a17803da8..2d4e775cd 100644 if (port->flags & UPF_FOURPORT) { /* reset interrupts on the AST Fourport board */ inb((port->iobase & 0xfe0) | 0x1f); -@@ -2512,7 +2529,7 @@ void serial8250_do_shutdown(struct uart_port *port) +@@ -2513,7 +2530,7 @@ void serial8250_do_shutdown(struct uart_port *port) port->mctrl &= ~TIOCM_OUT2; serial8250_set_mctrl(port, port->mctrl); @@ -2577,7 +2591,7 @@ index a17803da8..2d4e775cd 100644 /* * Disable break condition and FIFOs -@@ -2748,14 +2765,14 @@ void serial8250_update_uartclk(struct uart_port *port, unsigned int uartclk) +@@ -2757,14 +2774,14 @@ void serial8250_update_uartclk(struct uart_port *port, unsigned int uartclk) quot = serial8250_get_divisor(port, baud, &frac); serial8250_rpm_get(up); @@ -2594,7 +2608,7 @@ index a17803da8..2d4e775cd 100644 serial8250_rpm_put(up); out_unlock: -@@ -2792,7 +2809,7 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, +@@ -2801,7 +2818,7 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, * Synchronize UART_IER access against the console. */ serial8250_rpm_get(up); @@ -2603,7 +2617,7 @@ index a17803da8..2d4e775cd 100644 up->lcr = cval; /* Save computed LCR */ -@@ -2895,7 +2912,7 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, +@@ -2904,7 +2921,7 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, serial_port_out(port, UART_FCR, up->fcr); /* set fcr */ } serial8250_set_mctrl(port, port->mctrl); @@ -2612,7 +2626,7 @@ index a17803da8..2d4e775cd 100644 serial8250_rpm_put(up); /* Don't rewrite B0 */ -@@ -2918,15 +2935,15 @@ void serial8250_do_set_ldisc(struct uart_port *port, struct ktermios *termios) +@@ -2927,15 +2944,15 @@ void serial8250_do_set_ldisc(struct uart_port *port, struct ktermios *termios) { if (termios->c_line == N_PPS) { port->flags |= UPF_HARDPPS_CD; @@ -2632,7 +2646,7 @@ index a17803da8..2d4e775cd 100644 } } } -@@ -3322,6 +3339,11 @@ static void serial8250_console_putchar(struct uart_port *port, unsigned char ch) +@@ -3332,6 +3349,11 @@ static void serial8250_console_putchar(struct uart_port *port, unsigned char ch) wait_for_xmitr(up, UART_LSR_THRE); serial_port_out(port, UART_TX, ch); @@ -2644,15 +2658,15 @@ index a17803da8..2d4e775cd 100644 } /* -@@ -3350,6 +3372,7 @@ static void serial8250_console_restore(struct uart_8250_port *up) - serial8250_out_MCR(up, up->mcr | UART_MCR_DTR | UART_MCR_RTS); +@@ -3370,6 +3392,7 @@ static void fifo_wait_for_lsr(struct uart_8250_port *up, unsigned int count) + } } +#ifdef CONFIG_SERIAL_8250_LEGACY_CONSOLE /* * Print a string to the serial port using the device FIFO * -@@ -3400,15 +3423,15 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3429,15 +3452,15 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, touch_nmi_watchdog(); if (oops_in_progress) @@ -2671,7 +2685,7 @@ index a17803da8..2d4e775cd 100644 /* check scratch reg to see if port powered off during system sleep */ if (up->canary && (up->canary != serial_port_in(port, UART_SCR))) { -@@ -3472,8 +3495,137 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, +@@ -3501,8 +3524,137 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s, serial8250_modem_status(up); if (locked) @@ -2810,7 +2824,7 @@ index a17803da8..2d4e775cd 100644 static unsigned int probe_baud(struct uart_port *port) { -@@ -3492,6 +3644,7 @@ static unsigned int probe_baud(struct uart_port *port) +@@ -3521,6 +3673,7 @@ static unsigned int probe_baud(struct uart_port *port) int serial8250_console_setup(struct uart_port *port, char *options, bool probe) { @@ -2818,7 +2832,7 @@ index a17803da8..2d4e775cd 100644 int baud = 9600; int bits = 8; int parity = 'n'; -@@ -3501,6 +3654,8 @@ int serial8250_console_setup(struct uart_port *port, char *options, bool probe) +@@ -3530,6 +3683,8 @@ int serial8250_console_setup(struct uart_port *port, char *options, bool probe) if (!port->iobase && !port->membase) return -ENODEV; @@ -7084,7 +7098,7 @@ index f3cd69346..dbec29d9a 100644 static int __init sbd_console_setup(struct console *co, char *options) diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c -index 673aeda71..a227b3d3a 100644 +index 2962e2351..0b1cfbdf6 100644 --- a/drivers/tty/serial/sc16is7xx.c +++ b/drivers/tty/serial/sc16is7xx.c @@ -810,6 +810,7 @@ static void sc16is7xx_tx_proc(struct kthread_work *ws) @@ -7703,10 +7717,10 @@ index be08fb6f7..eaa980722 100644 static void diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c -index f793624fd..2559c9781 100644 +index 4350a69d9..9f8e224e1 100644 --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c -@@ -1205,7 +1205,7 @@ static void sci_dma_tx_complete(void *arg) +@@ -1206,7 +1206,7 @@ static void sci_dma_tx_complete(void *arg) dev_dbg(port->dev, "%s(%d)\n", __func__, port->line); @@ -7715,7 +7729,7 @@ index f793624fd..2559c9781 100644 uart_xmit_advance(port, s->tx_dma_len); -@@ -1229,7 +1229,7 @@ static void sci_dma_tx_complete(void *arg) +@@ -1230,7 +1230,7 @@ static void sci_dma_tx_complete(void *arg) } } @@ -7724,7 +7738,7 @@ index f793624fd..2559c9781 100644 } /* Locking: called with port lock held */ -@@ -1325,7 +1325,7 @@ static void sci_dma_rx_complete(void *arg) +@@ -1326,7 +1326,7 @@ static void sci_dma_rx_complete(void *arg) dev_dbg(port->dev, "%s(%d) active cookie %d\n", __func__, port->line, s->active_rx); @@ -7733,7 +7747,7 @@ index f793624fd..2559c9781 100644 active = sci_dma_rx_find_active(s); if (active >= 0) -@@ -1352,20 +1352,20 @@ static void sci_dma_rx_complete(void *arg) +@@ -1353,20 +1353,20 @@ static void sci_dma_rx_complete(void *arg) dma_async_issue_pending(chan); @@ -7758,7 +7772,7 @@ index f793624fd..2559c9781 100644 } static void sci_dma_tx_release(struct sci_port *s) -@@ -1414,13 +1414,13 @@ static int sci_dma_rx_submit(struct sci_port *s, bool port_lock_held) +@@ -1415,13 +1415,13 @@ static int sci_dma_rx_submit(struct sci_port *s, bool port_lock_held) fail: /* Switch to PIO */ if (!port_lock_held) @@ -7774,7 +7788,7 @@ index f793624fd..2559c9781 100644 return -EAGAIN; } -@@ -1442,14 +1442,14 @@ static void sci_dma_tx_work_fn(struct work_struct *work) +@@ -1443,14 +1443,14 @@ static void sci_dma_tx_work_fn(struct work_struct *work) * transmit till the end, and then the rest. Take the port lock to get a * consistent xmit buffer state. */ @@ -7791,7 +7805,7 @@ index f793624fd..2559c9781 100644 return; } -@@ -1457,7 +1457,7 @@ static void sci_dma_tx_work_fn(struct work_struct *work) +@@ -1458,7 +1458,7 @@ static void sci_dma_tx_work_fn(struct work_struct *work) DMA_MEM_TO_DEV, DMA_PREP_INTERRUPT | DMA_CTRL_ACK); if (!desc) { @@ -7800,7 +7814,7 @@ index f793624fd..2559c9781 100644 dev_warn(port->dev, "Failed preparing Tx DMA descriptor\n"); goto switch_to_pio; } -@@ -1469,12 +1469,12 @@ static void sci_dma_tx_work_fn(struct work_struct *work) +@@ -1470,12 +1470,12 @@ static void sci_dma_tx_work_fn(struct work_struct *work) desc->callback_param = s; s->cookie_tx = dmaengine_submit(desc); if (dma_submit_error(s->cookie_tx)) { @@ -7815,7 +7829,7 @@ index f793624fd..2559c9781 100644 dev_dbg(port->dev, "%s: %p: %d...%d, cookie %d\n", __func__, xmit->buf, tail, head, s->cookie_tx); -@@ -1482,10 +1482,10 @@ static void sci_dma_tx_work_fn(struct work_struct *work) +@@ -1483,10 +1483,10 @@ static void sci_dma_tx_work_fn(struct work_struct *work) return; switch_to_pio: @@ -7828,7 +7842,7 @@ index f793624fd..2559c9781 100644 return; } -@@ -1502,17 +1502,17 @@ static enum hrtimer_restart sci_dma_rx_timer_fn(struct hrtimer *t) +@@ -1503,17 +1503,17 @@ static enum hrtimer_restart sci_dma_rx_timer_fn(struct hrtimer *t) dev_dbg(port->dev, "DMA Rx timed out\n"); @@ -7849,7 +7863,7 @@ index f793624fd..2559c9781 100644 dev_dbg(port->dev, "Cookie %d #%d has already completed\n", s->active_rx, active); -@@ -1530,7 +1530,7 @@ static enum hrtimer_restart sci_dma_rx_timer_fn(struct hrtimer *t) +@@ -1531,7 +1531,7 @@ static enum hrtimer_restart sci_dma_rx_timer_fn(struct hrtimer *t) */ status = dmaengine_tx_status(s->chan_rx, s->active_rx, &state); if (status == DMA_COMPLETE) { @@ -7858,7 +7872,7 @@ index f793624fd..2559c9781 100644 dev_dbg(port->dev, "Transaction complete after DMA engine was stopped"); return HRTIMER_NORESTART; } -@@ -1551,7 +1551,7 @@ static enum hrtimer_restart sci_dma_rx_timer_fn(struct hrtimer *t) +@@ -1552,7 +1552,7 @@ static enum hrtimer_restart sci_dma_rx_timer_fn(struct hrtimer *t) sci_dma_rx_reenable_irq(s); @@ -7867,7 +7881,7 @@ index f793624fd..2559c9781 100644 return HRTIMER_NORESTART; } -@@ -1775,9 +1775,9 @@ static irqreturn_t sci_tx_interrupt(int irq, void *ptr) +@@ -1776,9 +1776,9 @@ static irqreturn_t sci_tx_interrupt(int irq, void *ptr) struct uart_port *port = ptr; unsigned long flags; @@ -7879,7 +7893,7 @@ index f793624fd..2559c9781 100644 return IRQ_HANDLED; } -@@ -1791,11 +1791,11 @@ static irqreturn_t sci_tx_end_interrupt(int irq, void *ptr) +@@ -1792,11 +1792,11 @@ static irqreturn_t sci_tx_end_interrupt(int irq, void *ptr) if (port->type != PORT_SCI) return sci_tx_interrupt(irq, ptr); @@ -7893,7 +7907,7 @@ index f793624fd..2559c9781 100644 return IRQ_HANDLED; } -@@ -2192,7 +2192,7 @@ static void sci_break_ctl(struct uart_port *port, int break_state) +@@ -2193,7 +2193,7 @@ static void sci_break_ctl(struct uart_port *port, int break_state) return; } @@ -7902,7 +7916,7 @@ index f793624fd..2559c9781 100644 scsptr = serial_port_in(port, SCSPTR); scscr = serial_port_in(port, SCSCR); -@@ -2206,7 +2206,7 @@ static void sci_break_ctl(struct uart_port *port, int break_state) +@@ -2207,7 +2207,7 @@ static void sci_break_ctl(struct uart_port *port, int break_state) serial_port_out(port, SCSPTR, scsptr); serial_port_out(port, SCSCR, scscr); @@ -7911,7 +7925,7 @@ index f793624fd..2559c9781 100644 } static int sci_startup(struct uart_port *port) -@@ -2238,7 +2238,7 @@ static void sci_shutdown(struct uart_port *port) +@@ -2239,7 +2239,7 @@ static void sci_shutdown(struct uart_port *port) s->autorts = false; mctrl_gpio_disable_ms(to_sci_port(port)->gpios); @@ -7920,7 +7934,7 @@ index f793624fd..2559c9781 100644 sci_stop_rx(port); sci_stop_tx(port); /* -@@ -2248,7 +2248,7 @@ static void sci_shutdown(struct uart_port *port) +@@ -2249,7 +2249,7 @@ static void sci_shutdown(struct uart_port *port) scr = serial_port_in(port, SCSCR); serial_port_out(port, SCSCR, scr & (SCSCR_CKE1 | SCSCR_CKE0 | s->hscif_tot)); @@ -7929,7 +7943,7 @@ index f793624fd..2559c9781 100644 #ifdef CONFIG_SERIAL_SH_SCI_DMA if (s->chan_rx_saved) { -@@ -2550,7 +2550,7 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios, +@@ -2551,7 +2551,7 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios, serial_port_out(port, SCCKS, sccks); } @@ -7938,7 +7952,7 @@ index f793624fd..2559c9781 100644 sci_reset(port); -@@ -2672,7 +2672,7 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios, +@@ -2673,7 +2673,7 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios, if ((termios->c_cflag & CREAD) != 0) sci_start_rx(port); @@ -7947,7 +7961,7 @@ index f793624fd..2559c9781 100644 sci_port_disable(s); -@@ -3057,9 +3057,9 @@ static void serial_console_write(struct console *co, const char *s, +@@ -3058,9 +3058,9 @@ static void serial_console_write(struct console *co, const char *s, if (port->sysrq) locked = 0; else if (oops_in_progress) @@ -7959,7 +7973,7 @@ index f793624fd..2559c9781 100644 /* first save SCSCR then disable interrupts, keep clock source */ ctrl = serial_port_in(port, SCSCR); -@@ -3079,7 +3079,7 @@ static void serial_console_write(struct console *co, const char *s, +@@ -3080,7 +3080,7 @@ static void serial_console_write(struct console *co, const char *s, serial_port_out(port, SCSCR, ctrl); if (locked) @@ -9271,7 +9285,7 @@ index c5d5c2765..78a1c1eea 100644 static const char *vt8500_type(struct uart_port *port) diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c -index 2e5e86a00..9c13dac1d 100644 +index 7f83d2780..f6cf202ed 100644 --- a/drivers/tty/serial/xilinx_uartps.c +++ b/drivers/tty/serial/xilinx_uartps.c @@ -346,7 +346,7 @@ static irqreturn_t cdns_uart_isr(int irq, void *dev_id) @@ -9283,15 +9297,6 @@ index 2e5e86a00..9c13dac1d 100644 /* Read the interrupt status register to determine which * interrupt(s) is/are active and clear them. -@@ -369,7 +369,7 @@ static irqreturn_t cdns_uart_isr(int irq, void *dev_id) - !(readl(port->membase + CDNS_UART_CR) & CDNS_UART_CR_RX_DIS)) - cdns_uart_handle_rx(dev_id, isrstatus); - -- spin_unlock(&port->lock); -+ uart_port_unlock(port); - return IRQ_HANDLED; - } - @@ -506,14 +506,14 @@ static int cdns_uart_clk_notifier_cb(struct notifier_block *nb, return NOTIFY_BAD; } @@ -9444,19 +9449,17 @@ index 2e5e86a00..9c13dac1d 100644 } #endif -@@ -1232,9 +1232,9 @@ static void cdns_uart_console_write(struct console *co, const char *s, - if (port->sysrq) - locked = 0; - else if (oops_in_progress) -- locked = spin_trylock_irqsave(&port->lock, flags); -+ locked = uart_port_trylock_irqsave(port, &flags); +@@ -1232,7 +1232,8 @@ static void cdns_uart_console_write(struct console *co, const char *s, + if (oops_in_progress) + locked = uart_port_trylock_irqsave(port, &flags); else - spin_lock_irqsave(&port->lock, flags); ++ //spin_lock_irqsave(&port->lock, flags); + uart_port_lock_irqsave(port, &flags); /* save and disable interrupt */ imr = readl(port->membase + CDNS_UART_IMR); -@@ -1257,7 +1257,7 @@ static void cdns_uart_console_write(struct console *co, const char *s, +@@ -1255,7 +1256,7 @@ static void cdns_uart_console_write(struct console *co, const char *s, writel(imr, port->membase + CDNS_UART_IER); if (locked) @@ -9465,7 +9468,7 @@ index 2e5e86a00..9c13dac1d 100644 } /** -@@ -1325,7 +1325,7 @@ static int cdns_uart_suspend(struct device *device) +@@ -1323,7 +1324,7 @@ static int cdns_uart_suspend(struct device *device) if (console_suspend_enabled && uart_console(port) && may_wake) { unsigned long flags; @@ -9474,7 +9477,7 @@ index 2e5e86a00..9c13dac1d 100644 /* Empty the receive FIFO 1st before making changes */ while (!(readl(port->membase + CDNS_UART_SR) & CDNS_UART_SR_RXEMPTY)) -@@ -1334,7 +1334,7 @@ static int cdns_uart_suspend(struct device *device) +@@ -1332,7 +1333,7 @@ static int cdns_uart_suspend(struct device *device) writel(1, port->membase + CDNS_UART_RXWM); /* disable RX timeout interrups */ writel(CDNS_UART_IXR_TOUT, port->membase + CDNS_UART_IDR); @@ -9483,7 +9486,7 @@ index 2e5e86a00..9c13dac1d 100644 } /* -@@ -1372,7 +1372,7 @@ static int cdns_uart_resume(struct device *device) +@@ -1370,7 +1371,7 @@ static int cdns_uart_resume(struct device *device) return ret; } @@ -9492,7 +9495,7 @@ index 2e5e86a00..9c13dac1d 100644 /* Set TX/RX Reset */ ctrl_reg = readl(port->membase + CDNS_UART_CR); -@@ -1392,14 +1392,14 @@ static int cdns_uart_resume(struct device *device) +@@ -1390,14 +1391,14 @@ static int cdns_uart_resume(struct device *device) clk_disable(cdns_uart->uartclk); clk_disable(cdns_uart->pclk); @@ -9849,10 +9852,10 @@ index 9aac2ab15..6b9c8a16e 100644 static inline struct task_struct *this_cpu_ksoftirqd(void) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 70eec8a48..6b4f36bd3 100644 +index a8f0fba3e..7e9443764 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -3300,7 +3300,11 @@ struct softnet_data { +@@ -3308,7 +3308,11 @@ struct softnet_data { int defer_count; int defer_ipi_scheduled; struct sk_buff *defer_list; @@ -9932,10 +9935,10 @@ index e4878bb58..ebebc32e7 100644 #ifdef CONFIG_SMP diff --git a/include/linux/sched.h b/include/linux/sched.h -index a694cc11d..1d6148e22 100644 +index 3979c34e9..f586b8b60 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -946,6 +946,9 @@ struct task_struct { +@@ -951,6 +951,9 @@ struct task_struct { * ->sched_remote_wakeup gets used, so it can be in this word. */ unsigned sched_remote_wakeup:1; @@ -9945,7 +9948,7 @@ index a694cc11d..1d6148e22 100644 /* Bit to tell LSMs we're in execve(): */ unsigned in_execve:1; -@@ -1992,6 +1995,7 @@ static inline int dl_task_check_affinity(struct task_struct *p, const struct cpu +@@ -2001,6 +2004,7 @@ static inline int dl_task_check_affinity(struct task_struct *p, const struct cpu } #endif @@ -9953,7 +9956,7 @@ index a694cc11d..1d6148e22 100644 extern int yield_to(struct task_struct *p, bool preempt); extern void set_user_nice(struct task_struct *p, long nice); extern int task_prio(const struct task_struct *p); -@@ -2143,17 +2147,17 @@ static inline void update_tsk_thread_flag(struct task_struct *tsk, int flag, +@@ -2152,17 +2156,17 @@ static inline void update_tsk_thread_flag(struct task_struct *tsk, int flag, update_ti_thread_flag(task_thread_info(tsk), flag, value); } @@ -9974,7 +9977,7 @@ index a694cc11d..1d6148e22 100644 { return test_ti_thread_flag(task_thread_info(tsk), flag); } -@@ -2166,9 +2170,11 @@ static inline void set_tsk_need_resched(struct task_struct *tsk) +@@ -2175,9 +2179,11 @@ static inline void set_tsk_need_resched(struct task_struct *tsk) static inline void clear_tsk_need_resched(struct task_struct *tsk) { clear_tsk_thread_flag(tsk,TIF_NEED_RESCHED); @@ -9987,7 +9990,7 @@ index a694cc11d..1d6148e22 100644 { return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); } -@@ -2349,7 +2355,7 @@ static inline int rwlock_needbreak(rwlock_t *lock) +@@ -2358,7 +2364,7 @@ static inline int rwlock_needbreak(rwlock_t *lock) static __always_inline bool need_resched(void) { @@ -10268,10 +10271,10 @@ index 74d9fe360..0be63993d 100644 #ifndef CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h -index 3f10e29df..37bb8e247 100644 +index 6d91ba4eb..c337945b1 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h -@@ -179,8 +179,8 @@ unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status); +@@ -183,8 +183,8 @@ unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status); enum trace_flag_type { TRACE_FLAG_IRQS_OFF = 0x01, @@ -10282,7 +10285,7 @@ index 3f10e29df..37bb8e247 100644 TRACE_FLAG_HARDIRQ = 0x08, TRACE_FLAG_SOFTIRQ = 0x10, TRACE_FLAG_PREEMPT_RESCHED = 0x20, -@@ -206,11 +206,11 @@ static inline unsigned int tracing_gen_ctx(void) +@@ -210,11 +210,11 @@ static inline unsigned int tracing_gen_ctx(void) static inline unsigned int tracing_gen_ctx_flags(unsigned long irqflags) { @@ -12733,7 +12736,7 @@ index 000000000..b53d93585 +} +device_initcall(printk_init_ops); diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c -index 8b04d0932..a760c46d3 100644 +index de9f3fc6e..dd327dd48 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -102,12 +102,6 @@ DEFINE_STATIC_SRCU(console_srcu); @@ -12866,7 +12869,7 @@ index 8b04d0932..a760c46d3 100644 { int waiter; -@@ -2305,54 +2346,123 @@ int vprintk_store(int facility, int level, +@@ -2313,54 +2354,123 @@ int vprintk_store(int facility, int level, return ret; } @@ -13004,7 +13007,7 @@ index 8b04d0932..a760c46d3 100644 return printed_len; } -@@ -2380,6 +2490,14 @@ EXPORT_SYMBOL(_printk); +@@ -2388,6 +2498,14 @@ EXPORT_SYMBOL(_printk); static bool pr_flush(int timeout_ms, bool reset_on_progress); static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progress); @@ -13019,7 +13022,7 @@ index 8b04d0932..a760c46d3 100644 #else /* CONFIG_PRINTK */ #define printk_time false -@@ -2390,25 +2508,11 @@ static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progre +@@ -2398,25 +2516,11 @@ static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progre static u64 syslog_seq; @@ -13047,7 +13050,7 @@ index 8b04d0932..a760c46d3 100644 #endif /* CONFIG_PRINTK */ #ifdef CONFIG_EARLY_PRINTK -@@ -2616,6 +2720,8 @@ void suspend_console(void) +@@ -2624,6 +2728,8 @@ void suspend_console(void) void resume_console(void) { struct console *con; @@ -13056,7 +13059,7 @@ index 8b04d0932..a760c46d3 100644 if (!console_suspend_enabled) return; -@@ -2632,6 +2738,20 @@ void resume_console(void) +@@ -2640,6 +2746,20 @@ void resume_console(void) */ synchronize_srcu(&console_srcu); @@ -13077,7 +13080,7 @@ index 8b04d0932..a760c46d3 100644 pr_flush(1000, true); } -@@ -2646,7 +2766,8 @@ void resume_console(void) +@@ -2654,7 +2774,8 @@ void resume_console(void) */ static int console_cpu_notify(unsigned int cpu) { @@ -13087,7 +13090,7 @@ index 8b04d0932..a760c46d3 100644 /* If trylock fails, someone else is doing the printing */ if (console_trylock()) console_unlock(); -@@ -2654,26 +2775,6 @@ static int console_cpu_notify(unsigned int cpu) +@@ -2662,26 +2783,6 @@ static int console_cpu_notify(unsigned int cpu) return 0; } @@ -13114,7 +13117,7 @@ index 8b04d0932..a760c46d3 100644 /** * console_lock - block the console subsystem from printing * -@@ -2723,42 +2824,16 @@ int is_console_locked(void) +@@ -2731,42 +2832,16 @@ int is_console_locked(void) } EXPORT_SYMBOL(is_console_locked); @@ -13161,7 +13164,7 @@ index 8b04d0932..a760c46d3 100644 /* * Prepend the message in @pmsg->pbufs->outbuf with a "dropped message". This * is achieved by shifting the existing message over and inserting the dropped -@@ -2773,8 +2848,7 @@ static void __console_unlock(void) +@@ -2781,8 +2856,7 @@ static void __console_unlock(void) * * If @pmsg->pbufs->outbuf is modified, @pmsg->outbuf_len is updated. */ @@ -13171,7 +13174,7 @@ index 8b04d0932..a760c46d3 100644 { struct printk_buffers *pbufs = pmsg->pbufs; const size_t scratchbuf_sz = sizeof(pbufs->scratchbuf); -@@ -2805,9 +2879,6 @@ static void console_prepend_dropped(struct printk_message *pmsg, unsigned long d +@@ -2813,9 +2887,6 @@ static void console_prepend_dropped(struct printk_message *pmsg, unsigned long d memcpy(outbuf, scratchbuf, len); pmsg->outbuf_len += len; } @@ -13181,7 +13184,7 @@ index 8b04d0932..a760c46d3 100644 /* * Read and format the specified record (or a later record if the specified -@@ -2828,11 +2899,9 @@ static void console_prepend_dropped(struct printk_message *pmsg, unsigned long d +@@ -2836,11 +2907,9 @@ static void console_prepend_dropped(struct printk_message *pmsg, unsigned long d * of @pmsg are valid. (See the documentation of struct printk_message * for information about the @pmsg fields.) */ @@ -13195,7 +13198,7 @@ index 8b04d0932..a760c46d3 100644 struct printk_buffers *pbufs = pmsg->pbufs; const size_t scratchbuf_sz = sizeof(pbufs->scratchbuf); const size_t outbuf_sz = sizeof(pbufs->outbuf); -@@ -2860,17 +2929,6 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, +@@ -2868,17 +2937,6 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, pmsg->seq = r.info->seq; pmsg->dropped = r.info->seq - seq; @@ -13213,7 +13216,7 @@ index 8b04d0932..a760c46d3 100644 /* Skip record that has level above the console loglevel. */ if (may_suppress && suppress_message_printing(r.info->level)) goto out; -@@ -2887,6 +2945,13 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, +@@ -2895,6 +2953,13 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, return true; } @@ -13227,7 +13230,7 @@ index 8b04d0932..a760c46d3 100644 /* * Print one record for the given console. The record printed is whatever * record is the next available record for the given console. -@@ -2904,12 +2969,10 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, +@@ -2912,12 +2977,10 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, */ static bool console_emit_next_record(struct console *con, bool *handover, int cookie) { @@ -13242,7 +13245,7 @@ index 8b04d0932..a760c46d3 100644 }; unsigned long flags; -@@ -2931,35 +2994,59 @@ static bool console_emit_next_record(struct console *con, bool *handover, int co +@@ -2939,35 +3002,59 @@ static bool console_emit_next_record(struct console *con, bool *handover, int co con->dropped = 0; } @@ -13322,7 +13325,7 @@ index 8b04d0932..a760c46d3 100644 /* * Print out all remaining records to all consoles. * -@@ -2998,13 +3085,33 @@ static bool console_flush_all(bool do_cond_resched, u64 *next_seq, bool *handove +@@ -3006,13 +3093,33 @@ static bool console_flush_all(bool do_cond_resched, u64 *next_seq, bool *handove cookie = console_srcu_read_lock(); for_each_console_srcu(con) { @@ -13358,7 +13361,7 @@ index 8b04d0932..a760c46d3 100644 /* * If a handover has occurred, the SRCU read lock -@@ -3014,8 +3121,8 @@ static bool console_flush_all(bool do_cond_resched, u64 *next_seq, bool *handove +@@ -3022,8 +3129,8 @@ static bool console_flush_all(bool do_cond_resched, u64 *next_seq, bool *handove return false; /* Track the next of the highest seq flushed. */ @@ -13369,7 +13372,7 @@ index 8b04d0932..a760c46d3 100644 if (!progress) continue; -@@ -3038,19 +3145,7 @@ static bool console_flush_all(bool do_cond_resched, u64 *next_seq, bool *handove +@@ -3046,19 +3153,7 @@ static bool console_flush_all(bool do_cond_resched, u64 *next_seq, bool *handove return false; } @@ -13390,7 +13393,7 @@ index 8b04d0932..a760c46d3 100644 { bool do_cond_resched; bool handover; -@@ -3094,6 +3189,32 @@ void console_unlock(void) +@@ -3102,6 +3197,32 @@ void console_unlock(void) */ } while (prb_read_valid(prb, next_seq, NULL) && console_trylock()); } @@ -13423,7 +13426,7 @@ index 8b04d0932..a760c46d3 100644 EXPORT_SYMBOL(console_unlock); /** -@@ -3204,6 +3325,7 @@ void console_flush_on_panic(enum con_flush_mode mode) +@@ -3212,6 +3333,7 @@ void console_flush_on_panic(enum con_flush_mode mode) if (mode == CONSOLE_REPLAY_ALL) { struct console *c; @@ -13431,7 +13434,7 @@ index 8b04d0932..a760c46d3 100644 int cookie; u64 seq; -@@ -3211,16 +3333,25 @@ void console_flush_on_panic(enum con_flush_mode mode) +@@ -3219,16 +3341,25 @@ void console_flush_on_panic(enum con_flush_mode mode) cookie = console_srcu_read_lock(); for_each_console_srcu(c) { @@ -13463,7 +13466,7 @@ index 8b04d0932..a760c46d3 100644 } /* -@@ -3277,13 +3408,122 @@ EXPORT_SYMBOL(console_stop); +@@ -3285,13 +3416,122 @@ EXPORT_SYMBOL(console_stop); void console_start(struct console *console) { @@ -13586,7 +13589,7 @@ index 8b04d0932..a760c46d3 100644 static int __read_mostly keep_bootcon; static int __init keep_bootcon_setup(char *str) -@@ -3382,11 +3622,6 @@ static void try_enable_default_console(struct console *newcon) +@@ -3390,11 +3630,6 @@ static void try_enable_default_console(struct console *newcon) newcon->flags |= CON_CONSDEV; } @@ -13598,7 +13601,7 @@ index 8b04d0932..a760c46d3 100644 static void console_init_seq(struct console *newcon, bool bootcon_registered) { struct console *con; -@@ -3435,11 +3670,20 @@ static void console_init_seq(struct console *newcon, bool bootcon_registered) +@@ -3443,11 +3678,20 @@ static void console_init_seq(struct console *newcon, bool bootcon_registered) newcon->seq = prb_next_seq(prb); for_each_console(con) { @@ -13623,7 +13626,7 @@ index 8b04d0932..a760c46d3 100644 } } -@@ -3500,6 +3744,15 @@ void register_console(struct console *newcon) +@@ -3508,6 +3752,15 @@ void register_console(struct console *newcon) goto unlock; } @@ -13639,7 +13642,7 @@ index 8b04d0932..a760c46d3 100644 /* * See if we want to enable this console driver by default. * -@@ -3527,8 +3780,11 @@ void register_console(struct console *newcon) +@@ -3535,8 +3788,11 @@ void register_console(struct console *newcon) err = try_enable_preferred_console(newcon, false); /* printk() messages are not printed to the Braille console. */ @@ -13652,7 +13655,7 @@ index 8b04d0932..a760c46d3 100644 /* * If we have a bootconsole, and are switching to a real console, -@@ -3544,6 +3800,17 @@ void register_console(struct console *newcon) +@@ -3552,6 +3808,17 @@ void register_console(struct console *newcon) newcon->dropped = 0; console_init_seq(newcon, bootcon_registered); @@ -13670,7 +13673,7 @@ index 8b04d0932..a760c46d3 100644 /* * Put this console in the list - keep the * preferred driver at the head of the list. -@@ -3596,6 +3863,11 @@ EXPORT_SYMBOL(register_console); +@@ -3604,6 +3871,11 @@ EXPORT_SYMBOL(register_console); /* Must be called under console_list_lock(). */ static int unregister_console_locked(struct console *console) { @@ -13682,7 +13685,7 @@ index 8b04d0932..a760c46d3 100644 int res; lockdep_assert_console_list_lock_held(); -@@ -3635,11 +3907,50 @@ static int unregister_console_locked(struct console *console) +@@ -3643,11 +3915,50 @@ static int unregister_console_locked(struct console *console) */ synchronize_srcu(&console_srcu); @@ -13733,7 +13736,7 @@ index 8b04d0932..a760c46d3 100644 return res; } -@@ -3784,69 +4095,94 @@ late_initcall(printk_late_init); +@@ -3792,69 +4103,94 @@ late_initcall(printk_late_init); /* If @con is specified, only wait for that console. Otherwise wait for all. */ static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progress) { @@ -13855,7 +13858,7 @@ index 8b04d0932..a760c46d3 100644 last_diff = diff; } -@@ -3887,9 +4223,16 @@ static void wake_up_klogd_work_func(struct irq_work *irq_work) +@@ -3895,9 +4231,16 @@ static void wake_up_klogd_work_func(struct irq_work *irq_work) int pending = this_cpu_xchg(printk_pending, 0); if (pending & PRINTK_PENDING_OUTPUT) { @@ -13875,7 +13878,7 @@ index 8b04d0932..a760c46d3 100644 } if (pending & PRINTK_PENDING_WAKEUP) -@@ -3957,11 +4300,16 @@ void defer_console_output(void) +@@ -3965,11 +4308,16 @@ void defer_console_output(void) * New messages may have been added directly to the ringbuffer * using vprintk_store(), so wake any waiters as well. */ @@ -14570,10 +14573,10 @@ index 11a1fac3a..6f085a159 100644 static void print_cpu_stall(unsigned long gps) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index de6dd807d..987b959aa 100644 +index 51deb716b..5d5730a1c 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -901,14 +901,15 @@ static inline void hrtick_rq_init(struct rq *rq) +@@ -906,14 +906,15 @@ static inline void hrtick_rq_init(struct rq *rq) #if defined(CONFIG_SMP) && defined(TIF_POLLING_NRFLAG) /* @@ -14592,7 +14595,7 @@ index de6dd807d..987b959aa 100644 } /* -@@ -925,7 +926,7 @@ static bool set_nr_if_polling(struct task_struct *p) +@@ -930,7 +931,7 @@ static bool set_nr_if_polling(struct task_struct *p) for (;;) { if (!(val & _TIF_POLLING_NRFLAG)) return false; @@ -14601,7 +14604,7 @@ index de6dd807d..987b959aa 100644 return true; if (try_cmpxchg(&ti->flags, &val, val | _TIF_NEED_RESCHED)) break; -@@ -934,9 +935,9 @@ static bool set_nr_if_polling(struct task_struct *p) +@@ -939,9 +940,9 @@ static bool set_nr_if_polling(struct task_struct *p) } #else @@ -14613,7 +14616,7 @@ index de6dd807d..987b959aa 100644 return true; } -@@ -1041,28 +1042,47 @@ void wake_up_q(struct wake_q_head *head) +@@ -1046,28 +1047,47 @@ void wake_up_q(struct wake_q_head *head) * might also involve a cross-CPU call to trigger the scheduler on * the target CPU. */ @@ -14669,7 +14672,7 @@ index de6dd807d..987b959aa 100644 } void resched_cpu(int cpu) -@@ -1135,7 +1155,7 @@ static void wake_up_idle_cpu(int cpu) +@@ -1140,7 +1160,7 @@ static void wake_up_idle_cpu(int cpu) if (cpu == smp_processor_id()) return; @@ -14678,7 +14681,7 @@ index de6dd807d..987b959aa 100644 smp_send_reschedule(cpu); else trace_sched_wake_idle_without_ipi(cpu); -@@ -6775,10 +6795,14 @@ void __noreturn do_task_dead(void) +@@ -6792,10 +6812,14 @@ void __noreturn do_task_dead(void) static inline void sched_submit_work(struct task_struct *tsk) { @@ -14695,7 +14698,7 @@ index de6dd807d..987b959aa 100644 task_flags = tsk->flags; /* -@@ -6804,6 +6828,8 @@ static inline void sched_submit_work(struct task_struct *tsk) +@@ -6821,6 +6845,8 @@ static inline void sched_submit_work(struct task_struct *tsk) * make sure to submit it to avoid deadlocks. */ blk_flush_plug(tsk->plug, true); @@ -14704,7 +14707,7 @@ index de6dd807d..987b959aa 100644 } static void sched_update_worker(struct task_struct *tsk) -@@ -6818,16 +6844,26 @@ static void sched_update_worker(struct task_struct *tsk) +@@ -6835,16 +6861,26 @@ static void sched_update_worker(struct task_struct *tsk) } } @@ -14736,7 +14739,7 @@ index de6dd807d..987b959aa 100644 sched_update_worker(tsk); } EXPORT_SYMBOL(schedule); -@@ -6891,11 +6927,7 @@ void __sched schedule_preempt_disabled(void) +@@ -6908,11 +6944,7 @@ void __sched schedule_preempt_disabled(void) #ifdef CONFIG_PREEMPT_RT void __sched notrace schedule_rtlock(void) { @@ -14749,7 +14752,7 @@ index de6dd807d..987b959aa 100644 } NOKPROBE_SYMBOL(schedule_rtlock); #endif -@@ -7091,6 +7123,32 @@ static void __setscheduler_prio(struct task_struct *p, int prio) +@@ -7108,6 +7140,32 @@ static void __setscheduler_prio(struct task_struct *p, int prio) #ifdef CONFIG_RT_MUTEXES @@ -14782,7 +14785,7 @@ index de6dd807d..987b959aa 100644 static inline int __rt_effective_prio(struct task_struct *pi_task, int prio) { if (pi_task) -@@ -8953,6 +9011,21 @@ static inline void preempt_dynamic_init(void) { } +@@ -8970,6 +9028,21 @@ static inline void preempt_dynamic_init(void) { } #endif /* #ifdef CONFIG_PREEMPT_DYNAMIC */ @@ -14842,10 +14845,10 @@ index 8b3063398..76530c8b3 100644 } late_initcall(sched_init_debug); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index c9a4ea466..de39191ea 100644 +index c4c3afa6e..eab538e75 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -1170,8 +1170,10 @@ static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se); +@@ -1173,8 +1173,10 @@ static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se); * XXX: strictly: vd_i += N*r_i/w_i such that: vd_i > ve_i * this is probably good enough. */ @@ -14857,7 +14860,7 @@ index c9a4ea466..de39191ea 100644 if ((s64)(se->vruntime - se->deadline) < 0) return; -@@ -1190,10 +1192,19 @@ static void update_deadline(struct cfs_rq *cfs_rq, struct sched_entity *se) +@@ -1193,10 +1195,19 @@ static void update_deadline(struct cfs_rq *cfs_rq, struct sched_entity *se) /* * The task has consumed its request, reschedule. */ @@ -14880,7 +14883,7 @@ index c9a4ea466..de39191ea 100644 } #include "pelt.h" -@@ -1301,7 +1312,7 @@ static void update_tg_load_avg(struct cfs_rq *cfs_rq) +@@ -1304,7 +1315,7 @@ static void update_tg_load_avg(struct cfs_rq *cfs_rq) /* * Update the current task's runtime statistics. */ @@ -14889,7 +14892,7 @@ index c9a4ea466..de39191ea 100644 { struct sched_entity *curr = cfs_rq->curr; u64 now = rq_clock_task(rq_of(cfs_rq)); -@@ -1328,7 +1339,7 @@ static void update_curr(struct cfs_rq *cfs_rq) +@@ -1331,7 +1342,7 @@ static void update_curr(struct cfs_rq *cfs_rq) schedstat_add(cfs_rq->exec_clock, delta_exec); curr->vruntime += calc_delta_fair(delta_exec, curr); @@ -14898,7 +14901,7 @@ index c9a4ea466..de39191ea 100644 update_min_vruntime(cfs_rq); if (entity_is_task(curr)) { -@@ -1342,6 +1353,11 @@ static void update_curr(struct cfs_rq *cfs_rq) +@@ -1345,6 +1356,11 @@ static void update_curr(struct cfs_rq *cfs_rq) account_cfs_rq_runtime(cfs_rq, delta_exec); } @@ -14910,7 +14913,7 @@ index c9a4ea466..de39191ea 100644 static void update_curr_fair(struct rq *rq) { update_curr(cfs_rq_of(&rq->curr->se)); -@@ -5656,7 +5672,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) +@@ -5676,7 +5692,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) /* * Update run-time statistics of the 'current'. */ @@ -14919,7 +14922,7 @@ index c9a4ea466..de39191ea 100644 /* * Ensure that runnable average is periodically updated. -@@ -5670,7 +5686,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) +@@ -5690,7 +5706,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) * validating it and just reschedule. */ if (queued) { @@ -14928,7 +14931,7 @@ index c9a4ea466..de39191ea 100644 return; } /* -@@ -5816,7 +5832,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) +@@ -5836,7 +5852,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) * hierarchy can be throttled */ if (!assign_cfs_rq_runtime(cfs_rq) && likely(cfs_rq->curr)) @@ -14937,7 +14940,7 @@ index c9a4ea466..de39191ea 100644 } static __always_inline -@@ -6115,7 +6131,7 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq) +@@ -6139,7 +6155,7 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq) /* Determine whether we need to wake up potentially idle CPU: */ if (rq->curr == rq->idle && rq->cfs.nr_running) @@ -14946,7 +14949,7 @@ index c9a4ea466..de39191ea 100644 } #ifdef CONFIG_SMP -@@ -7357,7 +7373,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) +@@ -7391,7 +7407,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) if (delta < 0) { if (task_current(rq, p)) @@ -14955,7 +14958,7 @@ index c9a4ea466..de39191ea 100644 return; } hrtick_start(rq, delta); -@@ -9341,7 +9357,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ +@@ -9441,7 +9457,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ * prevents us from potentially nominating it as a false LAST_BUDDY * below. */ @@ -14964,7 +14967,7 @@ index c9a4ea466..de39191ea 100644 return; if (!sched_feat(WAKEUP_PREEMPTION)) -@@ -9384,7 +9400,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ +@@ -9484,7 +9500,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ return; preempt: @@ -14973,7 +14976,7 @@ index c9a4ea466..de39191ea 100644 } #ifdef CONFIG_QOS_SCHED -@@ -9873,8 +9889,7 @@ static bool _qos_smt_check_need_resched(int this_cpu, struct rq *rq) +@@ -9973,8 +9989,7 @@ static bool _qos_smt_check_need_resched(int this_cpu, struct rq *rq) /* * There are two cases rely on the set need_resched to drive away @@ -14983,7 +14986,7 @@ index c9a4ea466..de39191ea 100644 * b) The qos_smt_status of siblings cpu is offline, the task of curr cpu is idle, * and current cpu only has SCHED_IDLE tasks enqueued. */ -@@ -14248,7 +14263,7 @@ static inline void task_tick_core(struct rq *rq, struct task_struct *curr) +@@ -14357,7 +14372,7 @@ static inline void task_tick_core(struct rq *rq, struct task_struct *curr) */ if (rq->core->core_forceidle_count && rq->cfs.nr_running == 1 && __entity_slice_used(&curr->se, MIN_NR_TASKS_DURING_FORCEIDLE)) @@ -14992,7 +14995,7 @@ index c9a4ea466..de39191ea 100644 } /* -@@ -14564,7 +14579,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) +@@ -14675,7 +14690,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) */ if (task_current(rq, p)) { if (p->prio > oldprio) @@ -15002,13 +15005,13 @@ index c9a4ea466..de39191ea 100644 check_preempt_curr(rq, p, 0); } diff --git a/kernel/sched/features.h b/kernel/sched/features.h -index 26b1a03bd..a08f2fcd7 100644 +index ea7ba7481..4db5ca4a1 100644 --- a/kernel/sched/features.h +++ b/kernel/sched/features.h -@@ -98,7 +98,7 @@ SCHED_FEAT(UTIL_EST_FASTUP, true) - SCHED_FEAT(LATENCY_WARN, false) +@@ -99,7 +99,7 @@ SCHED_FEAT(LATENCY_WARN, false) SCHED_FEAT(HZ_BW, true) + SCHED_FEAT(IRQ_AVG, false) - +SCHED_FEAT(FORCE_NEED_RESCHED, false) #ifdef CONFIG_QOS_SCHED_DYNAMIC_AFFINITY @@ -15029,7 +15032,7 @@ index 5007b25c5..95e1b3df1 100644 raw_local_irq_disable(); diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c -index 77bb7ee8c..6dedad4f4 100644 +index e2eaa8ffd..d9cd30932 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -2256,8 +2256,11 @@ static int rto_next_cpu(struct root_domain *rd) @@ -15046,10 +15049,10 @@ index 77bb7ee8c..6dedad4f4 100644 rd->rto_cpu = -1; diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h -index 761870540..f9918a975 100644 +index f6a3f93d1..4dcdde793 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h -@@ -2601,6 +2601,7 @@ extern void init_sched_fair_class(void); +@@ -2626,6 +2626,7 @@ extern void init_sched_fair_class(void); extern void reweight_task(struct task_struct *p, const struct load_weight *lw); extern void resched_curr(struct rq *rq); @@ -15058,10 +15061,10 @@ index 761870540..f9918a975 100644 extern struct rt_bandwidth def_rt_bandwidth; diff --git a/kernel/signal.c b/kernel/signal.c -index c73873d67..aef5dcf43 100644 +index 50aa72d6f..8b26894c2 100644 --- a/kernel/signal.c +++ b/kernel/signal.c -@@ -2334,15 +2334,35 @@ static int ptrace_stop(int exit_code, int why, unsigned long message, +@@ -2332,15 +2332,35 @@ static int ptrace_stop(int exit_code, int why, unsigned long message, do_notify_parent_cldstop(current, false, why); /* @@ -15103,7 +15106,7 @@ index c73873d67..aef5dcf43 100644 cgroup_leave_frozen(true); diff --git a/kernel/softirq.c b/kernel/softirq.c -index cd8770b2f..10099e684 100644 +index f8cf88cc4..13f919072 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -247,6 +247,19 @@ void __local_bh_enable_ip(unsigned long ip, unsigned int cnt) @@ -15126,7 +15129,7 @@ index cd8770b2f..10099e684 100644 /* * Invoked from ksoftirqd_run() outside of the interrupt disabled section * to acquire the per CPU local lock for reentrancy protection. -@@ -623,6 +636,24 @@ static inline void tick_irq_exit(void) +@@ -630,6 +643,24 @@ static inline void tick_irq_exit(void) #endif } @@ -15151,7 +15154,7 @@ index cd8770b2f..10099e684 100644 static inline void __irq_exit_rcu(void) { #ifndef __ARCH_IRQ_EXIT_IRQS_DISABLED -@@ -635,6 +666,10 @@ static inline void __irq_exit_rcu(void) +@@ -642,6 +673,10 @@ static inline void __irq_exit_rcu(void) if (!in_interrupt() && local_softirq_pending()) invoke_softirq(); @@ -15162,7 +15165,7 @@ index cd8770b2f..10099e684 100644 tick_irq_exit(); } -@@ -1014,12 +1049,70 @@ static struct smp_hotplug_thread softirq_threads = { +@@ -1021,12 +1056,70 @@ static struct smp_hotplug_thread softirq_threads = { .thread_comm = "ksoftirqd/%u", }; @@ -15235,10 +15238,10 @@ index cd8770b2f..10099e684 100644 } early_initcall(spawn_ksoftirqd); diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c -index 57e5cb36f..c4ae45701 100644 +index 359ffa38a..bcddc8c44 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c -@@ -1812,7 +1812,7 @@ void hrtimer_interrupt(struct clock_event_device *dev) +@@ -1873,7 +1873,7 @@ void hrtimer_interrupt(struct clock_event_device *dev) if (!ktime_before(now, cpu_base->softirq_expires_next)) { cpu_base->softirq_expires_next = KTIME_MAX; cpu_base->softirq_activated = 1; @@ -15247,7 +15250,7 @@ index 57e5cb36f..c4ae45701 100644 } __hrtimer_run_queues(cpu_base, now, flags, HRTIMER_ACTIVE_HARD); -@@ -1925,7 +1925,7 @@ void hrtimer_run_queues(void) +@@ -1986,7 +1986,7 @@ void hrtimer_run_queues(void) if (!ktime_before(now, cpu_base->softirq_expires_next)) { cpu_base->softirq_expires_next = KTIME_MAX; cpu_base->softirq_activated = 1; @@ -15301,10 +15304,10 @@ index 63a8ce717..b3fbe97d1 100644 /* diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c -index 2412c0a46..939d67174 100644 +index 028fcec26..897343f8e 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c -@@ -2706,6 +2706,8 @@ unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status) +@@ -2727,6 +2727,8 @@ unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status) if (tif_need_resched()) trace_flags |= TRACE_FLAG_NEED_RESCHED; @@ -15314,7 +15317,7 @@ index 2412c0a46..939d67174 100644 trace_flags |= TRACE_FLAG_PREEMPT_RESCHED; return (trace_flags << 16) | (min_t(unsigned int, pc & 0xff, 0xf)) | diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c -index 2b948d35f..959f09ab8 100644 +index 70ba85714..64a96c2d5 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c @@ -464,17 +464,29 @@ int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry) @@ -15350,10 +15353,10 @@ index 2b948d35f..959f09ab8 100644 need_resched = 'p'; break; diff --git a/net/core/dev.c b/net/core/dev.c -index 75e94b327..5d021cc1f 100644 +index 00a8200d7..87b77b0ff 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4723,15 +4723,6 @@ static void rps_trigger_softirq(void *data) +@@ -4756,15 +4756,6 @@ static void rps_trigger_softirq(void *data) #endif /* CONFIG_RPS */ @@ -15369,7 +15372,7 @@ index 75e94b327..5d021cc1f 100644 /* * After we queued a packet into sd->input_pkt_queue, * we need to make sure this queue is serviced soon. -@@ -6711,6 +6702,32 @@ static void skb_defer_free_flush(struct softnet_data *sd) +@@ -6744,6 +6735,32 @@ static void skb_defer_free_flush(struct softnet_data *sd) } } @@ -15402,7 +15405,7 @@ index 75e94b327..5d021cc1f 100644 static int napi_threaded_poll(void *data) { struct napi_struct *napi = data; -@@ -11648,7 +11665,11 @@ static int __init net_dev_init(void) +@@ -11685,7 +11702,11 @@ static int __init net_dev_init(void) INIT_CSD(&sd->csd, rps_trigger_softirq, sd); sd->cpu = i; #endif @@ -15415,7 +15418,7 @@ index 75e94b327..5d021cc1f 100644 init_gro_hash(&sd->backlog); diff --git a/net/core/skbuff.c b/net/core/skbuff.c -index a9efd6fb2..ce127b20d 100644 +index 514c2e002..9ac003233 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -6865,8 +6865,13 @@ nodefer: __kfree_skb(skb); diff --git a/patch-6.6.0-6.0.0-rt20.patch-openeuler_defconfig.patch b/patch-6.6.0-6.0.0-rt20.patch-openeuler_defconfig.patch index f87126833a4796395588e07e440db9ea145c86c8..dd7b7cdd38a25280f4a874187cc3afb5fb2b9907 100644 --- a/patch-6.6.0-6.0.0-rt20.patch-openeuler_defconfig.patch +++ b/patch-6.6.0-6.0.0-rt20.patch-openeuler_defconfig.patch @@ -1,5 +1,15 @@ +From 53885a65ab5f942bdbc12a0b7926a072da604a0f Mon Sep 17 00:00:00 2001 +From: zhangyu +Date: Thu, 19 Jun 2025 14:43:24 +0800 +Subject: [PATCH 2/3] rt2 + +--- + arch/arm64/configs/openeuler_defconfig | 4 ++-- + arch/x86/configs/openeuler_defconfig | 7 ++++--- + 2 files changed, 6 insertions(+), 5 deletions(-) + diff --git a/arch/arm64/configs/openeuler_defconfig b/arch/arm64/configs/openeuler_defconfig -index 61f3e4e34..0d3cabb17 100644 +index f048a1b09..297ce69e2 100644 --- a/arch/arm64/configs/openeuler_defconfig +++ b/arch/arm64/configs/openeuler_defconfig @@ -97,7 +97,7 @@ CONFIG_PREEMPT_NONE=y @@ -11,7 +21,7 @@ index 61f3e4e34..0d3cabb17 100644 # # CPU/Task time and stats accounting # -@@ -757,7 +757,7 @@ CONFIG_HAVE_KVM_VCPU_RUN_PID_CHANGE=y +@@ -782,7 +782,7 @@ CONFIG_HAVE_KVM_VCPU_RUN_PID_CHANGE=y CONFIG_KVM_XFER_TO_GUEST_WORK=y CONFIG_KVM_GENERIC_HARDWARE_ENABLING=y CONFIG_KVM_HISI_VIRT=y @@ -21,24 +31,24 @@ index 61f3e4e34..0d3cabb17 100644 CONFIG_HISI_VIRTCCA_HOST=y CONFIG_HISI_VIRTCCA_CODA=y diff --git a/arch/x86/configs/openeuler_defconfig b/arch/x86/configs/openeuler_defconfig -index 61af907af..4c0ea9071 100644 +index b46394fa0..efda2a71d 100644 --- a/arch/x86/configs/openeuler_defconfig +++ b/arch/x86/configs/openeuler_defconfig -@@ -112,11 +112,11 @@ CONFIG_BPF_SCHED=y - # end of BPF subsystem +@@ -113,11 +113,12 @@ CONFIG_BPF_SCHED=y + CONFIG_BPF_RVI=y CONFIG_PREEMPT_NONE_BUILD=y -CONFIG_PREEMPT_NONE=y +#CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set # CONFIG_PREEMPT_DYNAMIC is not set -- + +CONFIG_PREEMPT_RT=y # # CPU/Task time and stats accounting # -@@ -248,7 +248,7 @@ CONFIG_SYSCTL=y +@@ -251,7 +252,7 @@ CONFIG_SYSCTL=y CONFIG_HAVE_UID16=y CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_HAVE_PCSPKR_PLATFORM=y @@ -47,7 +57,7 @@ index 61af907af..4c0ea9071 100644 CONFIG_UID16=y CONFIG_MULTIUSER=y CONFIG_SGETMASK_SYSCALL=y -@@ -746,7 +746,7 @@ CONFIG_HAVE_KVM_NO_POLL=y +@@ -751,7 +752,7 @@ CONFIG_HAVE_KVM_NO_POLL=y CONFIG_KVM_XFER_TO_GUEST_WORK=y CONFIG_HAVE_KVM_PM_NOTIFIER=y CONFIG_KVM_GENERIC_HARDWARE_ENABLING=y