Linux mainline fork with MSM8998 patches | https://mainline.space | Currently supported devices: OnePlus 5/5T, Xiaomi Mi 6, F(x)tec Pro¹ (2019 QX1000 model) & Sony Xperia XZ Premium (UNTESTED!)
Find a file
Arnd Bergmann 1bb2fd3880 Apple M1 SoC platform bring-up
This series brings up initial support for the Apple M1 SoC, used in the
 2020 Mac Mini, MacBook Pro, and MacBook Air models.
 
 The following features are supported in this initial port:
 
 - UART (samsung-style) with earlycon support
 - Interrupts, including affinity and IPIs (Apple Interrupt Controller)
 - SMP (through standard spin-table support)
 - simplefb-based framebuffer
 - Devicetree for the Mac Mini (should work for the others too at this
   stage)
 
 == Merge notes ==
 
 This tag is based on v5.12-rc3 and includes the following two
 dependencies merged in:
 
 * Tip of arm64/for-next/fiq: 3889ba7010
   This is a hard (build) dependency that adds support for FIQ
   interrupts, which is required for this SoC and the included AIC
   irqchip driver. It is already merged in the arm64 tree.
 
 * From tty/tty-next: 71b25f4df9
   This commit includes the Samsung UART changes that have already
   been merged into the tty tree. It is nominally a soft dependency,
   but if this series is merged first it would trigger devicetree
   validation failures as the DT included in it depends on bindings
   introduced in the tty tree.
 
   There was a merge conflict here. It has been resolved the same
   way gregkh resolved it in a later tty merge, and both tty-next
   and torvalds/master merge cleanly with this series at this time.
 
 This series additionally depends on the nVHE changes in [1] to boot,
 but we are letting those get merged through arm64.
 
 [1] https://lore.kernel.org/linux-arm-kernel/20210408131010.1109027-1-maz@kernel.org/T/#u
 
 == Testing notes ==
 
 This has been tested on an Apple M1 Mac Mini booting to a framebuffer
 and serial console, with SMP and KASLR, with an arm64 defconfig
 (+ CONFIG_FB_SIMPLE for the fb). In addition, the AIC driver now supports
 running in EL1, tested in UP mode only.
 
 == About the hardware ==
 
 These machines officially support booting unsigned/user-provided
 XNU-like kernels, with a very different boot protocol and devicetree
 format. We are developing an initial bootloader, m1n1 [1], to take care
 of as many hardware peculiarities as possible and present a standard
 Linux arm64 boot protocol and device tree. In the future, I expect that
 production setups will add U-Boot and perhaps GRUB into the boot chain,
 to make the boot process similar to other ARM64 platforms.
 
 The machines expose their debug UART over USB Type C, triggered with
 vendor-specific USB-PD commands. Currently, the easiest way to get a
 serial console on these machines is to use a second M1 box and a simple
 USB C cable [2]. You can also build a DIY interface using an Arduino, a
 FUSB302 chip or board, and a 1.2V UART-TTL adapter [3]. In the coming
 weeks we will be designing an open hardware project to provide
 serial/debug connectivity to these machines (and, hopefully, also
 support other UART-over-Type C setups from other vendors). Please
 contact me privately if you are interested in getting an early prototype
 version of one of these devices.
 
 We also have WIP/not merged yet support for loading kernels and
 interacting via dwc3 usb-gadget, which works with a standard C-C or C-A
 cable and any Linux host.
 
 A quickstart guide to booting Linux kernels on these machines is
 available at [4], and we are documenting the hardware at [5].
 
 [1] https://github.com/AsahiLinux/m1n1/
 [2] https://github.com/AsahiLinux/macvdmtool/
 [3] https://github.com/AsahiLinux/vdmtool/
 [4] https://github.com/AsahiLinux/docs/wiki/Developer-Quickstart
 [5] https://github.com/AsahiLinux/docs/wiki
 
 == Project Blurb ==
 
 Asahi Linux is an open community project dedicated to developing and
 maintaining mainline support for Apple Silicon on Linux. Feel free to
 drop by #asahi and #asahi-dev on freenode to chat with us, or check
 our website for more information on the project:
 
 https://asahilinux.org/
 
 Signed-off-by: Hector Martin <marcan@marcan.st>
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQSU7I7lUkZru3Mt15+lhN6SrnTN2AUCYG8gfgAKCRClhN6SrnTN
 2NrMAQCZ1rSa4Gmq8QTmxIWBu22EyEega60gXpQK2tJk6IWrSQEAnQabC5MoKM1f
 V57IgEUT63oJR5tkS+YI7n+sP5javgw=
 =yA7U
 -----END PGP SIGNATURE-----

