Malformed "pci-Enable-overrides-for-missing-ACS-capabilities-4..patch" File

DeMoB

Active Member
Nov 22, 2017
6
2
43
38
When trying to build an updated Kernel for Proxmox, using the latest (v2.14.2) "0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch" file pulled from git I get an error on the makefile output when it runs through the patch:

Code:
patching file drivers/pci/quirks.c
Using Plan A...
patch: **** malformed patch at line 187: @@ -4514,6 +4615,7 @@ static const struct pci_dev_acs_enabled {

My ACS override isn't working with "pcie_acs_override=downstream,multifunction" might this be the reason why?
 
Hi,

Quilt is a bit awkward with changes in the source.
So you have to edit (fix) the patch.
 
So the relevant patch section is:

Code:
@@ -4514,6 +4615,7 @@ static const struct pci_dev_acs_enabled {
        { 0x10df, 0x720, pci_quirk_mf_endpoint_acs }, /* Emulex Skyhawk-R */
        /* Cavium ThunderX */
        { PCI_VENDOR_ID_CAVIUM, PCI_ANY_ID, pci_quirk_cavium_acs },
+       { PCI_ANY_ID, PCI_ANY_ID, pcie_acs_overrides },
        { 0 }
 };

--
2.14.2

On line 187 shouldn't the second file range of +4615,7 actually be +4514,7?


Edit: I believe that correction is needed in combination with another fix for the original error being caused by the previous hunk being over-extended by an extra line.

Line 80:

Code:
@@ -3687,6 +3687,107 @@ static int __init pci_apply_final_quirks(void)

needs changing to

Code:
@@ -3687,6 +3687,106 @@ static int __init pci_apply_final_quirks(void)
 
Last edited:
I think I stumbled upon the same problem. @DeMoB Can you be more specific which terminal commands I do have to execute in order to get the compilation working?
 
Last edited:
@tristank, I've also answered this in your other post, but for anyone else that also stumbles across this thread in the future, presumably on the back of an J3455 ACS IOMMU quirks edit the answer to my original post is as follows.

This malformed patch issue was the result of my removing a whole line in the ACS patch file. Editing the initial patch references caused chain issues further down the patch file with expected line references from the original patch no longer being correct.

The workaround for me was when editing the patches/kernel/0003-pci-Enable-overrides-for-missing-ACS-capabilities-4..patch to not remove the whole pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS) line.

i.e. from (line 159ish):

Code:
+        if (!pci_is_pcie(dev) ||
+                pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ACS))
+                                return -ENOTTY;

change to:

Code:
+ if (!pci_is_pcie(dev)
+                )
+                                return -ENOTTY;
[/CODE]
 
Last edited:
  • Like
Reactions: tristank