Dear RT Folks, I'm pleased to announce the 3.18.29-rt30 stable release.
Note, 3.18.29-rt29 was also released that only included the stable update. But -rt30 is released because the last pull of changes to 3.18-rt included a change that was also reverted in upstream. This release includes both the stable update and that revert. You can get this release via the git tree at: git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git branch: v3.18-rt Head SHA1: 18303cd31e84f06eb780dd58ea213e4a515609fc Or to build 3.18.29-rt30 directly, the following patches should be applied: http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.18.tar.xz http://www.kernel.org/pub/linux/kernel/v3.x/patch-3.18.29.xz http://www.kernel.org/pub/linux/kernel/projects/rt/3.18/patch-3.18.29-rt30.patch.xz You can also build from 3.18.29-rt29 by applying the incremental patch: http://www.kernel.org/pub/linux/kernel/projects/rt/3.18/incr/patch-3.18.29-rt29-rt30.patch.xz Enjoy, -- Steve Changes from v3.18.29-rt29: --- Steven Rostedt (Red Hat) (1): Linux 3.18.29-rt30 Thomas Gleixner (1): Revert d04ea10ba1ea mmc: sdhci: don't provide hard irq handler ---- drivers/mmc/host/sdhci.c | 32 +++++--------------------------- localversion-rt | 2 +- 2 files changed, 6 insertions(+), 28 deletions(-) --------------------------- diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 9411f8b0cd11..9109287e47ac 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -2565,31 +2565,6 @@ static irqreturn_t sdhci_thread_irq(int irq, void *dev_id) return isr ? IRQ_HANDLED : IRQ_NONE; } -#ifdef CONFIG_PREEMPT_RT_BASE -static irqreturn_t sdhci_rt_irq(int irq, void *dev_id) -{ - irqreturn_t ret; - - local_bh_disable(); - ret = sdhci_irq(irq, dev_id); - local_bh_enable(); - if (ret == IRQ_WAKE_THREAD) - ret = sdhci_thread_irq(irq, dev_id); - return ret; -} -#endif - -static int sdhci_req_irq(struct sdhci_host *host) -{ -#ifdef CONFIG_PREEMPT_RT_BASE - return request_threaded_irq(host->irq, NULL, sdhci_rt_irq, - IRQF_SHARED, mmc_hostname(host->mmc), host); -#else - return request_threaded_irq(host->irq, sdhci_irq, sdhci_thread_irq, - IRQF_SHARED, mmc_hostname(host->mmc), host); -#endif -} - /*****************************************************************************\ * * * Suspend/resume * @@ -2657,7 +2632,9 @@ int sdhci_resume_host(struct sdhci_host *host) } if (!device_may_wakeup(mmc_dev(host->mmc))) { - ret = sdhci_req_irq(host); + ret = request_threaded_irq(host->irq, sdhci_irq, + sdhci_thread_irq, IRQF_SHARED, + mmc_hostname(host->mmc), host); if (ret) return ret; } else { @@ -3276,7 +3253,8 @@ int sdhci_add_host(struct sdhci_host *host) sdhci_init(host, 0); - ret = sdhci_req_irq(host); + ret = request_threaded_irq(host->irq, sdhci_irq, sdhci_thread_irq, + IRQF_SHARED, mmc_hostname(mmc), host); if (ret) { pr_err("%s: Failed to request IRQ %d: %d\n", mmc_hostname(mmc), host->irq, ret); diff --git a/localversion-rt b/localversion-rt index 90290c642ed5..b72862e06be4 100644 --- a/localversion-rt +++ b/localversion-rt @@ -1 +1 @@ --rt29 +-rt30