Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6517569d authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull libata fixes from Tejun Heo:
 "Three libata fixes:

   - fix for a circular reference bug in sysfs code which prevented
     pata_legacy devices from being released after probe failure, which
     in turn prevented devres from releasing the associated resources.

   - drop spurious WARN in the command issue path which can be triggered
     by a legitimate passthrough command.

   - an ahci_qoriq specific fix"

* 'for-4.11-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
  ahci: qoriq: correct the sata ecc setting error
  libata: drop WARN from protocol error in ata_sff_qc_issue()
  libata: transport: Remove circular dependency at free time
parents bc258879 6022c5ca
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -177,7 +177,8 @@ static int ahci_qoriq_phy_init(struct ahci_host_priv *hpriv)
	case AHCI_LS1043A:
		if (!qpriv->ecc_addr)
			return -EINVAL;
		writel(ECC_DIS_ARMV8_CH2, qpriv->ecc_addr);
		writel(readl(qpriv->ecc_addr) | ECC_DIS_ARMV8_CH2,
				qpriv->ecc_addr);
		writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1);
		writel(AHCI_PORT_TRANS_CFG, reg_base + PORT_TRANS);
		if (qpriv->is_dmacoherent)
@@ -194,7 +195,8 @@ static int ahci_qoriq_phy_init(struct ahci_host_priv *hpriv)
	case AHCI_LS1046A:
		if (!qpriv->ecc_addr)
			return -EINVAL;
		writel(ECC_DIS_ARMV8_CH2, qpriv->ecc_addr);
		writel(readl(qpriv->ecc_addr) | ECC_DIS_ARMV8_CH2,
				qpriv->ecc_addr);
		writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1);
		writel(AHCI_PORT_TRANS_CFG, reg_base + PORT_TRANS);
		if (qpriv->is_dmacoherent)
+0 −1
Original line number Diff line number Diff line
@@ -1482,7 +1482,6 @@ unsigned int ata_sff_qc_issue(struct ata_queued_cmd *qc)
		break;

	default:
		WARN_ON_ONCE(1);
		return AC_ERR_SYSTEM;
	}

+3 −6
Original line number Diff line number Diff line
@@ -224,7 +224,6 @@ static DECLARE_TRANSPORT_CLASS(ata_port_class,

static void ata_tport_release(struct device *dev)
{
	put_device(dev->parent);
}

/**
@@ -284,7 +283,7 @@ int ata_tport_add(struct device *parent,
	device_initialize(dev);
	dev->type = &ata_port_type;

	dev->parent = get_device(parent);
	dev->parent = parent;
	dev->release = ata_tport_release;
	dev_set_name(dev, "ata%d", ap->print_id);
	transport_setup_device(dev);
@@ -348,7 +347,6 @@ static DECLARE_TRANSPORT_CLASS(ata_link_class,

static void ata_tlink_release(struct device *dev)
{
	put_device(dev->parent);
}

/**
@@ -410,7 +408,7 @@ int ata_tlink_add(struct ata_link *link)
	int error;

	device_initialize(dev);
	dev->parent = get_device(&ap->tdev);
	dev->parent = &ap->tdev;
	dev->release = ata_tlink_release;
	if (ata_is_host_link(link))
		dev_set_name(dev, "link%d", ap->print_id);
@@ -589,7 +587,6 @@ static DECLARE_TRANSPORT_CLASS(ata_dev_class,

static void ata_tdev_release(struct device *dev)
{
	put_device(dev->parent);
}

/**
@@ -662,7 +659,7 @@ static int ata_tdev_add(struct ata_device *ata_dev)
	int error;

	device_initialize(dev);
	dev->parent = get_device(&link->tdev);
	dev->parent = &link->tdev;
	dev->release = ata_tdev_release;
	if (ata_is_host_link(link))
		dev_set_name(dev, "dev%d.%d", ap->print_id,ata_dev->devno);