>-----Original Message----- >From: Ondrej Zary [mailto:[email protected]] >Sent: Monday, May 23, 2005 11:25 AM >To: Aleksey Gorelov >Cc: Karsten Keil; [email protected]; Andrew Morton; >[email protected] >Subject: Re: [PATCH] bug in VIA PCI IRQ routing > >Aleksey Gorelov wrote: >>>-----Original Message----- >>>From: Karsten Keil [mailto:[email protected]] >>>Sent: Monday, May 23, 2005 5:59 AM >>>To: [email protected] >>>Cc: Andrew Morton; Aleksey Gorelov >>>Subject: [PATCH] bug in VIA PCI IRQ routing >>> >>>Hi, >>> >>>during certification of some systems with VIA 82C586_0 chipset >>>we found that the PCI IRQ routing of PIRQD line goes wrong and >>>the system >>>will get stuck because of unacknowledged IRQs. >>>It seems that the special case for PIRQD (pirq 4) is not >needed for all >>>VIA versions. With this patch, the IRQ routing on these systems works >>>again (It did work with older 2.4 kernel versions prior the >>>PIRQD change) >> >> >> Does anybody have 82C586 datasheet to verify 0x57 register ? >> For all I can say, both 82C686 & 8231 DO need special handling for >> PIRQD, >> since PIRQD routing is setup via bits 7-4 in 0x57 (see >datasheets from >> VIA >> website). It seems like 82C586 might be different... >> >> Aleks. >> > >This is from 82C586B datasheet (the 82C586A datasheet shows the same >register layout): > >Note: The definitions of the fields of the following three >registers were incorrectly documented in some earlier >revisions of this document. The silicon has not changed >and the following definition should be used for all silicon >revisions: > >Offset 55 - PNP IRQ Routing 1 >....................................... RW >These bits control routing for external IRQ inputs MIRQ0-1. >7-4 PIRQD# Routing (see PnP IRQ routing table) >3-0 MIRQ0 Routing (see PnP IRQ routing table) > >Offset 56 - PNP IRQ Routing 2 >....................................... RW >7-4 PIRQA# Routing (see PnP IRQ routing table) >3-0 PIRQB# Routing (see PnP IRQ routing table) > >Offset 57 - PNP IRQ Routing 3 >....................................... RW >7-4 PIRQC# Routing (see PnP IRQ routing table) >3-0 MIRQ1 Routing (see PnP IRQ routing table) > >Note: these bits must be set to 0 if Rx48[4]=1 and >Rx59[1]=1 (input IRQ8# on MIRQ1 pin 106) > >PnP IRQ Routing Table >0000 Disabled................................................. default >0001 IRQ1 >0010 Reserved >0011 IRQ3 >0100 IRQ4 >0101 IRQ5 >0110 IRQ6 >0111 IRQ7 >1000 Reserved >1001 IRQ9 >1010 IRQ10 >1011 IRQ11 >1100 IRQ12 >1101 Reserved >1110 IRQ14 >1111 IRQ15 Hmm, this is way different. Karsten, could you please verify if attached patch works for you ? Another unknown C596 south bridge. I wonder if it the same as 586, or closer to 686 ? Aleks. > > >> >>>diff -urN linux-2.6.12-rc4-git7.org/arch/i386/pci/irq.c >>>linux-2.6.12-rc4-git7/arch/i386/pci/irq.c >>>--- linux-2.6.12-rc4-git7.org/arch/i386/pci/irq.c >>>2005-05-23 13:35:48.562759583 +0200 >>>+++ linux-2.6.12-rc4-git7/arch/i386/pci/irq.c 2005-05-23 >>>13:41:47.349473060 +0200 >>>@@ -26,6 +26,7 @@ >>> >>>static int broken_hp_bios_irq9; >>>static int acer_tm360_irqrouting; >>>+static int via_pirq_patch_value = 5; >>> >>>static struct irq_routing_table *pirq_table; >>> >>>@@ -217,12 +218,12 @@ >>> */ >>>static int pirq_via_get(struct pci_dev *router, struct >>>pci_dev *dev, int pirq) >>>{ >>>- return read_config_nybble(router, 0x55, pirq == 4 ? 5 : pirq); >>>+ return read_config_nybble(router, 0x55, pirq == 4 ? >>>via_pirq_patch_value : pirq); >>>} >>> >>>static int pirq_via_set(struct pci_dev *router, struct >>>pci_dev *dev, int pirq, int irq) >>>{ >>>- write_config_nybble(router, 0x55, pirq == 4 ? 5 : pirq, irq); >>>+ write_config_nybble(router, 0x55, pirq == 4 ? >>>via_pirq_patch_value : pirq, irq); >>> return 1; >>>} >>> >>>@@ -512,6 +513,7 @@ >>> switch(device) >>> { >>> case PCI_DEVICE_ID_VIA_82C586_0: >>>+ via_pirq_patch_value = 4; >>> case PCI_DEVICE_ID_VIA_82C596: >>> case PCI_DEVICE_ID_VIA_82C686: >>> case PCI_DEVICE_ID_VIA_8231: >>> >>>-- >>>Karsten Keil >>>SuSE Labs >>>ISDN development >>> >> >> >> - >> To unsubscribe from this list: send the line "unsubscribe >linux-kernel" in >> the body of a message to [email protected] >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> Please read the FAQ at http://www.tux.org/lkml/ >> > > >-- >Ondrej Zary >
Attachment:
via.patch
Description: via.patch
- Follow-Ups:
- Re: [PATCH] bug in VIA PCI IRQ routing
- From: Karsten Keil <[email protected]>
- Re: [PATCH] bug in VIA PCI IRQ routing
- From: Karsten Keil <[email protected]>
- Re: [PATCH] bug in VIA PCI IRQ routing
- Prev by Date: Re: [patch 2/4] CPU hot-plug support for x86_64
- Next by Date: Re: [PATCH 2 of 4] ima: related Makefile compile order change and Readme
- Previous by thread: Re: [PATCH] bug in VIA PCI IRQ routing
- Next by thread: Re: [PATCH] bug in VIA PCI IRQ routing
- Index(es):