]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
pci_user: call bus_translate_resource before BAR mmap
authorMarcin Wojtas <mw@FreeBSD.org>
Tue, 6 Apr 2021 15:10:04 +0000 (17:10 +0200)
committerMarcin Wojtas <mw@FreeBSD.org>
Mon, 11 Oct 2021 13:40:11 +0000 (15:40 +0200)
commit14721190e8298199a6cfbb6d2568ea1d17e7a107
tree09b7e8a08f01ba13db98156dfc2fd3519769a53c
parent61156558d2a53e88c139561458420f2e62f6aa06
pci_user: call bus_translate_resource before BAR mmap

On some armv8 machines it is possible that the mapping between CPU
and PCI bus BAR base addresses is not 1:1. In case a BAR is allocated
in kernel using bus_alloc_resource_any this translation is handled in
ofw_pci_activate_resource.

Do the same in pci_user.c by calling bus_translate_resource devmethod.
This fixes mmaping BARs to userspace on Marvell SoCs (Armada 7k8k/CN913x)
and possibly many other platforms.

Submitted by: Kornel Duleba <mindal@semihalf.com>
Reviewed by: kib
Obtained from: Semihalf
Sponsored by: Marvell
MFC after: 2 weeks
Differential revision: https://reviews.freebsd.org/D29604

(cherry picked from commit f2f1ab39c04088ce53287528549e652cf68cee09)

pci_user: fix build for 32-bit platforms

Commit: f2f1ab39c040 ("pci_user: call bus_translate_resource before BAR mmap")
broke build for 32-bit platforms due to rman_res_t and vm_paddr_t
incompatible types. Fix that.

(cherry picked from commit 9857e00a528bb230c8935ded5f118a7374bf808b)
sys/dev/pci/pci_user.c