Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 Jul 2012 20:41:01 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Artem Belevich <artemb@gmail.com>
Cc:        freebsd-net@freebsd.org, Venkat Duvvuru <venkatduvvuru.ml@gmail.com>
Subject:   Re: PCI BAR mmap
Message-ID:  <20120731174101.GE2676@deviant.kiev.zoral.com.ua>
In-Reply-To: <CAFqOu6g%2BTypQngY6tyeFigPZahixL1QGTiwaEwABqDyMWA-3uw@mail.gmail.com>
References:  <CAGdae7a0xuKnFaeOTUykLcUKuCf17TTuYD_MuG4t7FKbHNoqAg@mail.gmail.com> <CAFqOu6g%2BTypQngY6tyeFigPZahixL1QGTiwaEwABqDyMWA-3uw@mail.gmail.com>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
On Tue, Jul 31, 2012 at 10:15:22AM -0700, Artem Belevich wrote:
> On Tue, Jul 31, 2012 at 5:48 AM, Venkat Duvvuru
> <venkatduvvuru.ml@gmail.com> wrote:
> > Hi,
> > How to mmap PCI  BARs from userland in freebsd?
> > In Linux the PCI BAR appears as a file in the sysfs file system. How can I
> > access PCI BAR as a file in freebsd to mmap it?
> 
> It's a bit of a hack, but if you are root, you can access physical
> memory via /dev/mem.
> 
> memfd = open(/dev/mem)
> ptr = mmap(NULL, bar_size, PROT_READ, 0, memfd, bar_address);
> 
> You can even use dd:
> 
> dd if=/dev/mem bs=4k skip=<BAR_ADDRESS/4k> count=<BAR_SIZE/4k> of=bar.dump

This probably only works on x86, only for memory BARs, and only if BAR
is already activated. But yes, I did grabbed scanouts (i.e. screen) on
Intel GPUs this way.

[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (FreeBSD)

iEYEARECAAYFAlAYGK0ACgkQC3+MBN1Mb4iH9ACgoTJJhSV/GWg6sFqtIoSNlWU8
7MYAoJ0M0yK2K2how1jdmkO8O16lqfbH
=LpXT
-----END PGP SIGNATURE-----
help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120731174101.GE2676>