-----Original Message----- From: James Bottomley [mailto:James.Bottomley@xxxxxxxxxxxxxxxxxxxxx] Sent: Monday, June 01, 2015 8:15 AM To: Rajinikanth Pandurangan Cc: linux-scsi@xxxxxxxxxxxxxxx; aacraid@xxxxxxxxxxxxxx; Harry Yang; Rich Bono; Achim Leubner; Murthy Bhat Subject: Re: [PATCH 2/9] [SCSI] aacraid: Add Power Management support On Wed, 2015-05-13 at 17:12 -0700, rajinikanth.pandurangan@xxxxxxxx wrote: > diff --git a/drivers/scsi/aacraid/linit.c > b/drivers/scsi/aacraid/linit.c index 9eec027..be30e43 100644 > --- a/drivers/scsi/aacraid/linit.c > +++ b/drivers/scsi/aacraid/linit.c > @@ -1317,6 +1317,149 @@ static int aac_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) > return error; > } > > +#if (defined(CONFIG_PM)) > +void aac_release_resources(struct aac_dev *aac) { > + int i; > + > + aac_adapter_disable_int(aac); > + if (aac->pdev->device == PMC_DEVICE_S6 || > + aac->pdev->device == PMC_DEVICE_S7 || > + aac->pdev->device == PMC_DEVICE_S8 || > + aac->pdev->device == PMC_DEVICE_S9) { > + if (aac->max_msix > 1) { > + for (i = 0; i < aac->max_msix; i++) > + free_irq(aac->msixentry[i].vector, > + &(aac->aac_msix[i])); > + } else { > + free_irq(aac->pdev->irq, &(aac->aac_msix[0])); > + } > + } else { > + free_irq(aac->pdev->irq, aac); > + } > + if (aac->msi) > + pci_disable_msi(aac->pdev); > + else if (aac->max_msix > 1) > + pci_disable_msix(aac->pdev); > + > +} > + > +static int aac_acquire_resources(struct aac_dev *dev) { > + int i, j; > + int instance = dev->id; > + const char *name = dev->name; > + unsigned long status; > + /* > + * First clear out all interrupts. Then enable the one's that we > + * can handle. > + */ > + while (!((status = src_readl(dev, MUnit.OMR)) & KERNEL_UP_AND_RUNNING) > + || status == 0xffffffff) > + msleep(1); checkpatch would warn you not to do this. Use msleep(20) to keep it quiet. [RajP] Yes, will change and make it part of next patchset. > + > + aac_adapter_disable_int(dev); > + aac_adapter_enable_int(dev); > + > + > + if ((dev->pdev->device == PMC_DEVICE_S7 || > + dev->pdev->device == PMC_DEVICE_S8 || > + dev->pdev->device == PMC_DEVICE_S9)) > + aac_define_int_mode(dev); > + > + if (dev->msi_enabled) > + aac_src_access_devreg(dev, AAC_ENABLE_MSIX); > + > + if (!dev->sync_mode && dev->msi_enabled && dev->max_msix > 1) { > + for (i = 0; i < dev->max_msix; i++) { > + dev->aac_msix[i].vector_no = i; > + dev->aac_msix[i].dev = dev; > + > + if (request_irq(dev->msixentry[i].vector, > + dev->a_ops.adapter_intr, > + 0, "aacraid", &(dev->aac_msix[i]))) { > + printk(KERN_ERR "%s%d: Failed to register IRQ for vector %d.\n", > + name, instance, i); > + for (j = 0 ; j < i ; j++) > + free_irq(dev->msixentry[j].vector, > + &(dev->aac_msix[j])); > + pci_disable_msix(dev->pdev); > + goto error_iounmap; > + } > + } > + } else { > + dev->aac_msix[0].vector_no = 0; > + dev->aac_msix[0].dev = dev; > + > + if (request_irq(dev->pdev->irq, dev->a_ops.adapter_intr, > + IRQF_SHARED|IRQF_DISABLED, "aacraid", > + &(dev->aac_msix[0])) < 0) { And this won't compile: drivers/scsi/aacraid/linit.c: In function ‘aac_acquire_resources’: drivers/scsi/aacraid/linit.c:1395:16: error: ‘IRQF_DISABLED’ undeclared (first use in this function) IRQF_SHARED|IRQF_DISABLED, "aacraid", Please run checkpatch and compile against the kernel you're submitting for. The reason for this failure is that IRQF_DISABLED got eliminated from the kernel somewhere in the 3.x series. [RajP] Yes, I had compiled against the kernel 4.0.0-rc2+ and did not get any compile error. In fact, checkpatch didn't warn either. Am I missing something? James ��.n��������+%������w��{.n�����{������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f