diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2006-12-19 16:12:08 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-12-20 13:54:43 -0500 |
commit | fb0f2b40faff41f03acaa2ee6e6231fc96ca497c (patch) | |
tree | 10f2f69cb43d6440313bb3efdc53ca69334830c0 /include | |
parent | 7e7a43c32a8970ea2bfc3d1af353dcb1a9237769 (diff) |
PCI legacy resource fix
Since commit 368c73d4f689dae0807d0a2aa74c61fd2b9b075f the kernel will try
to update the non-writeable BAR registers 0..3 of PIIX4 IDE adapters if
pci_assign_unassigned_resources() is used to do full resource assignment of
the bus. This fails because in the PIIX4 these BAR registers have
implicitly assumed values and read back as zero; it used to work because
the kernel used to just write zero to that register the read back value did
match what was written.
The fix is a new resource flag IORESOURCE_PCI_FIXED used to mark a resource
as non-movable. This will also be useful to keep other import system
resources from being moved around - for example system consoles on PCI
busses.
[akpm@osdl.org: cleanup]
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Acked-by: Alan Cox <alan@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/ioport.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/ioport.h b/include/linux/ioport.h index cf8696d4a138..15228d79c5bc 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h | |||
@@ -91,6 +91,9 @@ struct resource_list { | |||
91 | #define IORESOURCE_ROM_COPY (1<<2) /* ROM is alloc'd copy, resource field overlaid */ | 91 | #define IORESOURCE_ROM_COPY (1<<2) /* ROM is alloc'd copy, resource field overlaid */ |
92 | #define IORESOURCE_ROM_BIOS_COPY (1<<3) /* ROM is BIOS copy, resource field overlaid */ | 92 | #define IORESOURCE_ROM_BIOS_COPY (1<<3) /* ROM is BIOS copy, resource field overlaid */ |
93 | 93 | ||
94 | /* PCI control bits. Shares IORESOURCE_BITS with above PCI ROM. */ | ||
95 | #define IORESOURCE_PCI_FIXED (1<<4) /* Do not move resource */ | ||
96 | |||
94 | /* PC/ISA/whatever - the normal PC address spaces: IO and memory */ | 97 | /* PC/ISA/whatever - the normal PC address spaces: IO and memory */ |
95 | extern struct resource ioport_resource; | 98 | extern struct resource ioport_resource; |
96 | extern struct resource iomem_resource; | 99 | extern struct resource iomem_resource; |