From 2ca6e3ffb4c6ca2e2f1bc9768f4a03dbb24f4c28 Mon Sep 17 00:00:00 2001 From: ad Date: Sun, 1 Dec 2019 14:18:51 +0000 Subject: [PATCH] Map the video RAM cacheable/prefetchable, it's very slow and this helps a bit. --- sys/dev/ic/vga.c | 8 +++++--- sys/dev/ic/vga_raster.c | 10 ++++++---- sys/dev/isa/pcdisplay.c | 7 ++++--- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/sys/dev/ic/vga.c b/sys/dev/ic/vga.c index f6267b320f8c..1eed61d729ea 100644 --- a/sys/dev/ic/vga.c +++ b/sys/dev/ic/vga.c @@ -1,4 +1,4 @@ -/* $NetBSD: vga.c,v 1.116 2019/11/10 21:16:35 chs Exp $ */ +/* $NetBSD: vga.c,v 1.117 2019/12/01 14:18:51 ad Exp $ */ /* * Copyright (c) 1995, 1996 Carnegie-Mellon University. @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: vga.c,v 1.116 2019/11/10 21:16:35 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vga.c,v 1.117 2019/12/01 14:18:51 ad Exp $"); #include "opt_vga.h" /* for WSCONS_SUPPORT_PCVTFONTS */ @@ -544,7 +544,9 @@ vga_init(struct vga_config *vc, bus_space_tag_t iot, bus_space_tag_t memt) &vh->vh_ioh_6845)) panic("vga_init: couldn't map 6845 io"); - if (bus_space_map(vh->vh_memt, 0xa0000, 0x20000, 0, &vh->vh_allmemh)) + if (bus_space_map(vh->vh_memt, 0xa0000, 0x20000, + BUS_SPACE_MAP_CACHEABLE | BUS_SPACE_MAP_PREFETCHABLE, + &vh->vh_allmemh)) panic("vga_init: couldn't map memory"); if (bus_space_subregion(vh->vh_memt, vh->vh_allmemh, diff --git a/sys/dev/ic/vga_raster.c b/sys/dev/ic/vga_raster.c index f0721bfaddff..59c41b9ecd07 100644 --- a/sys/dev/ic/vga_raster.c +++ b/sys/dev/ic/vga_raster.c @@ -1,4 +1,4 @@ -/* $NetBSD: vga_raster.c,v 1.45 2019/11/10 21:16:35 chs Exp $ */ +/* $NetBSD: vga_raster.c,v 1.46 2019/12/01 14:18:51 ad Exp $ */ /* * Copyright (c) 2001, 2002 Bang Jun-Young @@ -56,7 +56,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: vga_raster.c,v 1.45 2019/11/10 21:16:35 chs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vga_raster.c,v 1.46 2019/12/01 14:18:51 ad Exp $"); #include "opt_vga.h" #include "opt_wsmsgattrs.h" /* for WSDISPLAY_CUSTOM_OUTPUT */ @@ -395,8 +395,10 @@ vga_raster_init(struct vga_config *vc, bus_space_tag_t iot, &vh->vh_ioh_6845)) panic("vga_raster_init: couldn't map 6845 io"); - if (bus_space_map(vh->vh_memt, 0xa0000, 0x20000, 0, &vh->vh_allmemh)) - panic("vga_raster_init: couldn't map memory"); + if (bus_space_map(vh->vh_memt, 0xa0000, 0x20000, + BUS_SPACE_MAP_CACHEABLE | BUS_SPACE_MAP_PREFETCHABLE, + &vh->vh_allmemh)) + panic("vga_init: couldn't map memory"); if (bus_space_subregion(vh->vh_memt, vh->vh_allmemh, 0, 0x10000, &vh->vh_memh)) diff --git a/sys/dev/isa/pcdisplay.c b/sys/dev/isa/pcdisplay.c index 39da056c12b8..349233c322f9 100644 --- a/sys/dev/isa/pcdisplay.c +++ b/sys/dev/isa/pcdisplay.c @@ -1,4 +1,4 @@ -/* $NetBSD: pcdisplay.c,v 1.43 2018/04/21 15:10:28 mlelstv Exp $ */ +/* $NetBSD: pcdisplay.c,v 1.44 2019/12/01 14:18:51 ad Exp $ */ /* * Copyright (c) 1998 @@ -27,7 +27,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: pcdisplay.c,v 1.43 2018/04/21 15:10:28 mlelstv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pcdisplay.c,v 1.44 2019/12/01 14:18:51 ad Exp $"); #include #include @@ -190,7 +190,8 @@ pcdisplay_init(struct pcdisplay_config *dc, bus_space_tag_t iot, dc->mono = mono; if (bus_space_map(memt, mono ? 0xb0000 : 0xb8000, 0x8000, - 0, &ph->ph_memh)) + BUS_SPACE_MAP_CACHEABLE | BUS_SPACE_MAP_PREFETCHABLE, + &ph->ph_memh)) panic("pcdisplay_init: cannot map memory"); if (bus_space_map(iot, mono ? 0x3b0 : 0x3d0, 0x10, 0, &ph->ph_ioh_6845))