Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 9 Feb 1996 16:30:12 +0100 (MET)
From:      Luigi Rizzo <luigi@labinfo.iet.unipi.it>
To:        se@zpr.uni-koeln.de (Stefan Esser)
Cc:        hackers@freebsd.org
Subject:   Re: scanpci.c and pci-related stuff
Message-ID:  <199602091530.QAA02610@labinfo.iet.unipi.it>
In-Reply-To: <199602091507.AA07402@Sysiphos> from "Stefan Esser" at Feb 9, 96 04:07:22 pm

next in thread | previous in thread | raw e-mail | index | archive | help
> But it surely is useful to have a user
> land tool to do the scan.
> 
> } And, one thing I would like to know, is if there exist any program to
> } reconfigure a peripheral on the PCI bus.
> 
> What do you mean with "reconfigure" ???
> The PCI bus is designed to be configured 
> by the BIOS, and you can query the values
> choosen (memory, port and IRQ mappings,
> which possibly have resulted in chip set 
> registers being set accordingly) but you
> can't easily modify them. If an interrupt
> has been assigned to some PCI chip, for
> example, then the chip set has set up a
> connection from the PCI IntA line to some
> IRQ input of the system interrupt controller
> (in the simplest case).
> You can change this value without knowing 

I guess you mean "cannot"

> the details of the chip set. There are now
> PCI BIOS calls that ought to allow such an

>From the meteor.c driver :

    ...
    #ifdef METEOR_IRQ               /* from the meteor.h file */
        old_irq = pci_conf_read(tag, PCI_INTERRUPT_REG);
        pci_conf_write(tag, PCI_INTERRUPT_REG, METEOR_IRQ);
        new_irq = pci_conf_read(tag, PCI_INTERRUPT_REG);
        printf("meteor_attach: irq changed from %d to %d\n", (old_irq & 0xff),
                                                             (new_irq & 0xff));
    #endif METEOR_IRQ
    ...

it looks like it is not that hard, if the above works.

Note that I don't want to chang IRQ settings for an active board, just
to remap the setting for a board which is not correctly recognised.
It is intended as a fixit tool, "use at your own risk".

> } I believe I have a broken BIOS on one of our motherboards which
> } incorrectly assigns the same interrupt to two boards. I'd like to
> } override this somehow. And I would also like to avoid using INT10 on
> } the PCI bus, as many ISA board often use this interrupt line and they
> } cannot be configured on INT11, 12 or 13
> 
> The PCI BIOS is not necessarily broken, if
> it assigns one IRQ to multiple devices. Most
> motherboards sold until mid 1995 had the PCI
> IntA line of one slot connected to IntB of its
> neighbour, under the assumption, that devices
> that use IntB (multi-function devices or PCI 
> to PCI bridges) aren't commonly used.
> 
> Please describe the situation where the same
> IRQ was used for two PCI devices.

I have two identical PC-net PCI boards, plugged in adjacent slots.
On one particular motherboard they are both configured with IRQ10, on a
similar motherboard one gets IRQ10, the other IRQ11

Also, at times I'd like to free some specific IRQs. As an example: here
I have a system with the following devices:

	sio0,1,2 (irq 3, 4, 5)
	lpt0 (irq7)
	ed0 (irq10, PCI)
	meteor (irq9,PCI)
	vga (irq11, PCI)

and I'd like to put in a scanner (can use irq3,5,10) and an SB16.
I must free irq10, and possibly irq9 as well.

	Luigi
====================================================================
Luigi Rizzo                     Dip. di Ingegneria dell'Informazione
email: luigi@iet.unipi.it       Universita' di Pisa
tel: +39-50-568533              via Diotisalvi 2, 56126 PISA (Italy)
fax: +39-50-568522              http://www.iet.unipi.it/~luigi/
====================================================================



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199602091530.QAA02610>