PCI patch for 2.3.19

Martin Mares (mj@ucw.cz)
Wed, 6 Oct 1999 12:05:01 +0200


Hello, world!

I've just uploaded my new PCI patch against 2.3.19 at
ftp://atrey.karlin.mff.cuni.cz/pub/linux/pci/alpha/l-pci-2.3.19-1.gz.
If you were experiencing some PCI related problems, please try it out.

Changelog:

o Include <asm/pci.h> from <linux/pci.h>, removed all other refs to <asm/pci.h>.
o PC: Removed pci_bios_find_class, it wasn't used anyway.
o Reverted someone's change from 2.3.18. Resource assignment should really be
architecture specific since things like ISA mirror protection and
I/O port ranges vary from arch to arch.
o PC: Rewrote resource allocation, make it re-use as much from the original
configuration as possible, but re-assign addresses when needed. See
comments in the code for the whole algorithm. Also, S3 fixup works again.
o pci_find_parent_resource: Use just the resources of the parent bus and
don't climb up the bus tree, because there is no sense in doing that.
o PC: When "pci=rom" is not given, disable all expansion ROMs to avoid
address decoder sharing problems.
o PC: Address space collision or I/O address out of range -> complain
and reset the region, it will be re-assigned later.
o PC: Call pci_read_bridge_bases() from pcibios_fixup_bus(), so that
the per-bridge resources broken by 2.3.17 work again.
o Don't link syscall.o and setup.o on the PC, they aren't used anyway.
o Removed the "BUG: Parent resource not found" message -- this really
can occur if some crappy PC BIOS assigns an out-of-range address
to a I/O region. Grrr.
o Slot name is available as pci_dev->slot_name (Linus, I hope the name
is no more confusing... :))
o Use slot_name for all error messages during PCI probing.
o pci_read_bridge_bases() is now passed only a bus pointer and it exits
cleanly if the bus has no upstream bridge.
o pci_dev->hdr_type is now a stripped-down header type (i.e., without
the multi-function flag in bit 7).
o setup.c: Handle expansion ROMs on bridges correctly. To avoid code
duplication, we cache address of the rom base register in pci_dev.
o pci.h: Moved the ID list to <linux/pci_ids.h> which is included from pci.h.
This will allow us to generate the ID list automatically one day and makes
pci.h more readable.
o pci.h: Fake pci_find_subsys as well if no CONFIG_PCI.
o PC: Search the BIOS ROM for PCI IRQ Routing Table. If it's not found, try
the Get IRQ Routing Options PCI BIOS call (it can be disabled by a
command-line option and if it proves unreliable, I'll just default
the option to OFF) -- unfortunately, it seems many machines where we
need the IRQ routing info don't support the table-in-ROM way.
o PC: Use the IRQ Routing Table for detection of peer host bridges.
If this proves successful, we can drop most of the old peer host bridge magic.
o PC: If we find a device with IRQ pin, but no IRQ line set, try to look
up the IRQ Routing Table and find the IRQ line ourselves. Fixes several
known problems with USB controllers. If the IRQ is not routed, try to
find a free IRQ and route it unless the device is a VGA adapter.

TODO:

o PCI DMA functions (see <asm-sparc64/pci.h> and arch/sparc64/kernel/pci_iommu.c
for an example implementation -- good work, Dave!)
o ioctl() for setting of kernel view of IRQ's and addresses.
o Update Documentation/pci.txt.
o scan.c cleanup
o Read all the PCI sources and search for bugs :-)
o Try strange configurations
o create devlist.h and pci_ids.h from pci.ids
o name -> slot_name in drivers etc.
o Merge VISWS stuff.

Have a nice fortnight

-- 
Martin `MJ' Mares   <mj@ucw.cz>   http://atrey.karlin.mff.cuni.cz/~mj/
Faculty of Math and Physics, Charles University, Prague, Czech Rep., Earth
"Q: Do you believe in One God? A: Yes, up to isomorphism."

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/