From 343f195b0c8e11e307f52f6b57baf30a761c5bdf Mon Sep 17 00:00:00 2001 From: Doug Rabson Date: Mon, 19 Apr 1999 08:42:39 +0000 Subject: [PATCH] Fix some confusion between physical and virtual addresses when recording the driver's choice of memory window. --- sys/i386/isa/isa_compat.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/sys/i386/isa/isa_compat.c b/sys/i386/isa/isa_compat.c index 86ef5c5cce73..b85b34e60da9 100644 --- a/sys/i386/isa/isa_compat.c +++ b/sys/i386/isa/isa_compat.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: isa_compat.c,v 1.1 1999/04/16 21:22:23 peter Exp $ + * $Id: isa_compat.c,v 1.2 1999/04/17 09:56:35 bde Exp $ */ #include @@ -35,6 +35,11 @@ #include #include +#include +#include +#include +#include + #include #include #include @@ -152,11 +157,13 @@ isa_compat_probe(device_t dev) */ if (dvp->id_driver->probe) { int portsize; + void *maddr; isa_compat_alloc_resources(dev, &res); if (res.memory) - dvp->id_maddr = rman_get_virtual(res.memory); + maddr = rman_get_virtual(res.memory); else - dvp->id_maddr = 0; + maddr = 0; + dvp->id_maddr = maddr; portsize = dvp->id_driver->probe(dvp); isa_compat_release_resources(dev, &res); if (portsize != 0) { @@ -168,8 +175,9 @@ isa_compat_probe(device_t dev) isa_set_irq(dev, ffs(dvp->id_irq) - 1); if (dvp->id_drq != isa_get_drq(dev)) isa_set_drq(dev, dvp->id_drq); - if (dvp->id_maddr != (void *) isa_get_maddr(dev)) - isa_set_maddr(dev, (int) dvp->id_maddr); + if (dvp->id_maddr != maddr) + isa_set_maddr(dev, + (int) dvp->id_maddr - KERNBASE); if (dvp->id_msize != isa_get_msize(dev)) isa_set_msize(dev, dvp->id_msize); return 0;