[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <3908561D78D1C84285E8C5FCA982C28F1EA52ED3@ORSMSX104.amr.corp.intel.com>
Date: Tue, 23 Apr 2013 22:00:05 +0000
From: "Luck, Tony" <tony.luck@...el.com>
To: Jean Delvare <jdelvare@...e.de>,
DuanZhenzhong <zhenzhong.duan@...cle.com>
CC: Andrew Morton <akpm@...ux-foundation.org>,
linux-kernel <linux-kernel@...r.kernel.org>,
"Yu, Fenghua" <fenghua.yu@...el.com>
Subject: RE: memcpy_fromio in dmi_scan.c
> I don't have much knowledge about IA64 either. All I see is that while
> x86 implements memcpy_fromio() with memcpy [1], ia64 implements it with
> readb [2]. There must be a reason for that, and I can only suppose that
> memcpy on __iomem pointers doesn't work on IA64. If memcpy doesn't work
> then I can't see memcmp working.
On most platforms readb() just ends up doing a regular dereference of the
address ... so I'd expect that memcmp would work just fine. The exception
is the old SGI sn2 which end up calling ___sn_readb() ... which does something
weird with sn_dma_flush() after doing the dereference of *addr. I don't
really understand what is going on here - but I assume that it is for real
PCI iomapped memory, as opposed to random bits of BIOS reserved memory
that we used ioremap() to get a virtual handle on.
Not sure how to test ... what would I run to exercise this code?
-Tony
Powered by blists - more mailing lists