From owner-p4-projects@FreeBSD.ORG Mon Apr 25 04:59:33 2005 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2B36716A4D0; Mon, 25 Apr 2005 04:59:33 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id F3BC016A4CE for ; Mon, 25 Apr 2005 04:59:32 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id D73CD43D54 for ; Mon, 25 Apr 2005 04:59:32 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j3P4xWcb057686 for ; Mon, 25 Apr 2005 04:59:32 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j3P4xWxs057683 for perforce@freebsd.org; Mon, 25 Apr 2005 04:59:32 GMT (envelope-from marcel@freebsd.org) Date: Mon, 25 Apr 2005 04:59:32 GMT Message-Id: <200504250459.j3P4xWxs057683@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 75921 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Apr 2005 04:59:33 -0000 http://perforce.freebsd.org/chv.cgi?CH=75921 Change 75921 by marcel@marcel_nfs on 2005/04/25 04:59:01 Allow VGA resources across PCI-PCI bridges. Required to support a PCI based VGA driver with the VGA hardware behind a PCI-PCI bridge. Affected files ... .. //depot/projects/tty/sys/dev/pci/pci_pci.c#8 edit Differences ... ==== //depot/projects/tty/sys/dev/pci/pci_pci.c#8 (text+ko) ==== @@ -293,6 +293,23 @@ return (sc->iobase > 0 && sc->iobase < sc->iolimit); } +static __inline int +is_vga_resource(int type, u_long start, u_long end) +{ + switch (type) { + case SYS_RES_IOPORT: + if ((start >= 0x3b0 && end < 0x3bc) || + (start >= 0x3c0 && end < 0x3dc)) + return (1); + break; + case SYS_RES_MEMORY: + if (start >= 0xa0000 && end < 0xc0000) + return (1); + break; + } + return (0); +} + /* * We have to trap resource allocation requests and ensure that the bridge * is set up to, or capable of handling them. @@ -313,6 +330,11 @@ if (!pcib_is_io_open(sc)) break; ok = (start >= sc->iobase && end <= sc->iolimit); + + /* Make sure we allow access to VGA ports. */ + if (!ok) + ok = is_vga_resource(type, start, end); + if ((sc->flags & PCIB_SUBTRACTIVE) == 0) { if (!ok) { if (start < sc->iobase) @@ -357,6 +379,11 @@ ok = ok || (start >= sc->membase && end <= sc->memlimit); if (pcib_is_prefetch_open(sc)) ok = ok || (start >= sc->pmembase && end <= sc->pmemlimit); + + /* Make sure we allow access to VGA memory. */ + if (!ok) + ok = is_vga_resource(type, start, end); + if ((sc->flags & PCIB_SUBTRACTIVE) == 0) { if (!ok) { ok = 1;