public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andre Pang <ozone@algorithm.com.au>
To: Dave Jones <davej@suse.de>, linux-kernel@vger.kernel.org
Subject: [PATCH] 2.5.7-dj3 KL133/KM133 problems (screen corruption/MWQ)
Date: Thu, 4 Apr 2002 16:04:11 +1000	[thread overview]
Message-ID: <1017900251.760478.2242.nullmailer@bozar.algorithm.com.au> (raw)

Hi Dave,

People with KL133/KM133 motherboards who use the integrated
on-board video see major video corruption problems with 2.4.18.

This is because of the MWQ patch[1] which was submitted for
2.4.18.  The patch below fixes the video corruption by not
clearing bit 5, but _only_ on the K[LM]133 motherboards.  The
K[LM]133 northbridge is detected by the revision ID of the
northbridge chipset.  It thus does not affect people who use the
same VT836[35] northbridge which is present on other
motherboards, such as the KT133.

Without the patch, the KL133 is completely unusable in text mode
and suffers major video corruption in graphics mode; it really
needs to be fixed.  Other motherboards are completely unaffected.

Note that this is exactly what the VIA patches for Windows do:
the VIA 4in1 drivers normally clear bits 5, 6 and 7 of register
55, but they do not clear bit 5 if the motherboard is a K[LM]133.
This occurs on Windows 98 and Windows XP, and indicates to me
that what this patch does should be the correct behaviour.

The patch is against 2.5.7-dj3.  It's being submitted to Marcelo
for inclusion in 2.4.19, and Alan has picked it up for
2.4-ac.  Please forward it to Linus for inclusion in the main
kernel tree, or let me know if you want me to send it to him.

Thanks!

1. http://marc.theaimsgroup.com/?l=linux-kernel&m=100772126208656&w=2


--- linux-2.5.7-dj3/arch/i386/kernel/pci-pc.c	Thu Apr  4 15:46:19 2002
+++ linux-2.5.7-dj3-rx55-fix/arch/i386/kernel/pci-pc.c	Thu Apr  4 15:48:10 2002
@@ -1186,28 +1186,48 @@
 
 /*
  * Addresses issues with problems in the memory write queue timer in
- * certain VIA Northbridges.  This bugfix is per VIA's specifications.
- *
+ * certain VIA Northbridges.  This bugfix is per VIA's specifications,
+ * except for the KL133/KM133: clearing bit 5 on those Northbridges seems
+ * to trigger a bug in its integrated ProSavage video card, which
+ * causes screen corruption.  We only clear bits 6 and 7 for that chipset,
+ * until VIA can provide us with definitive information on why screen
+ * corruption occurs, and what exactly those bits do.
+ * 
  * VIA 8363,8622,8361 Northbridges:
  *  - bits  5, 6, 7 at offset 0x55 need to be turned off
  * VIA 8367 (KT266x) Northbridges:
  *  - bits  5, 6, 7 at offset 0x95 need to be turned off
+ * VIA 8363 rev 0x81/0x84 (KL133/KM133) Northbridges:
+ *  - bits     6, 7 at offset 0x55 need to be turned off
  */
+
+#define VIA_8363_KL133_REVISION_ID 0x81
+#define VIA_8363_KM133_REVISION_ID 0x84
+
 static void __init pci_fixup_via_northbridge_bug(struct pci_dev *d)
 {
 	u8 v;
+	u8 revision;
 	int where = 0x55;
+	int mask = 0x1f; /* clear bits 5, 6, 7 by default */
 
+	pci_read_config_byte(d, PCI_REVISION_ID, &revision);
+	
 	if (d->device == PCI_DEVICE_ID_VIA_8367_0) {
   	        where = 0x95; /* the memory write queue timer register is 
                                  different for the kt266x's: 0x95 not 0x55 */
+	} else if (d->device == PCI_DEVICE_ID_VIA_8363_0 &&
+	           (revision == VIA_8363_KL133_REVISION_ID || 
+		    revision == VIA_8363_KM133_REVISION_ID)) {
+		mask = 0x3f; /* clear only bits 6 and 7; clearing bit 5
+				causes screen corruption on the KL133/KM133 */
 	}
 
         pci_read_config_byte(d, where, &v);
-	if (v & 0xe0) {
-		printk("Disabling broken memory write queue: [%02x] %02x->%02x\n",
-			where, v, v & 0x1f);
-		v &= 0x1f; /* clear bits 5, 6, 7 */
+	if (v & ~mask) {
+		printk("Disabling VIA memory write queue (PCI ID %04x, rev %02x): [%02x] %02x & %02x -> %02x\n", \
+			d->device, revision, where, v, mask, v & mask);
+		v &= mask;
 		pci_write_config_byte(d, where, v);
 	}
 }


-- 
#ozone/algorithm <ozone@algorithm.com.au>          - trust.in.love.to.save

             reply	other threads:[~2002-04-04  6:05 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-04-04  6:04 Andre Pang [this message]
2002-04-04 11:46 ` [PATCH] 2.5.7-dj3 KL133/KM133 problems (screen corruption/MWQ) Dave Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1017900251.760478.2242.nullmailer@bozar.algorithm.com.au \
    --to=ozone@algorithm.com.au \
    --cc=davej@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox