* [PATCH 1/2] HID: amd_sfh: Set correct DMA mask
2021-06-22 0:15 [PATCH 0/2] HID: amd_sfh: Minor DMA mapping bugfixes Dylan MacKenzie
@ 2021-06-22 0:15 ` Dylan MacKenzie
2021-06-22 0:15 ` [PATCH 2/2] HID: amd_sfh: Continue if fallback DMA mask is accepted Dylan MacKenzie
2021-07-28 9:28 ` [PATCH 0/2] HID: amd_sfh: Minor DMA mapping bugfixes Jiri Kosina
2 siblings, 0 replies; 6+ messages in thread
From: Dylan MacKenzie @ 2021-06-22 0:15 UTC (permalink / raw)
Cc: Nehal Shah, Sandeep Singh, Jiri Kosina, Benjamin Tissoires,
linux-input, linux-kernel
The AMDSFH driver uses coherent DMA allocations, but only sets the
streaming DMA mask. As a result, the kernel can't make use of the full
address space supported by the device.
Signed-off-by: Dylan MacKenzie <ecstaticmorse@gmail.com>
---
drivers/hid/amd-sfh-hid/amd_sfh_pcie.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
index ddecc84fd6f..c2de650cd8e 100644
--- a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
+++ b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
@@ -155,9 +155,9 @@ static int amd_mp2_pci_probe(struct pci_dev *pdev, const struct pci_device_id *i
privdata->mmio = pcim_iomap_table(pdev)[2];
pci_set_master(pdev);
- rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
+ rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
if (rc) {
- rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
+ rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
return rc;
}
rc = devm_add_action_or_reset(&pdev->dev, amd_mp2_pci_remove, privdata);
--
2.31.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] HID: amd_sfh: Continue if fallback DMA mask is accepted
2021-06-22 0:15 [PATCH 0/2] HID: amd_sfh: Minor DMA mapping bugfixes Dylan MacKenzie
2021-06-22 0:15 ` [PATCH 1/2] HID: amd_sfh: Set correct DMA mask Dylan MacKenzie
@ 2021-06-22 0:15 ` Dylan MacKenzie
2021-07-28 9:28 ` [PATCH 0/2] HID: amd_sfh: Minor DMA mapping bugfixes Jiri Kosina
2 siblings, 0 replies; 6+ messages in thread
From: Dylan MacKenzie @ 2021-06-22 0:15 UTC (permalink / raw)
Cc: Nehal Shah, Sandeep Singh, Jiri Kosina, Benjamin Tissoires,
linux-input, linux-kernel
Currently, if a call to `set_dma_mask(DMA_BIT_MASK(64))` fails, the
driver calls `set_dma_mask(DMA_BIT_MASK(32))` and immediately returns
regardless of the result. If that second call were to succeed, the SFH
would not get initialized (defeating the whole purpose of falling back
to a 32-bit address space) but the driver would remain registered
(since `probe` returned 0).
Signed-off-by: Dylan MacKenzie <ecstaticmorse@gmail.com>
---
drivers/hid/amd-sfh-hid/amd_sfh_pcie.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
index c2de650cd8e..a4f363d082c 100644
--- a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
+++ b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
@@ -155,11 +155,15 @@ static int amd_mp2_pci_probe(struct pci_dev *pdev, const struct pci_device_id *i
privdata->mmio = pcim_iomap_table(pdev)[2];
pci_set_master(pdev);
+
rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
- if (rc) {
+ if (rc)
rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
+ if (rc) {
+ pci_err(pdev, "Failed to set DMA mask");
return rc;
}
+
rc = devm_add_action_or_reset(&pdev->dev, amd_mp2_pci_remove, privdata);
if (rc)
return rc;
--
2.31.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] HID: amd_sfh: Minor DMA mapping bugfixes
2021-06-22 0:15 [PATCH 0/2] HID: amd_sfh: Minor DMA mapping bugfixes Dylan MacKenzie
2021-06-22 0:15 ` [PATCH 1/2] HID: amd_sfh: Set correct DMA mask Dylan MacKenzie
2021-06-22 0:15 ` [PATCH 2/2] HID: amd_sfh: Continue if fallback DMA mask is accepted Dylan MacKenzie
@ 2021-07-28 9:28 ` Jiri Kosina
2021-07-28 9:33 ` Jiri Kosina
2 siblings, 1 reply; 6+ messages in thread
From: Jiri Kosina @ 2021-07-28 9:28 UTC (permalink / raw)
To: Dylan MacKenzie
Cc: Nehal Shah, Sandeep Singh, Benjamin Tissoires, linux-input, linux-kernel
On Mon, 21 Jun 2021, Dylan MacKenzie wrote:
> While preparing to investigate
> https://bugzilla.kernel.org/show_bug.cgi?id=212615, I read through the amd_sfh
> driver and saw two (unrelated) bugs in the logic that sets the DMA mask.
> Ultimately these are harmless, but they should probably get fixed.
>
> FYI, this is my first time submitting a kernel patch. If I've done something
> wrong in formatting this email, it is likely due to incompetence rather than
> malice.
>
> Dylan MacKenzie (2):
> HID: amd_sfh: Set correct DMA mask
> HID: amd_sfh: Continue if fallback DMA mask is accepted
>
> drivers/hid/amd-sfh-hid/amd_sfh_pcie.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
Nehal, Sandeep, could you please provide your Ack to this series? Thanks,
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] HID: amd_sfh: Minor DMA mapping bugfixes
2021-07-28 9:28 ` [PATCH 0/2] HID: amd_sfh: Minor DMA mapping bugfixes Jiri Kosina
@ 2021-07-28 9:33 ` Jiri Kosina
2021-07-28 19:22 ` Basavaraj Natikar
0 siblings, 1 reply; 6+ messages in thread
From: Jiri Kosina @ 2021-07-28 9:33 UTC (permalink / raw)
To: Dylan MacKenzie
Cc: Nehal Shah, Basavaraj Natikar, Benjamin Tissoires, linux-input,
linux-kernel
[ dropping Sandeep, CCing Basavaraj ]
On Wed, 28 Jul 2021, Jiri Kosina wrote:
> On Mon, 21 Jun 2021, Dylan MacKenzie wrote:
>
> > While preparing to investigate
> > https://bugzilla.kernel.org/show_bug.cgi?id=212615, I read through the amd_sfh
> > driver and saw two (unrelated) bugs in the logic that sets the DMA mask.
> > Ultimately these are harmless, but they should probably get fixed.
> >
> > FYI, this is my first time submitting a kernel patch. If I've done something
> > wrong in formatting this email, it is likely due to incompetence rather than
> > malice.
> >
> > Dylan MacKenzie (2):
> > HID: amd_sfh: Set correct DMA mask
> > HID: amd_sfh: Continue if fallback DMA mask is accepted
> >
> > drivers/hid/amd-sfh-hid/amd_sfh_pcie.c | 8 ++++++--
> > 1 file changed, 6 insertions(+), 2 deletions(-)
>
> Nehal, Sandeep, could you please provide your Ack to this series? Thanks,
>
> --
> Jiri Kosina
> SUSE Labs
>
>
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/2] HID: amd_sfh: Minor DMA mapping bugfixes
2021-07-28 9:33 ` Jiri Kosina
@ 2021-07-28 19:22 ` Basavaraj Natikar
0 siblings, 0 replies; 6+ messages in thread
From: Basavaraj Natikar @ 2021-07-28 19:22 UTC (permalink / raw)
To: Jiri Kosina, Dylan MacKenzie
Cc: Nehal Shah, Basavaraj Natikar, Benjamin Tissoires, linux-input,
linux-kernel
On 7/28/2021 3:03 PM, Jiri Kosina wrote:
> [CAUTION: External Email]
>
> [ dropping Sandeep, CCing Basavaraj ]
>
> On Wed, 28 Jul 2021, Jiri Kosina wrote:
>
>> On Mon, 21 Jun 2021, Dylan MacKenzie wrote:
>>
>>> While preparing to investigate
>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugzilla.kernel.org%2Fshow_bug.cgi%3Fid%3D212615&data=04%7C01%7Cbasavaraj.natikar%40amd.com%7C2dff45d8dc964dbc5b1c08d951aab806%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637630615935776199%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=hGpNFpr6BjVg8dvfUTNF8Td1SOdtN5T8c2WACGAZWUo%3D&reserved=0, I read through the amd_sfh
>>> driver and saw two (unrelated) bugs in the logic that sets the DMA mask.
>>> Ultimately these are harmless, but they should probably get fixed.
>>>
>>> FYI, this is my first time submitting a kernel patch. If I've done something
>>> wrong in formatting this email, it is likely due to incompetence rather than
>>> malice.
>>>
>>> Dylan MacKenzie (2):
>>> HID: amd_sfh: Set correct DMA mask
>>> HID: amd_sfh: Continue if fallback DMA mask is accepted
>>>
>>> drivers/hid/amd-sfh-hid/amd_sfh_pcie.c | 8 ++++++--
>>> 1 file changed, 6 insertions(+), 2 deletions(-)
>> Nehal, Sandeep, could you please provide your Ack to this series? Thanks,
I think, you can merge both of them together as it addresses a single problem.
can you please respin a v2 with the changes something like this?
privdata->mmio = pcim_iomap_table(pdev)[2];
pci_set_master(pdev);
- rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
+
+ rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64));
if (rc) {
- rc = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
- return rc;
+ rc = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));
+ if (rc) {
+ pci_err(pdev, "Failed to set DMA mask");
+ return rc;
}
}
Thanks,
Basavaraj
^ permalink raw reply [flat|nested] 6+ messages in thread