On Monday 01 March 2010 09:23:30 pm Jeff Garzik wrote:
libata: Pass host flags into the pci helper
It introduces a subtle bug:
struct ata_host {
...
unsigned long flags;
@@ -1642,8 +1643,8 @@ extern int ata_pci_sff_activate_host(struct ata_host *host,
irq_handler_t irq_handler,
struct scsi_host_template *sht);
extern int ata_pci_sff_init_one(struct pci_dev *pdev,
- const struct ata_port_info * const * ppi,
- struct scsi_host_template *sht, void *host_priv);
+ const struct ata_port_info * const * ppi,
+ struct scsi_host_template *sht, void *host_priv, int hflags);
'int' type is not equal 'unsigned long' one on 64-bit architectures.
Besides doing it this way is clearly suboptimal as the same effect
could have been achieved by doing:
extern int __ata_pci_sff_init_one(struct pci_dev *pdev,
const struct ata_port_info * const *ppi,
struct scsi_host_template *sht, void *host_priv,
int hflag);
static inline int ata_pci_sff_init_one(struct pci_dev *pdev,
const struct ata_port_info * const *ppi,
struct scsi_host_template *sht, void *host_priv)
{
return __ata_pci_sff_init_one(pdev, ppi, sht, host_priv, 0);
}
without the need to update all drivers and without breaking pending
out-of-tree driver patches (yeah, it breaks my pata_ep93xx patches)..