Skip to content

Commit ee25c42

Browse files
committed
Merge branch 'refs/heads/bits/210-gpu' into asahi-wip
2 parents 7309e43 + 2006a64 commit ee25c42

File tree

219 files changed

+48235
-144
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

219 files changed

+48235
-144
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,9 @@ modules.order
101101
!.mailmap
102102
!.rustfmt.toml
103103

104+
# XXX: Only for GitHub CI -- do not commit into mainline
105+
!.github
106+
104107
#
105108
# Generated include files
106109
#

Documentation/rust/arch-support.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,9 @@ support corresponds to ``S`` values in the ``MAINTAINERS`` file.
1515
============ ================ ==============================================
1616
Architecture Level of support Constraints
1717
============ ================ ==============================================
18+
``arm`` Maintained ``armv6`` and compatible only.
19+
``arm64`` Maintained None.
20+
``powerpc`` Maintained ``ppc64le`` only.
21+
``riscv`` Maintained ``riscv64`` only.
1822
``x86`` Maintained ``x86_64`` only.
1923
============ ================ ==============================================

Documentation/rust/quick-start.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ and run::
3838

3939
rustup override set $(scripts/min-tool-version.sh rustc)
4040

41+
Please note the ``O=`` option changes the working directory before the build
42+
starts. If you use a separate output directory, you need to run
43+
``rustup override set`` so that it covers the output directory.
44+
4145
Otherwise, fetch a standalone installer or install ``rustup`` from:
4246

