Skip to contentSkip to conversation

AMD760MPX: bogus chispset ? (was PROBLEM: sound is stutter, sizzle with lasts kernel releases)

DISCUSSION xi 1 participant 1 message Jul 11, 2003

lore
Share & tools
lore

xi

author
#0 lore raw

Hello,

I wrote some month ago about a problem with last kernel release. The thread is accessible here: http://marc.theaimsgroup.com/?l=linux-kernel&m=103875989402489&w=2
To sum-up the problem: I have a tyan tiger MPX with AMD762 and AMD768 chipsets. With latest kernel releases, every time I listen music and that something appens on my screen (moving a window, watching a movie) the sound stutter. The problem occurs whatever the soundcard and the graphic card is. But the problem didn't occured with older kernel releases like 2.4.8. I received tons of advices, but none was working.

Now I have done some investigations, and I think I have found the problem: It has appeared between kernel-2.4.18-pre9 and kernel-2.4.18-rc1 If I am not wrong, between these two versions, Alan Cox did a change in drivers/pci/quirks.c and this is this change which cause the problem.

*** Before the change we got:

static void __init quirk_amd_ordering(struct pci_dev *dev)

{
          u32 pcic;

          pci_read_config_dword(dev, 0x42, &pcic);
          if((pcic&2)==0)
          {
                  pcic |= 2;
                  printk(KERN_WARNING "BIOS disabled PCI ordering 
compliance, so we enabled it again.\n");
                  pci_write_config_dword(dev, 0x42, pcic);
          }
}

*** After the change we got:

/*
* Following the PCI ordering rules is optional on the AMD762. I'm not
* sure what the designers were smoking but let's not inhale... *
* To be fair to AMD, it follows the spec by default, its BIOS people
* who turn it off!
*/
static void __init quirk_amd_ordering(struct pci_dev *dev)

{
	u32 pcic;
	pci_read_config_dword(dev, 0x4C, &pcic);
	if((pcic&6)!=6)
	{
		pcic |= 6;
		printk(KERN_WARNING "BIOS failed to enable PCI standards compliance, 
fixing this error.\n");
		pci_write_config_dword(dev, 0x4C, pcic);
		pci_read_config_dword(dev, 0x84, &pcic);
		pcic |= (1<<23);        /* Required in this mode */
		pci_write_config_dword(dev, 0x84, pcic);
	}*/
}

Continuing my investigations, I have looked at the AMD762 datasheet. The new code which is intented to follow the PCI standards causes my problem! In fact with this code the system becomes completly slow, quite unusable.

I like the comment for the fix, but I have an other version :-)
I think AMD didn't follow the PCI specs by default (and no it's not bios people who turned it off, it's AMD!) because their chipsed is bogus and didn't work well (at all) following the specs !

I may be wrong but I don't think so. What do you think?

As for the fix, I propose to remove the quirk_amd_ordering function, or at least allow to don't use it. In fact the old kernels (before 2.4.18-rc1) worked fine for me because they didn't contained this workaround. Old kernels contained a workaround, but it was IMHO false because it changed reserved and probably unassigned registers (0x42). And note that due to this problem, I am using kernel-2.4.8 for about a year now, with 6 of the 7 PCI and AGP slots used, and I didn't noticed any instability.

I hope I was clear, and I really would like to see this problem solved.

Regards,
Xavier IZARD

P.S. I have also tested the 2.4.22-pre4 kernel, but as it contains the same code, the problem is still here.

Signature · 7 lines
E-mail:
[email protected] [email protected]
Please no longer use [email protected], this e-mail will be removed soon.

Homepage:
http://xizard.free.fr
http://www.chez.com/xizard/