From f8f78422773dbeb2cfd901500717fd1a51fdacf1 Mon Sep 17 00:00:00 2001 From: Tobias Powalowski Date: Sun, 26 Aug 2012 08:36:50 +0000 Subject: [PATCH] bump to latest version, added various fixes, added PARAVIRT option --- PKGBUILD | 34 ++++++++++++++++----- alsa-powersave-3.5.x.patch | 29 ++++++++++++++++++ i915-i2c-crash-3.5.x.patch | 47 +++++++++++++++++++++++++++++ linux.install | 2 +- watchdog-3.5.x.patch | 60 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 163 insertions(+), 9 deletions(-) create mode 100644 alsa-powersave-3.5.x.patch create mode 100644 i915-i2c-crash-3.5.x.patch create mode 100644 watchdog-3.5.x.patch diff --git a/PKGBUILD b/PKGBUILD index 32e5164..d8dbf11 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -5,7 +5,7 @@ pkgbase=linux # Build stock -ARCH kernel #pkgbase=linux-custom # Build kernel with a different name _srcname=linux-3.5 -pkgver=3.5.2 +pkgver=3.5.3 pkgrel=1 arch=('i686' 'x86_64') url="http://www.kernel.org/" @@ -18,15 +18,21 @@ source=("http://www.kernel.org/pub/linux/kernel/v3.x/${_srcname}.tar.xz" 'config' 'config.x86_64' # standard config files for mkinitcpio ramdisk 'linux.preset' - 'change-default-console-loglevel.patch') + 'change-default-console-loglevel.patch' + 'alsa-powersave-3.5.x.patch' + 'watchdog-3.5.x.patch' + 'i915-i2c-crash-3.5.x.patch') +md5sums=('24153eaaa81dedc9481ada8cd9c3b83d' + '01e0536109d2a06b1701b5051edfcea2' + '4eb50449b069bd699d92a290dce76d00' + '74c0ce9291ad8aaf26546fe85a1a7d18' + 'eb14dcfd80c00852ef81ded6e826826a' + '9d3c56a4b999c8bfbd4018089a62f662' + 'c1d58e712112cf8f95e7831012a1e67a' + 'ae13ed1e92bba07e9b17cf5c8d89683c' + 'ff4a203dd52e4dfb5d60948bb667d06d') _kernelname=${pkgbase#linux} -md5sums=('24153eaaa81dedc9481ada8cd9c3b83d' - '8e9f9cfd5fbd33ac4b265a4d47949edc' - '31dade2f50803beaebf947732f39b51e' - '34bf41248c2ab68ddb0a7b3b5f4a68ce' - 'eb14dcfd80c00852ef81ded6e826826a' - '9d3c56a4b999c8bfbd4018089a62f662') build() { cd "${srcdir}/${_srcname}" @@ -37,6 +43,18 @@ build() { # add latest fixes from stable queue, if needed # http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git + # fix alsa powersave bug, probably fixed in 3.5.4 + # https://bugs.archlinux.org/task/31255 + patch -Np1 -i "${srcdir}/alsa-powersave-3.5.x.patch" + + # fix broken watchdog + # https://bugzilla.kernel.org/show_bug.cgi?id=44991 + patch -Np1 -i "${srcdir}/watchdog-3.5.x.patch" + + # fix i915 i2c crash + # https://bugzilla.kernel.org/show_bug.cgi?id=46381 + patch -Np1 -i "${srcdir}/i915-i2c-crash-3.5.x.patch" + # set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param) # remove this when a Kconfig knob is made available by upstream # (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227) diff --git a/alsa-powersave-3.5.x.patch b/alsa-powersave-3.5.x.patch new file mode 100644 index 0000000..189fd1c --- /dev/null +++ b/alsa-powersave-3.5.x.patch @@ -0,0 +1,29 @@ +From: Takashi Iwai +Date: Mon, 20 Aug 2012 19:25:22 +0000 (+0200) +Subject: ALSA: hda - Fix leftover codec->power_transition +X-Git-Tag: v3.6-rc3~14^2~1 +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git;a=commitdiff_plain;h=535b6c51fe8293c88ce919cdfc4390c67a1cb6d1 + +ALSA: hda - Fix leftover codec->power_transition + +When the codec turn-on operation is canceled by the immediate +power-on, the driver left the power_transition flag as is. +This caused the persistent avoidance of power-save behavior. + +Cc: [v3.5+] +Signed-off-by: Takashi Iwai +--- + +diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c +index c3077d5..f560051 100644 +--- a/sound/pci/hda/hda_codec.c ++++ b/sound/pci/hda/hda_codec.c +@@ -4454,6 +4454,8 @@ static void __snd_hda_power_up(struct hda_codec *codec, bool wait_power_down) + * then there is no need to go through power up here. + */ + if (codec->power_on) { ++ if (codec->power_transition < 0) ++ codec->power_transition = 0; + spin_unlock(&codec->power_lock); + return; + } diff --git a/i915-i2c-crash-3.5.x.patch b/i915-i2c-crash-3.5.x.patch new file mode 100644 index 0000000..d202b53 --- /dev/null +++ b/i915-i2c-crash-3.5.x.patch @@ -0,0 +1,47 @@ +From cee25168e9c4ef7f9417632af2dc78b8521dfda7 Mon Sep 17 00:00:00 2001 +From: Jani Nikula +Date: Mon, 13 Aug 2012 17:33:02 +0300 +Subject: [PATCH] drm/i915: ensure i2c adapter is all set before adding it + +i2c_add_adapter() may do i2c transfers on the bus to detect supported +devices. Therefore the adapter needs to be all set before adding it. This +was not the case for the bit-banging fallback, resulting in an oops if the +device detection GMBUS transfers timed out. Fix the issue by calling +i2c_add_adapter() only after intel_gpio_setup(). + +LKML-Reference: <5021F00B.7000503@ionic.de> +Tested-by: Mihai Moldovan +Signed-off-by: Jani Nikula +Signed-off-by: Daniel Vetter +--- + drivers/gpu/drm/i915/intel_i2c.c | 7 ++++--- + 1 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c +index d79500b..b9755f6 100644 +--- a/drivers/gpu/drm/i915/intel_i2c.c ++++ b/drivers/gpu/drm/i915/intel_i2c.c +@@ -486,9 +486,6 @@ int intel_setup_gmbus(struct drm_device *dev) + bus->dev_priv = dev_priv; + + bus->adapter.algo = &gmbus_algorithm; +- ret = i2c_add_adapter(&bus->adapter); +- if (ret) +- goto err; + + /* By default use a conservative clock rate */ + bus->reg0 = port | GMBUS_RATE_100KHZ; +@@ -498,6 +495,10 @@ int intel_setup_gmbus(struct drm_device *dev) + bus->force_bit = true; + + intel_gpio_setup(bus, port); ++ ++ ret = i2c_add_adapter(&bus->adapter); ++ if (ret) ++ goto err; + } + + intel_i2c_reset(dev_priv->dev); +-- +1.7.7.6 + diff --git a/linux.install b/linux.install index 4e44c66..a2b9d4a 100644 --- a/linux.install +++ b/linux.install @@ -2,7 +2,7 @@ # arg 2: the old package version KERNEL_NAME= -KERNEL_VERSION=3.5.2-1-ARCH +KERNEL_VERSION=3.5.3-1-ARCH # set a sane PATH to ensure that critical utils like depmod will be found export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' diff --git a/watchdog-3.5.x.patch b/watchdog-3.5.x.patch new file mode 100644 index 0000000..7ac1e67 --- /dev/null +++ b/watchdog-3.5.x.patch @@ -0,0 +1,60 @@ +diff --git a/drivers/mfd/lpc_ich.c b/drivers/mfd/lpc_ich.c +index 027cc8f..a05fdfc 100644 +--- a/drivers/mfd/lpc_ich.c ++++ b/drivers/mfd/lpc_ich.c +@@ -765,7 +765,6 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev, + u32 base_addr_cfg; + u32 base_addr; + int ret; +- bool acpi_conflict = false; + struct resource *res; + + /* Setup power management base register */ +@@ -780,20 +779,11 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev, + res = wdt_io_res(ICH_RES_IO_TCO); + res->start = base_addr + ACPIBASE_TCO_OFF; + res->end = base_addr + ACPIBASE_TCO_END; +- ret = acpi_check_resource_conflict(res); +- if (ret) { +- acpi_conflict = true; +- goto wdt_done; +- } + + res = wdt_io_res(ICH_RES_IO_SMI); + res->start = base_addr + ACPIBASE_SMI_OFF; + res->end = base_addr + ACPIBASE_SMI_END; +- ret = acpi_check_resource_conflict(res); +- if (ret) { +- acpi_conflict = true; +- goto wdt_done; +- } ++ + lpc_ich_enable_acpi_space(dev); + + /* +@@ -813,11 +803,6 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev, + res = wdt_mem_res(ICH_RES_MEM_GCS); + res->start = base_addr + ACPIBASE_GCS_OFF; + res->end = base_addr + ACPIBASE_GCS_END; +- ret = acpi_check_resource_conflict(res); +- if (ret) { +- acpi_conflict = true; +- goto wdt_done; +- } + } + + lpc_ich_finalize_cell(&lpc_ich_cells[LPC_WDT], id); +@@ -825,9 +810,6 @@ static int __devinit lpc_ich_init_wdt(struct pci_dev *dev, + 1, NULL, 0); + + wdt_done: +- if (acpi_conflict) +- pr_warn("Resource conflict(s) found affecting %s\n", +- lpc_ich_cells[LPC_WDT].name); + return ret; + } + +-- +1.7.1 + + \ No newline at end of file