From owner-freebsd-net@FreeBSD.ORG Tue Jul 31 17:15:29 2012 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 460A9106564A for ; Tue, 31 Jul 2012 17:15:29 +0000 (UTC) (envelope-from artemb@gmail.com) Received: from mail-lb0-f182.google.com (mail-lb0-f182.google.com [209.85.217.182]) by mx1.freebsd.org (Postfix) with ESMTP id BDF488FC12 for ; Tue, 31 Jul 2012 17:15:28 +0000 (UTC) Received: by lbon10 with SMTP id n10so5153297lbo.13 for ; Tue, 31 Jul 2012 10:15:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=opYefcyrFF6FS5RH81iUelx7ZQgOBvGzjWee7Ny+vs4=; b=sv9OZ2z0XFcUoUygYhOgHooCYD1UJSgInCw8zBMy/QubG3DBX00YUHbuE37UlpmG38 JprYZ8tn4lOB++cmxCcSguonPZDYdzSTNTna1dxhuOnlEKaHBNQ+s2HB3MQYi045UzKG jHk9dtiC0wa8UvNFrDgaDFbMjfFy9SIQeY6tmwjGHn2z5RSbRto710V29mlmO71+NhPu jTld7uLVd5YgotUW7Wl3T1+nEHnPcM08s3iHBv0mAxWslUlMVtULKL5mEqm3T49mc/TH xFpD9OEmAVBIdHdrEtPNsHKrBRVl20Ujb1nbQ3ebfrfJ+yo3oP/8Sk9JVpzGxO4JNR8q nEwg== MIME-Version: 1.0 Received: by 10.112.30.226 with SMTP id v2mr6945257lbh.103.1343754922463; Tue, 31 Jul 2012 10:15:22 -0700 (PDT) Received: by 10.112.132.99 with HTTP; Tue, 31 Jul 2012 10:15:22 -0700 (PDT) In-Reply-To: References: Date: Tue, 31 Jul 2012 10:15:22 -0700 Message-ID: From: Artem Belevich To: Venkat Duvvuru Content-Type: text/plain; charset=ISO-8859-1 Cc: freebsd-net@freebsd.org Subject: Re: PCI BAR mmap X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 31 Jul 2012 17:15:29 -0000 On Tue, Jul 31, 2012 at 5:48 AM, Venkat Duvvuru 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= count= of=bar.dump --Artem