Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S942441AbcJ1V0a (ORCPT ); Fri, 28 Oct 2016 17:26:30 -0400 Received: from mail-ua0-f179.google.com ([209.85.217.179]:33348 "EHLO mail-ua0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S941762AbcJ1V01 (ORCPT ); Fri, 28 Oct 2016 17:26:27 -0400 MIME-Version: 1.0 In-Reply-To: <52478c6c-39cb-35b1-0517-33d9f6e99a5a@list.ru> References: <52478c6c-39cb-35b1-0517-33d9f6e99a5a@list.ru> From: Andy Lutomirski Date: Fri, 28 Oct 2016 14:26:06 -0700 Message-ID: Subject: Re: /dev/mem and PCI memory = EFAULT? To: Stas Sergeev Cc: Linux kernel Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by mail.home.local id u9SLRahc018038 Content-Length: 1711 Lines: 45 On Fri, Oct 28, 2016 at 2:18 PM, Stas Sergeev wrote: > 29.10.2016 00:05, Andy Lutomirski пишет: > >> On Fri, Oct 28, 2016 at 2:03 PM, Stas Sergeev wrote: >>> >>> Hello. >>> >>> For the long time dosemu used /dev/mem for vga pass-through. >>> Now it appears /dev/mem has this check: >>> http://lxr.free-electrons.com/source/drivers/char/mem.c#L51 >>> which prevents an accesses to PCI memory regions if the >>> "high_memory" points low enough. It seems "high_memory" >>> just points to the end of the physical ram, so depending on >>> the ram size you either can access PCI devices or you get >>> EFAULT. >>> Was it wrong to use /dev/mem for accessing the PCI devices? >>> How should I do that now? >>> >> What is DOSEMU trying to do here? Access the framebuffer? >> >> ISTM it would be better to use the DRM or FB layer directly (just map >> the framebuffer itself) or, if necessary, use VFIO. > > Yes, framebuffer. > Mapping fb directly is not really an option because dosemu does > its own modesetting when you do vga pass-through. So it is > usually started that way with "nomodeset=1" and w/o fb. > Yes, some crazy people try the pass-through even out of fb > console, but that's weird (the problem is most SDL2 builds do > not have directfb backend compiled in, otherwise we could > just use SDL rendering on top of fb). > > The thing is, I needed (for testing purposes, unrelated to dosemu) > some quick way to access the PCI memory space, and to my surprise I > couldn't do that with /dev/mem. Was this really disallowed intentionally? I believe so. Try the /sys/devices/.../resource? and resource?_wc files. --Andy -- Andy Lutomirski AMA Capital Management, LLC