Re: [PATCH 2/2] libata: make sure IRQ is cleared after ata_bmdma_freeze()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Mark Lord wrote:
Tejun Heo wrote:

Note that ->freeze() handler is always called under ap->lock held and
irq disabled.  Even if CTL manipulation causes stuck IRQ, it's cleared
immediately.  This should be safe (enough) even in SMP environment.
More correct solution is to mask the IRQ from IRQ controller but that
would be an overkill.

Could this possibly lead to a "nobody cared" message from the IRQ layer,
followed by the kernel then disabling this IRQ?

Just wondering, because that's what can happen if we trigger an IRQ
but then don't report "handled" for it from our interrupt handler.

Nobody cared triggers after a LOT of interrupts are consecutively unhandled, so this is safe for UP and safe enough for SMP, IMHO. Also, that's how it has been done in ata_irq_on(). Without this patch, my ich7 in native pci mode w/ shared IRQ does cause nobody cared. That's why this patch is written.

I'm puzzling through a similar situation in sata_qstor right now,
and the fix will involve manipulating the NIEN bit, with the same risk.

Well, I guess, testing is the only way to find answer.  :-(

--
tejun
-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux