summaryrefslogtreecommitdiffstats
path: root/kernel-arm64.patch
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@fedoraproject.org>2014-07-11 12:28:27 -0400
committerJosh Boyer <jwboyer@fedoraproject.org>2014-07-11 12:28:53 -0400
commitc849684e55718726a234776fd875e50f77835269 (patch)
tree32d3adce0c8bf7b8420673ce428ea09b06078dfc /kernel-arm64.patch
parent1ead5b6b6854701a8a7352a20f32955cf777dfb5 (diff)
downloadkernel-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.patch139
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