Don't miss the ARM-scsi fix.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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  &lt;(address hidden)&gt;<br />
Acked-by: Paul Brook  &lt;(address hidden)&gt;

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:

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux