Re: [PATCH 00/10] Enhance /dev/mem to allow read/write of arbitraryphysical addresses

From: Cong Wang
Date: Mon Jun 20 2011 - 23:00:05 EST


ä 2011å06æ20æ 21:24, Dave Anderson åé:
On Mon, Jun 20, 2011 at 10:42:47, Amerigo Wang<amwang@xxxxxxxxxx> wrote:
On Fri, Jun 17, 2011 at 5:55 PM, Petr Tesarik<ptesarik@xxxxxxx> wrote:
Dne PÃÂ 17. ÃÂervna 2011 11:30:32 Ingo Molnar napsal(a):
* Petr Tesarik<ptesarik@xxxxxxx> wrote:
This patch series enhances /dev/mem, so that read and write is
possible at any address. The patchset includes actual
implementation for x86.

This series lacks a description of why this is desired.

Hi Ingo,

My strong opinion is that it's not desired at all: /dev/mem never
worked beyond 4G addresses so by today it has become largely obsolete
and is on the way out really.

I'm aware of these current /dev/mem uses:

- Xorg maps below 4G non-RAM addresses and the video BIOS

- It used to have some debugging role but these days kexec and kgdb
has largely taken over that role - partly due to the 4G limit.

It is still used as a "memory source" by Dave Anderson's crash utility for
live examination of a running system. Redhat has "overcome" the /dev/mem
deficiencies by writing an out-of-tree re-implementation of /dev/mem, which
uses /dev/crash instead. As it is an "unnecessary duplication of an existing
driver", this method was rejected by the project manager here at SUSE.

The suggested alternative was to enhance (or fix) the existing driver. Without
this patch series there is no way to access high memory. In conjunction with
CONFIG_HIGHPTE, it makes the crash utility near to useless on anything with
high memory, because crash can no longer translate virtual to physical
addresses.


How about /proc/kcore? AFAIK, it can access highmem, but Dave didn't consider
it for some reason.

I don't know what you mean by I "didn't consider it", because
the crash utility does support using /proc/kcore as an alternative
live memory source.

Sorry, I recall that in our last discussion you didn't
mention this. But it is good to know that crash supports this!


The problem is that /proc/kcore can only access highmem if it
is mapped as kernel virtual address. So it cannot read 32-bit
highmem PTE's, user-space memory, etc.


Hmm, looking at the code, you are right, it only has
low memory in kernel space.

But what's the problem of adding highmem into kcore? :-/

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/