| ########################################################### |
| # DELTA against a known Linus release |
| ########################################################### |
| |
| ############################################################ |
| # UPSTREAM merged |
| ############################################################ |
| |
| ############################################################ |
| # POSTED by others |
| ############################################################ |
| |
| # John's printk series |
| # [RFC PATCH v1 00/25] printk: new implementation |
| # Date: Tue, 12 Feb 2019 15:29:38 +0100 |
| # Plus build fixes merged |
| 0001-printk-rb-add-printk-ring-buffer-documentation.patch |
| 0002-printk-rb-add-prb-locking-functions.patch |
| 0003-printk-rb-define-ring-buffer-struct-and-initializer.patch |
| 0004-printk-rb-add-writer-interface.patch |
| 0005-printk-rb-add-basic-non-blocking-reading-interface.patch |
| 0006-printk-rb-add-blocking-reader-support.patch |
| 0007-printk-rb-add-functionality-required-by-printk.patch |
| 0008-printk-add-ring-buffer-and-kthread.patch |
| 0009-printk-remove-exclusive-console-hack.patch |
| printk-console-must-not-schedule-for-drivers.patch |
| 0010-printk-redirect-emit-store-to-new-ringbuffer.patch |
| 0011-printk_safe-remove-printk-safe-code.patch |
| 0012-printk-minimize-console-locking-implementation.patch |
| 0013-printk-track-seq-per-console.patch |
| 0014-printk-do-boot_delay_msec-inside-printk_delay.patch |
| 0015-printk-print-history-for-new-consoles.patch |
| 0016-printk-implement-CON_PRINTBUFFER.patch |
| 0017-printk-add-processor-number-to-output.patch |
| 0018-console-add-write_atomic-interface.patch |
| 0019-printk-introduce-emergency-messages.patch |
| 0020-serial-8250-implement-write_atomic.patch |
| 0021-printk-implement-KERN_CONT.patch |
| 0022-printk-implement-dev-kmsg.patch |
| 0023-printk-implement-syslog.patch |
| 0024-printk-implement-kmsg_dump.patch |
| 0025-printk-remove-unused-code.patch |
| printk-set-deferred-to-default-loglevel-enforce-mask.patch |
| serial-8250-remove-that-trylock-in-serial8250_consol.patch |
| serial-8250-export-symbols-which-are-used-by-symbols.patch |
| arm-remove-printk_nmi_.patch |
| printk-only-allow-kernel-to-emergency-message.patch |
| printk-devkmsg-llseek-reset-clear-if-it-is-lost.patch |
| printk-print-rate-limitted-message-as-info.patch |
| printk-kmsg_dump-remove-mutex-usage.patch |
| printk-devkmsg-read-Return-EPIPE-when-the-first-mess.patch |
| printk-handle-iterating-while-buffer-changing.patch |
| printk-hack-out-emergency-loglevel-usage.patch |
| printk-Force-a-line-break-on-pr_cont-n.patch |
| serial-8250-only-atomic-lock-for-console.patch |
| serial-8250-fsl-ingenic-mtk-fix-atomic-console.patch |
| |
| # 2020-01-31 16:07 Peter Zijlstra [PATCH -v2 0/7] locking: Percpu-rwsem rewrite |
| # https://lkml.kernel.org/r/20200131150703.194229898@infradead.org |
| 0001-locking-percpu-rwsem-lockdep-Make-percpu-rwsem-use-i.patch |
| 0002-locking-percpu-rwsem-Convert-to-bool.patch |
| 0003-locking-percpu-rwsem-Move-__this_cpu_inc-into-the-sl.patch |
| 0004-locking-percpu-rwsem-Extract-__percpu_down_read_tryl.patch |
| 0005-locking-percpu-rwsem-Remove-the-embedded-rwsem.patch |
| 0006-locking-percpu-rwsem-Fold-__percpu_up_read.patch |
| 0007-locking-percpu-rwsem-Add-might_sleep-for-writer-lock.patch |
| |
| # TIP, 66630058e56b26b3a9cf2625e250a8c592dd0207 |
| sched-rt-Provide-migrate_disable-enable-inlines.patch |
| # TIP, 4e139c7711633365ebb52fbb63905395522a8413 |
| sched-Provide-cant_migrate.patch |
| |
| # 2020-02-24 15:01 Thomas Gleixner [PATCH V3 00/22] bpf: Make BPF and PREEMPT_RT co-exist |
| # https://lkml.kernel.org/r/20200224140131.461979697@linutronix.de |
| 0001-bpf-Tighten-the-requirements-for-preallocated-hash-m.patch |
| 0002-bpf-Enforce-preallocation-for-instrumentation-progra.patch |
| 0003-bpf-Update-locking-comment-in-hashtab-code.patch |
| 0004-bpf-tracing-Remove-redundant-preempt_disable-in-__bp.patch |
| 0005-bpf-trace-Remove-EXPORT-from-trace_call_bpf.patch |
| 0005.5-bpf-disable-preemption-for-bpf-progs-attached-to-upr.patch |
| 0006-bpf-trace-Remove-redundant-preempt_disable-from-trac.patch |
| 0007-perf-bpf-Remove-preempt-disable-around-BPF-invocatio.patch |
| 0008-bpf-Remove-recursion-prevention-from-rcu-free-callba.patch |
| 0009-bpf-Dont-iterate-over-possible-CPUs-with-interrupts-.patch |
| 0010-bpf-Provide-bpf_prog_run_pin_on_cpu-helper.patch |
| 0011-bpf-Replace-cant_sleep-with-cant_migrate.patch |
| 0012-bpf-Use-bpf_prog_run_pin_on_cpu-at-simple-call-sites.patch |
| 0013-bpf-tests-Use-migrate-disable-instead-of-preempt-dis.patch |
| 0014-bpf-Use-migrate_disable-enabe-in-trampoline-code.patch |
| 0015-bpf-Use-migrate_disable-enable-in-array-macros-and-c.patch |
| 0016-bpf-Provide-recursion-prevention-helpers.patch |
| 0017-bpf-Use-recursion-prevention-helpers-in-hashtab-code.patch |
| 0018-bpf-Replace-open-coded-recursion-prevention-in-sys_b.patch |
| 0019-bpf-Factor-out-hashtab-bucket-lock-operations.patch |
| 0020-bpf-Prepare-hashtab-locking-for-PREEMPT_RT.patch |
| 0021-bpf-lpm-Make-locking-RT-friendly.patch |
| 0022-bpf-stackmap-Dont-trylock-mmap_sem-with-PREEMPT_RT-a.patch |
| |
| ############################################################ |
| # POSTED |
| ############################################################ |
| # https://lkml.kernel.org/r/20190820170818.oldsdoumzashhcgh@linutronix.de |
| # 20191118132824.rclhrbujqh4b4g4d@linutronix.de |
| fs-buffer-Make-BH_Uptodate_Lock-bit_spin_lock-a-regu.patch |
| |
| # 20191008110021.2j44ayunal7fkb7i@linutronix.de |
| # Ping => 20191107091108.6ctsai6bdomalmqj@linutronix.de |
| thermal-x86_pkg_temp-make-pkg_temp_lock-a-raw-spinlo.patch |
| |
| # 20200224140726.1550689-1-bigeasy@linutronix.de |
| 0001-drm-vmwgfx-Drop-preempt_disable-in-vmw_fifo_ping_hos.patch |
| 0002-drm-vmwgfx-Remove-a-few-unused-functions.patch |
| |
| # 20200303202054.gsosv7fsx2ma3cic@linutronix.de |
| mm-compaction-Really-limit-compact_unevictable_allow.patch |
| # 20200319165536.ovi75tsr2seared4@linutronix.de |
| mm-compaction-Disable-compact_unevictable_allowed-on.patch |
| |
| # 20191015191821.11479-1-bigeasy@linutronix.de |
| Use-CONFIG_PREEMPTION.patch |
| |
| ############################################################ |
| # Ready for posting |
| ############################################################ |
| |
| sched-__set_cpus_allowed_ptr-Check-cpus_mask-not-cpu.patch |
| |
| # WORKQUEUE, delay |
| 0001-workqueue-Don-t-assume-that-the-callback-has-interru.patch |
| 0002-sched-swait-Add-swait_event_lock_irq.patch |
| 0003-workqueue-Use-swait-for-wq_manager_wait.patch |
| 0004-workqueue-Convert-the-locks-to-raw-type.patch |
| |
| ############################################################ |
| # Needs to address review feedback |
| ############################################################ |
| |
| # This one would keep the raw-lock and IRQ on/off as the minimal duct tape. |
| cgroup-use-irqsave-in-cgroup_rstat_flush_locked.patch |
| # The alternative to remove unused code. |
| # 20190816111817.834-1-bigeasy@linutronix.de | https://www.spinics.net/lists/cgroups/msg23051.html |
| |
| # UM, microblaze, ia64 fail to build with this patch (while compiling .S |
| # files). Postpone until the orignal issue pops up. |
| # percpu-include-irqflags.h-for-raw_local_irq_save.patch |
| |
| # 20190211113829.sqf6bdi4c4cdd3rp@linutronix.de | 20190821152158.GA12901@cmpxchg.org |
| mm-workingset-replace-IRQ-off-check-with-a-lockdep-a.patch |
| |
| # 20190211105835.16851-1-bigeasy@linutronix.de |
| # drop… |
| tpm-remove-tpm_dev_wq_lock.patch |
| |
| ############################################################ |
| # Almost ready, needs final polishing |
| ############################################################ |
| rcu-Use-a-raw_spinlock_t-for-kfree-batching.patch |
| |
| ############################################################### |
| # Stuff broken upstream and upstream wants something different |
| ############################################################### |
| |
| # Timekeeping split jiffies lock or introduce RAW_SEQLOCK |
| timekeeping-split-jiffies-lock.patch |
| |
| # PTRACE/SIGNAL crap |
| # https://lore.kernel.org/lkml/CADkTA4PBT374CY+UNb85WjQEaNCDodMZu=MgpG8aMYbAu2eOGA@mail.gmail.com/ |
| signal-revert-ptrace-preempt-magic.patch |
| |
| ################################################## |
| # REAL RT STUFF starts here |
| ################################################## |
| |
| ############################################################ |
| # PREEMPT NORT |
| preempt-nort-rt-variants.patch |
| mm-make-vmstat-rt-aware.patch |
| |
| # SEQCOUNT related |
| # XXX, rework |
| dma-buf-Use-seqlock_t-instread-disabling-preemption.patch |
| seqlock-prevent-rt-starvation.patch |
| NFSv4-replace-seqcount_t-with-a-seqlock_t.patch |
| net-Qdisc-use-a-seqlock-instead-seqcount.patch |
| net-make-devnet_rename_seq-a-mutex.patch |
| userfaultfd-Use-a-seqlock-instead-of-seqcount.patch |
| |
| # Revisit and add to the other NFS crap |
| fs-nfs-turn-rmdir_sem-into-a-semaphore.patch |
| |
| # Revisit |
| fs-dcache-disable-preemption-on-i_dir_seq-s-write-si.patch |
| |
| # Revisit - check HCH reply. Check all use cases |
| list_bl.h-make-list-head-locking-RT-safe.patch |
| # Check .... (these are needed due to the previous list_bl change) |
| fscache-initialize-cookie-hash-table-raw-spinlocks.patch |
| fs-dcache-bring-back-explicit-INIT_HLIST_BL_HEAD-in.patch |
| fs-dcache-Include-swait.h-header.patch |
| fs-dcache-use-swait_queue-instead-of-waitqueue.patch |
| ############################################################ |
| |
| # split changelog |
| kconfig-disable-a-few-options-rt.patch |
| |
| # proper changelog |
| mm-disable-sloub-rt.patch |
| |
| # Post |
| rcu-make-RCU_BOOST-default-on-RT.patch |
| |
| # Revisit ???? |
| sched-disable-rt-group-sched-on-rt.patch |
| |
| # Post |
| net_disable_NET_RX_BUSY_POLL.patch |
| |
| # proper changelog |
| md-disable-bcache.patch |
| |
| # proper changelog |
| efi-Disable-runtime-services-on-RT.patch |
| efi-Allow-efi-runtime.patch |
| |
| # Fix with something like get_locked_pte_irqsafe ... |
| x86-Disable-HAVE_ARCH_JUMP_LABEL.patch |
| |
| # local locks & migrate disable |
| # Rework, write proper changelog and argument |
| rt-local-irq-lock.patch |
| |
| # Move post local lock |
| softirq-Add-preemptible-softirq.patch |
| |
| # Sigh |
| # Check proper again. Crap.... |
| oleg-signal-rt-fix.patch |
| |
| # MM page alloc |
| # |
| 0001-Split-IRQ-off-and-zone-lock-while-freeing-pages-from.patch |
| 0002-Split-IRQ-off-and-zone-lock-while-freeing-pages-from.patch |
| 0003-mm-SLxB-change-list_lock-to-raw_spinlock_t.patch |
| 0004-mm-SLUB-delay-giving-back-empty-slubs-to-IRQ-enabled.patch |
| mm-slub-Always-flush-the-delayed-empty-slubs-in-flus.patch |
| mm-page_alloc-rt-friendly-per-cpu-pages.patch |
| |
| # MM SWAP |
| mm-convert-swap-to-percpu-locked.patch |
| |
| # MM SLxB |
| mm-enable-slub.patch |
| slub-enable-irqs-for-no-wait.patch |
| slub-disable-SLUB_CPU_PARTIAL.patch |
| mm-Warn-on-memory-allocation-in-non-preemptible-cont.patch |
| mm-Don-t-warn-about-atomic-memory-allocations-during.patch |
| |
| # MM |
| mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch |
| mm-memcontrol-do_not_disable_irq.patch |
| mm_zsmalloc_copy_with_get_cpu_var_and_locking.patch |
| mm-zswap-Use-local-lock-to-protect-per-CPU-data.patch |
| |
| # RADIX TREE |
| # Local lock use case .... |
| radix-tree-use-local-locks.patch |
| |
| # KVM require constant freq TSC (smp function call -> cpufreq) |
| # proper changelog |
| x86-kvm-require-const-tsc-for-rt.patch |
| |
| # SIMPLE WAITQUEUE |
| # Revisit |
| pci-switchtec-Don-t-use-completion-s-wait-queue.patch |
| wait.h-include-atomic.h.patch |
| completion-use-simple-wait-queues.patch |
| |
| # HRTIMERS |
| # Check whether schedule_hrtimeout() could be hard always |
| hrtimer-Allow-raw-wakeups-during-boot.patch |
| |
| # POSIX-CPU-TIMERS |
| posix-timers-thread-posix-cpu-timers-on-rt.patch |
| posix-timers-expiry-lock.patch |
| |
| # SCHEDULER |
| # PUSH IPI? |
| sched-limit-nr-migrate.patch |
| |
| # Combine in series with delay put task |
| sched-mmdrop-delayed.patch |
| |
| # Revisit, still needed. |
| kernel-sched-move-stack-kprobe-clean-up-to-__put_tas.patch |
| |
| # RT bulk - Revisit |
| sched-rt-mutex-wakeup.patch |
| sched-might-sleep-do-not-account-rcu-depth.patch |
| sched-disable-ttwu-queue.patch |
| |
| # SOFTIRQ |
| softirq-Avoid-a-cancel-dead-lock-in-tasklet-handling.patch |
| |
| # A few of those will also just schedule ksoftirqd and schedule at some random |
| # point. They may hold a spinlock_t so it is not always random, recheck all. |
| softirq-preempt-fix-3-re.patch |
| |
| # Post towards end with x86 crap and skip the rest for now |
| softirq-disable-softirq-stacks-for-rt.patch |
| |
| # Rewrite changelog and repost |
| net-core-use-local_bh_disable-in-netif_rx_ni.patch |
| |
| # FUTEX/RTMUTEX |
| rtmutex-futex-prepare-rt.patch |
| futex-requeue-pi-fix.patch |
| futex-Ensure-lock-unlock-symetry-versus-pi_lock-and-.patch |
| |
| # RTMUTEX |
| pid.h-include-atomic.h.patch |
| rtmutex-lock-killable.patch |
| rtmutex-Make-lock_killable-work.patch |
| spinlock-types-separate-raw.patch |
| rtmutex-avoid-include-hell.patch |
| rtmutex_dont_include_rcu.patch |
| rtmutex-Provide-rt_mutex_slowlock_locked.patch |
| rtmutex-export-lockdep-less-version-of-rt_mutex-s-lo.patch |
| rtmutex-add-sleeping-lock-implementation.patch |
| cond-resched-lock-rt-tweak.patch |
| locking-rtmutex-Clean-pi_blocked_on-in-the-error-cas.patch |
| rtmutex-trylock-is-okay-on-RT.patch |
| rtmutex-add-mutex-implementation-based-on-rtmutex.patch |
| rtmutex-add-rwsem-implementation-based-on-rtmutex.patch |
| rtmutex-add-rwlock-implementation-based-on-rtmutex.patch |
| rtmutex-wire-up-RT-s-locking.patch |
| rtmutex-add-ww_mutex-addon-for-mutex-rt.patch |
| # Allow to enable RT-FULL after sleeping spinlocks are wired up |
| # XXX move flush_plug to slowpath's schedule() |
| locking-rt-mutex-fix-deadlock-in-device-mapper-block.patch |
| locking-rt-mutex-Flush-block-plug-on-__down_read.patch |
| ptrace-fix-ptrace-vs-tasklist_lock-race.patch |
| |
| # MIGRATE DISABLE AND PER CPU |
| # Revisit |
| add_migrate_disable.patch |
| sched-migrate_enable-Use-stop_one_cpu_nowait.patch |
| sched-migrate_enable-Use-per-cpu-cpu_stop_work.patch |
| sched-migrate_enable-Remove-__schedule-call.patch |
| ftrace-migrate-disable-tracing.patch |
| futex-workaround-migrate_disable-enable-in-different.patch |
| locking-don-t-check-for-__LINUX_SPINLOCK_TYPES_H-on-.patch |
| |
| # RCU |
| # Talk to Paul, Local locks |
| locking-Make-spinlock_t-and-rwlock_t-a-RCU-section-o.patch |
| rcu-Use-rcuc-threads-on-PREEMPT_RT-as-we-did.patch |
| srcu-replace-local_irqsave-with-a-locallock.patch |
| rcu-enable-rcu_normal_after_boot-by-default-for-RT.patch |
| rcutorture-Avoid-problematic-critical-section-nestin.patch |
| |
| # Drop |
| rt-serial-warn-fix.patch |
| Revert-rt-Improve-the-serial-console-PASS_LIMIT.patch |
| |
| # CPU get light |
| # akpm |
| fs-epoll-make-nesting-accounting-safe-for-rt-kernel.patch |
| mm-vmalloc-use-get-cpu-light.patch |
| block-mq-drop-preempt-disable.patch |
| block-mq-don-t-complete-requests-via-IPI.patch |
| md-raid5-percpu-handling-rt-aware.patch |
| scsi-fcoe-rt-aware.patch |
| sunrpc-make-svc_xprt_do_enqueue-use-get_cpu_light.patch |
| |
| # CPU CHILL |
| rt-introduce-cpu-chill.patch |
| |
| # BLOCK LIVELOCK PREVENTION |
| block-use-cpu-chill.patch |
| |
| # FS LIVELOCK PREVENTION |
| fs-namespace-use-cpu-chill-in-trylock-loops.patch |
| # Revisit |
| net-use-cpu-chill.patch |
| |
| # DEBUGOBJECTS |
| # Post |
| debugobjects-rt.patch |
| |
| # NETWORKING |
| # Revisit |
| skbufhead-raw-lock.patch |
| net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch |
| |
| # irqwork |
| # Revisit |
| irqwork-push_most_work_into_softirq_context.patch |
| time-Properly-initialize-nohz_full_kick_work.patch |
| |
| # crypto drivers |
| # Revisit |
| x86-crypto-reduce-preempt-disabled-regions.patch |
| crypto-Reduce-preempt-disabled-regions-more-algos.patch |
| crypto-limit-more-FPU-enabled-sections.patch |
| crypto-cryptd-add-a-lock-instead-preempt_disable-loc.patch |
| |
| # RANDOM |
| panic-disable-random-on-rt.patch |
| # Check me .... |
| x86-stackprot-no-random-on-rt.patch |
| # Random push into ringbuffer |
| random-make-it-work-on-rt.patch |
| |
| # NET |
| # Revisit |
| upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch |
| |
| # LOCKDEP |
| # Lockdep together with lockdep branch .... |
| lockdep-no-softirq-accounting-on-rt.patch |
| lockdep-selftest-only-do-hardirq-context-test-for-raw-spinlock.patch |
| lockdep-selftest-fix-warnings-due-to-missing-PREEMPT.patch |
| # Fix lockdep selftest - talk to Peter - including lockdep branch |
| lockdep-disable-self-test.patch |
| |
| # I915 |
| # Low prio |
| drmradeoni915_Use_preempt_disableenable_rt()_where_recommended.patch |
| drmi915_Use_local_lockunlock_irq()_in_intel_pipe_update_startend().patch |
| drm-i915-disable-tracing-on-RT.patch |
| drm-i915-skip-DRM_I915_LOW_LEVEL_TRACEPOINTS-with-NO.patch |
| drm-i915-gt-use-a-LOCAL_IRQ_LOCK-in-__timeline_mark_.patch |
| |
| # CGROUPS |
| # Revisit and Post |
| cpuset-Convert-callback_lock-to-raw_spinlock_t.patch |
| |
| ################################################################################ |
| ################################################################################ |
| # Enable X86-64 |
| x86-Enable-RT.patch |
| ################################################################################ |
| ################################################################################ |
| |
| # KMAP/HIGHMEM |
| mm-rt-kmap-atomic-scheduling.patch |
| x86-highmem-add-a-already-used-pte-check.patch |
| arm-highmem-flush-tlb-on-unmap.patch |
| arm-enable-highmem-for-rt.patch |
| # Rewrite as pagefault disabled is upstream splitted already. The problem comes |
| # with the highmem pieces. |
| mm-scatterlist-dont-disable-irqs-on-RT.patch |
| |
| # PREEMPT LAZY |
| preempt-lazy-support.patch |
| x86-preempt-lazy.patch |
| arm-preempt-lazy-support.patch |
| powerpc-preempt-lazy-support.patch |
| arch-arm64-Add-lazy-preempt-support.patch |
| |
| jump-label-rt.patch |
| |
| # Skip until ARM or make it depend on ARM |
| leds-trigger-disable-CPU-trigger-on-RT.patch |
| |
| # DRIVERS SERIAL |
| drivers-tty-fix-omap-lock-crap.patch |
| drivers-tty-pl011-irq-disable-madness.patch |
| |
| # misc ARM |
| arm-include-definition-for-cpumask_t.patch |
| ARM-enable-irq-in-translation-section-permission-fau.patch |
| genirq-update-irq_set_irqchip_state-documentation.patch |
| KVM-arm-arm64-downgrade-preempt_disable-d-region-to-.patch |
| arm64-fpsimd-use-preemp_disable-in-addition-to-local.patch |
| |
| # Those two should vanish soon (not use PIT during bootup) |
| at91_dont_enable_disable_clock.patch |
| clocksource-tclib-allow-higher-clockrates.patch |
| |
| # Other architectures |
| x86-Enable-RT-also-on-32bit.patch |
| ARM-Allow-to-enable-RT.patch |
| ARM64-Allow-to-enable-RT.patch |
| |
| # PowerPC |
| powerpc-pseries-iommu-Use-a-locallock-instead-local_ir.patch |
| powerpc-kvm-Disable-in-kernel-MPIC-emulation-for-PRE.patch |
| power-disable-highmem-on-rt.patch |
| powerpc-stackprotector-work-around-stack-guard-init-.patch |
| POWERPC-Allow-to-enable-RT.patch |
| |
| # MIPS |
| mips-disable-highmem-on-rt.patch |
| |
| # DRIVERS |
| # Postpone, disable |
| connector-cn_proc-Protect-send_msg-with-a-local-lock.patch |
| |
| # Postpone, disable |
| drivers-block-zram-Replace-bit-spinlocks-with-rtmute.patch |
| drivers-zram-Don-t-disable-preemption-in-zcomp_strea.patch |
| squashfs-make-use-of-local-lock-in-multi_cpu-decompr.patch |
| |
| # Generic iowriteN_buffer() function .... |
| tpm_tis-fix-stall-after-iowrite-s.patch |
| |
| # Postpone |
| signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch |
| signal-Prevent-double-free-of-user-struct.patch |
| genirq-disable-irqpoll-on-rt.patch |
| |
| # SYSFS - RT indicator |
| sysfs-realtime-entry.patch |
| |
| # Add RT to version |
| localversion.patch |