Merge tag 'm1-soc-bringup-v5' of https://github.com/AsahiLinux/linux into arm/apple-m1

Apple M1 SoC platform bring-up

This series brings up initial support for the Apple M1 SoC, used in the
2020 Mac Mini, MacBook Pro, and MacBook Air models.

The following features are supported in this initial port:

- UART (samsung-style) with earlycon support
- Interrupts, including affinity and IPIs (Apple Interrupt Controller)
- SMP (through standard spin-table support)
- simplefb-based framebuffer
- Devicetree for the Mac Mini (should work for the others too at this
  stage)

== Merge notes ==

This tag is based on v5.12-rc3 and includes the following two
dependencies merged in:

* Tip of arm64/for-next/fiq: 3889ba7010
  This is a hard (build) dependency that adds support for FIQ
  interrupts, which is required for this SoC and the included AIC
  irqchip driver. It is already merged in the arm64 tree.

* From tty/tty-next: 71b25f4df9
  This commit includes the Samsung UART changes that have already
  been merged into the tty tree. It is nominally a soft dependency,
  but if this series is merged first it would trigger devicetree
  validation failures as the DT included in it depends on bindings
  introduced in the tty tree.

  There was a merge conflict here. It has been resolved the same
  way gregkh resolved it in a later tty merge, and both tty-next
  and torvalds/master merge cleanly with this series at this time.

This series additionally depends on the nVHE changes in [1] to boot,
but we are letting those get merged through arm64.

[1] https://lore.kernel.org/linux-arm-kernel/20210408131010.1109027-1-maz@kernel.org/T/#u

== Testing notes ==

This has been tested on an Apple M1 Mac Mini booting to a framebuffer
and serial console, with SMP and KASLR, with an arm64 defconfig
(+ CONFIG_FB_SIMPLE for the fb). In addition, the AIC driver now supports
running in EL1, tested in UP mode only.

== About the hardware ==

These machines officially support booting unsigned/user-provided
XNU-like kernels, with a very different boot protocol and devicetree
format. We are developing an initial bootloader, m1n1 [1], to take care
of as many hardware peculiarities as possible and present a standard
Linux arm64 boot protocol and device tree. In the future, I expect that
production setups will add U-Boot and perhaps GRUB into the boot chain,
to make the boot process similar to other ARM64 platforms.

The machines expose their debug UART over USB Type C, triggered with
vendor-specific USB-PD commands. Currently, the easiest way to get a
serial console on these machines is to use a second M1 box and a simple
USB C cable [2]. You can also build a DIY interface using an Arduino, a
FUSB302 chip or board, and a 1.2V UART-TTL adapter [3]. In the coming
weeks we will be designing an open hardware project to provide
serial/debug connectivity to these machines (and, hopefully, also
support other UART-over-Type C setups from other vendors). Please
contact me privately if you are interested in getting an early prototype
version of one of these devices.

We also have WIP/not merged yet support for loading kernels and
interacting via dwc3 usb-gadget, which works with a standard C-C or C-A
cable and any Linux host.

A quickstart guide to booting Linux kernels on these machines is
available at [4], and we are documenting the hardware at [5].

[1] https://github.com/AsahiLinux/m1n1/
[2] https://github.com/AsahiLinux/macvdmtool/
[3] https://github.com/AsahiLinux/vdmtool/
[4] https://github.com/AsahiLinux/docs/wiki/Developer-Quickstart
[5] https://github.com/AsahiLinux/docs/wiki

== Project Blurb ==

Asahi Linux is an open community project dedicated to developing and
maintaining mainline support for Apple Silicon on Linux. Feel free to
drop by #asahi and #asahi-dev on freenode to chat with us, or check
our website for more information on the project:

https://asahilinux.org/

Signed-off-by: Hector Martin <marcan@marcan.st>

