From: Baolu Lu <baolu.lu@linux.intel.com>
To: "Robin Murphy" <robin.murphy@arm.com>,
"Aditya Garg" <gargaditya08@live.com>,
"Berkel Jörg" <joerg.berkel@bfh.ch>,
linux-input@vger.kernel.org
Cc: dmitry.torokhov@gmail.com, stable@vger.kernel.org,
regressions@lists.linux.dev, linux-spi@vger.kernel.org,
lukas@wunner.de, David Woodhouse <dwmw2@infradead.org>,
iommu@lists.linux.dev, Joerg Roedel <joro@8bytes.org>,
Will Deacon <will@kernel.org>
Subject: Re: [REGRESSION] applespi from 6.12 onwards
Date: Fri, 9 May 2025 10:47:48 +0800 [thread overview]
Message-ID: <db0bf1b9-dd6c-4451-8eb9-ab789d732992@linux.intel.com> (raw)
In-Reply-To: <f1b41874-1535-4457-9747-eee3d816091a@arm.com>
On 5/8/25 19:29, Robin Murphy wrote:
> On 2025-05-08 3:15 am, Baolu Lu wrote:
>> On 5/8/25 01:07, Aditya Garg wrote:
>>> Keyboard and touchpad stopped working on several Apple Macbooks from
>>> the year 2017 using kernel 6.12.xx . Until now I could only find this
>>> discussion affirming the bug on Debian and Fedora:https://github.com/
>>> Dunedan/mbp-2016-linux/issues/202
>>>
>>> On siduction I also tried the more recent kernels 6.14.5 and mainline
>>> 6.15-rc4 (from Ubuntu) and the issue persisted with my testdevice
>>> MacBookPro14,1 -- see the relevant output:
>>>
>>> kernel: platform pxa2xx-spi.3: Adding to iommu group 20
>>> kernel: input: Apple SPI Keyboard as /devices/
>>> pci0000:00/0000:00:1e.3/ pxa2xx-spi.3/spi_master/spi2/spi-APP000D:00/
>>> input/input0
>>> kernel: DMAR: DRHD: handling fault status reg 3
>>> kernel: DMAR: [DMA Read NO_PASID] Request device [00:1e.3] fault addr
>>> 0xffffa000 [fault reason 0x06] PTE Read access is not set
>>> kernel: DMAR: DRHD: handling fault status reg 3
>>> kernel: DMAR: [DMA Read NO_PASID] Request device [00:1e.3] fault addr
>>> 0xffffa000 [fault reason 0x06] PTE Read access is not set
>>> kernel: applespispi-APP000D:00: Error writing to device: 01 0e 00 00
>>> kernel: DMAR: DRHD: handling fault status reg 3
>>> kernel: DMAR: [DMA Read NO_PASID] Request device [00:1e.3] fault addr
>>> 0xffffa000 [fault reason 0x06] PTE Read access is not set
>>> kernel: DMAR: DRHD: handling fault status reg 3
>>> kernel: applespispi-APP000D:00: Error writing to device: 01 0e 00 00
>>
>> It appears that all DMA faults are related to a fixed address,
>> 0xffffa000. Is this address something special?
>
> Maybe it's retrying the same buffer a few times before finally giving
> up? The address does look like a plausible iommu-dma IOVA, so I can
> imagine at least two possibilities where a change in the IOMMU driver
> might have an impact:
>
> - It's the right address in the right context but incorrectly mapped as
> DMA_FROM_DEVICE, where that previously had implicit read permission as
> well but is now write-only (can the Intel 2nd-stage format do that like
> Arm does? I forget...)
Intel 2nd-stage page table format allows write-only permission. But
commit eea53c581688 ("iommu/vt-d: Remove WO permissions on second-level
paging entries") has already removed it, and v6.12 kernel contains this
commit.
By the way, we are about to restore the write-only permission on 2nd-
stage page table,
https://lore.kernel.org/all/0-v1-c26553717e90+65f-iommu_vtd_ss_wo_jgg@nvidia.com/
... if the device driver provides only DMA_FROM_DEVICE and the iommu
driver uses 2nd-stage page table for its dma translation.
The iommu driver currently treats DMA_FROM_DEVICE as a hint rather than
a mandatory requirement. If we want to enforce write-only permission in
the future, we should allocate a domain allocation flag so that the
iommu driver could have the opportunity to select the appropriate page
table format.
>
> - It's the right address in the wrong context, because the DMA mapping
> was done with the wrong device, which was previously in the same IOMMU
> group as 00:1e.3, but now we assign groups differently. I don't know if
> lpss_spi_setup() is relevant to this particular hardware setup, but
> "dma_dev = pci_get_slot(dev->bus, PCI_DEVFN(PCI_SLOT(dev->devfn), 0));"
> there certainly catches my attention, at least.
>
> The DMA mapping tracepoints should be able to shed light on how that
> address is mapped prior to the fault.
Yes. DMA mapping trace messages would shed more lights.
Thanks,
baolu
prev parent reply other threads:[~2025-05-09 2:52 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-07 7:18 [REGRESSION] applespi from 6.12 onwards Berkel Jörg
2025-05-07 16:31 ` Aditya Garg
2025-05-07 20:24 ` Berkel Jörg
2025-05-07 17:07 ` Aditya Garg
2025-05-08 2:15 ` Baolu Lu
2025-05-08 6:22 ` Dmitry Torokhov
2025-05-08 11:00 ` Aditya Garg
2025-05-08 11:29 ` Robin Murphy
2025-05-08 12:54 ` Aditya Garg
2025-05-09 15:23 ` Berkel Jörg
2025-05-10 9:57 ` Aditya Garg
2025-05-11 13:31 ` kobarity
2025-05-12 5:12 ` Baolu Lu
2025-05-12 12:16 ` kobarity
2025-05-13 1:37 ` Baolu Lu
2025-05-13 12:08 ` kobarity
2025-05-14 3:39 ` Baolu Lu
2025-05-09 2:47 ` Baolu Lu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=db0bf1b9-dd6c-4451-8eb9-ab789d732992@linux.intel.com \
--to=baolu.lu@linux.intel.com \
--cc=dmitry.torokhov@gmail.com \
--cc=dwmw2@infradead.org \
--cc=gargaditya08@live.com \
--cc=iommu@lists.linux.dev \
--cc=joerg.berkel@bfh.ch \
--cc=joro@8bytes.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-spi@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=regressions@lists.linux.dev \
--cc=robin.murphy@arm.com \
--cc=stable@vger.kernel.org \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).