Hi > I think the firmware on the T2 is upgradable in principle, but Apple isn't > going to do us the favor to fix it. So we don't have any other option > than keeping a blacklist for ANFE-incompatible devices, with the T2 being > the first device on that blacklist and maybe others to follow. > > I was going to work on this for the remainder of the week, but if you feel > the feature needs another cycle to mature, I have no objections to > reverting eddba19b8b5f for v7.3 and re-applying it together with the two > required fixes to pci/aer. (The two required fixes being the one for Alex > and the one for the T2.) > > Thanks, > > Lukas
It would be nice if someone could test this patch: -->8-- >From 88c681d745931ad8b0199a490dc0278bf2a3df9b Mon Sep 17 00:00:00 2001 From: Aditya Garg <[email protected]> Date: Fri, 9 Oct 2026 19:17:02 +0000 Subject: [PATCH] Quirk --- drivers/pci/pcie/aer.c | 3 ++- drivers/pci/quirks.c | 12 ++++++++++++ include/linux/pci.h | 1 + include/linux/pci_ids.h | 1 + 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index 922a726a5..cab195f7c 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -428,7 +428,8 @@ void pci_aer_init(struct pci_dev *dev) * Advisory Non-Fatal Errors are masked by default (PCIe r7.0, sec * 7.8.4.6). */ - if (pcie_aer_is_native(dev) && dev->devcap & PCI_EXP_DEVCAP_RBER) + if (pcie_aer_is_native(dev) && dev->devcap & PCI_EXP_DEVCAP_RBER && + !dev->no_aer_anfe) pci_clear_and_set_config_dword(dev, dev->aer_cap + PCI_ERR_COR_MASK, PCI_ERR_COR_ADV_NFAT, 0); diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index de9bbccda..acca89532 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -6422,4 +6422,16 @@ static void pci_mask_replay_timer_timeout(struct pci_dev *pdev) } DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_GLI, 0x9750, pci_mask_replay_timer_timeout); DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_GLI, 0x9755, pci_mask_replay_timer_timeout); + +/* + * Unmasking Advisory Non-Fatar Errors on Apple T2 Secure Enclave + * processor leads to the Mac shutting down spontaneously. Avoid + * doing that. + */ +static void quirk_no_aer_anfe(struct pci_dev *dev) +{ + dev->no_aer_anfe = 1; +} + +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_APPLE, PCI_DEVICE_ID_APPLE_T2_SEP, quirk_no_aer_anfe); #endif diff --git a/include/linux/pci.h b/include/linux/pci.h index d31a8d107..83ffa5058 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -514,6 +514,7 @@ struct pci_dev { unsigned int rom_bar_overlap:1; /* ROM BAR disable broken */ unsigned int rom_attr_enabled:1; /* Display of ROM attribute enabled? */ unsigned int non_mappable_bars:1; /* BARs can't be mapped by CPU or peers */ + unsigned int no_aer_anfe:1; /* Don't unmask */ pci_dev_flags_t dev_flags; atomic_t enable_cnt; /* pci_enable_device has been called */ diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 63774ae2b..103024f74 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -1007,6 +1007,7 @@ #define PCI_DEVICE_ID_APPLE_IPID2_FW 0x006a #define PCI_DEVICE_ID_APPLE_IPID2_GMAC 0x006b #define PCI_DEVICE_ID_APPLE_TIGON3 0x1645 +#define PCI_DEVICE_ID_APPLE_T2_SEP 0x1802 #define PCI_VENDOR_ID_YAMAHA 0x1073 #define PCI_DEVICE_ID_YAMAHA_724 0x0004 -- 2.55.0 -->8--
