diff options
| -rw-r--r-- | arch/frv/mb93090-mb00/pci-vdk.c | 3 | ||||
| -rw-r--r-- | drivers/ata/ata_piix.c | 74 | ||||
| -rw-r--r-- | drivers/ata/libata-core.c | 1 | ||||
| -rw-r--r-- | drivers/ata/libata-sff.c | 4 | ||||
| -rw-r--r-- | drivers/ata/pata_cmd64x.c | 8 | ||||
| -rw-r--r-- | drivers/ata/pata_sis.c | 20 | ||||
| -rw-r--r-- | drivers/pci/pci-driver.c | 2 | ||||
| -rw-r--r-- | drivers/pci/pci.c | 7 | ||||
| -rw-r--r-- | include/asm-avr32/bug.h | 2 | ||||
| -rw-r--r-- | include/asm-frv/mb86943a.h | 3 | ||||
| -rw-r--r-- | include/asm-parisc/bug.h | 2 | ||||
| -rw-r--r-- | include/asm-s390/bug.h | 2 | ||||
| -rw-r--r-- | include/asm-sh/bug.h | 2 | ||||
| -rw-r--r-- | include/linux/pci.h | 2 | ||||
| -rw-r--r-- | kernel/irq/resend.c | 9 |
15 files changed, 82 insertions, 59 deletions
diff --git a/arch/frv/mb93090-mb00/pci-vdk.c b/arch/frv/mb93090-mb00/pci-vdk.c index 0b581e3cf7c7..6d51f133fb23 100644 --- a/arch/frv/mb93090-mb00/pci-vdk.c +++ b/arch/frv/mb93090-mb00/pci-vdk.c | |||
| @@ -400,7 +400,8 @@ int __init pcibios_init(void) | |||
| 400 | __reg_MB86943_pci_sl_mem_base = __region_CS2 + 0x08000000; | 400 | __reg_MB86943_pci_sl_mem_base = __region_CS2 + 0x08000000; |
| 401 | mb(); | 401 | mb(); |
| 402 | 402 | ||
| 403 | *(volatile unsigned long *)(__region_CS2+0x01300014) == 1; | 403 | /* enable PCI arbitration */ |
| 404 | __reg_MB86943_pci_arbiter = MB86943_PCIARB_EN; | ||
| 404 | 405 | ||
| 405 | ioport_resource.start = (__reg_MB86943_sl_pci_io_base << 9) & 0xfffffc00; | 406 | ioport_resource.start = (__reg_MB86943_sl_pci_io_base << 9) & 0xfffffc00; |
| 406 | ioport_resource.end = (__reg_MB86943_sl_pci_io_range << 9) | 0x3ff; | 407 | ioport_resource.end = (__reg_MB86943_sl_pci_io_range << 9) | 0x3ff; |
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c index ad070861bb53..a78832ea81fa 100644 --- a/drivers/ata/ata_piix.c +++ b/drivers/ata/ata_piix.c | |||
| @@ -890,37 +890,46 @@ static void ich_set_dmamode (struct ata_port *ap, struct ata_device *adev) | |||
| 890 | } | 890 | } |
| 891 | 891 | ||
| 892 | #ifdef CONFIG_PM | 892 | #ifdef CONFIG_PM |
| 893 | static struct dmi_system_id piix_broken_suspend_dmi_table[] = { | 893 | static int piix_broken_suspend(void) |
| 894 | { | 894 | { |
| 895 | .ident = "TECRA M5", | 895 | static struct dmi_system_id sysids[] = { |
| 896 | .matches = { | 896 | { |
| 897 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | 897 | .ident = "TECRA M5", |
| 898 | DMI_MATCH(DMI_PRODUCT_NAME, "TECRA M5"), | 898 | .matches = { |
| 899 | }, | 899 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), |
| 900 | }, | 900 | DMI_MATCH(DMI_PRODUCT_NAME, "TECRA M5"), |
| 901 | { | 901 | }, |
| 902 | .ident = "Satellite U200", | ||
| 903 | .matches = { | ||
| 904 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | ||
| 905 | DMI_MATCH(DMI_PRODUCT_NAME, "Satellite U200"), | ||
| 906 | }, | 902 | }, |
| 907 | }, | 903 | { |
| 908 | { | 904 | .ident = "Satellite U205", |
| 909 | .ident = "Satellite U205", | 905 | .matches = { |
| 910 | .matches = { | 906 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), |
| 911 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | 907 | DMI_MATCH(DMI_PRODUCT_NAME, "Satellite U205"), |
| 912 | DMI_MATCH(DMI_PRODUCT_NAME, "Satellite U205"), | 908 | }, |
| 913 | }, | 909 | }, |
| 914 | }, | 910 | { |
| 915 | { | 911 | .ident = "Portege M500", |
| 916 | .ident = "Portege M500", | 912 | .matches = { |
| 917 | .matches = { | 913 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), |
| 918 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | 914 | DMI_MATCH(DMI_PRODUCT_NAME, "PORTEGE M500"), |
| 919 | DMI_MATCH(DMI_PRODUCT_NAME, "PORTEGE M500"), | 915 | }, |
| 920 | }, | 916 | }, |
| 921 | }, | 917 | { } |
| 922 | { } | 918 | }; |
| 923 | }; | 919 | static const char *oemstrs[] = { |
| 920 | "Tecra M3,", | ||
| 921 | }; | ||
| 922 | int i; | ||
| 923 | |||
| 924 | if (dmi_check_system(sysids)) | ||
| 925 | return 1; | ||
| 926 | |||
| 927 | for (i = 0; i < ARRAY_SIZE(oemstrs); i++) | ||
| 928 | if (dmi_find_device(DMI_DEV_TYPE_OEM_STRING, oemstrs[i], NULL)) | ||
| 929 | return 1; | ||
| 930 | |||
| 931 | return 0; | ||
| 932 | } | ||
| 924 | 933 | ||
| 925 | static int piix_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg) | 934 | static int piix_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg) |
| 926 | { | 935 | { |
| @@ -937,8 +946,7 @@ static int piix_pci_device_suspend(struct pci_dev *pdev, pm_message_t mesg) | |||
| 937 | * cycles and power trying to do something to the sleeping | 946 | * cycles and power trying to do something to the sleeping |
| 938 | * beauty. | 947 | * beauty. |
| 939 | */ | 948 | */ |
| 940 | if (dmi_check_system(piix_broken_suspend_dmi_table) && | 949 | if (piix_broken_suspend() && mesg.event == PM_EVENT_SUSPEND) { |
| 941 | mesg.event == PM_EVENT_SUSPEND) { | ||
| 942 | pci_save_state(pdev); | 950 | pci_save_state(pdev); |
| 943 | 951 | ||
| 944 | /* mark its power state as "unknown", since we don't | 952 | /* mark its power state as "unknown", since we don't |
| @@ -973,10 +981,10 @@ static int piix_pci_device_resume(struct pci_dev *pdev) | |||
| 973 | pci_restore_state(pdev); | 981 | pci_restore_state(pdev); |
| 974 | 982 | ||
| 975 | /* PCI device wasn't disabled during suspend. Use | 983 | /* PCI device wasn't disabled during suspend. Use |
| 976 | * __pci_reenable_device() to avoid affecting the | 984 | * pci_reenable_device() to avoid affecting the enable |
| 977 | * enable count. | 985 | * count. |
| 978 | */ | 986 | */ |
| 979 | rc = __pci_reenable_device(pdev); | 987 | rc = pci_reenable_device(pdev); |
| 980 | if (rc) | 988 | if (rc) |
| 981 | dev_printk(KERN_ERR, &pdev->dev, "failed to enable " | 989 | dev_printk(KERN_ERR, &pdev->dev, "failed to enable " |
| 982 | "device after resume (%d)\n", rc); | 990 | "device after resume (%d)\n", rc); |
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 6001aae0b884..60e78bef469f 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
| @@ -3788,6 +3788,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { | |||
| 3788 | { "WDC WD740ADFD-00NLR1", NULL, ATA_HORKAGE_NONCQ, }, | 3788 | { "WDC WD740ADFD-00NLR1", NULL, ATA_HORKAGE_NONCQ, }, |
| 3789 | { "FUJITSU MHV2080BH", "00840028", ATA_HORKAGE_NONCQ, }, | 3789 | { "FUJITSU MHV2080BH", "00840028", ATA_HORKAGE_NONCQ, }, |
| 3790 | { "ST9160821AS", "3.CLF", ATA_HORKAGE_NONCQ, }, | 3790 | { "ST9160821AS", "3.CLF", ATA_HORKAGE_NONCQ, }, |
| 3791 | { "SAMSUNG HD401LJ", "ZZ100-15", ATA_HORKAGE_NONCQ, }, | ||
| 3791 | 3792 | ||
| 3792 | /* Devices with NCQ limits */ | 3793 | /* Devices with NCQ limits */ |
| 3793 | 3794 | ||
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index 6c289c7b1322..1cce2198baaf 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c | |||
| @@ -573,6 +573,10 @@ int ata_pci_init_bmdma(struct ata_host *host) | |||
| 573 | struct pci_dev *pdev = to_pci_dev(gdev); | 573 | struct pci_dev *pdev = to_pci_dev(gdev); |
| 574 | int i, rc; | 574 | int i, rc; |
| 575 | 575 | ||
| 576 | /* No BAR4 allocation: No DMA */ | ||
| 577 | if (pci_resource_start(pdev, 4) == 0) | ||
| 578 | return 0; | ||
| 579 | |||
| 576 | /* TODO: If we get no DMA mask we should fall back to PIO */ | 580 | /* TODO: If we get no DMA mask we should fall back to PIO */ |
| 577 | rc = pci_set_dma_mask(pdev, ATA_DMA_MASK); | 581 | rc = pci_set_dma_mask(pdev, ATA_DMA_MASK); |
| 578 | if (rc) | 582 | if (rc) |
diff --git a/drivers/ata/pata_cmd64x.c b/drivers/ata/pata_cmd64x.c index dc443e7dc37c..e34b632487d7 100644 --- a/drivers/ata/pata_cmd64x.c +++ b/drivers/ata/pata_cmd64x.c | |||
| @@ -31,7 +31,7 @@ | |||
| 31 | #include <linux/libata.h> | 31 | #include <linux/libata.h> |
| 32 | 32 | ||
| 33 | #define DRV_NAME "pata_cmd64x" | 33 | #define DRV_NAME "pata_cmd64x" |
| 34 | #define DRV_VERSION "0.2.3" | 34 | #define DRV_VERSION "0.2.4" |
| 35 | 35 | ||
| 36 | /* | 36 | /* |
| 37 | * CMD64x specific registers definition. | 37 | * CMD64x specific registers definition. |
| @@ -397,7 +397,7 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
| 397 | .flags = ATA_FLAG_SLAVE_POSS, | 397 | .flags = ATA_FLAG_SLAVE_POSS, |
| 398 | .pio_mask = 0x1f, | 398 | .pio_mask = 0x1f, |
| 399 | .mwdma_mask = 0x07, | 399 | .mwdma_mask = 0x07, |
| 400 | .udma_mask = ATA_UDMA1, | 400 | .udma_mask = ATA_UDMA2, |
| 401 | .port_ops = &cmd64x_port_ops | 401 | .port_ops = &cmd64x_port_ops |
| 402 | }, | 402 | }, |
| 403 | { /* CMD 646 rev 1 */ | 403 | { /* CMD 646 rev 1 */ |
| @@ -412,7 +412,7 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
| 412 | .flags = ATA_FLAG_SLAVE_POSS, | 412 | .flags = ATA_FLAG_SLAVE_POSS, |
| 413 | .pio_mask = 0x1f, | 413 | .pio_mask = 0x1f, |
| 414 | .mwdma_mask = 0x07, | 414 | .mwdma_mask = 0x07, |
| 415 | .udma_mask = ATA_UDMA2, | 415 | .udma_mask = ATA_UDMA4, |
| 416 | .port_ops = &cmd648_port_ops | 416 | .port_ops = &cmd648_port_ops |
| 417 | }, | 417 | }, |
| 418 | { /* CMD 649 */ | 418 | { /* CMD 649 */ |
| @@ -420,7 +420,7 @@ static int cmd64x_init_one(struct pci_dev *pdev, const struct pci_device_id *id) | |||
| 420 | .flags = ATA_FLAG_SLAVE_POSS, | 420 | .flags = ATA_FLAG_SLAVE_POSS, |
| 421 | .pio_mask = 0x1f, | 421 | .pio_mask = 0x1f, |
| 422 | .mwdma_mask = 0x07, | 422 | .mwdma_mask = 0x07, |
| 423 | .udma_mask = ATA_UDMA3, | 423 | .udma_mask = ATA_UDMA5, |
| 424 | .port_ops = &cmd648_port_ops | 424 | .port_ops = &cmd648_port_ops |
| 425 | } | 425 | } |
| 426 | }; | 426 | }; |
diff --git a/drivers/ata/pata_sis.c b/drivers/ata/pata_sis.c index 9a829a7cbc60..66bd0e83ac07 100644 --- a/drivers/ata/pata_sis.c +++ b/drivers/ata/pata_sis.c | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | * pata_sis.c - SiS ATA driver | 2 | * pata_sis.c - SiS ATA driver |
| 3 | * | 3 | * |
| 4 | * (C) 2005 Red Hat <alan@redhat.com> | 4 | * (C) 2005 Red Hat <alan@redhat.com> |
| 5 | * (C) 2007 Bartlomiej Zolnierkiewicz | ||
| 5 | * | 6 | * |
| 6 | * Based upon linux/drivers/ide/pci/sis5513.c | 7 | * Based upon linux/drivers/ide/pci/sis5513.c |
| 7 | * Copyright (C) 1999-2000 Andre Hedrick <andre@linux-ide.org> | 8 | * Copyright (C) 1999-2000 Andre Hedrick <andre@linux-ide.org> |
| @@ -35,7 +36,7 @@ | |||
| 35 | #include "sis.h" | 36 | #include "sis.h" |
| 36 | 37 | ||
| 37 | #define DRV_NAME "pata_sis" | 38 | #define DRV_NAME "pata_sis" |
| 38 | #define DRV_VERSION "0.5.1" | 39 | #define DRV_VERSION "0.5.2" |
| 39 | 40 | ||
| 40 | struct sis_chipset { | 41 | struct sis_chipset { |
| 41 | u16 device; /* PCI host ID */ | 42 | u16 device; /* PCI host ID */ |
| @@ -237,7 +238,7 @@ static void sis_old_set_piomode (struct ata_port *ap, struct ata_device *adev) | |||
| 237 | } | 238 | } |
| 238 | 239 | ||
| 239 | /** | 240 | /** |
| 240 | * sis_100_set_pioode - Initialize host controller PATA PIO timings | 241 | * sis_100_set_piomode - Initialize host controller PATA PIO timings |
| 241 | * @ap: Port whose timings we are configuring | 242 | * @ap: Port whose timings we are configuring |
| 242 | * @adev: Device we are configuring for. | 243 | * @adev: Device we are configuring for. |
| 243 | * | 244 | * |
| @@ -262,7 +263,7 @@ static void sis_100_set_piomode (struct ata_port *ap, struct ata_device *adev) | |||
| 262 | } | 263 | } |
| 263 | 264 | ||
| 264 | /** | 265 | /** |
| 265 | * sis_133_set_pioode - Initialize host controller PATA PIO timings | 266 | * sis_133_set_piomode - Initialize host controller PATA PIO timings |
| 266 | * @ap: Port whose timings we are configuring | 267 | * @ap: Port whose timings we are configuring |
| 267 | * @adev: Device we are configuring for. | 268 | * @adev: Device we are configuring for. |
| 268 | * | 269 | * |
| @@ -334,7 +335,7 @@ static void sis_old_set_dmamode (struct ata_port *ap, struct ata_device *adev) | |||
| 334 | int drive_pci = sis_old_port_base(adev); | 335 | int drive_pci = sis_old_port_base(adev); |
| 335 | u16 timing; | 336 | u16 timing; |
| 336 | 337 | ||
| 337 | const u16 mwdma_bits[] = { 0x707, 0x202, 0x202 }; | 338 | const u16 mwdma_bits[] = { 0x008, 0x302, 0x301 }; |
| 338 | const u16 udma_bits[] = { 0xE000, 0xC000, 0xA000 }; | 339 | const u16 udma_bits[] = { 0xE000, 0xC000, 0xA000 }; |
| 339 | 340 | ||
| 340 | pci_read_config_word(pdev, drive_pci, &timing); | 341 | pci_read_config_word(pdev, drive_pci, &timing); |
| @@ -342,15 +343,15 @@ static void sis_old_set_dmamode (struct ata_port *ap, struct ata_device *adev) | |||
| 342 | if (adev->dma_mode < XFER_UDMA_0) { | 343 | if (adev->dma_mode < XFER_UDMA_0) { |
| 343 | /* bits 3-0 hold recovery timing bits 8-10 active timing and | 344 | /* bits 3-0 hold recovery timing bits 8-10 active timing and |
| 344 | the higer bits are dependant on the device */ | 345 | the higer bits are dependant on the device */ |
| 345 | timing &= ~ 0x870F; | 346 | timing &= ~0x870F; |
| 346 | timing |= mwdma_bits[speed]; | 347 | timing |= mwdma_bits[speed]; |
| 347 | pci_write_config_word(pdev, drive_pci, timing); | ||
| 348 | } else { | 348 | } else { |
| 349 | /* Bit 15 is UDMA on/off, bit 13-14 are cycle time */ | 349 | /* Bit 15 is UDMA on/off, bit 13-14 are cycle time */ |
| 350 | speed = adev->dma_mode - XFER_UDMA_0; | 350 | speed = adev->dma_mode - XFER_UDMA_0; |
| 351 | timing &= ~0x6000; | 351 | timing &= ~0x6000; |
| 352 | timing |= udma_bits[speed]; | 352 | timing |= udma_bits[speed]; |
| 353 | } | 353 | } |
| 354 | pci_write_config_word(pdev, drive_pci, timing); | ||
| 354 | } | 355 | } |
| 355 | 356 | ||
| 356 | /** | 357 | /** |
| @@ -373,7 +374,7 @@ static void sis_66_set_dmamode (struct ata_port *ap, struct ata_device *adev) | |||
| 373 | int drive_pci = sis_old_port_base(adev); | 374 | int drive_pci = sis_old_port_base(adev); |
| 374 | u16 timing; | 375 | u16 timing; |
| 375 | 376 | ||
| 376 | const u16 mwdma_bits[] = { 0x707, 0x202, 0x202 }; | 377 | const u16 mwdma_bits[] = { 0x008, 0x302, 0x301 }; |
| 377 | const u16 udma_bits[] = { 0xF000, 0xD000, 0xB000, 0xA000, 0x9000}; | 378 | const u16 udma_bits[] = { 0xF000, 0xD000, 0xB000, 0xA000, 0x9000}; |
| 378 | 379 | ||
| 379 | pci_read_config_word(pdev, drive_pci, &timing); | 380 | pci_read_config_word(pdev, drive_pci, &timing); |
| @@ -432,8 +433,7 @@ static void sis_100_set_dmamode (struct ata_port *ap, struct ata_device *adev) | |||
| 432 | * @adev: Device to program | 433 | * @adev: Device to program |
| 433 | * | 434 | * |
| 434 | * Set UDMA/MWDMA mode for device, in host controller PCI config space. | 435 | * Set UDMA/MWDMA mode for device, in host controller PCI config space. |
| 435 | * Handles early SiS 961 bridges. Supports MWDMA as well unlike | 436 | * Handles early SiS 961 bridges. |
| 436 | * the old ide/pci driver. | ||
| 437 | * | 437 | * |
| 438 | * LOCKING: | 438 | * LOCKING: |
| 439 | * None (inherited from caller). | 439 | * None (inherited from caller). |
| @@ -467,8 +467,6 @@ static void sis_133_early_set_dmamode (struct ata_port *ap, struct ata_device *a | |||
| 467 | * @adev: Device to program | 467 | * @adev: Device to program |
| 468 | * | 468 | * |
| 469 | * Set UDMA/MWDMA mode for device, in host controller PCI config space. | 469 | * Set UDMA/MWDMA mode for device, in host controller PCI config space. |
| 470 | * Handles early SiS 961 bridges. Supports MWDMA as well unlike | ||
| 471 | * the old ide/pci driver. | ||
| 472 | * | 470 | * |
| 473 | * LOCKING: | 471 | * LOCKING: |
| 474 | * None (inherited from caller). | 472 | * None (inherited from caller). |
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index 8e58ea3d95c0..004bc2487270 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c | |||
| @@ -310,7 +310,7 @@ static int pci_default_resume(struct pci_dev *pci_dev) | |||
| 310 | /* restore the PCI config space */ | 310 | /* restore the PCI config space */ |
| 311 | pci_restore_state(pci_dev); | 311 | pci_restore_state(pci_dev); |
| 312 | /* if the device was enabled before suspend, reenable */ | 312 | /* if the device was enabled before suspend, reenable */ |
| 313 | retval = __pci_reenable_device(pci_dev); | 313 | retval = pci_reenable_device(pci_dev); |
| 314 | /* if the device was busmaster before the suspend, make it busmaster again */ | 314 | /* if the device was busmaster before the suspend, make it busmaster again */ |
| 315 | if (pci_dev->is_busmaster) | 315 | if (pci_dev->is_busmaster) |
| 316 | pci_set_master(pci_dev); | 316 | pci_set_master(pci_dev); |
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 1ee9cd9c86e2..37c00f6fd801 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c | |||
| @@ -695,14 +695,13 @@ static int do_pci_enable_device(struct pci_dev *dev, int bars) | |||
| 695 | } | 695 | } |
| 696 | 696 | ||
| 697 | /** | 697 | /** |
| 698 | * __pci_reenable_device - Resume abandoned device | 698 | * pci_reenable_device - Resume abandoned device |
| 699 | * @dev: PCI device to be resumed | 699 | * @dev: PCI device to be resumed |
| 700 | * | 700 | * |
| 701 | * Note this function is a backend of pci_default_resume and is not supposed | 701 | * Note this function is a backend of pci_default_resume and is not supposed |
| 702 | * to be called by normal code, write proper resume handler and use it instead. | 702 | * to be called by normal code, write proper resume handler and use it instead. |
| 703 | */ | 703 | */ |
| 704 | int | 704 | int pci_reenable_device(struct pci_dev *dev) |
| 705 | __pci_reenable_device(struct pci_dev *dev) | ||
| 706 | { | 705 | { |
| 707 | if (atomic_read(&dev->enable_cnt)) | 706 | if (atomic_read(&dev->enable_cnt)) |
| 708 | return do_pci_enable_device(dev, (1 << PCI_NUM_RESOURCES) - 1); | 707 | return do_pci_enable_device(dev, (1 << PCI_NUM_RESOURCES) - 1); |
| @@ -1604,7 +1603,7 @@ early_param("pci", pci_setup); | |||
| 1604 | device_initcall(pci_init); | 1603 | device_initcall(pci_init); |
| 1605 | 1604 | ||
| 1606 | EXPORT_SYMBOL_GPL(pci_restore_bars); | 1605 | EXPORT_SYMBOL_GPL(pci_restore_bars); |
| 1607 | EXPORT_SYMBOL(__pci_reenable_device); | 1606 | EXPORT_SYMBOL(pci_reenable_device); |
| 1608 | EXPORT_SYMBOL(pci_enable_device_bars); | 1607 | EXPORT_SYMBOL(pci_enable_device_bars); |
| 1609 | EXPORT_SYMBOL(pci_enable_device); | 1608 | EXPORT_SYMBOL(pci_enable_device); |
| 1610 | EXPORT_SYMBOL(pcim_enable_device); | 1609 | EXPORT_SYMBOL(pcim_enable_device); |
diff --git a/include/asm-avr32/bug.h b/include/asm-avr32/bug.h index afdcd79a2966..331d45bab18f 100644 --- a/include/asm-avr32/bug.h +++ b/include/asm-avr32/bug.h | |||
| @@ -57,7 +57,7 @@ | |||
| 57 | 57 | ||
| 58 | #define WARN_ON(condition) \ | 58 | #define WARN_ON(condition) \ |
| 59 | ({ \ | 59 | ({ \ |
| 60 | typeof(condition) __ret_warn_on = (condition); \ | 60 | int __ret_warn_on = !!(condition); \ |
| 61 | if (unlikely(__ret_warn_on)) \ | 61 | if (unlikely(__ret_warn_on)) \ |
| 62 | _BUG_OR_WARN(BUGFLAG_WARNING); \ | 62 | _BUG_OR_WARN(BUGFLAG_WARNING); \ |
| 63 | unlikely(__ret_warn_on); \ | 63 | unlikely(__ret_warn_on); \ |
diff --git a/include/asm-frv/mb86943a.h b/include/asm-frv/mb86943a.h index b89fd0b56bb3..e87ef924bfb4 100644 --- a/include/asm-frv/mb86943a.h +++ b/include/asm-frv/mb86943a.h | |||
| @@ -36,4 +36,7 @@ | |||
| 36 | #define __reg_MB86943_pci_sl_io_base *(volatile uint32_t *) (__region_CS1 + 0x70) | 36 | #define __reg_MB86943_pci_sl_io_base *(volatile uint32_t *) (__region_CS1 + 0x70) |
| 37 | #define __reg_MB86943_pci_sl_mem_base *(volatile uint32_t *) (__region_CS1 + 0x78) | 37 | #define __reg_MB86943_pci_sl_mem_base *(volatile uint32_t *) (__region_CS1 + 0x78) |
| 38 | 38 | ||
| 39 | #define __reg_MB86943_pci_arbiter *(volatile uint32_t *) (__region_CS2 + 0x01300014) | ||
| 40 | #define MB86943_PCIARB_EN 0x00000001 | ||
| 41 | |||
| 39 | #endif /* _ASM_MB86943A_H */ | 42 | #endif /* _ASM_MB86943A_H */ |
diff --git a/include/asm-parisc/bug.h b/include/asm-parisc/bug.h index 83ba510ed5d8..8cfc553fc837 100644 --- a/include/asm-parisc/bug.h +++ b/include/asm-parisc/bug.h | |||
| @@ -74,7 +74,7 @@ | |||
| 74 | 74 | ||
| 75 | 75 | ||
| 76 | #define WARN_ON(x) ({ \ | 76 | #define WARN_ON(x) ({ \ |
| 77 | typeof(x) __ret_warn_on = (x); \ | 77 | int __ret_warn_on = !!(x); \ |
| 78 | if (__builtin_constant_p(__ret_warn_on)) { \ | 78 | if (__builtin_constant_p(__ret_warn_on)) { \ |
| 79 | if (__ret_warn_on) \ | 79 | if (__ret_warn_on) \ |
| 80 | __WARN(); \ | 80 | __WARN(); \ |
diff --git a/include/asm-s390/bug.h b/include/asm-s390/bug.h index 838684dc6d35..384e3621e341 100644 --- a/include/asm-s390/bug.h +++ b/include/asm-s390/bug.h | |||
| @@ -50,7 +50,7 @@ | |||
| 50 | #define BUG() __EMIT_BUG(0) | 50 | #define BUG() __EMIT_BUG(0) |
| 51 | 51 | ||
| 52 | #define WARN_ON(x) ({ \ | 52 | #define WARN_ON(x) ({ \ |
| 53 | typeof(x) __ret_warn_on = (x); \ | 53 | int __ret_warn_on = !!(x); \ |
| 54 | if (__builtin_constant_p(__ret_warn_on)) { \ | 54 | if (__builtin_constant_p(__ret_warn_on)) { \ |
| 55 | if (__ret_warn_on) \ | 55 | if (__ret_warn_on) \ |
| 56 | __EMIT_BUG(BUGFLAG_WARNING); \ | 56 | __EMIT_BUG(BUGFLAG_WARNING); \ |
diff --git a/include/asm-sh/bug.h b/include/asm-sh/bug.h index 46f925c815ac..a78d482e8b2f 100644 --- a/include/asm-sh/bug.h +++ b/include/asm-sh/bug.h | |||
| @@ -61,7 +61,7 @@ do { \ | |||
| 61 | } while (0) | 61 | } while (0) |
| 62 | 62 | ||
| 63 | #define WARN_ON(x) ({ \ | 63 | #define WARN_ON(x) ({ \ |
| 64 | typeof(x) __ret_warn_on = (x); \ | 64 | int __ret_warn_on = !!(x); \ |
| 65 | if (__builtin_constant_p(__ret_warn_on)) { \ | 65 | if (__builtin_constant_p(__ret_warn_on)) { \ |
| 66 | if (__ret_warn_on) \ | 66 | if (__ret_warn_on) \ |
| 67 | __WARN(); \ | 67 | __WARN(); \ |
diff --git a/include/linux/pci.h b/include/linux/pci.h index d8f8a3a96644..e7d8d4e19a53 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
| @@ -534,7 +534,7 @@ static inline int pci_write_config_dword(struct pci_dev *dev, int where, u32 val | |||
| 534 | 534 | ||
| 535 | int __must_check pci_enable_device(struct pci_dev *dev); | 535 | int __must_check pci_enable_device(struct pci_dev *dev); |
| 536 | int __must_check pci_enable_device_bars(struct pci_dev *dev, int mask); | 536 | int __must_check pci_enable_device_bars(struct pci_dev *dev, int mask); |
| 537 | int __must_check __pci_reenable_device(struct pci_dev *); | 537 | int __must_check pci_reenable_device(struct pci_dev *); |
| 538 | int __must_check pcim_enable_device(struct pci_dev *pdev); | 538 | int __must_check pcim_enable_device(struct pci_dev *pdev); |
| 539 | void pcim_pin_device(struct pci_dev *pdev); | 539 | void pcim_pin_device(struct pci_dev *pdev); |
| 540 | 540 | ||
diff --git a/kernel/irq/resend.c b/kernel/irq/resend.c index 5bfeaed7e487..c38272746887 100644 --- a/kernel/irq/resend.c +++ b/kernel/irq/resend.c | |||
| @@ -62,6 +62,15 @@ void check_irq_resend(struct irq_desc *desc, unsigned int irq) | |||
| 62 | */ | 62 | */ |
| 63 | desc->chip->enable(irq); | 63 | desc->chip->enable(irq); |
| 64 | 64 | ||
| 65 | /* | ||
| 66 | * Temporary hack to figure out more about the problem, which | ||
| 67 | * is causing the ancient network cards to die. | ||
| 68 | */ | ||
| 69 | if (desc->handle_irq != handle_edge_irq) { | ||
| 70 | WARN_ON_ONCE(1); | ||
| 71 | return; | ||
| 72 | } | ||
| 73 | |||
| 65 | if ((status & (IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING) { | 74 | if ((status & (IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING) { |
| 66 | desc->status = (status & ~IRQ_PENDING) | IRQ_REPLAY; | 75 | desc->status = (status & ~IRQ_PENDING) | IRQ_REPLAY; |
| 67 | 76 | ||
