On 18.01.2016 10:25, liudongdong (C) wrote:
I see here is different from V2 patch, in V2 patch, 0x0000022004000000 is cpu addr. but in V3 patch, 0x0000022004000000 is pci addr. which one is right ?
You are right, I look back at v2 and see bug there. But v3 fixes it, for MEM & IO we always need to calculate this way:
CPU address defined as: cpu_addr = res->start + entry->offset; PCI address: pci_addr = res->start;
0x0000022004000000 is the value of AddressMinimum. AddressMinimum evaluates to a 64-bit integer that specifies the lowest possible base address of the Memory range QWordMemory ( // 64-bit BAR Windows ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x000000000000000, // Granularity 0x0000022004000000, // Min Base Address 0x000002200fffffff, // Max Base Address 0x0000021ff9000000, // Translate 0x000000000c000000 // Length )
For your case: cpu_addr = 0x0000022004000000 + 0x0000021ff9000000: pci_addr = 0x0000022004000000; Regards, Tomasz -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html