Re: [PATCH 2/3] x86_64: Define 128-bit memory-mapped I/O operations
From: "H. Peter Anvin" <hpa@zytor.com>
Date: 2012-08-22 16:59:18
On 08/22/2012 09:51 AM, Linus Torvalds wrote:
On Wed, Aug 22, 2012 at 8:54 AM, H. Peter Anvin [off-list ref] wrote:quoted
Sorry, you fail. There are definitely systems in the field where readq() and writeq() are implemented, because the CPU supports them, where the fabric does not guarantee they are intact.Indeed. It's unlikely to be an issue with a PCIe driver, though. I'm pretty sure you can rely on 64-bit transfers there, especially with a CPU that is modern enough to run 64-bit mode. That said, even with PCIe, I wonder if older CPU's (think Intel with a front-side bus, rather than PCIe on die) necessarily always do 128-bit writes. The FSB is just 64 bits wide, and I could *imagine* that a PCIe chipset behind the FSB might end up just always generating at most 64-bit PCIe transactions for host accesses just because that would be "natural". Sounds unlikely, but hey, hardware sometimes does odd things.
I'm wondering how e.g. a K8 would work (CPU -> HT -> PCIe) on UC memory there. I know for a fact that some CPU cores break up SSE transactions into 64-bit transactions. -hpa -- H. Peter Anvin, Intel Open Source Technology Center I work for Intel. I don't speak on their behalf.