4347
https://www.rust-lang.org

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Rust for Linux
2+
3+
The goal of this project is to add support for the Rust language to the Linux kernel. This repository contains the work that will be eventually submitted for review to the LKML.
4+
5+
Feel free to [contribute](https://github.com/Rust-for-Linux/linux/contribute)! To start, take a look at [`Documentation/rust`](https://github.com/Rust-for-Linux/linux/tree/rust/Documentation/rust).
6+
7+
General discussions, announcements, questions, etc. take place on the mailing list at rust-for-linux@vger.kernel.org ([subscribe](mailto:majordomo@vger.kernel.org?body=subscribe%20rust-for-linux), [instructions](http://vger.kernel.org/majordomo-info.html), [archive](https://lore.kernel.org/rust-for-linux/)). For chat, help, quick questions, informal discussion, etc. you may want to join our Zulip at https://rust-for-linux.zulipchat.com ([request an invitation](https://lore.kernel.org/rust-for-linux/CANiq72kW07hWjuc+dyvYH9NxyXoHsQLCtgvtR+8LT-VaoN1J_w@mail.gmail.com/T/)).
8+
9+
All contributors to this effort are understood to have agreed to the Linux kernel development process as explained in the different files under [`Documentation/process`](https://www.kernel.org/doc/html/latest/process/index.html).
10+
11+
<!-- XXX: Only for GitHub -- do not commit into mainline -->

arch/arm/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ config ARM
117117
select MMU_GATHER_RCU_TABLE_FREE if SMP && ARM_LPAE
118118
select HAVE_REGS_AND_STACK_ACCESS_API
119119
select HAVE_RSEQ
120+
select HAVE_RUST if CPU_32v6 || CPU_32v6K
120121
select HAVE_STACKPROTECTOR
121122
select HAVE_SYSCALL_TRACEPOINTS
122123
select HAVE_UID16
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
# CONFIG_LOCALVERSION_AUTO is not set
2+
CONFIG_SYSVIPC=y
3+
CONFIG_NO_HZ=y
4+
CONFIG_HIGH_RES_TIMERS=y
5+
CONFIG_PREEMPT_VOLUNTARY=y
6+
CONFIG_BSD_PROCESS_ACCT=y
7+
CONFIG_BSD_PROCESS_ACCT_V3=y
8+
CONFIG_LOG_BUF_SHIFT=18
9+
CONFIG_CFS_BANDWIDTH=y
10+
CONFIG_RT_GROUP_SCHED=y
11+
CONFIG_CGROUP_FREEZER=y
12+
CONFIG_CGROUP_DEVICE=y
13+
CONFIG_CGROUP_CPUACCT=y
14+
CONFIG_CGROUP_PERF=y
15+
CONFIG_NAMESPACES=y
16+
CONFIG_SCHED_AUTOGROUP=y
17+
CONFIG_RELAY=y
18+
CONFIG_BLK_DEV_INITRD=y
19+
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
20+
CONFIG_KALLSYMS_ALL=y
21+
CONFIG_EMBEDDED=y
22+
# CONFIG_COMPAT_BRK is not set
23+
CONFIG_PROFILING=y
24+
CONFIG_RUST=y
25+
CONFIG_ARCH_MULTI_V6=y
26+
CONFIG_ARCH_BCM=y
27+
CONFIG_ARCH_BCM2835=y
28+
CONFIG_KEXEC=y
29+
CONFIG_CRASH_DUMP=y
30+
CONFIG_CPU_FREQ=y
31+
CONFIG_CPU_FREQ_STAT=y
32+
CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y
33+
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
34+
CONFIG_CPU_FREQ_GOV_USERSPACE=y
35+
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
36+
CONFIG_CPUFREQ_DT=y
37+
CONFIG_ARM_RASPBERRYPI_CPUFREQ=y
38+
CONFIG_VFP=y
39+
# CONFIG_SUSPEND is not set
40+
CONFIG_PM=y
41+
CONFIG_RASPBERRYPI_FIRMWARE=y
42+
CONFIG_JUMP_LABEL=y
43+
CONFIG_MODULES=y
44+
CONFIG_MODULE_UNLOAD=y
45+
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
46+
CONFIG_KSM=y
47+
CONFIG_CLEANCACHE=y
48+
CONFIG_CMA=y
49+
CONFIG_NET=y
50+
CONFIG_PACKET=y
51+
CONFIG_UNIX=y
52+
CONFIG_INET=y
53+
CONFIG_IP_PNP=y
54+
CONFIG_IP_PNP_DHCP=y
55+
CONFIG_NETWORK_SECMARK=y
56+
CONFIG_NETFILTER=y
57+
CONFIG_BT=y
58+
CONFIG_BT_HCIUART=m
59+
CONFIG_BT_HCIUART_BCM=y
60+
CONFIG_CFG80211=y
61+
CONFIG_MAC80211=y
62+
CONFIG_DEVTMPFS=y
63+
CONFIG_DEVTMPFS_MOUNT=y
64+
# CONFIG_STANDALONE is not set
65+
CONFIG_SCSI=y
66+
CONFIG_BLK_DEV_SD=y
67+
CONFIG_SCSI_CONSTANTS=y
68+
CONFIG_SCSI_SCAN_ASYNC=y
69+
CONFIG_NETDEVICES=y
70+
CONFIG_BCMGENET=y
71+
CONFIG_USB_LAN78XX=y
72+
CONFIG_USB_USBNET=y
73+
CONFIG_USB_NET_SMSC95XX=y
74+
CONFIG_BRCMFMAC=m
75+
CONFIG_ZD1211RW=y
76+
CONFIG_INPUT_EVDEV=y
77+
# CONFIG_LEGACY_PTYS is not set
78+
CONFIG_SERIAL_8250=y
79+
CONFIG_SERIAL_8250_CONSOLE=y
80+
CONFIG_SERIAL_8250_EXTENDED=y
81+
CONFIG_SERIAL_8250_SHARE_IRQ=y
82+
CONFIG_SERIAL_8250_BCM2835AUX=y
83+
CONFIG_SERIAL_AMBA_PL011=y
84+
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
85+
CONFIG_SERIAL_DEV_BUS=y
86+
CONFIG_TTY_PRINTK=y
87+
CONFIG_HW_RANDOM=y
88+
# CONFIG_HW_RANDOM_BCM2835 is not set
89+
CONFIG_HW_RANDOM_BCM2835_RUST=y
90+
CONFIG_HW_RANDOM_IPROC_RNG200=m
91+
CONFIG_I2C_CHARDEV=y
92+
CONFIG_I2C_BCM2835=y
93+
CONFIG_SPI=y
94+
CONFIG_SPI_BCM2835=y
95+
CONFIG_SPI_BCM2835AUX=y
96+
CONFIG_GPIO_SYSFS=y
97+
CONFIG_SENSORS_RASPBERRYPI_HWMON=m
98+
CONFIG_THERMAL=y
99+
CONFIG_BCM2711_THERMAL=y
100+
CONFIG_BCM2835_THERMAL=y
101+
CONFIG_WATCHDOG=y
102+
CONFIG_BCM2835_WDT=y
103+
CONFIG_MFD_SYSCON=y
104+
CONFIG_REGULATOR=y
105+
CONFIG_REGULATOR_FIXED_VOLTAGE=y
106+
CONFIG_REGULATOR_GPIO=y
107+
CONFIG_MEDIA_SUPPORT=y
108+
CONFIG_DRM=y
109+
CONFIG_DRM_VC4=y
110+
CONFIG_FB_SIMPLE=y
111+
CONFIG_FRAMEBUFFER_CONSOLE=y
112+
CONFIG_SOUND=y
113+
CONFIG_SND=y
114+
CONFIG_SND_SOC=y
115+
CONFIG_SND_BCM2835_SOC_I2S=y
116+
CONFIG_USB=y
117+
CONFIG_USB_OTG=y
118+
CONFIG_USB_STORAGE=y
119+
CONFIG_USB_DWC2=y
120+
CONFIG_NOP_USB_XCEIV=y
121+
CONFIG_USB_GADGET=y
122+
CONFIG_USB_ETH=m
123+
CONFIG_USB_ETH_EEM=y
124+
CONFIG_USB_G_SERIAL=m
125+
CONFIG_MMC=y
126+
CONFIG_MMC_SDHCI=y
127+
CONFIG_MMC_SDHCI_PLTFM=y
128+
CONFIG_MMC_SDHCI_IPROC=y
129+
CONFIG_MMC_BCM2835=y
130+
CONFIG_NEW_LEDS=y
131+
CONFIG_LEDS_CLASS=y
132+
CONFIG_LEDS_GPIO=y
133+
CONFIG_LEDS_TRIGGERS=y
134+
CONFIG_LEDS_TRIGGER_TIMER=y
135+
CONFIG_LEDS_TRIGGER_ONESHOT=y
136+
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
137+
CONFIG_LEDS_TRIGGER_CPU=y
138+
CONFIG_LEDS_TRIGGER_GPIO=y
139+
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
140+
CONFIG_LEDS_TRIGGER_TRANSIENT=y
141+
CONFIG_LEDS_TRIGGER_CAMERA=y
142+
CONFIG_DMADEVICES=y
143+
CONFIG_DMA_BCM2835=y
144+
CONFIG_STAGING=y
145+
CONFIG_SND_BCM2835=m
146+
CONFIG_VIDEO_BCM2835=m
147+
CONFIG_CLK_RASPBERRYPI=y
148+
CONFIG_MAILBOX=y
149+
CONFIG_BCM2835_MBOX=y
150+
# CONFIG_IOMMU_SUPPORT is not set
151+
CONFIG_RASPBERRYPI_POWER=y
152+
CONFIG_PWM=y
153+
CONFIG_PWM_BCM2835=y
154+
CONFIG_EXT2_FS=y
155+
CONFIG_EXT2_FS_XATTR=y
156+
CONFIG_EXT2_FS_POSIX_ACL=y
157+
CONFIG_EXT3_FS=y
158+
CONFIG_EXT3_FS_POSIX_ACL=y
159+
CONFIG_FANOTIFY=y
160+
CONFIG_MSDOS_FS=y
161+
CONFIG_VFAT_FS=y
162+
CONFIG_TMPFS=y
163+
CONFIG_TMPFS_POSIX_ACL=y
164+
# CONFIG_MISC_FILESYSTEMS is not set
165+
CONFIG_NFS_FS=y
166+
CONFIG_ROOT_NFS=y
167+
CONFIG_NFSD=y
168+
CONFIG_NLS_CODEPAGE_437=y
169+
CONFIG_NLS_ASCII=y
170+
CONFIG_NLS_ISO8859_1=y
171+
CONFIG_NLS_UTF8=y
172+
# CONFIG_XZ_DEC_ARM is not set
173+
# CONFIG_XZ_DEC_ARMTHUMB is not set
174+
CONFIG_DMA_CMA=y
175+
CONFIG_CMA_SIZE_MBYTES=32
176+
CONFIG_PRINTK_TIME=y
177+
CONFIG_BOOT_PRINTK_DELAY=y
178+
CONFIG_DYNAMIC_DEBUG=y
179+
CONFIG_DEBUG_INFO=y
180+
CONFIG_DEBUG_FS=y
181+
CONFIG_KGDB=y
182+
CONFIG_KGDB_KDB=y
183+
CONFIG_DEBUG_MEMORY_INIT=y
184+
CONFIG_FUNCTION_PROFILER=y
185+
CONFIG_STACK_TRACER=y
186+
CONFIG_SCHED_TRACER=y
187+
CONFIG_SAMPLES=y
188+
CONFIG_SAMPLES_RUST=y
189+
CONFIG_SAMPLE_RUST_MINIMAL=m
190+
CONFIG_SAMPLE_RUST_PRINT=m
191+
CONFIG_SAMPLE_RUST_MODULE_PARAMETERS=m
192+
CONFIG_SAMPLE_RUST_SYNC=m
193+
CONFIG_SAMPLE_RUST_CHRDEV=m
194+
CONFIG_SAMPLE_RUST_MISCDEV=m
195+
CONFIG_SAMPLE_RUST_STACK_PROBING=m
196+
CONFIG_SAMPLE_RUST_SEMAPHORE=m
197+
CONFIG_SAMPLE_RUST_SEMAPHORE_C=m
198+
CONFIG_SAMPLE_RUST_RANDOM=m
199+
CONFIG_STRICT_DEVMEM=y
200+
CONFIG_TEST_KSTRTOX=y

arch/arm64/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ config ARM64
204204
select HAVE_FUNCTION_ARG_ACCESS_API
205205
select MMU_GATHER_RCU_TABLE_FREE
206206
select HAVE_RSEQ
207+
select HAVE_RUST
207208
select HAVE_STACKPROTECTOR
208209
select HAVE_SYSCALL_TRACEPOINTS
209210
select HAVE_KPROBES

arch/arm64/Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,10 @@ branch-prot-flags-$(CONFIG_CC_HAS_SIGN_RETURN_ADDRESS) := -msign-return-address=
7474
# performance impact has been observed.
7575
ifeq ($(CONFIG_ARM64_BTI_KERNEL),y)
7676
branch-prot-flags-$(CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI) := -mbranch-protection=pac-ret+leaf+bti
77+
branch-prot-rust-flags-y := -Z branch-protection=pac-ret,leaf,bti
7778
else
7879
branch-prot-flags-$(CONFIG_CC_HAS_BRANCH_PROT_PAC_RET) := -mbranch-protection=pac-ret+leaf
80+
branch-prot-rust-flags-y := -Z branch-protection=pac-ret,leaf
7981
endif
8082
# -march=armv8.3-a enables the non-nops instructions for PAC, to avoid the
8183
# compiler to generate them and consequently to break the single image contract
@@ -87,6 +89,7 @@ endif
8789
endif
8890

8991
KBUILD_CFLAGS += $(branch-prot-flags-y)
92+
KBUILD_RUSTFLAGS += $(branch-prot-rust-flags-y)
9093

9194
ifeq ($(CONFIG_AS_HAS_ARMV8_4), y)
9295
# make sure to pass the newest target architecture to -march.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
CONFIG_PCI_HOST_GENERIC=y
2+
3+
CONFIG_SERIAL_AMBA_PL011=y
4+
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
5+
6+
CONFIG_GPIOLIB=y
7+
CONFIG_GPIO_PL061=y
8+
9+
CONFIG_KEYBOARD_GPIO=y
10+
11+
CONFIG_CMDLINE="console=ttyAMA0 nokaslr rdinit=/sbin/init"

arch/arm64/kernel/traps.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -858,6 +858,7 @@ const char *esr_get_class_string(unsigned long esr)
858858
{
859859
return esr_class_str[ESR_ELx_EC(esr)];
860860
}
861+
EXPORT_SYMBOL_GPL(esr_get_class_string);
861862

862863
/*
863864
* bad_el0_sync handles unexpected, but potentially recoverable synchronous

0 commit comments

Comments
 (0)