Go to file
Tiezhu Yang 559ae71cef LoongArch: Add ORC stack unwinder support
commit cb8a2ef0848ca80d67d6d56e2df757cfdf6b3355 upstream.

The kernel CONFIG_UNWINDER_ORC option enables the ORC unwinder, which is
similar in concept to a DWARF unwinder. The difference is that the format
of the ORC data is much simpler than DWARF, which in turn allows the ORC
unwinder to be much simpler and faster.

The ORC data consists of unwind tables which are generated by objtool.
After analyzing all the code paths of a .o file, it determines information
about the stack state at each instruction address in the file and outputs
that information to the .orc_unwind and .orc_unwind_ip sections.

The per-object ORC sections are combined at link time and are sorted and
post-processed at boot time. The unwinder uses the resulting data to
correlate instruction addresses with their stack states at run time.

Most of the logic are similar with x86, in order to get ra info before ra
is saved into stack, add ra_reg and ra_offset into orc_entry. At the same
time, modify some arch-specific code to silence the objtool warnings.

Co-developed-by: Jinyang He <hejinyang@loongson.cn>
Signed-off-by: Jinyang He <hejinyang@loongson.cn>
Co-developed-by: Youling Tang <tangyouling@loongson.cn>
Signed-off-by: Youling Tang <tangyouling@loongson.cn>
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2024-11-12 16:59:49 +08:00
Documentation LoongArch: KVM: Add PV steal time support in guest side 2024-11-06 19:36:38 +08:00
LICENSES LICENSES: Add the copyleft-next-0.3.1 license 2022-11-08 15:44:01 +01:00
arch LoongArch: Add ORC stack unwinder support 2024-11-12 16:59:49 +08:00
block rue/io: fix child blkcg of hier buffered write can not exceed 2MB 2024-10-23 14:12:52 +08:00
certs certs: Reference revocation list for all keyrings 2023-08-17 20:12:41 +00:00
crypto crypto: jitter - set default OSR to 3 2024-10-16 16:00:24 +08:00
dist Merge branch 'haisu/master-tryrue-20240905-merge-honglin' into 'master' (merge request !197) 2024-09-29 01:56:56 +00:00
drivers LoongArch: add iommu support 2024-11-06 19:40:31 +08:00
fs Merge linux 6.6.57 2024-10-21 14:40:59 +08:00
include LoongArch: Add ORC stack unwinder support 2024-11-12 16:59:49 +08:00
init Merge linux 6.6.48 2024-09-29 16:01:50 +08:00
io_uring io_uring: check if we need to reschedule during overflow flush 2024-10-17 15:24:18 +02:00
ipc sysctl: treewide: drop unused argument ctl_table_root::set_ownership(table) 2024-08-11 12:47:13 +02:00
kernel crashkernel: auto adjust crashkernel min size to 800MB for KASAN 2024-10-22 20:09:22 +08:00
lib Merge linux 6.6.57 2024-10-21 14:40:59 +08:00
mm Merge linux 6.6.57 2024-10-21 14:40:59 +08:00
net Merge linux 6.6.57 2024-10-21 14:40:59 +08:00
rust rust: sync: require `T: Sync` for `LockedBy::access` 2024-10-10 11:57:44 +02:00
samples samples/bpf: Fix compilation errors with cf-protection option 2024-10-04 16:29:19 +02:00
scripts LoongArch: Add ORC stack unwinder support 2024-11-12 16:59:49 +08:00
security Merge linux 6.6.55 2024-10-11 18:06:09 +08:00
sound Merge linux 6.6.57 2024-10-21 14:40:59 +08:00
tools objtool: Check local label in read_unwind_hints() 2024-11-12 16:59:46 +08:00
usr initramfs: Encode dependency on KBUILD_BUILD_TIMESTAMP 2023-06-06 17:54:49 +09:00
virt KVM: Discard zero mask with function kvm_dirty_ring_reset 2024-11-06 19:36:39 +08:00
.clang-format iommu: Add for_each_group_device() 2023-05-23 08:15:51 +02:00
.cocciconfig
.get_maintainer.ignore get_maintainer: add Alan to .get_maintainer.ignore 2022-08-20 15:17:44 -07:00
.gitattributes dist: initial support 2023-12-12 15:56:34 +08:00
.gitignore Merge branch '6.6.54' 2024-10-10 21:47:18 +08:00
.gitmodules drivers/thirdparty: put release-drivers in tree 2024-08-27 17:10:54 +08:00
.mailmap 20 hotfixes. 12 are cc:stable and the remainder address post-6.5 issues 2023-10-24 09:52:16 -10:00
.rustfmt.toml rust: add `.rustfmt.toml` 2022-09-28 09:02:20 +02:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS USB: Remove Wireless USB and UWB documentation 2023-08-09 14:17:32 +02:00
Kbuild Kbuild updates for v6.1 2022-10-10 12:00:45 -07:00
Kconfig kconfig: Fix duplicate "Tencent Kernel Features" menu config 2024-06-24 20:23:33 +08:00
MAINTAINERS LoongArch: KVM: Add KVM hypercalls documentation for LoongArch 2024-11-06 19:36:40 +08:00
Makefile Merge linux 6.6.57 2024-10-21 14:40:59 +08:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00
config-readme Makefile, dist: add "make tencentconfig" support 2024-03-04 13:25:26 +08:00

README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.