From owner-freebsd-bugs Tue Jul 7 13:10:23 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id NAA27008 for freebsd-bugs-outgoing; Tue, 7 Jul 1998 13:10:23 -0700 (PDT) (envelope-from owner-freebsd-bugs@FreeBSD.ORG) Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id NAA26984 for ; Tue, 7 Jul 1998 13:10:17 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.8.8/8.8.5) id NAA08842; Tue, 7 Jul 1998 13:10:01 -0700 (PDT) Received: (from nobody@localhost) by hub.freebsd.org (8.8.8/8.8.8) id NAA26120; Tue, 7 Jul 1998 13:05:41 -0700 (PDT) (envelope-from nobody) Message-Id: <199807072005.NAA26120@hub.freebsd.org> Date: Tue, 7 Jul 1998 13:05:41 -0700 (PDT) From: gallatin@cs.duke.edu To: freebsd-gnats-submit@FreeBSD.ORG X-Send-Pr-Version: www-1.0 Subject: i386/7201: (cpu == CPU_686) in pmap.c shoud also apply to CPU_PII, pmap_setdevram() disabled in wrong place Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org >Number: 7201 >Category: i386 >Synopsis: (cpu == CPU_686) in pmap.c shoud also apply to CPU_PII, pmap_setdevram() disabled in wrong place >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Jul 7 13:10:01 PDT 1998 >Last-Modified: >Originator: Andrew Gallatin >Organization: Duke University, Department of Computer Science >Release: FreeBSD 3.0-CURRENT >Environment: FreeBSD ladybug 3.0-CURRENT FreeBSD 3.0-CURRENT #10: Tue Jul 7 15:18:52 EDT 1998 gallatin@grasshopper.cs.duke.edu:/usr/src/sys/compile/TPZ i386 >Description: o Many Pentium Pro class features in pmap.c are enabled if cpu == CPU_686. With the recent addition of the CPU_PII, the CPU_PII cpu needs to be added to those tests. o The dangerous call to pmap_setdevram() which enables write combining on video cards in P6/PII machines is already disabled in vga_probe(). Others may want to enable write combining on other devices (like Myrinet cards) -- the immediate return in pmap_setdevram() should go away. >How-To-Repeat: Try enabling WC on a memory mapped PCI device on a PII ;-) >Fix: Index: pmap.c =================================================================== RCS file: /scratch/freebsd-cvs/src/sys/i386/i386/pmap.c,v retrieving revision 1.202 diff -c -r1.202 pmap.c *** pmap.c 1998/05/21 07:47:34 1.202 --- pmap.c 1998/07/07 18:42:08 *************** *** 458,464 **** { int i; ! if (cpu == CPU_686) { for(i = 0; i < NPPROVMTRR; i++) { PPro_vmtrr[i].base = rdmsr(PPRO_VMTRRphysBase0 + i * 2); PPro_vmtrr[i].mask = rdmsr(PPRO_VMTRRphysMask0 + i * 2); --- 458,464 ---- { int i; ! if ((cpu == CPU_686) || (cpu == CPU_PII)) { for(i = 0; i < NPPROVMTRR; i++) { PPro_vmtrr[i].base = rdmsr(PPRO_VMTRRphysBase0 + i * 2); PPro_vmtrr[i].mask = rdmsr(PPRO_VMTRRphysMask0 + i * 2); *************** *** 471,477 **** { int i; ! if (cpu == CPU_686) { wbinvd(); for(i = 0; i < NPPROVMTRR; i++) { wrmsr(PPRO_VMTRRphysBase0 + i * 2, PPro_vmtrr[i].base); --- 471,477 ---- { int i; ! if ((cpu == CPU_686) || (cpu == CPU_PII)) { wbinvd(); for(i = 0; i < NPPROVMTRR; i++) { wrmsr(PPRO_VMTRRphysBase0 + i * 2, PPro_vmtrr[i].base); *************** *** 483,489 **** void pmap_setvidram(void) { ! if (cpu == CPU_686) { wbinvd(); /* * Set memory between 0-640K to be WB --- 483,489 ---- void pmap_setvidram(void) { ! if ((cpu == CPU_686) || (cpu == CPU_PII)) { wbinvd(); /* * Set memory between 0-640K to be WB *************** *** 505,512 **** unsigned long long base; unsigned long long mask; ! return; ! if (cpu != CPU_686) return; free = -1; --- 505,511 ---- unsigned long long base; unsigned long long mask; ! if ((cpu != CPU_686) && (cpu != CPU_PII)) return; free = -1; *************** *** 2799,2805 **** cpu_invlpg(&prv_CPAGE3); #if defined(I686_CPU) ! if (cpu == CPU_686) i686_pagezero(&prv_CPAGE3); else #endif --- 2798,2804 ---- cpu_invlpg(&prv_CPAGE3); #if defined(I686_CPU) ! if ((cpu == CPU_686) || (cpu == CPU_PII)) i686_pagezero(&prv_CPAGE3); else #endif *************** *** 2820,2826 **** } #if defined(I686_CPU) ! if (cpu == CPU_686) i686_pagezero(CADDR2); else #endif --- 2819,2825 ---- } #if defined(I686_CPU) ! if ((cpu == CPU_686) || (cpu == CPU_PII)) i686_pagezero(CADDR2); else #endif >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message