* pci-irq VIA82C586 problem on IBM 4694-205 kernel version 2.4.29 [not found] ` <20050513164654.GB30792@us.ibm.com> @ 2005-05-17 14:27 ` Salomon, Frank 2005-05-18 11:33 ` Marcelo Tosatti 0 siblings, 1 reply; 4+ messages in thread From: Salomon, Frank @ 2005-05-17 14:27 UTC (permalink / raw) To: linux-net, linux-kernel; +Cc: Don Fry Hi All, With kernel version 2.4.18 I have no problem to run pcnet32.o on the IBM 4694-205. Now I switch to kernel version 2.4.29. insmod crc32 : ok , insmod mii : ok , insmod pcnet32 : ok. But if I run ifconfig (ifup) the system fries. Can't toggle the numlock led. I find out that the system generates permanently interrupts from the pcnet32 chip after calling request_irq (irq=9). lspci: 00:00.0 Host bridge: VIA Technologies, Inc. VT82C585VP [Apollo VP1/VPX] (rev 25) 00:07.0 ISA bridge: VIA Technologies, Inc. VT82C586/A/B PCI-to-ISA [Apollo VP] (rev 47) 00:07.1 IDE interface: VIA Technologies, Inc. VT82C586/B/686A/B PIPC Bus Master IDE (rev 06) 00:07.2 USB Controller: VIA Technologies, Inc. USB (rev 02) 00:07.3 Non-VGA unclassified device: VIA Technologies, Inc. VT82C586B ACPI (rev 10) 00:0a.0 VGA compatible controller: Cirrus Logic GD 5446 00:0b.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 43) A possible solution could be (only tested on IBM 4694-205 and I don't have other systems with VIA Tech.): diff -u 2.4.29_orig/arch/i386/kernel/pci-irq.c 2.4.29/arch/i386/kernel/pci-irq.c --- 2.4.29_orig/arch/i386/kernel/pci-irq.c Wed Jan 19 15:09:25 2005 +++ 2.4.29/arch/i386/kernel/pci-irq.c Tue May 17 15:55:28 2005 @@ -214,6 +214,17 @@ return 1; } +static int pirq_via_586_get(struct pci_dev *router, struct pci_dev *dev, int pirq) +{ + return read_config_nybble(router, 0x55, pirq); +} +static int pirq_via_586_set(struct pci_dev *router, struct pci_dev *dev, int pirq, int irq) +{ + write_config_nybble(router, 0x55, pirq, irq); + return 1; +} + + /* * ITE 8330G pirq rules are nibble-based * FIXME: pirqmap may be { 1, 0, 3, 2 }, @@ -649,6 +660,10 @@ switch(device) { case PCI_DEVICE_ID_VIA_82C586_0: + r->name = "VIA"; + r->get = pirq_via_586_get; + r->set = pirq_via_586_set; + return 1; case PCI_DEVICE_ID_VIA_82C596: case PCI_DEVICE_ID_VIA_82C686: case PCI_DEVICE_ID_VIA_8231: Best regards, Frank ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: pci-irq VIA82C586 problem on IBM 4694-205 kernel version 2.4.29 2005-05-17 14:27 ` pci-irq VIA82C586 problem on IBM 4694-205 kernel version 2.4.29 Salomon, Frank @ 2005-05-18 11:33 ` Marcelo Tosatti 2005-05-19 7:44 ` Salomon, Frank 0 siblings, 1 reply; 4+ messages in thread From: Marcelo Tosatti @ 2005-05-18 11:33 UTC (permalink / raw) To: Salomon, Frank; +Cc: linux-net, linux-kernel, Don Fry Hi Frank, On Tue, May 17, 2005 at 04:27:20PM +0200, Salomon, Frank wrote: > Hi All, > > With kernel version 2.4.18 I have no problem to run pcnet32.o on the IBM > 4694-205. Now I switch to kernel version 2.4.29. insmod crc32 : ok , > insmod mii : ok , insmod pcnet32 : ok. > > But if I run ifconfig (ifup) the system fries. Can't toggle the numlock > led. I find out that the system generates permanently interrupts from > the pcnet32 chip after calling request_irq (irq=9). > > lspci: > 00:00.0 Host bridge: VIA Technologies, Inc. VT82C585VP [Apollo VP1/VPX] > (rev 25) > 00:07.0 ISA bridge: VIA Technologies, Inc. VT82C586/A/B PCI-to-ISA > [Apollo VP] (rev 47) > 00:07.1 IDE interface: VIA Technologies, Inc. VT82C586/B/686A/B PIPC Bus > Master IDE (rev 06) > 00:07.2 USB Controller: VIA Technologies, Inc. USB (rev 02) > 00:07.3 Non-VGA unclassified device: VIA Technologies, Inc. VT82C586B > ACPI (rev 10) > 00:0a.0 VGA compatible controller: Cirrus Logic GD 5446 > 00:0b.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 > [PCnet32 LANCE] (rev 43) > > > A possible solution could be (only tested on IBM 4694-205 and I don't > have other systems with VIA Tech.): Why the current get/set methods for via pirq do not work as expected? /* * The VIA pirq rules are nibble-based, like ALI, * but without the ugly irq number munging. * However, PIRQD is in the upper instead of lower nibble. */ 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); } 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); return 1; } Only difference is that your change ignores the "pirq" value... Is that the problem? > diff -u 2.4.29_orig/arch/i386/kernel/pci-irq.c > 2.4.29/arch/i386/kernel/pci-irq.c > --- 2.4.29_orig/arch/i386/kernel/pci-irq.c Wed Jan 19 15:09:25 2005 > +++ 2.4.29/arch/i386/kernel/pci-irq.c Tue May 17 15:55:28 2005 > @@ -214,6 +214,17 @@ > return 1; > } > > +static int pirq_via_586_get(struct pci_dev *router, struct pci_dev > *dev, int pirq) > +{ > + return read_config_nybble(router, 0x55, pirq); > +} > +static int pirq_via_586_set(struct pci_dev *router, struct pci_dev > *dev, int pirq, int irq) > +{ > + write_config_nybble(router, 0x55, pirq, irq); > + return 1; > +} > + > + > /* > * ITE 8330G pirq rules are nibble-based > * FIXME: pirqmap may be { 1, 0, 3, 2 }, > @@ -649,6 +660,10 @@ > switch(device) > { > case PCI_DEVICE_ID_VIA_82C586_0: > + r->name = "VIA"; > + r->get = pirq_via_586_get; > + r->set = pirq_via_586_set; > + return 1; > case PCI_DEVICE_ID_VIA_82C596: > case PCI_DEVICE_ID_VIA_82C686: > case PCI_DEVICE_ID_VIA_8231: ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: pci-irq VIA82C586 problem on IBM 4694-205 kernel version 2.4.29 2005-05-18 11:33 ` Marcelo Tosatti @ 2005-05-19 7:44 ` Salomon, Frank [not found] ` <20050525115910.GA15873@logos.cnet> 0 siblings, 1 reply; 4+ messages in thread From: Salomon, Frank @ 2005-05-19 7:44 UTC (permalink / raw) To: Marcelo Tosatti; +Cc: linux-net, linux-kernel Hi Marcelo, sorry, I don't know why my solution is working correctly. I compared the sources of the kernel version 2.4.18 with the version 2.4.29. Don send me a very interesting link (http://lwn.net/Articles/38879/). I try to switch back to the function from version 2.4.18 and it is working correctly too. But I only switch back for the VIA 82C586 which is included in the IBM 4694-205 and in the 4694-245. Best regards, Frank Marcelo Tosatti wrote: > Hi Frank, > > On Tue, May 17, 2005 at 04:27:20PM +0200, Salomon, Frank wrote: > >>Hi All, >> >>With kernel version 2.4.18 I have no problem to run pcnet32.o on the IBM >>4694-205. Now I switch to kernel version 2.4.29. insmod crc32 : ok , >>insmod mii : ok , insmod pcnet32 : ok. >> >>But if I run ifconfig (ifup) the system fries. Can't toggle the numlock >>led. I find out that the system generates permanently interrupts from >>the pcnet32 chip after calling request_irq (irq=9). >> >>lspci: >>00:00.0 Host bridge: VIA Technologies, Inc. VT82C585VP [Apollo VP1/VPX] >>(rev 25) >>00:07.0 ISA bridge: VIA Technologies, Inc. VT82C586/A/B PCI-to-ISA >>[Apollo VP] (rev 47) >>00:07.1 IDE interface: VIA Technologies, Inc. VT82C586/B/686A/B PIPC Bus >>Master IDE (rev 06) >>00:07.2 USB Controller: VIA Technologies, Inc. USB (rev 02) >>00:07.3 Non-VGA unclassified device: VIA Technologies, Inc. VT82C586B >>ACPI (rev 10) >>00:0a.0 VGA compatible controller: Cirrus Logic GD 5446 >>00:0b.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 >>[PCnet32 LANCE] (rev 43) >> >> >>A possible solution could be (only tested on IBM 4694-205 and I don't >>have other systems with VIA Tech.): > > > Why the current get/set methods for via pirq do not work as expected? > > /* > * The VIA pirq rules are nibble-based, like ALI, > * but without the ugly irq number munging. > * However, PIRQD is in the upper instead of lower nibble. > */ > 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); > } > > 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); > return 1; > } > > Only difference is that your change ignores the "pirq" value... Is that > the problem? > > > >>diff -u 2.4.29_orig/arch/i386/kernel/pci-irq.c >>2.4.29/arch/i386/kernel/pci-irq.c >>--- 2.4.29_orig/arch/i386/kernel/pci-irq.c Wed Jan 19 15:09:25 2005 >>+++ 2.4.29/arch/i386/kernel/pci-irq.c Tue May 17 15:55:28 2005 >>@@ -214,6 +214,17 @@ >> return 1; >> } >> >>+static int pirq_via_586_get(struct pci_dev *router, struct pci_dev >>*dev, int pirq) >>+{ >>+ return read_config_nybble(router, 0x55, pirq); >>+} >>+static int pirq_via_586_set(struct pci_dev *router, struct pci_dev >>*dev, int pirq, int irq) >>+{ >>+ write_config_nybble(router, 0x55, pirq, irq); >>+ return 1; >>+} >>+ >>+ >> /* >> * ITE 8330G pirq rules are nibble-based >> * FIXME: pirqmap may be { 1, 0, 3, 2 }, >>@@ -649,6 +660,10 @@ >> switch(device) >> { >> case PCI_DEVICE_ID_VIA_82C586_0: >>+ r->name = "VIA"; >>+ r->get = pirq_via_586_get; >>+ r->set = pirq_via_586_set; >>+ return 1; >> case PCI_DEVICE_ID_VIA_82C596: >> case PCI_DEVICE_ID_VIA_82C686: >> case PCI_DEVICE_ID_VIA_8231: > > ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <20050525115910.GA15873@logos.cnet>]
* Re: pci-irq VIA82C586 problem on IBM 4694-205 kernel version 2.4.29 [not found] ` <20050525115910.GA15873@logos.cnet> @ 2005-05-31 13:54 ` Salomon, Frank 0 siblings, 0 replies; 4+ messages in thread From: Salomon, Frank @ 2005-05-31 13:54 UTC (permalink / raw) To: Marcelo Tosatti; +Cc: linux-kernel, linux-net, brazilnut Hi Marcelo, The patch you have referenced is working correctly on my IBM 4694-205. Many thanks, Frank Marcelo Tosatti wrote: > > > Hi Frank, > > A fix for the problem has just been merged in v2.4.31-rc1 - I would > appreciate if you can test that. > ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2005-05-31 13:56 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <428379AC.9080206@wincor-nixdorf.com>
[not found] ` <20050512162803.GA15201@us.ibm.com>
[not found] ` <42847C64.5080405@wincor-nixdorf.com>
[not found] ` <20050513164654.GB30792@us.ibm.com>
2005-05-17 14:27 ` pci-irq VIA82C586 problem on IBM 4694-205 kernel version 2.4.29 Salomon, Frank
2005-05-18 11:33 ` Marcelo Tosatti
2005-05-19 7:44 ` Salomon, Frank
[not found] ` <20050525115910.GA15873@logos.cnet>
2005-05-31 13:54 ` Salomon, Frank
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox