aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@pobox.com>2005-12-13 22:22:41 -0500
committerJeff Garzik <jgarzik@pobox.com>2005-12-13 22:22:41 -0500
commite7fb585940a3dc87a42ebc30a62296e5cf6f9cd5 (patch)
tree6b0290f0cb5f019b792df8580a73f0f852a4e856
parent80c7af4074cbb4cb6be5d35c443ea6d5e8838a84 (diff)
parentc6329f4df2263ab5a40601a5236639e61b682f51 (diff)
Merge branch 'upstream'
-rw-r--r--Documentation/kernel-parameters.txt8
-rw-r--r--drivers/net/skge.c2
-rw-r--r--drivers/pci/quirks.c30
-rw-r--r--drivers/scsi/libata-scsi.c7
-rw-r--r--drivers/scsi/sata_mv.c3
-rw-r--r--drivers/scsi/sata_promise.c12
-rw-r--r--drivers/scsi/sata_sx4.c3
-rw-r--r--include/asm-ia64/sal.h3
-rw-r--r--include/linux/libata.h1
-rw-r--r--init/Kconfig4
10 files changed, 59 insertions, 14 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 5dffcfefc3c7..61a56b100c62 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -633,6 +633,14 @@ running once the system is up.
633 inport.irq= [HW] Inport (ATI XL and Microsoft) busmouse driver 633 inport.irq= [HW] Inport (ATI XL and Microsoft) busmouse driver
634 Format: <irq> 634 Format: <irq>
635 635
636 combined_mode= [HW] control which driver uses IDE ports in combined
637 mode: legacy IDE driver, libata, or both
638 (in the libata case, libata.atapi_enabled=1 may be
639 useful as well). Note that using the ide or libata
640 options may affect your device naming (e.g. by
641 changing hdc to sdb).
642 Format: combined (default), ide, or libata
643
636 inttest= [IA64] 644 inttest= [IA64]
637 645
638 io7= [HW] IO7 for Marvel based alpha systems 646 io7= [HW] IO7 for Marvel based alpha systems
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index 8b6e2a11e28d..00d683063c01 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -2280,7 +2280,7 @@ static int skge_xmit_frame(struct sk_buff *skb, struct net_device *dev)
2280 } 2280 }
2281 2281
2282 if (unlikely(skge->tx_avail < skb_shinfo(skb)->nr_frags +1)) { 2282 if (unlikely(skge->tx_avail < skb_shinfo(skb)->nr_frags +1)) {
2283 if (!netif_stopped(dev)) { 2283 if (!netif_queue_stopped(dev)) {
2284 netif_stop_queue(dev); 2284 netif_stop_queue(dev);
2285 2285
2286 printk(KERN_WARNING PFX "%s: ring full when queue awake!\n", 2286 printk(KERN_WARNING PFX "%s: ring full when queue awake!\n",
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 3a4f49f4effb..f28ebdd3958a 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -1098,6 +1098,23 @@ static void __init quirk_alder_ioapic(struct pci_dev *pdev)
1098DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EESSC, quirk_alder_ioapic ); 1098DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EESSC, quirk_alder_ioapic );
1099#endif 1099#endif
1100 1100
1101enum ide_combined_type { COMBINED = 0, IDE = 1, LIBATA = 2 };
1102/* Defaults to combined */
1103static enum ide_combined_type combined_mode;
1104
1105static int __init combined_setup(char *str)
1106{
1107 if (!strncmp(str, "ide", 3))
1108 combined_mode = IDE;
1109 else if (!strncmp(str, "libata", 6))
1110 combined_mode = LIBATA;
1111 else /* "combined" or anything else defaults to old behavior */
1112 combined_mode = COMBINED;
1113
1114 return 1;
1115}
1116__setup("combined_mode=", combined_setup);
1117
1101#ifdef CONFIG_SCSI_SATA_INTEL_COMBINED 1118#ifdef CONFIG_SCSI_SATA_INTEL_COMBINED
1102static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev) 1119static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev)
1103{ 1120{
@@ -1164,6 +1181,19 @@ static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev)
1164 if (prog & comb) 1181 if (prog & comb)
1165 return; 1182 return;
1166 1183
1184 /* Don't reserve any so the IDE driver can get them (but only if
1185 * combined_mode=ide).
1186 */
1187 if (combined_mode == IDE)
1188 return;
1189
1190 /* Grab them both for libata if combined_mode=libata. */
1191 if (combined_mode == LIBATA) {
1192 request_region(0x1f0, 8, "libata"); /* port 0 */
1193 request_region(0x170, 8, "libata"); /* port 1 */
1194 return;
1195 }
1196
1167 /* SATA port is in legacy mode. Reserve port so that 1197 /* SATA port is in legacy mode. Reserve port so that
1168 * IDE driver does not attempt to use it. If request_region 1198 * IDE driver does not attempt to use it. If request_region
1169 * fails, it will be obvious at boot time, so we don't bother 1199 * fails, it will be obvious at boot time, so we don't bother
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c
index e2f298b2ade6..665ce382eb23 100644
--- a/drivers/scsi/libata-scsi.c
+++ b/drivers/scsi/libata-scsi.c
@@ -2169,9 +2169,12 @@ ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev)
2169 if (unlikely(!ata_dev_present(dev))) 2169 if (unlikely(!ata_dev_present(dev)))
2170 return NULL; 2170 return NULL;
2171 2171
2172 if (!atapi_enabled) { 2172 if (!atapi_enabled || (ap->flags & ATA_FLAG_NO_ATAPI)) {
2173 if (unlikely(dev->class == ATA_DEV_ATAPI)) 2173 if (unlikely(dev->class == ATA_DEV_ATAPI)) {
2174 printk(KERN_WARNING "ata%u(%u): WARNING: ATAPI is %s, device ignored.\n",
2175 ap->id, dev->devno, atapi_enabled ? "not supported with this driver" : "disabled");
2174 return NULL; 2176 return NULL;
2177 }
2175 } 2178 }
2176 2179
2177 return dev; 2180 return dev;
diff --git a/drivers/scsi/sata_mv.c b/drivers/scsi/sata_mv.c
index 3e7866b51ac6..b2bf16a9bf4b 100644
--- a/drivers/scsi/sata_mv.c
+++ b/drivers/scsi/sata_mv.c
@@ -86,7 +86,8 @@ enum {
86 MV_FLAG_DUAL_HC = (1 << 30), /* two SATA Host Controllers */ 86 MV_FLAG_DUAL_HC = (1 << 30), /* two SATA Host Controllers */
87 MV_FLAG_IRQ_COALESCE = (1 << 29), /* IRQ coalescing capability */ 87 MV_FLAG_IRQ_COALESCE = (1 << 29), /* IRQ coalescing capability */
88 MV_COMMON_FLAGS = (ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | 88 MV_COMMON_FLAGS = (ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
89 ATA_FLAG_SATA_RESET | ATA_FLAG_MMIO), 89 ATA_FLAG_SATA_RESET | ATA_FLAG_MMIO |
90 ATA_FLAG_NO_ATAPI),
90 MV_6XXX_FLAGS = MV_FLAG_IRQ_COALESCE, 91 MV_6XXX_FLAGS = MV_FLAG_IRQ_COALESCE,
91 92
92 CRQB_FLAG_READ = (1 << 0), 93 CRQB_FLAG_READ = (1 << 0),
diff --git a/drivers/scsi/sata_promise.c b/drivers/scsi/sata_promise.c
index e2e146a14f97..da7fa04b8a73 100644
--- a/drivers/scsi/sata_promise.c
+++ b/drivers/scsi/sata_promise.c
@@ -70,6 +70,9 @@ enum {
70 PDC_HAS_PATA = (1 << 1), /* PDC20375 has PATA */ 70 PDC_HAS_PATA = (1 << 1), /* PDC20375 has PATA */
71 71
72 PDC_RESET = (1 << 11), /* HDMA reset */ 72 PDC_RESET = (1 << 11), /* HDMA reset */
73
74 PDC_COMMON_FLAGS = ATA_FLAG_NO_LEGACY | ATA_FLAG_SRST |
75 ATA_FLAG_MMIO | ATA_FLAG_NO_ATAPI,
73}; 76};
74 77
75 78
@@ -162,8 +165,7 @@ static const struct ata_port_info pdc_port_info[] = {
162 /* board_2037x */ 165 /* board_2037x */
163 { 166 {
164 .sht = &pdc_ata_sht, 167 .sht = &pdc_ata_sht,
165 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | 168 .host_flags = PDC_COMMON_FLAGS | ATA_FLAG_SATA,
166 ATA_FLAG_SRST | ATA_FLAG_MMIO,
167 .pio_mask = 0x1f, /* pio0-4 */ 169 .pio_mask = 0x1f, /* pio0-4 */
168 .mwdma_mask = 0x07, /* mwdma0-2 */ 170 .mwdma_mask = 0x07, /* mwdma0-2 */
169 .udma_mask = 0x7f, /* udma0-6 ; FIXME */ 171 .udma_mask = 0x7f, /* udma0-6 ; FIXME */
@@ -173,8 +175,7 @@ static const struct ata_port_info pdc_port_info[] = {
173 /* board_20319 */ 175 /* board_20319 */
174 { 176 {
175 .sht = &pdc_ata_sht, 177 .sht = &pdc_ata_sht,
176 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | 178 .host_flags = PDC_COMMON_FLAGS | ATA_FLAG_SATA,
177 ATA_FLAG_SRST | ATA_FLAG_MMIO,
178 .pio_mask = 0x1f, /* pio0-4 */ 179 .pio_mask = 0x1f, /* pio0-4 */
179 .mwdma_mask = 0x07, /* mwdma0-2 */ 180 .mwdma_mask = 0x07, /* mwdma0-2 */
180 .udma_mask = 0x7f, /* udma0-6 ; FIXME */ 181 .udma_mask = 0x7f, /* udma0-6 ; FIXME */
@@ -184,8 +185,7 @@ static const struct ata_port_info pdc_port_info[] = {
184 /* board_20619 */ 185 /* board_20619 */
185 { 186 {
186 .sht = &pdc_ata_sht, 187 .sht = &pdc_ata_sht,
187 .host_flags = ATA_FLAG_NO_LEGACY | ATA_FLAG_SRST | 188 .host_flags = PDC_COMMON_FLAGS | ATA_FLAG_SLAVE_POSS,
188 ATA_FLAG_MMIO | ATA_FLAG_SLAVE_POSS,
189 .pio_mask = 0x1f, /* pio0-4 */ 189 .pio_mask = 0x1f, /* pio0-4 */
190 .mwdma_mask = 0x07, /* mwdma0-2 */ 190 .mwdma_mask = 0x07, /* mwdma0-2 */
191 .udma_mask = 0x7f, /* udma0-6 ; FIXME */ 191 .udma_mask = 0x7f, /* udma0-6 ; FIXME */
diff --git a/drivers/scsi/sata_sx4.c b/drivers/scsi/sata_sx4.c
index 58da854a7c68..94b253b80da8 100644
--- a/drivers/scsi/sata_sx4.c
+++ b/drivers/scsi/sata_sx4.c
@@ -220,7 +220,8 @@ static const struct ata_port_info pdc_port_info[] = {
220 { 220 {
221 .sht = &pdc_sata_sht, 221 .sht = &pdc_sata_sht,
222 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | 222 .host_flags = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY |
223 ATA_FLAG_SRST | ATA_FLAG_MMIO, 223 ATA_FLAG_SRST | ATA_FLAG_MMIO |
224 ATA_FLAG_NO_ATAPI,
224 .pio_mask = 0x1f, /* pio0-4 */ 225 .pio_mask = 0x1f, /* pio0-4 */
225 .mwdma_mask = 0x07, /* mwdma0-2 */ 226 .mwdma_mask = 0x07, /* mwdma0-2 */
226 .udma_mask = 0x7f, /* udma0-6 ; FIXME */ 227 .udma_mask = 0x7f, /* udma0-6 ; FIXME */
diff --git a/include/asm-ia64/sal.h b/include/asm-ia64/sal.h
index 29df88bdd2bc..313cad0628d0 100644
--- a/include/asm-ia64/sal.h
+++ b/include/asm-ia64/sal.h
@@ -320,7 +320,8 @@ typedef struct sal_log_timestamp {
320typedef struct sal_log_record_header { 320typedef struct sal_log_record_header {
321 u64 id; /* Unique monotonically increasing ID */ 321 u64 id; /* Unique monotonically increasing ID */
322 sal_log_revision_t revision; /* Major and Minor revision of header */ 322 sal_log_revision_t revision; /* Major and Minor revision of header */
323 u16 severity; /* Error Severity */ 323 u8 severity; /* Error Severity */
324 u8 validation_bits; /* 0: platform_guid, 1: !timestamp */
324 u32 len; /* Length of this error log in bytes */ 325 u32 len; /* Length of this error log in bytes */
325 sal_log_timestamp_t timestamp; /* Timestamp */ 326 sal_log_timestamp_t timestamp; /* Timestamp */
326 efi_guid_t platform_guid; /* Unique OEM Platform ID */ 327 efi_guid_t platform_guid; /* Unique OEM Platform ID */
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 46337e71613e..e828e172ccbf 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -122,6 +122,7 @@ enum {
122 ATA_FLAG_NOINTR = (1 << 9), /* FIXME: Remove this once 122 ATA_FLAG_NOINTR = (1 << 9), /* FIXME: Remove this once
123 * proper HSM is in place. */ 123 * proper HSM is in place. */
124 ATA_FLAG_DEBUGMSG = (1 << 10), 124 ATA_FLAG_DEBUGMSG = (1 << 10),
125 ATA_FLAG_NO_ATAPI = (1 << 11), /* No ATAPI support */
125 126
126 ATA_QCFLAG_ACTIVE = (1 << 1), /* cmd not yet ack'd to scsi lyer */ 127 ATA_QCFLAG_ACTIVE = (1 << 1), /* cmd not yet ack'd to scsi lyer */
127 ATA_QCFLAG_SG = (1 << 3), /* have s/g table? */ 128 ATA_QCFLAG_SG = (1 << 3), /* have s/g table? */
diff --git a/init/Kconfig b/init/Kconfig
index ea097e0a9c02..be74adb389ea 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -206,7 +206,7 @@ config HOTPLUG
206 outside the kernel tree does. Such modules require Y here. 206 outside the kernel tree does. Such modules require Y here.
207 207
208config KOBJECT_UEVENT 208config KOBJECT_UEVENT
209 bool "Kernel Userspace Events" 209 bool "Kernel Userspace Events" if EMBEDDED
210 depends on NET 210 depends on NET
211 default y 211 default y
212 help 212 help
@@ -339,7 +339,7 @@ config EPOLL
339 support for epoll family of system calls. 339 support for epoll family of system calls.
340 340
341config CC_OPTIMIZE_FOR_SIZE 341config CC_OPTIMIZE_FOR_SIZE
342 bool "Optimize for size" if EMBEDDED 342 bool "Optimize for size"
343 default y if ARM || H8300 343 default y if ARM || H8300
344 help 344 help
345 Enabling this option will pass "-Os" instead of "-O2" to gcc 345 Enabling this option will pass "-Os" instead of "-O2" to gcc