diff options
author | Josh Boyer <jwboyer@fedoraproject.org> | 2014-07-11 12:28:27 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@fedoraproject.org> | 2014-07-11 12:28:53 -0400 |
commit | c849684e55718726a234776fd875e50f77835269 (patch) | |
tree | 32d3adce0c8bf7b8420673ce428ea09b06078dfc /kernel-arm64.patch | |
parent | 1ead5b6b6854701a8a7352a20f32955cf777dfb5 (diff) | |
download | kernel-c849684e55718726a234776fd875e50f77835269.tar.gz kernel-c849684e55718726a234776fd875e50f77835269.tar.xz kernel-c849684e55718726a234776fd875e50f77835269.zip |
Drop intel pstate patches. Fixup arm64 patch
Diffstat (limited to 'kernel-arm64.patch')
-rw-r--r-- | kernel-arm64.patch | 139 |
1 files changed, 3 insertions, 136 deletions
diff --git a/kernel-arm64.patch b/kernel-arm64.patch index 05249a97e..1a0154ffd 100644 --- a/kernel-arm64.patch +++ b/kernel-arm64.patch @@ -623,26 +623,6 @@ Date: Mon Jun 2 05:18:35 2014 -0700 Signed-off-by: Saurabh Tangri <saurabh.tangri@intel.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com> -commit 026545c8ed8737f6686036326a80498ae14d7fe5 -Author: Suman Tripathi <stripathi@apm.com> -Date: Thu Jun 19 06:51:32 2014 -0400 - - ata: Fix the dma state machine lockup for the IDENTIFY DEVICE PIO mode command. - - This patch fixes the dma state machine lockup due to the processing - of IDENTIFY DEVICE PIO mode command. The X-Gene AHCI controller - has an errata in which it cannot clear the BSY bit after - receiving the PIO setup FIS and results the dma state machine to go - into the CMFatalErrorUpdate state resulting in the dma state - machine lockup. This patch also removes the dma restart workaround - from the read_id function as the read_id function is only called by - libata layer for ATA_INTERNAL commands. But for somecases eg: - PORT MULTIPLIER and udev, the framework will enumerate using SCSI - commands and it will not call read_id function. - - Signed-off-by: Loc Ho <lho@apm.com> - Signed-off-by: Suman Tripathi <stripathi@apm.com> - commit 7750926fa769afc57a2d9ea4491e83b3d3e1e562 Author: Suman Tripathi <stripathi@apm.com> Date: Thu Jun 19 06:50:08 2014 -0400 @@ -2828,131 +2808,18 @@ index 0000000..1b9c4c3 + return !!acpi_gbl_reduced_hardware; +} diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h -index 05882e4..1db67a7 100644 +index 5513296e5e2e..89b8646b912b 100644 --- a/drivers/ata/ahci.h +++ b/drivers/ata/ahci.h -@@ -373,6 +373,8 @@ int ahci_do_softreset(struct ata_link *link, unsigned int *class, - +@@ -375,6 +375,8 @@ unsigned int ahci_qc_issue(struct ata_queued_cmd *qc); int ahci_stop_engine(struct ata_port *ap); + void ahci_start_fis_rx(struct ata_port *ap); void ahci_start_engine(struct ata_port *ap); +int ahci_restart_engine(struct ata_port *ap); +void ahci_sw_activity(struct ata_link *link); int ahci_check_ready(struct ata_link *link); int ahci_kick_engine(struct ata_port *ap); int ahci_port_resume(struct ata_port *ap); -diff --git a/drivers/ata/ahci_xgene.c b/drivers/ata/ahci_xgene.c -index 042a9bb..81fbdc9 100644 ---- a/drivers/ata/ahci_xgene.c -+++ b/drivers/ata/ahci_xgene.c -@@ -78,6 +78,7 @@ - struct xgene_ahci_context { - struct ahci_host_priv *hpriv; - struct device *dev; -+ u8 last_cmd[MAX_AHCI_CHN_PERCTR]; /* tracking the last command */ - void __iomem *csr_core; /* Core CSR address of IP */ - void __iomem *csr_diag; /* Diag CSR address of IP */ - void __iomem *csr_axi; /* AXI CSR address of IP */ -@@ -98,20 +99,72 @@ static int xgene_ahci_init_memram(struct xgene_ahci_context *ctx) - } - - /** -+ * xgene_ahci_qc_issue - Issue commands to the device -+ * @qc: Command to issue -+ * -+ * Due to H/W errata, for the IENTIFY DEVICE command -+ * controller is unable to clear the BSY bit after -+ * receiving the PIO setup FIS and results the dma -+ * state machine to go into the CMFatalErrorUpdate -+ * state resulting in the dma state machine lockup. -+ * By restarting the dma engine to move it removes -+ * the controller out of lock up state. -+ */ -+static unsigned int xgene_ahci_qc_issue(struct ata_queued_cmd *qc) -+{ -+ struct ata_port *ap = qc->ap; -+ void __iomem *port_mmio = ahci_port_base(ap); -+ struct ahci_port_priv *pp = ap->private_data; -+ struct ahci_host_priv *hpriv = ap->host->private_data; -+ struct xgene_ahci_context *ctx = hpriv->plat_data; -+ -+ /* Keep track of the currently active link. It will be used -+ * in completion path to determine whether NCQ phase is in -+ * progress. -+ */ -+ pp->active_link = qc->dev->link; -+ -+ /* -+ * Restart the dma engine if the last cmd issued -+ * is IDENTIFY DEVICE command -+ */ -+ if (unlikely(ctx->last_cmd[ap->port_no] == ATA_CMD_ID_ATA)) -+ ahci_restart_engine(ap); -+ -+ if (qc->tf.protocol == ATA_PROT_NCQ) -+ writel(1 << qc->tag, port_mmio + PORT_SCR_ACT); -+ -+ if (pp->fbs_enabled && pp->fbs_last_dev != qc->dev->link->pmp) { -+ u32 fbs = readl(port_mmio + PORT_FBS); -+ fbs &= ~(PORT_FBS_DEV_MASK | PORT_FBS_DEC); -+ fbs |= qc->dev->link->pmp << PORT_FBS_DEV_OFFSET; -+ writel(fbs, port_mmio + PORT_FBS); -+ pp->fbs_last_dev = qc->dev->link->pmp; -+ } -+ -+ writel(1 << qc->tag, port_mmio + PORT_CMD_ISSUE); -+ -+ /* Save the last command issued */ -+ ctx->last_cmd[ap->port_no] = qc->tf.command; -+ -+ ahci_sw_activity(qc->dev->link); -+ -+ return 0; -+} -+ -+/** - * xgene_ahci_read_id - Read ID data from the specified device - * @dev: device - * @tf: proposed taskfile - * @id: data buffer - * - * This custom read ID function is required due to the fact that the HW -- * does not support DEVSLP and the controller state machine may get stuck -- * after processing the ID query command. -+ * does not support DEVSLP. - */ - static unsigned int xgene_ahci_read_id(struct ata_device *dev, - struct ata_taskfile *tf, u16 *id) - { - u32 err_mask; -- void __iomem *port_mmio = ahci_port_base(dev->link->ap); - - err_mask = ata_do_dev_read_id(dev, tf, id); - if (err_mask) -@@ -133,16 +186,6 @@ static unsigned int xgene_ahci_read_id(struct ata_device *dev, - */ - id[ATA_ID_FEATURE_SUPP] &= ~(1 << 8); - -- /* -- * Due to HW errata, restart the port if no other command active. -- * Otherwise the controller may get stuck. -- */ -- if (!readl(port_mmio + PORT_CMD_ISSUE)) { -- writel(PORT_CMD_FIS_RX, port_mmio + PORT_CMD); -- readl(port_mmio + PORT_CMD); /* Force a barrier */ -- writel(PORT_CMD_FIS_RX | PORT_CMD_START, port_mmio + PORT_CMD); -- readl(port_mmio + PORT_CMD); /* Force a barrier */ -- } - return 0; - } - -@@ -300,6 +343,7 @@ static struct ata_port_operations xgene_ahci_ops = { - .host_stop = xgene_ahci_host_stop, - .hardreset = xgene_ahci_hardreset, - .read_id = xgene_ahci_read_id, -+ .qc_issue = xgene_ahci_qc_issue, - }; - - static const struct ata_port_info xgene_ahci_port_info = { diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c index 40ea583..3ec5dc7 100644 --- a/drivers/ata/libahci.c |