Skip to content

Commit 6c6e47d

Browse files
committed
Merge tag 'firewire-fixes-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394
Pull firewire fixes from Takashi Sakamoto: "The firewire-ohci kernel module has a parameter for verbose kernel logging. It is well-known that it logs the spurious IRQ for bus-reset event due to the unmasked register for IRQ event. This update fixes the issue" * tag 'firewire-fixes-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394: firewire: ohci: mask bus reset interrupts between ISR and bottom half
2 parents 104db05 + 752e3c5 commit 6c6e47d

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

drivers/firewire/ohci.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2060,6 +2060,8 @@ static void bus_reset_work(struct work_struct *work)
20602060

20612061
ohci->generation = generation;
20622062
reg_write(ohci, OHCI1394_IntEventClear, OHCI1394_busReset);
2063+
if (param_debug & OHCI_PARAM_DEBUG_BUSRESETS)
2064+
reg_write(ohci, OHCI1394_IntMaskSet, OHCI1394_busReset);
20632065

20642066
if (ohci->quirks & QUIRK_RESET_PACKET)
20652067
ohci->request_generation = generation;
@@ -2125,12 +2127,14 @@ static irqreturn_t irq_handler(int irq, void *data)
21252127
return IRQ_NONE;
21262128

21272129
/*
2128-
* busReset and postedWriteErr must not be cleared yet
2130+
* busReset and postedWriteErr events must not be cleared yet
21292131
* (OHCI 1.1 clauses 7.2.3.2 and 13.2.8.1)
21302132
*/
21312133
reg_write(ohci, OHCI1394_IntEventClear,
21322134
event & ~(OHCI1394_busReset | OHCI1394_postedWriteErr));
21332135
log_irqs(ohci, event);
2136+
if (event & OHCI1394_busReset)
2137+
reg_write(ohci, OHCI1394_IntMaskClear, OHCI1394_busReset);
21342138

21352139
if (event & OHCI1394_selfIDComplete)
21362140
queue_work(selfid_workqueue, &ohci->bus_reset_work);

0 commit comments

Comments
 (0)