diff options
-rw-r--r-- | Documentation/scsi/ncr53c8xx.txt | 25 | ||||
-rw-r--r-- | Documentation/scsi/tmscsim.txt | 4 | ||||
-rw-r--r-- | arch/mips/loongson/loongson-3/hpet.c | 2 | ||||
-rw-r--r-- | drivers/block/cpqarray.c | 4 | ||||
-rw-r--r-- | drivers/bus/omap_l3_noc.c | 4 | ||||
-rw-r--r-- | drivers/bus/omap_l3_smx.c | 10 | ||||
-rw-r--r-- | drivers/mtd/nand/hisi504_nand.c | 3 | ||||
-rw-r--r-- | drivers/usb/isp1760/isp1760-core.c | 3 | ||||
-rw-r--r-- | drivers/usb/isp1760/isp1760-udc.c | 4 | ||||
-rw-r--r-- | include/linux/interrupt.h | 3 |
10 files changed, 13 insertions, 49 deletions
diff --git a/Documentation/scsi/ncr53c8xx.txt b/Documentation/scsi/ncr53c8xx.txt index 1d508dcbf859..8586efff1e99 100644 --- a/Documentation/scsi/ncr53c8xx.txt +++ b/Documentation/scsi/ncr53c8xx.txt | |||
@@ -786,7 +786,6 @@ port address 0x1400. | |||
786 | irqm:1 same as initial settings (assumed BIOS settings) | 786 | irqm:1 same as initial settings (assumed BIOS settings) |
787 | irqm:2 always totem pole | 787 | irqm:2 always totem pole |
788 | irqm:0x10 driver will not use IRQF_SHARED flag when requesting irq | 788 | irqm:0x10 driver will not use IRQF_SHARED flag when requesting irq |
789 | irqm:0x20 driver will not use IRQF_DISABLED flag when requesting irq | ||
790 | 789 | ||
791 | (Bits 0x10 and 0x20 can be combined with hardware irq mode option) | 790 | (Bits 0x10 and 0x20 can be combined with hardware irq mode option) |
792 | 791 | ||
@@ -1231,30 +1230,6 @@ they only refer to system buffers that are well aligned. So, a work around | |||
1231 | may only be needed under Linux when a scatter/gather list is not used and | 1230 | may only be needed under Linux when a scatter/gather list is not used and |
1232 | when the SCSI DATA IN phase is reentered after a phase mismatch. | 1231 | when the SCSI DATA IN phase is reentered after a phase mismatch. |
1233 | 1232 | ||
1234 | 14.5 IRQ sharing problems | ||
1235 | |||
1236 | When an IRQ is shared by devices that are handled by different drivers, it | ||
1237 | may happen that one driver complains about the request of the IRQ having | ||
1238 | failed. Inder Linux-2.0, this may be due to one driver having requested the | ||
1239 | IRQ using the IRQF_DISABLED flag but some other having requested the same IRQ | ||
1240 | without this flag. Under both Linux-2.0 and linux-2.2, this may be caused by | ||
1241 | one driver not having requested the IRQ with the IRQF_SHARED flag. | ||
1242 | |||
1243 | By default, the ncr53c8xx and sym53c8xx drivers request IRQs with both the | ||
1244 | IRQF_DISABLED and the IRQF_SHARED flag under Linux-2.0 and with only the IRQF_SHARED | ||
1245 | flag under Linux-2.2. | ||
1246 | |||
1247 | Under Linux-2.0, you can disable use of IRQF_DISABLED flag from the boot | ||
1248 | command line by using the following option: | ||
1249 | |||
1250 | ncr53c8xx=irqm:0x20 (for the generic ncr53c8xx driver) | ||
1251 | sym53c8xx=irqm:0x20 (for the sym53c8xx driver) | ||
1252 | |||
1253 | If this does not fix the problem, then you may want to check how all other | ||
1254 | drivers are requesting the IRQ and report the problem. Note that if at least | ||
1255 | a single driver does not request the IRQ with the IRQF_SHARED flag (share IRQ), | ||
1256 | then the request of the IRQ obviously will not succeed for all the drivers. | ||
1257 | |||
1258 | 15. SCSI problem troubleshooting | 1233 | 15. SCSI problem troubleshooting |
1259 | 1234 | ||
1260 | 15.1 Problem tracking | 1235 | 15.1 Problem tracking |
diff --git a/Documentation/scsi/tmscsim.txt b/Documentation/scsi/tmscsim.txt index 0810132772a8..0e0322bf0020 100644 --- a/Documentation/scsi/tmscsim.txt +++ b/Documentation/scsi/tmscsim.txt | |||
@@ -107,10 +107,6 @@ produced errors and started to corrupt my disks. So don't do that! A 37.50 | |||
107 | MHz PCI bus works for me, though, but I don't recommend using higher clocks | 107 | MHz PCI bus works for me, though, but I don't recommend using higher clocks |
108 | than the 33.33 MHz being in the PCI spec. | 108 | than the 33.33 MHz being in the PCI spec. |
109 | 109 | ||
110 | If you want to share the IRQ with another device and the driver refuses to | ||
111 | do so, you might succeed with changing the DC390_IRQ type in tmscsim.c to | ||
112 | IRQF_SHARED | IRQF_DISABLED. | ||
113 | |||
114 | 110 | ||
115 | 3.Features | 111 | 3.Features |
116 | ---------- | 112 | ---------- |
diff --git a/arch/mips/loongson/loongson-3/hpet.c b/arch/mips/loongson/loongson-3/hpet.c index e898d68668a9..5c21cd3bd339 100644 --- a/arch/mips/loongson/loongson-3/hpet.c +++ b/arch/mips/loongson/loongson-3/hpet.c | |||
@@ -162,7 +162,7 @@ static irqreturn_t hpet_irq_handler(int irq, void *data) | |||
162 | 162 | ||
163 | static struct irqaction hpet_irq = { | 163 | static struct irqaction hpet_irq = { |
164 | .handler = hpet_irq_handler, | 164 | .handler = hpet_irq_handler, |
165 | .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_TIMER, | 165 | .flags = IRQF_NOBALANCING | IRQF_TIMER, |
166 | .name = "hpet", | 166 | .name = "hpet", |
167 | }; | 167 | }; |
168 | 168 | ||
diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c index 2b9440384536..f749df9e15cd 100644 --- a/drivers/block/cpqarray.c +++ b/drivers/block/cpqarray.c | |||
@@ -405,8 +405,8 @@ static int cpqarray_register_ctlr(int i, struct pci_dev *pdev) | |||
405 | goto Enomem4; | 405 | goto Enomem4; |
406 | } | 406 | } |
407 | hba[i]->access.set_intr_mask(hba[i], 0); | 407 | hba[i]->access.set_intr_mask(hba[i], 0); |
408 | if (request_irq(hba[i]->intr, do_ida_intr, | 408 | if (request_irq(hba[i]->intr, do_ida_intr, IRQF_SHARED, |
409 | IRQF_DISABLED|IRQF_SHARED, hba[i]->devname, hba[i])) | 409 | hba[i]->devname, hba[i])) |
410 | { | 410 | { |
411 | printk(KERN_ERR "cpqarray: Unable to get irq %d for %s\n", | 411 | printk(KERN_ERR "cpqarray: Unable to get irq %d for %s\n", |
412 | hba[i]->intr, hba[i]->devname); | 412 | hba[i]->intr, hba[i]->devname); |
diff --git a/drivers/bus/omap_l3_noc.c b/drivers/bus/omap_l3_noc.c index 029bc73de001..11f7982cbdb3 100644 --- a/drivers/bus/omap_l3_noc.c +++ b/drivers/bus/omap_l3_noc.c | |||
@@ -284,7 +284,7 @@ static int omap_l3_probe(struct platform_device *pdev) | |||
284 | */ | 284 | */ |
285 | l3->debug_irq = platform_get_irq(pdev, 0); | 285 | l3->debug_irq = platform_get_irq(pdev, 0); |
286 | ret = devm_request_irq(l3->dev, l3->debug_irq, l3_interrupt_handler, | 286 | ret = devm_request_irq(l3->dev, l3->debug_irq, l3_interrupt_handler, |
287 | IRQF_DISABLED, "l3-dbg-irq", l3); | 287 | 0x0, "l3-dbg-irq", l3); |
288 | if (ret) { | 288 | if (ret) { |
289 | dev_err(l3->dev, "request_irq failed for %d\n", | 289 | dev_err(l3->dev, "request_irq failed for %d\n", |
290 | l3->debug_irq); | 290 | l3->debug_irq); |
@@ -293,7 +293,7 @@ static int omap_l3_probe(struct platform_device *pdev) | |||
293 | 293 | ||
294 | l3->app_irq = platform_get_irq(pdev, 1); | 294 | l3->app_irq = platform_get_irq(pdev, 1); |
295 | ret = devm_request_irq(l3->dev, l3->app_irq, l3_interrupt_handler, | 295 | ret = devm_request_irq(l3->dev, l3->app_irq, l3_interrupt_handler, |
296 | IRQF_DISABLED, "l3-app-irq", l3); | 296 | 0x0, "l3-app-irq", l3); |
297 | if (ret) | 297 | if (ret) |
298 | dev_err(l3->dev, "request_irq failed for %d\n", l3->app_irq); | 298 | dev_err(l3->dev, "request_irq failed for %d\n", l3->app_irq); |
299 | 299 | ||
diff --git a/drivers/bus/omap_l3_smx.c b/drivers/bus/omap_l3_smx.c index 597fdaee7315..360a5c0a4ee0 100644 --- a/drivers/bus/omap_l3_smx.c +++ b/drivers/bus/omap_l3_smx.c | |||
@@ -251,18 +251,16 @@ static int omap3_l3_probe(struct platform_device *pdev) | |||
251 | } | 251 | } |
252 | 252 | ||
253 | l3->debug_irq = platform_get_irq(pdev, 0); | 253 | l3->debug_irq = platform_get_irq(pdev, 0); |
254 | ret = request_irq(l3->debug_irq, omap3_l3_app_irq, | 254 | ret = request_irq(l3->debug_irq, omap3_l3_app_irq, IRQF_TRIGGER_RISING, |
255 | IRQF_DISABLED | IRQF_TRIGGER_RISING, | 255 | "l3-debug-irq", l3); |
256 | "l3-debug-irq", l3); | ||
257 | if (ret) { | 256 | if (ret) { |
258 | dev_err(&pdev->dev, "couldn't request debug irq\n"); | 257 | dev_err(&pdev->dev, "couldn't request debug irq\n"); |
259 | goto err1; | 258 | goto err1; |
260 | } | 259 | } |
261 | 260 | ||
262 | l3->app_irq = platform_get_irq(pdev, 1); | 261 | l3->app_irq = platform_get_irq(pdev, 1); |
263 | ret = request_irq(l3->app_irq, omap3_l3_app_irq, | 262 | ret = request_irq(l3->app_irq, omap3_l3_app_irq, IRQF_TRIGGER_RISING, |
264 | IRQF_DISABLED | IRQF_TRIGGER_RISING, | 263 | "l3-app-irq", l3); |
265 | "l3-app-irq", l3); | ||
266 | if (ret) { | 264 | if (ret) { |
267 | dev_err(&pdev->dev, "couldn't request app irq\n"); | 265 | dev_err(&pdev->dev, "couldn't request app irq\n"); |
268 | goto err2; | 266 | goto err2; |
diff --git a/drivers/mtd/nand/hisi504_nand.c b/drivers/mtd/nand/hisi504_nand.c index 289ad3ac3e80..8dcc7b8fee40 100644 --- a/drivers/mtd/nand/hisi504_nand.c +++ b/drivers/mtd/nand/hisi504_nand.c | |||
@@ -758,8 +758,7 @@ static int hisi_nfc_probe(struct platform_device *pdev) | |||
758 | 758 | ||
759 | hisi_nfc_host_init(host); | 759 | hisi_nfc_host_init(host); |
760 | 760 | ||
761 | ret = devm_request_irq(dev, irq, hinfc_irq_handle, IRQF_DISABLED, | 761 | ret = devm_request_irq(dev, irq, hinfc_irq_handle, 0x0, "nandc", host); |
762 | "nandc", host); | ||
763 | if (ret) { | 762 | if (ret) { |
764 | dev_err(dev, "failed to request IRQ\n"); | 763 | dev_err(dev, "failed to request IRQ\n"); |
765 | goto err_res; | 764 | goto err_res; |
diff --git a/drivers/usb/isp1760/isp1760-core.c b/drivers/usb/isp1760/isp1760-core.c index b9827556455f..5c37f40f6122 100644 --- a/drivers/usb/isp1760/isp1760-core.c +++ b/drivers/usb/isp1760/isp1760-core.c | |||
@@ -151,8 +151,7 @@ int isp1760_register(struct resource *mem, int irq, unsigned long irqflags, | |||
151 | } | 151 | } |
152 | 152 | ||
153 | if (IS_ENABLED(CONFIG_USB_ISP1761_UDC) && !udc_disabled) { | 153 | if (IS_ENABLED(CONFIG_USB_ISP1761_UDC) && !udc_disabled) { |
154 | ret = isp1760_udc_register(isp, irq, irqflags | IRQF_SHARED | | 154 | ret = isp1760_udc_register(isp, irq, irqflags | IRQF_SHARED); |
155 | IRQF_DISABLED); | ||
156 | if (ret < 0) { | 155 | if (ret < 0) { |
157 | isp1760_hcd_unregister(&isp->hcd); | 156 | isp1760_hcd_unregister(&isp->hcd); |
158 | return ret; | 157 | return ret; |
diff --git a/drivers/usb/isp1760/isp1760-udc.c b/drivers/usb/isp1760/isp1760-udc.c index 9612d7990565..0b46ff01299f 100644 --- a/drivers/usb/isp1760/isp1760-udc.c +++ b/drivers/usb/isp1760/isp1760-udc.c | |||
@@ -1451,8 +1451,8 @@ int isp1760_udc_register(struct isp1760_device *isp, int irq, | |||
1451 | 1451 | ||
1452 | sprintf(udc->irqname, "%s (udc)", devname); | 1452 | sprintf(udc->irqname, "%s (udc)", devname); |
1453 | 1453 | ||
1454 | ret = request_irq(irq, isp1760_udc_irq, IRQF_SHARED | IRQF_DISABLED | | 1454 | ret = request_irq(irq, isp1760_udc_irq, IRQF_SHARED | irqflags, |
1455 | irqflags, udc->irqname, udc); | 1455 | udc->irqname, udc); |
1456 | if (ret < 0) | 1456 | if (ret < 0) |
1457 | goto error; | 1457 | goto error; |
1458 | 1458 | ||
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 3bb01b9a379c..2cee1761c77d 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
@@ -39,8 +39,6 @@ | |||
39 | * These flags used only by the kernel as part of the | 39 | * These flags used only by the kernel as part of the |
40 | * irq handling routines. | 40 | * irq handling routines. |
41 | * | 41 | * |
42 | * IRQF_DISABLED - keep irqs disabled when calling the action handler. | ||
43 | * DEPRECATED. This flag is a NOOP and scheduled to be removed | ||
44 | * IRQF_SHARED - allow sharing the irq among several devices | 42 | * IRQF_SHARED - allow sharing the irq among several devices |
45 | * IRQF_PROBE_SHARED - set by callers when they expect sharing mismatches to occur | 43 | * IRQF_PROBE_SHARED - set by callers when they expect sharing mismatches to occur |
46 | * IRQF_TIMER - Flag to mark this interrupt as timer interrupt | 44 | * IRQF_TIMER - Flag to mark this interrupt as timer interrupt |
@@ -58,7 +56,6 @@ | |||
58 | * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device | 56 | * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device |
59 | * resume time. | 57 | * resume time. |
60 | */ | 58 | */ |
61 | #define IRQF_DISABLED 0x00000020 | ||
62 | #define IRQF_SHARED 0x00000080 | 59 | #define IRQF_SHARED 0x00000080 |
63 | #define IRQF_PROBE_SHARED 0x00000100 | 60 | #define IRQF_PROBE_SHARED 0x00000100 |
64 | #define __IRQF_TIMER 0x00000200 | 61 | #define __IRQF_TIMER 0x00000200 |