Fix/ignore ABI changes in 4.0.5 as appropriate

svn path=/dists/sid/linux/; revision=22753
This commit is contained in:
Ben Hutchings 2015-06-16 19:18:40 +00:00
parent 71cfbfd2cc
commit 1b4f5b4a5a
5 changed files with 150 additions and 0 deletions

2
debian/changelog vendored
View File

@ -77,6 +77,8 @@ linux (4.0.5-1) UNRELEASED; urgency=medium
[ Ben Hutchings ]
* udeb: Remove i2o modules (fixes FTBFS on amd64) (Closes: #787004)
* Revert "libata: Ignore spurious PHY event on LPM policy change" to avoid
ABI change
[ Ian Campbell ]
* [armhf] Enable PCIe support for IMX6 boards. Patch from Vagrant

View File

@ -1,5 +1,8 @@
[abi]
abiname: 2
ignore-changes:
# Should not be used from OOT
module:arch/x86/kvm/kvm
[base]
arches:

View File

@ -0,0 +1,52 @@
From: Ben Hutchings <ben@decadent.org.uk>
Date: Tue, 16 Jun 2015 16:36:28 +0100
Subject: ktime: Fix ABI change in 4.0.5
Forwarded: not-needed
Commit f7bcb70ebae0 ("ktime: Fix ktime_divns to do signed division")
changed the return type of __ktime_divns() from u64 to s64. As this
is not called directly but only by an inline function which has had
the same type change, it is safe to revert the change to
__ktime_divns() and add casts. (Actually, we could rely on
implicit conversions but it seems better to be explicit.)
--- a/include/linux/ktime.h
+++ b/include/linux/ktime.h
@@ -166,7 +166,7 @@ static inline bool ktime_before(const kt
}
#if BITS_PER_LONG < 64
-extern s64 __ktime_divns(const ktime_t kt, s64 div);
+extern u64 __ktime_divns(const ktime_t kt, s64 div);
static inline s64 ktime_divns(const ktime_t kt, s64 div)
{
/*
@@ -181,7 +181,7 @@ static inline s64 ktime_divns(const ktim
do_div(tmp, div);
return ns < 0 ? -tmp : tmp;
} else {
- return __ktime_divns(kt, div);
+ return (s64)__ktime_divns(kt, div);
}
}
#else /* BITS_PER_LONG < 64 */
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
@@ -266,7 +266,7 @@ lock_hrtimer_base(const struct hrtimer *
/*
* Divide a ktime value by a nanosecond value
*/
-s64 __ktime_divns(const ktime_t kt, s64 div)
+u64 __ktime_divns(const ktime_t kt, s64 div)
{
int sft = 0;
s64 dclc;
@@ -282,7 +282,7 @@ s64 __ktime_divns(const ktime_t kt, s64
}
tmp >>= sft;
do_div(tmp, (unsigned long) div);
- return dclc < 0 ? -tmp : tmp;
+ return (u64)(dclc < 0 ? -tmp : tmp);
}
EXPORT_SYMBOL_GPL(__ktime_divns);
#endif /* BITS_PER_LONG >= 64 */

View File

@ -0,0 +1,89 @@
From: Ben Hutchings <ben@decadent.org.uk>
Date: Mon, 15 Jun 2015 04:32:59 +0100
Subject: [PATCH] Revert "libata: Ignore spurious PHY event on LPM policy
change"
Forwarded: not-needed
This reverts commit 09c5b4803a80a5451d950d6a539d2eb311dc0fb1, as
it results in an unavoidable ABI change.
---
drivers/ata/libata-core.c | 15 +--------------
drivers/ata/libata-eh.c | 3 ---
include/linux/libata.h | 9 ---------
3 files changed, 1 insertion(+), 26 deletions(-)
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 87b4b7f..3b6f197 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -6742,21 +6742,8 @@ u32 ata_wait_register(struct ata_port *ap, void __iomem *reg, u32 mask, u32 val,
*/
bool sata_lpm_ignore_phy_events(struct ata_link *link)
{
- unsigned long lpm_timeout = link->last_lpm_change +
- msecs_to_jiffies(ATA_TMOUT_SPURIOUS_PHY);
-
/* if LPM is enabled, PHYRDY doesn't mean anything */
- if (link->lpm_policy > ATA_LPM_MAX_POWER)
- return true;
-
- /* ignore the first PHY event after the LPM policy changed
- * as it is might be spurious
- */
- if ((link->flags & ATA_LFLAG_CHANGED) &&
- time_before(jiffies, lpm_timeout))
- return true;
-
- return false;
+ return !!(link->lpm_policy > ATA_LPM_MAX_POWER);
}
EXPORT_SYMBOL_GPL(sata_lpm_ignore_phy_events);
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 89c3d83..d2029a4 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -3489,9 +3489,6 @@ static int ata_eh_set_lpm(struct ata_link *link, enum ata_lpm_policy policy,
}
}
- link->last_lpm_change = jiffies;
- link->flags |= ATA_LFLAG_CHANGED;
-
return 0;
fail:
diff --git a/include/linux/libata.h b/include/linux/libata.h
index f8994b4..928a370 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -205,7 +205,6 @@ enum {
ATA_LFLAG_SW_ACTIVITY = (1 << 7), /* keep activity stats */
ATA_LFLAG_NO_LPM = (1 << 8), /* disable LPM on this link */
ATA_LFLAG_RST_ONCE = (1 << 9), /* limit recovery to one reset */
- ATA_LFLAG_CHANGED = (1 << 10), /* LPM state changed on this link */
/* struct ata_port flags */
ATA_FLAG_SLAVE_POSS = (1 << 0), /* host supports slave dev */
@@ -311,12 +310,6 @@ enum {
*/
ATA_TMOUT_PMP_SRST_WAIT = 5000,
- /* When the LPM policy is set to ATA_LPM_MAX_POWER, there might
- * be a spurious PHY event, so ignore the first PHY event that
- * occurs within 10s after the policy change.
- */
- ATA_TMOUT_SPURIOUS_PHY = 10000,
-
/* ATA bus states */
BUS_UNKNOWN = 0,
BUS_DMA = 1,
@@ -796,8 +789,6 @@ struct ata_link {
struct ata_eh_context eh_context;
struct ata_device device[ATA_MAX_DEVICES];
-
- unsigned long last_lpm_change; /* when last LPM change happened */
};
#define ATA_LINK_CLEAR_BEGIN offsetof(struct ata_link, active_tag)
#define ATA_LINK_CLEAR_END offsetof(struct ata_link, device[0])

View File

@ -76,3 +76,7 @@ features/all/e1000e/0001-e1000e-initial-support-for-i219.patch
features/all/e1000e/0002-e1000e-fix-obscure-comments.patch
features/all/e1000e/0003-e1000e-remove-calls-to-ioremap-unmap-for-nvm-addr.patch
features/all/e1000e/0004-e1000e-nvm-write-protect-access-removed-from-spt-hw.patch
# Fix ABI changes
debian/revert-libata-ignore-spurious-phy-event-on-lpm-polic.patch
debian/ktime-fix-abi-change-in-4.0.5.patch