Message ID | 20210215121713.57687-1-marcan@marcan.st (mailing list archive) |
---|---|
Headers | show |
Series | Apple M1 SoC platform bring-up | expand |
On Mon, Feb 15, 2021 at 1:16 PM Hector Martin <marcan@marcan.st> wrote: > > 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) I am essentially happy with the state of this series, the comments I had in v1 by email and IRC are all addressed, but of course with the timing during the merge window, it is not going to be in v5.12. (adding maintainers for the serial/irqchip/clocksource drivers and arch/arm64 to cc) I would suggest merging it together as a series through the soc tree for v5.13, once each patch has been reviewed by the respective subsystem maintainers, with possible add-on patches on the same branch for additional drivers that may become ready during the 5.12-rc cycle. After the initial merge, driver patches will of course go through subsystem trees as normal. Let me know if that works for everyone. Arnd
On Mon, Feb 15, 2021 at 01:57:39PM +0100, Arnd Bergmann wrote: > On Mon, Feb 15, 2021 at 1:16 PM Hector Martin <marcan@marcan.st> wrote: > > > > 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) > > I am essentially happy with the state of this series, the comments I had > in v1 by email and IRC are all addressed, but of course with the timing > during the merge window, it is not going to be in v5.12. > > (adding maintainers for the serial/irqchip/clocksource drivers and > arch/arm64 to cc) > > I would suggest merging it together as a series through the soc tree for > v5.13, once each patch has been reviewed by the respective subsystem > maintainers, with possible add-on patches on the same branch for > additional drivers that may become ready during the 5.12-rc cycle. > After the initial merge, driver patches will of course go through subsystem > trees as normal. > > Let me know if that works for everyone. Sure, as long as the maintainers get to see the patches, I don't think I've seen the serial ones at all...
On 15/02/2021 22.22, gregkh wrote: > On Mon, Feb 15, 2021 at 01:57:39PM +0100, Arnd Bergmann wrote: >> (adding maintainers for the serial/irqchip/clocksource drivers and >> arch/arm64 to cc) >> >> I would suggest merging it together as a series through the soc tree for >> v5.13, once each patch has been reviewed by the respective subsystem >> maintainers, with possible add-on patches on the same branch for >> additional drivers that may become ready during the 5.12-rc cycle. >> After the initial merge, driver patches will of course go through subsystem >> trees as normal. >> >> Let me know if that works for everyone. > > Sure, as long as the maintainers get to see the patches, I don't think > I've seen the serial ones at all... Sorry, I figured Krzysztof would take a look at it first and I didn't want to spam too much. I'm still getting used to figuring out who to CC... Do you want to take a look at v2, or wait for v3?
On Tue, Feb 16, 2021 at 12:57:27AM +0900, Hector Martin wrote: > On 15/02/2021 22.22, gregkh wrote: > > On Mon, Feb 15, 2021 at 01:57:39PM +0100, Arnd Bergmann wrote: > > > (adding maintainers for the serial/irqchip/clocksource drivers and > > > arch/arm64 to cc) > > > > > > I would suggest merging it together as a series through the soc tree for > > > v5.13, once each patch has been reviewed by the respective subsystem > > > maintainers, with possible add-on patches on the same branch for > > > additional drivers that may become ready during the 5.12-rc cycle. > > > After the initial merge, driver patches will of course go through subsystem > > > trees as normal. > > > > > > Let me know if that works for everyone. > > > > Sure, as long as the maintainers get to see the patches, I don't think > > I've seen the serial ones at all... > > Sorry, I figured Krzysztof would take a look at it first and I didn't want > to spam too much. I'm still getting used to figuring out who to CC... scripts/get_maintainer.pl is your friend. > Do you want to take a look at v2, or wait for v3? v3 is fine, I can't do anything until after 5.12-rc1 is out anyway. thanks, greg k-h
On 16/02/2021 01.12, gregkh wrote: > On Tue, Feb 16, 2021 at 12:57:27AM +0900, Hector Martin wrote: >> On 15/02/2021 22.22, gregkh wrote: >>> On Mon, Feb 15, 2021 at 01:57:39PM +0100, Arnd Bergmann wrote: >>>> (adding maintainers for the serial/irqchip/clocksource drivers and >>>> arch/arm64 to cc) >>>> >>>> I would suggest merging it together as a series through the soc tree for >>>> v5.13, once each patch has been reviewed by the respective subsystem >>>> maintainers, with possible add-on patches on the same branch for >>>> additional drivers that may become ready during the 5.12-rc cycle. >>>> After the initial merge, driver patches will of course go through subsystem >>>> trees as normal. >>>> >>>> Let me know if that works for everyone. >>> >>> Sure, as long as the maintainers get to see the patches, I don't think >>> I've seen the serial ones at all... >> >> Sorry, I figured Krzysztof would take a look at it first and I didn't want >> to spam too much. I'm still getting used to figuring out who to CC... > > scripts/get_maintainer.pl is your friend. It's the additional step of figuring out who to include from get_maintainer.pl output, and whether any subsetting is warranted at all, that I'm finding less well documented... :-) (In particular for a bring-up series such as this one, where most people are only concerned with a few patches... but maybe I'm just overthinking things) >> Do you want to take a look at v2, or wait for v3? > > v3 is fine, I can't do anything until after 5.12-rc1 is out anyway. Got it, thanks!
On Tue, Feb 16, 2021 at 01:54:25AM +0900, Hector Martin wrote: > On 16/02/2021 01.12, gregkh wrote: > > On Tue, Feb 16, 2021 at 12:57:27AM +0900, Hector Martin wrote: > > > On 15/02/2021 22.22, gregkh wrote: > > > > On Mon, Feb 15, 2021 at 01:57:39PM +0100, Arnd Bergmann wrote: > > > > > (adding maintainers for the serial/irqchip/clocksource drivers and > > > > > arch/arm64 to cc) > > > > > > > > > > I would suggest merging it together as a series through the soc tree for > > > > > v5.13, once each patch has been reviewed by the respective subsystem > > > > > maintainers, with possible add-on patches on the same branch for > > > > > additional drivers that may become ready during the 5.12-rc cycle. > > > > > After the initial merge, driver patches will of course go through subsystem > > > > > trees as normal. > > > > > > > > > > Let me know if that works for everyone. > > > > > > > > Sure, as long as the maintainers get to see the patches, I don't think > > > > I've seen the serial ones at all... > > > > > > Sorry, I figured Krzysztof would take a look at it first and I didn't want > > > to spam too much. I'm still getting used to figuring out who to CC... > > > > scripts/get_maintainer.pl is your friend. > > It's the additional step of figuring out who to include from > get_maintainer.pl output, and whether any subsetting is warranted at all, > that I'm finding less well documented... :-) > > (In particular for a bring-up series such as this one, where most people are > only concerned with a few patches... but maybe I'm just overthinking things) For bigger patchsets, you should combine get_maintainer.pl with sending emails so individual patches will go to all role-based entries from get_maintainer.pl and to all mailing lists. You can (and sometimes even worth to) skip proposals based on git-history. Then the cover letter which should go to everyone... or most of people and linked from individual patches. For example the easiest I think: 1. Put all folks and lists as "Cc:" in cover letter. 2. Send everything: git send-email --cc-cmd "scripts/get_maintainer.pl --no-git --no-roles --no-rolestats" --to linux-kernel@vger.kernel.org 0* Optionally you could add --no-git-fallback to get_maintainer if it proposes some irrelevant addresses. Other way is to send first cover letter and then reference it via in-reply-to: 1. To get everyone for cover letter: scripts/get_maintainer.pl --no-multiline --interactive --separator=\'' --to '\' --no-git --no-roles --no-rolestats 00* 2. git send-email --cc linux-kernel@vger.kernel.org ... 0000* 3. Finally all patches with in-reply-to: git send-email --cc-cmd "scripts/get_maintainer.pl --no-git --no-roles --no-rolestats" --to linux-kernel@vger.kernel.org --no-thread --in-reply-to='foo-bar-xxxxxxx' 000[123456789]-* 00[123456789]*-* Best regards, Krzysztof
On Mon, 15 Feb 2021 17:43:59 +0000, Krzysztof Kozlowski <krzk@kernel.org> wrote: > For bigger patchsets, you should combine get_maintainer.pl with sending > emails so individual patches will go to all role-based entries from > get_maintainer.pl and to all mailing lists. You can (and sometimes even > worth to) skip proposals based on git-history. > > Then the cover letter which should go to everyone... or most of people > and linked from individual patches. > > For example the easiest I think: > 1. Put all folks and lists as "Cc:" in cover letter. > 2. Send everything: > git send-email --cc-cmd "scripts/get_maintainer.pl --no-git --no-roles --no-rolestats" --to linux-kernel@vger.kernel.org 0* > > Optionally you could add --no-git-fallback to get_maintainer if it > proposes some irrelevant addresses. > > Other way is to send first cover letter and then reference it via > in-reply-to: > > 1. To get everyone for cover letter: > scripts/get_maintainer.pl --no-multiline --interactive --separator=\'' --to '\' --no-git --no-roles --no-rolestats 00* > > 2. git send-email --cc linux-kernel@vger.kernel.org ... 0000* > > 3. Finally all patches with in-reply-to: > git send-email --cc-cmd "scripts/get_maintainer.pl --no-git --no-roles --no-rolestats" --to linux-kernel@vger.kernel.org --no-thread --in-reply-to='foo-bar-xxxxxxx' 000[123456789]-* 00[123456789]*-* I personally dislike this method as a recipient. Context matters, and seeing how an isolated patch fits in a bigger series is pretty important. I can mark the patches I don't care about quicker than you can say "Don't care", and it saves me having to drag the mbox via lore and import it. That's only me, but I suspect I'm not the only one with that particular flow. Thanks, M.
On Mon, Feb 15, 2021 at 09:16:48PM +0900, Hector Martin wrote: > 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) IIUC, the CPUs in these parts have some IMP-DEF instructions that can be used at EL0 which might have some IMP-DEF state. Our general expectation is that FW should configure such things to trap, but I don't know whether the M1 FW does that, and I fear that this will end up being a problem for us -- even if that doesn't affect EL1/EL2, IMP-DEF state is an interesting covert channel between EL0 tasks, and not generally safe to use thanks to context-switch and idle, so I'd like to make sure we can catch usage and make it SIGILL. Do you happen to know whether all of that is configured to trap, and if not, is it possible to adjust the bootloader to ensure it is? Thanks, Mark.
On 18/02/2021 23.36, Mark Rutland wrote: > IIUC, the CPUs in these parts have some IMP-DEF instructions that can be > used at EL0 which might have some IMP-DEF state. Our general expectation > is that FW should configure such things to trap, but I don't know > whether the M1 FW does that, and I fear that this will end up being a > problem for us -- even if that doesn't affect EL1/EL2, IMP-DEF state is > an interesting covert channel between EL0 tasks, and not generally safe > to use thanks to context-switch and idle, so I'd like to make sure we > can catch usage and make it SIGILL. > > Do you happen to know whether all of that is configured to trap, and if > not, is it possible to adjust the bootloader to ensure it is? Very good point! If only they were IMP-DEF... they're straight in Unallocated space. I spent some time the other day exhaustively searching the chunk of the encoding space where it looks like all these "fun" additions are, at EL2, and I documented what I found here: https://github.com/AsahiLinux/docs/wiki/HW:Apple-Instructions I haven't tested things at EL0 yet, but it looks like the stateful instructions known to be usable in EL0 (AMX) already default to trap on this platform, so we should be safe there. Everything else looks like it probably either shouldn't work in EL0 (I sure hope the address translation one doesn't...) or is probably stateless. I'll dig deeper and test EL0 in the future, but so far things look OK (for some questionable values of OK :) ).
On 22/02/2021 05.41, Andy Shevchenko wrote:
> Hector, I would like to be cc’ed in the next version
Noted, thanks!
On 22/02/2021 00.20, Hector Martin wrote: > I haven't tested things at EL0 yet, but it looks like the stateful > instructions known to be usable in EL0 (AMX) already default to trap on > this platform, so we should be safe there. Everything else looks like it > probably either shouldn't work in EL0 (I sure hope the address > translation one doesn't...) or is probably stateless. I'll dig deeper > and test EL0 in the future, but so far things look OK (for some > questionable values of OK :) ). Follow-up: I have EL0 testing scaffolding now, and I found some more mutable state (an IMP-DEF, pre-standard version of FEAT_AFP, using a separate status register for the bits), but thankfully it traps at EL0 by default. And then I found some other mutable IMP-DEF state that does not trap at EL0. And which is a 0-day CVE in macOS, because it doesn't save/restore/clear it either, nor does it trap there. E-mailing security@apple.com...