Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 May 1995 12:55:57 +0200
From:      esser@ZPR.Uni-Koeln.DE (Stefan Esser)
To:        Bruce Evans <bde@zeta.org.au>
Cc:        current@freebsd.org
Subject:   Re: Enthusiasm boost: make world works on 386SX16 4Mb
Message-ID:  <199505181055.AA14966@FileServ1.MI.Uni-Koeln.DE>
In-Reply-To: Bruce Evans <bde@zeta.org.au> "Re: Enthusiasm boost: make world works on 386SX16 4Mb" (May 18, 20:20)

next in thread | previous in thread | raw e-mail | index | archive | help
On May 18, 20:20, Bruce Evans wrote:
} Subject: Re: Enthusiasm boost: make world works on 386SX16 4Mb

I've got one new idea regarding tallying PCI interrupts.
Not a solution, but an easy workaround for now:

How about reserving the "0" entry in intrcnt[] and the 
intrnames list for PCI ?

Having "config" generate "vector.h" accordingly, if a
"controller pci0" entry was found would be trivial.
This would make the device_id of 0 do the right thing,
though there was only one combined counter for all PCI
interrupts for now.



} >} It's actually only an index into intr_countp[] and intrnames[].
} >} Config is supposed to fill in all device tables with suitable
} >} indexes and build a string table to match.  You can fake this
} >} now using dummy isa devices:
} >} 
} >} 	device	PCI0	at isa?
} >} 	...
} >} 	device	PCI15	at isa?
} >} 
} >} Use a trivial failing probe routine to copy the ids to a pci-specific
} >} place.
} 
} >Yes. Know this. But this would be to much of a hack IMHO !
} 
} It seems reasonable to have a real to have a real isa device
} behind the glue routines in isa/pcibus.c.

Hmm, don't quite understand ...

PCI device structures can be dynamically configured.
PCI interrupts can be shared (i.e. any number of similar
or even totally unrelated devices connected to one IRQ).

I don't see PCI as a bus "behind" ISA, even though  this 
is reality in today's predominant PCI system base ...

} >I've locally patched "config" to put pci devices into 
} >"vector.h". This makes the names appear in the intrnames
} >array, it just can't be located by the register_intr() 
} >code.
} 
} >By having an explicit intrcnt address and another name 
} >parameter, register_intr() could match the name in the 
} >intrnames array as build by the modified config.
} 
} OK.  Put all the controller names in the string table so
} that you don't have to decide which.

To support PCI devices, I've got to put some number of each 
into the string table. E.g. the "de" driver can be used with
4channel Ethernet cards, which will all use the same IRQ, but
are independent devices and should get private intrcnt values,
IMHO. 

So it might be useful to have some 8 entries for each PCI 
driver, as long as a fixed string table is used. 

But this won't do for loadable device drivers and really 
is no good match for PCI neither.

STefan

-- 
 Stefan Esser				Internet:	<se@ZPR.Uni-Koeln.DE>
 Zentrum fuer Paralleles Rechnen	Tel:		+49 221 4706017
 Universitaet zu Koeln			FAX:		+49 221 4705160
 Weyertal 80
 50931 Koeln



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