From 8c76ab00c4e6ced1cdbbe26b7f61ce5aae352615 Mon Sep 17 00:00:00 2001 From: Bruno Albuquerque Date: Fri, 31 May 2019 08:41:59 -0700 Subject: [PATCH] freebsd_network: Enable memory mapped io and ioport access. Cofirmed to fix #15016, #15052. Potentially fixes #14576, #14546, #14298, #14265, #13840. Change-Id: I27b0bb6692c23aedbdddc70aff9349c713703dd4 Reviewed-on: https://review.haiku-os.org/c/1497 Reviewed-by: waddlesplash --- src/libs/compat/freebsd_network/bus.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/libs/compat/freebsd_network/bus.cpp b/src/libs/compat/freebsd_network/bus.cpp index 0c96448391..fd696b4b9c 100644 --- a/src/libs/compat/freebsd_network/bus.cpp +++ b/src/libs/compat/freebsd_network/bus.cpp @@ -137,6 +137,10 @@ bus_alloc_mem_resource(device_t dev, struct resource *res, int regid) // TODO: check flags & PCI_address_prefetchable ? + // enable this I/O resource + if (pci_enable_io(dev, SYS_RES_MEMORY) != 0) + return -1; + void *virtualAddr; res->r_mapped_area = map_mem(&virtualAddr, addr, size, 0, @@ -153,6 +157,10 @@ bus_alloc_mem_resource(device_t dev, struct resource *res, int regid) static int bus_alloc_ioport_resource(device_t dev, struct resource *res, int regid) { + // enable this I/O resource + if (pci_enable_io(dev, SYS_RES_IOPORT) != 0) + return -1; + res->r_bustag = X86_BUS_SPACE_IO; res->r_bushandle = pci_read_config(dev, regid, 4) & PCI_address_io_mask; return 0;