On Wed, Jan 13, 2016 at 02:20:46PM +0100, Tomasz Nowicki wrote:
From the functionality point of view this series might be split into the
following logic parts:
1. Make MMCONFIG code arch-agnostic which allows all architectures to collect
PCI config regions and used when necessary.
2. Move non-arch specific bits to the core code.
3. Use MMCONFIG code and implement generic ACPI based PCI host controller driver.
4. Enable above driver on ARM64
Patches has been built on top of 4.4 and can be found here:
git at github.com:semihalf-nowicki-tomasz/linux.git (pci-acpi-v3)
NOTE, this patch set depends on Matthew's patches:
http://www.spinics.net/lists/linux-pci/msg45950.html
https://github.com/Vality/linux/tree/pci-fixes
This has been tested on Cavium ThunderX server and QEMU.
Any help in reviewing and testing is very appreciated.
I have tested this on my AMD Overdrive so
Tested-by: Graeme Gregory <redacted>
But to actually get my r8169 network card working I also need the
following patch.
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 2fbf840..40e24e2 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1717,7 +1717,7 @@ void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
set_dev_node(&dev->dev, pcibus_to_node(bus));
dev->dev.dma_mask = &dev->dma_mask;
dev->dev.dma_parms = &dev->dma_parms;
- dev->dev.coherent_dma_mask = 0xffffffffull;
+ dev->dev.coherent_dma_mask = DMA_BIT_MASK(64);
pci_dma_configure(dev);
pci_set_dma_max_seg_size(dev, 65536);
I suspect we need to set coherent_dma_mask somewhere in the platform but I do
not know where this should happen. Hopefully an ARM64 expert can help.
Graeme