* legacy libata IDE missing reservation @ 2007-06-04 23:51 Jeff Garzik 2007-06-08 11:41 ` [PATCH] libata: claim ctl port for legacy SFF ports Tejun Heo 0 siblings, 1 reply; 11+ messages in thread From: Jeff Garzik @ 2007-06-04 23:51 UTC (permalink / raw) To: linux-ide; +Cc: Alan Cox FYI: I noticed this weekend that libata does not reserve the legacy IDE control block I/O port region, like it does the command block I/O region. Jeff ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH] libata: claim ctl port for legacy SFF ports 2007-06-04 23:51 legacy libata IDE missing reservation Jeff Garzik @ 2007-06-08 11:41 ` Tejun Heo 2007-06-08 11:51 ` Alan Cox 2007-06-08 13:55 ` Jeff Garzik 0 siblings, 2 replies; 11+ messages in thread From: Tejun Heo @ 2007-06-08 11:41 UTC (permalink / raw) To: Jeff Garzik; +Cc: linux-ide, Alan Cox libata used to claim only cmd ports for legacy SFF ports. Claim ctl ports too. Signed-off-by: Tejun Heo <htejun@gmail.com> --- This has been this way as long as I can remember. It's almost pleasant to see that it survived through all the devres/init rework. I guess it's time for a change. drivers/ata/libata-sff.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index e35d134..99a9f98 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c @@ -712,6 +712,7 @@ int ata_pci_prepare_native_host(struct pci_dev *pdev, struct ata_legacy_devres { unsigned int mask; unsigned long cmd_port[2]; + unsigned long ctl_port[2]; void __iomem * cmd_addr[2]; void __iomem * ctl_addr[2]; unsigned int irq[2]; @@ -764,12 +765,16 @@ static int ata_init_legacy_port(struct ata_port *ap, ctl_port = ATA_SECONDARY_CTL; } - /* request cmd_port */ + /* request cmd and ctl port */ if (request_region(cmd_port, 8, "libata")) legacy_dr->cmd_port[port_no] = cmd_port; - else { + + if (request_region(ctl_port, 8, "libata")) + legacy_dr->ctl_port[port_no] = ctl_port; + + if (!legacy_dr->cmd_port[port_no] || !legacy_dr->ctl_port[port_no]) { dev_printk(KERN_WARNING, host->dev, - "0x%0lX IDE port busy\n", cmd_port); + "0x%0lX/0x%0lX IDE port busy\n", cmd_port, ctl_port); return -EBUSY; } ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] libata: claim ctl port for legacy SFF ports 2007-06-08 11:41 ` [PATCH] libata: claim ctl port for legacy SFF ports Tejun Heo @ 2007-06-08 11:51 ` Alan Cox 2007-06-08 12:01 ` Tejun Heo 2007-06-08 13:55 ` Jeff Garzik 1 sibling, 1 reply; 11+ messages in thread From: Alan Cox @ 2007-06-08 11:51 UTC (permalink / raw) To: Tejun Heo; +Cc: Jeff Garzik, linux-ide On Fri, 8 Jun 2007 20:41:19 +0900 Tejun Heo <htejun@gmail.com> wrote: > libata used to claim only cmd ports for legacy SFF ports. Claim ctl > ports too. Just use pci resource functions. The quirk handlers do the rest for you already. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] libata: claim ctl port for legacy SFF ports 2007-06-08 11:51 ` Alan Cox @ 2007-06-08 12:01 ` Tejun Heo 2007-06-08 12:30 ` [PATCH] libata: claim legacy SFF ctl ioport in legacy_dr Tejun Heo 2007-06-08 12:50 ` [PATCH] libata: claim ctl port for legacy SFF ports Alan Cox 0 siblings, 2 replies; 11+ messages in thread From: Tejun Heo @ 2007-06-08 12:01 UTC (permalink / raw) To: Alan Cox; +Cc: Jeff Garzik, linux-ide Alan Cox wrote: > On Fri, 8 Jun 2007 20:41:19 +0900 > Tejun Heo <htejun@gmail.com> wrote: > >> libata used to claim only cmd ports for legacy SFF ports. Claim ctl >> ports too. > > Just use pci resource functions. The quirk handlers do the rest for you > already. It was that way to allow legacy SFF code to be used in non-PCI environment. Is it gonna? BTW, the original patch is broken and I tested the wrong kernel. Brewing fixed one now. -- tejun ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH] libata: claim legacy SFF ctl ioport in legacy_dr 2007-06-08 12:01 ` Tejun Heo @ 2007-06-08 12:30 ` Tejun Heo 2007-06-08 12:50 ` [PATCH] libata: claim ctl port for legacy SFF ports Alan Cox 1 sibling, 0 replies; 11+ messages in thread From: Tejun Heo @ 2007-06-08 12:30 UTC (permalink / raw) To: Alan Cox; +Cc: Jeff Garzik, linux-ide For legacy SFF port, cmd ioport is claimed in legacy_dr while ctl ioport is claimed using resource-managed pci_request_region(). Move ctl port claiming into legacy_dr for consistency. This also makes legacy SFF code easier to use for non-PCI device. Signed-off-by: Tejun Heo <htejun@gmail.com> --- ctl ports *were* claimed - this is why my wrong kernel test looked fine. It was just done in a different place. Thanks. drivers/ata/libata-sff.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c index e35d134..36d5f38 100644 --- a/drivers/ata/libata-sff.c +++ b/drivers/ata/libata-sff.c @@ -712,6 +712,7 @@ int ata_pci_prepare_native_host(struct pci_dev *pdev, struct ata_legacy_devres { unsigned int mask; unsigned long cmd_port[2]; + unsigned long ctl_port[2]; void __iomem * cmd_addr[2]; void __iomem * ctl_addr[2]; unsigned int irq[2]; @@ -746,6 +747,8 @@ static void ata_legacy_release(struct device *gdev, void *res) ioport_unmap(this->ctl_addr[i]); if (this->cmd_port[i]) release_region(this->cmd_port[i], 8); + if (this->ctl_port[i]) + release_region(this->ctl_port[i], 1); } } @@ -764,7 +767,7 @@ static int ata_init_legacy_port(struct ata_port *ap, ctl_port = ATA_SECONDARY_CTL; } - /* request cmd_port */ + /* request and map cmd/ctl ports */ if (request_region(cmd_port, 8, "libata")) legacy_dr->cmd_port[port_no] = cmd_port; else { @@ -773,15 +776,30 @@ static int ata_init_legacy_port(struct ata_port *ap, return -EBUSY; } - /* iomap cmd and ctl ports */ legacy_dr->cmd_addr[port_no] = ioport_map(cmd_port, 8); - legacy_dr->ctl_addr[port_no] = ioport_map(ctl_port, 1); - if (!legacy_dr->cmd_addr[port_no] || !legacy_dr->ctl_addr[port_no]) { + if (!legacy_dr->cmd_addr[port_no]) { dev_printk(KERN_WARNING, host->dev, - "failed to map cmd/ctl ports\n"); + "failed to map cmd port\n"); return -ENOMEM; } + if (ctl_port) { + if (request_region(ctl_port, 1, "libata")) + legacy_dr->ctl_port[port_no] = ctl_port; + else { + dev_printk(KERN_WARNING, host->dev, + "0x%0lX IDE port busy\n", ctl_port); + return -EBUSY; + } + + legacy_dr->ctl_addr[port_no] = ioport_map(ctl_port, 1); + if (!legacy_dr->ctl_addr[port_no]) { + dev_printk(KERN_WARNING, host->dev, + "failed to map ctl port\n"); + return -ENOMEM; + } + } + /* init IO addresses */ ap->ioaddr.cmd_addr = legacy_dr->cmd_addr[port_no]; ap->ioaddr.altstatus_addr = legacy_dr->ctl_addr[port_no]; @@ -1029,10 +1047,6 @@ int ata_pci_init_one(struct pci_dev *pdev, pcim_pin_device(pdev); if (rc) goto err_out; - - /* request respective PCI regions, may fail */ - rc = pci_request_region(pdev, 1, DRV_NAME); - rc = pci_request_region(pdev, 3, DRV_NAME); } /* init BMDMA, may fail */ ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH] libata: claim ctl port for legacy SFF ports 2007-06-08 12:01 ` Tejun Heo 2007-06-08 12:30 ` [PATCH] libata: claim legacy SFF ctl ioport in legacy_dr Tejun Heo @ 2007-06-08 12:50 ` Alan Cox 1 sibling, 0 replies; 11+ messages in thread From: Alan Cox @ 2007-06-08 12:50 UTC (permalink / raw) To: Tejun Heo; +Cc: Jeff Garzik, linux-ide > It was that way to allow legacy SFF code to be used in non-PCI > environment. Is it gonna? Probably best to keep that in the affected driver - we have two drivers at the moment which know bits about ISA legacy and I'm currently folding them into one. I don't think they can usefully use the libata-sff PCI/IDE helper code - not all of it anyway. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] libata: claim ctl port for legacy SFF ports 2007-06-08 11:41 ` [PATCH] libata: claim ctl port for legacy SFF ports Tejun Heo 2007-06-08 11:51 ` Alan Cox @ 2007-06-08 13:55 ` Jeff Garzik 2007-06-08 14:12 ` Tejun Heo 1 sibling, 1 reply; 11+ messages in thread From: Jeff Garzik @ 2007-06-08 13:55 UTC (permalink / raw) To: Tejun Heo; +Cc: linux-ide, Alan Cox On Fri, Jun 08, 2007 at 08:41:19PM +0900, Tejun Heo wrote: > libata used to claim only cmd ports for legacy SFF ports. Claim ctl > ports too. > > Signed-off-by: Tejun Heo <htejun@gmail.com> > --- > This has been this way as long as I can remember. It's almost > pleasant to see that it survived through all the devres/init rework. > I guess it's time for a change. pci_request_regions() should claims everything, if Alan did his job :) All this goes through ata_pci_init_one(), which guarantees it's PCI IDE. Jeff ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] libata: claim ctl port for legacy SFF ports 2007-06-08 13:55 ` Jeff Garzik @ 2007-06-08 14:12 ` Tejun Heo 2007-06-08 14:24 ` Jeff Garzik 0 siblings, 1 reply; 11+ messages in thread From: Tejun Heo @ 2007-06-08 14:12 UTC (permalink / raw) To: Jeff Garzik; +Cc: linux-ide, Alan Cox Jeff Garzik wrote: > On Fri, Jun 08, 2007 at 08:41:19PM +0900, Tejun Heo wrote: >> libata used to claim only cmd ports for legacy SFF ports. Claim ctl >> ports too. >> >> Signed-off-by: Tejun Heo <htejun@gmail.com> >> --- >> This has been this way as long as I can remember. It's almost >> pleasant to see that it survived through all the devres/init rework. >> I guess it's time for a change. > > pci_request_regions() should claims everything, if Alan did his job :) > > All this goes through ata_pci_init_one(), which guarantees it's PCI IDE. Allowing legacy to be used on non-PCI systems was your idea! Alright, then we can drop a lot of junk from legacy SFF code. Will prep another patch. Please ignore two patches in this thread. -- tejun ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] libata: claim ctl port for legacy SFF ports 2007-06-08 14:12 ` Tejun Heo @ 2007-06-08 14:24 ` Jeff Garzik 2007-06-08 15:33 ` Alan Cox 0 siblings, 1 reply; 11+ messages in thread From: Jeff Garzik @ 2007-06-08 14:24 UTC (permalink / raw) To: Tejun Heo; +Cc: linux-ide, Alan Cox On Fri, Jun 08, 2007 at 11:12:01PM +0900, Tejun Heo wrote: > Jeff Garzik wrote: > > On Fri, Jun 08, 2007 at 08:41:19PM +0900, Tejun Heo wrote: > >> libata used to claim only cmd ports for legacy SFF ports. Claim ctl > >> ports too. > >> > >> Signed-off-by: Tejun Heo <htejun@gmail.com> > >> --- > >> This has been this way as long as I can remember. It's almost > >> pleasant to see that it survived through all the devres/init rework. > >> I guess it's time for a change. > > > > pci_request_regions() should claims everything, if Alan did his job :) > > > > All this goes through ata_pci_init_one(), which guarantees it's PCI IDE. > > Allowing legacy to be used on non-PCI systems was your idea! Alright, > then we can drop a lot of junk from legacy SFF code. Will prep another > patch. Please ignore two patches in this thread. Alan seems to be ignoring that idea, so it turned out to be useless... :/ Jeff ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] libata: claim ctl port for legacy SFF ports 2007-06-08 14:24 ` Jeff Garzik @ 2007-06-08 15:33 ` Alan Cox 2007-06-08 15:36 ` Jeff Garzik 0 siblings, 1 reply; 11+ messages in thread From: Alan Cox @ 2007-06-08 15:33 UTC (permalink / raw) To: Jeff Garzik; +Cc: Tejun Heo, linux-ide > > Allowing legacy to be used on non-PCI systems was your idea! Alright, > > then we can drop a lot of junk from legacy SFF code. Will prep another > > patch. Please ignore two patches in this thread. > > Alan seems to be ignoring that idea, so it turned out to be useless... :/ For the init code stuff it turns out to be useless, for the rest of the general chip kicking it turns out to be very useful indeed. Alan ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] libata: claim ctl port for legacy SFF ports 2007-06-08 15:33 ` Alan Cox @ 2007-06-08 15:36 ` Jeff Garzik 0 siblings, 0 replies; 11+ messages in thread From: Jeff Garzik @ 2007-06-08 15:36 UTC (permalink / raw) To: Alan Cox; +Cc: Tejun Heo, linux-ide On Fri, Jun 08, 2007 at 04:33:37PM +0100, Alan Cox wrote: > > > Allowing legacy to be used on non-PCI systems was your idea! Alright, > > > then we can drop a lot of junk from legacy SFF code. Will prep another > > > patch. Please ignore two patches in this thread. > > > > Alan seems to be ignoring that idea, so it turned out to be useless... :/ > > For the init code stuff it turns out to be useless, for the rest of the > general chip kicking it turns out to be very useful indeed. Unless I've completely lost the thread, it's the only init code that is being discussed and patched... Jeff ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2007-06-08 15:36 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-06-04 23:51 legacy libata IDE missing reservation Jeff Garzik 2007-06-08 11:41 ` [PATCH] libata: claim ctl port for legacy SFF ports Tejun Heo 2007-06-08 11:51 ` Alan Cox 2007-06-08 12:01 ` Tejun Heo 2007-06-08 12:30 ` [PATCH] libata: claim legacy SFF ctl ioport in legacy_dr Tejun Heo 2007-06-08 12:50 ` [PATCH] libata: claim ctl port for legacy SFF ports Alan Cox 2007-06-08 13:55 ` Jeff Garzik 2007-06-08 14:12 ` Tejun Heo 2007-06-08 14:24 ` Jeff Garzik 2007-06-08 15:33 ` Alan Cox 2007-06-08 15:36 ` Jeff Garzik
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.