* tag 'm1-soc-bringup-v5' of https://github.com/AsahiLinux/linux:
  arm64: apple: Add initial Apple Mac mini (M1, 2020) devicetree
  dt-bindings: display: Add apple,simple-framebuffer
  arm64: Kconfig: Introduce CONFIG_ARCH_APPLE
  irqchip/apple-aic: Add support for the Apple Interrupt Controller
  dt-bindings: interrupt-controller: Add DT bindings for apple-aic
  arm64: Move ICH_ sysreg bits from arm-gic-v3.h to sysreg.h
  of/address: Add infrastructure to declare MMIO as non-posted
  asm-generic/io.h: implement pci_remap_cfgspace using ioremap_np
  arm64: Implement ioremap_np() to map MMIO as nGnRnE
  docs: driver-api: device-io: Document ioremap() variants & access funcs
  docs: driver-api: device-io: Document I/O access functions
  asm-generic/io.h:  Add a non-posted variant of ioremap()
  arm64: arch_timer: Implement support for interrupt-names
  dt-bindings: timer: arm,arch_timer: Add interrupt-names support
  arm64: cputype: Add CPU implementor & types for the Apple M1 cores
  dt-bindings: arm: cpus: Add apple,firestorm & icestorm compatibles
  dt-bindings: arm: apple: Add bindings for Apple ARM platforms
  dt-bindings: vendor-prefixes: Add apple prefix

Link: https://lore.kernel.org/r/bdb18e9f-fcd7-1e31-2224-19c0e5090706@marcan.st
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2021-04-08 21:49:34 +02:00
arch arm64: apple: Add initial Apple Mac mini (M1, 2020) devicetree 2021-04-08 20:18:41 +09:00
block block: Discard page cache of zone reset target range 2021-03-11 11:49:25 -07:00
certs certs: Replace K{U,G}IDT_INIT() with GLOBAL_ROOT_{U,G}ID 2021-01-21 16:16:10 +00:00
crypto crypto: mips/poly1305 - enable for all MIPS processors 2021-03-08 11:52:17 +01:00
Documentation dt-bindings: display: Add apple,simple-framebuffer 2021-04-08 20:18:41 +09:00
drivers irqchip/apple-aic: Add support for the Apple Interrupt Controller 2021-04-08 20:18:41 +09:00
fs Merge branch 'akpm' (patches from Andrew) 2021-03-14 12:23:34 -07:00
include irqchip/apple-aic: Add support for the Apple Interrupt Controller 2021-04-08 20:18:41 +09:00
init Merge branch 'akpm' (patches from Andrew) 2021-03-14 12:23:34 -07:00
ipc fs: make helpers idmap mount aware 2021-01-24 14:27:20 +01:00
kernel prctl: fix PR_SET_MM_AUXV kernel stack leak 2021-03-14 14:33:27 -07:00
lib asm-generic/io.h: Add a non-posted variant of ioremap() 2021-04-08 20:18:38 +09:00
LICENSES LICENSES: Add the CC-BY-4.0 license 2020-12-08 10:33:27 -07:00
mm Merge branch 'akpm' (patches from Andrew) 2021-03-14 12:23:34 -07:00
net Merge commit '71b25f4df9' from tty/tty-next 2021-04-08 19:17:33 +09:00
samples Merge git://git.kernel.org:/pub/scm/linux/kernel/git/netdev/net 2021-03-09 17:15:56 -08:00
scripts kbuild: fix ld-version.sh to not be affected by locale 2021-03-13 11:12:13 +09:00
security Revert 95ebabde38 ("capabilities: Don't allow writing ambiguous v3 file capabilities") 2021-03-12 15:27:14 -06:00
sound Merge commit '71b25f4df9' from tty/tty-next 2021-04-08 19:17:33 +09:00
tools A single objtool fix to handle the PUSHF/POPF validation correctly for the 2021-03-14 13:15:55 -07:00
usr Kbuild updates for v5.12 2021-02-25 10:17:31 -08:00
virt KVM: x86/mmu: Consider the hva in mmu_notifier retry 2021-02-22 13:16:53 -05:00
.clang-format cxl for 5.12 2021-02-24 09:38:36 -08:00
.cocciconfig scripts: add Linux .cocciconfig for coccinelle 2016-07-22 12:13:39 +02:00
.get_maintainer.ignore Opt out of scripts/get_maintainer.pl 2019-05-16 10:53:40 -07:00
.gitattributes .gitattributes: use 'dts' diff driver for dts files 2019-12-04 19:44:11 -08:00
.gitignore clang-lto series for v5.12-rc1 2021-02-23 09:28:51 -08:00
.mailmap treewide: Miguel has moved 2021-02-26 09:41:03 -08:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS treewide: Miguel has moved 2021-02-26 09:41:03 -08:00
Kbuild kbuild: rename hostprogs-y/always to hostprogs/always-y 2020-02-04 01:53:07 +09:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS arm64: apple: Add initial Apple Mac mini (M1, 2020) devicetree 2021-04-08 20:18:41 +09:00
Makefile Linux 5.12-rc3 2021-03-14 14:41:02 -07:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00

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.