Thank u for review, I will correct the comment. Besides, may I put u into "reviewed-by" ? Thanks, -Minskey > -----Original Message----- > From: Sergei Shtylyov [mailto:sergei.shtylyov@xxxxxxxxxxxxxxxxxx] > Sent: Thursday, October 25, 2018 4:27 PM > To: Guo, Chaohong <chaohong.guo@xxxxxxxxx>; linux-ide@xxxxxxxxxxxxxxx > Cc: b.zolnierkie@xxxxxxxxxxx; jan.kiszka@xxxxxxxxxxx; > vireshk@xxxxxxxxxx; axboe@xxxxxxxxx > Subject: Re: [PATCH] Allow system to allocate IRQ 0 to ATA devices > > Hello! > > On 25.10.2018 8:50, Chaohong guo wrote: > > > Interrupt vector 0 can be used on some platform. In libata, the > > routine > > ata_host_activate() doesn't consider irq=0 as invalid. > > Hm, actually it does... > > > As a result, when > > running linux in non-root cell of Jailhouse, if we allocate just one > > PCI ATA device to the guest, the device will get an IRQ of value 0. > > This is perfectly legal. Moreover most ATA drivers will check if irq < > > 0 or irq == -1. > > > > Signed-off-by: Chaohong guo <chaohong.guo@xxxxxxxxx> > > --- > > drivers/ata/libata-core.c | 2 +- > > drivers/ata/pata_arasan_cf.c | 4 ++-- > > drivers/ata/pata_falcon.c | 2 +- > > drivers/ata/pata_ixp4xx_cf.c | 2 +- > > 4 files changed, 5 insertions(+), 5 deletions(-) > > [...] > > diff --git a/drivers/ata/pata_arasan_cf.c > > b/drivers/ata/pata_arasan_cf.c index ebecab8c3f36..133c7466a875 100644 > > --- a/drivers/ata/pata_arasan_cf.c > > +++ b/drivers/ata/pata_arasan_cf.c > > @@ -817,9 +817,9 @@ static int arasan_cf_probe(struct platform_device > *pdev) > > else > > quirk = CF_BROKEN_UDMA; /* as it is on spear1340 */ > > > > - /* if irq is 0, support only PIO */ > > + /* if irq < 0, support only PIO */ > > acdev->irq = platform_get_irq(pdev, 0); > > - if (acdev->irq) > > + if (acdev->irq >= 0) > > Ugh, this code was buggy. Thanks for fixing! Perhaps worth a separate > patch though... > > > irq_handler = arasan_cf_interrupt; > > else > > quirk |= CF_BROKEN_MWDMA | CF_BROKEN_UDMA; > [...] > > diff --git a/drivers/ata/pata_ixp4xx_cf.c > > b/drivers/ata/pata_ixp4xx_cf.c index 0b0d93065f5a..303337d1c1f7 100644 > > --- a/drivers/ata/pata_ixp4xx_cf.c > > +++ b/drivers/ata/pata_ixp4xx_cf.c > > @@ -169,7 +169,7 @@ static int ixp4xx_pata_probe(struct platform_device > *pdev) > > return -ENOMEM; > > > > irq = platform_get_irq(pdev, 0); > > - if (irq) > > + if (irq >= 0) > > Was buggy as well... > > > irq_set_irq_type(irq, IRQ_TYPE_EDGE_RISING); > > > > /* Setup expansion bus chip selects */ > > MBR, Sergei