Just making sure this fix winds up in 2.6.23: http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=4454/1
It fixes a regression that occurred between 2.6.20 and 2.6.20-rc1. Without it, qemu-system-arm can't use emulated SCSI drives. It wasn't in -rc7, and the attached patch Works For Me (tm). Signed-off-by: Rob Landley <[EMAIL PROTECTED]> Rob -- "One of my most productive days was throwing away 1000 lines of code." - Ken Thompson.
ARM Versatile PCI config reads of one byte width have the lowest two<br /> bits of the address cleared and result in reading from a wrong place<br /> in the config space. This change is to use word size accesses like it is done for halfword reads. Byte reads are used for retrieving the IRQ number of a PCI device and the problem was not exposed until 2.6.20 because the value read was discarded in drivers/pci/setup-irq.c (recently fixed). Signed-off-by: Andrzej Zaborowski <(address hidden)><br /> Acked-by: Paul Brook <(address hidden)> Note 2 submitted by Russell King on 02 Jul 2007 12:39:41 (UTC) Moved to applied Applied to git-curr. diff --git a/arch/arm/mach-versatile/pci.c b/arch/arm/mach-versatile/pci.c index ba58223..ca82901 100644 --- a/arch/arm/mach-versatile/pci.c +++ b/arch/arm/mach-versatile/pci.c @@ -117,7 +117,10 @@ static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int wh } else { switch (size) { case 1: - v = __raw_readb(addr); + v = __raw_readl(addr); + if (where & 2) v >>= 16; + if (where & 1) v >>= 8; + v &= 0xff; break; case 2: