pci_alloc_msi is always called, is this bad?
John-Mark Gurney
jmg at funkthat.com
Fri Oct 4 16:57:02 UTC 2013
Sean Bruno wrote this message on Fri, Oct 04, 2013 at 08:56 -0700:
> I was looking at the recent thread on -stable about mfi(4) and I noted
> that it appears, if I'm not mistaken, mfi_pci.c::pci_alloc_msi() is
> *always* invoked regardless of the mfi_msi tuneable. We just ignore the
> allocated MSI by not setting sc->mfi_irq_rid. Is that harmful?
>
> ------------------------------------------------------------------------
> 240 /* Allocate IRQ resource. */
> 241 sc->mfi_irq_rid = 0;
> 242 count = 1;
> 243 if (mfi_msi && pci_alloc_msi(sc->mfi_dev, &count) == 0) {
> 244 device_printf(sc->mfi_dev, "Using MSI\n");
> 245 sc->mfi_irq_rid = 1;
> 246 }
>
>
> ------------------------------------------------------------------------
> I would have thought that this would be more correct, avoid calling
> pci_alloc_msi() if mfi_msi isn't set in the first place.
> ------------------------------------------------------------------------
> sc->mfi_irq_ird = 0;
> count = 1;
> ret = 0
> if(mfi_msi)
> ret = pci_alloc_msi(sc->mfi_dev, &count);
>
> if (!ret) {
> device_printf(sc->mfi_dev, "Using MSI\n");
> sc->mfi_irq_rid = 1;
> }
> ------------------------------------------------------------------------
Per C99 6.5.13 Logical AND operator, para 4:
Unlike the bitwise binary & operator, the && operator guarantees
left-to-right evaluation; there is a sequence point after the
evaluation of the first operand. If the first operand compares equal
to 0, the second operand is not evaluated.
So the above two code blocks are logically equivalent...
--
John-Mark Gurney Voice: +1 415 225 5579
"All that I will do, has been done, All that I have, has not."
More information about the freebsd-scsi
mailing list