Be irq routing table definition, rtr_vendor:rtr_device should contain
COMPATIBLE pci Interrupt Router, and rtr_bus & rtr_devfn - location of
the actual device (pirq_router_dev). So,
1. Apparently, there is a bug in the BIOS - 586 & 686 are not compatible
(different mapping)
2. Does anybody know why compatible device is probed first, and actual
one afterwards ? In other words, is swapping probes in the code above
would give more correct behavior ?
>
>
>This patch brings my board back to the correct behaviour
>[Aleksey Gorelov CC'd for review/comments/suggestions]:
>
>--- linux-2.6.13-git4/arch/i386/pci/irq.c.org	2005-07-23 
>11:15:12.000000000 +0200
>+++ linux-2.6.13-git4/arch/i386/pci/irq.c	2005-07-23 
>11:55:50.000000000 +0200
>@@ -553,10 +553,12 @@
> 	switch(device)
> 	{
> 		case PCI_DEVICE_ID_VIA_82C586_0:
>-			r->name = "VIA";
>-			r->get = pirq_via586_get;
>-			r->set = pirq_via586_set;
>-			return 1;
>+			if 
>(router->device==PCI_DEVICE_ID_VIA_82C586_0) {
>+				r->name = "VIA";
>+				r->get = pirq_via586_get;
>+				r->set = pirq_via586_set;
>+				return 1;
>+			}
> 		case PCI_DEVICE_ID_VIA_82C596:
> 		case PCI_DEVICE_ID_VIA_82C686:
> 		case PCI_DEVICE_ID_VIA_8231:
>
Probably, comments on buggy BIOS would be nice here.. 
Aleks.
>
>Can someone explain me what's going on and maybe cook a better fix?
>
>Thanks,
>
>Giancarlo
>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Most likely. Unfortunately, this is the last released BIOS for this old board AFAIK.
> 2. Does anybody know why compatible device is probed first, and actual
> one afterwards ? In other words, is swapping probes in the code above
> would give more correct behavior ?
>
This of course would fix my issue too...
> >This patch brings my board back to the correct behaviour
> >[Aleksey Gorelov CC'd for review/comments/suggestions]:
> >
> >--- linux-2.6.13-git4/arch/i386/pci/irq.c.org	2005-07-23
> >11:15:12.000000000 +0200
> >+++ linux-2.6.13-git4/arch/i386/pci/irq.c	2005-07-23
> >11:55:50.000000000 +0200
> >@@ -553,10 +553,12 @@
> > 	switch(device)
> > 	{
> > 		case PCI_DEVICE_ID_VIA_82C586_0:
> >-			r->name = "VIA";
> >-			r->get = pirq_via586_get;
> >-			r->set = pirq_via586_set;
> >-			return 1;
> >+			if (router->device==PCI_DEVICE_ID_VIA_82C586_0) {
> >+				r->name = "VIA";
> >+				r->get = pirq_via586_get;
> >+				r->set = pirq_via586_set;
> >+				return 1;
> >+			}
> > 		case PCI_DEVICE_ID_VIA_82C596:
> > 		case PCI_DEVICE_ID_VIA_82C686:
> > 		case PCI_DEVICE_ID_VIA_8231:
>
> Probably, comments on buggy BIOS would be nice here..
>
> Aleks.
>
Thanks,
Does this patch look good for you?
Who's the right developer to ask for inclusion? I'd like to see this problem addressed before 2.6.13...
Thanks,
Giancarlo
--- linux-2.6.13-git4/arch/i386/pci/irq.c.org	2005-07-23 11:15:12.000000000 +0200
+++ linux-2.6.13-git4/arch/i386/pci/irq.c	2005-07-26 20:53:11.000000000 +0200
@@ -550,6 +550,13 @@
 static __init int via_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
 {
 	/* FIXME: We should move some of the quirk fixup stuff here */
+
+	if (router->device == PCI_DEVICE_ID_VIA_82C686 &&
+			device == PCI_DEVICE_ID_VIA_82C586_0) {
+		/* Asus k7m bios wrongly reports 82C686A as 586-compatible */
+		device = PCI_DEVICE_ID_VIA_82C686;
+	}
+
 	switch(device)
 	{
 		case PCI_DEVICE_ID_VIA_82C586_0:
>-----Original Message-----
>From: linux-ker...@vger.kernel.org 
>[mailto:linux-ker...@vger.kernel.org] On Behalf Of 
>Giancarlo Formicuccia
>Sent: Tuesday, July 26, 2005 2:09 PM
>To: Aleksey Gorelov
>Cc: linux-...@vger.kernel.org
>Subject: Re: [2.6.13-rc3-git4] VIA686A polymorphs into VIA586!
>
>Does this patch look good for you?
>Who's the right developer to ask for inclusion? I'd like to 
>see this problem addressed before 2.6.13...
Yep, this is better. Please add appropriate patch description &
Signed-off-by and resend it to Greg and Andrew.
Aleks.