3.4.23-stable review
Subsystems (22)
Greg Kroah-Hartman
maintainercover 3.4.23-stable review
This is the start of the stable review cycle for the 3.4.23 release. There are 20 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun Dec 9 00:50:03 UTC 2012. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.4.23-rc1.gz
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 3.4.23-rc1
Michal Marek <[email protected]>
kbuild: Do not package /boot and /lib in make tar-pkg
Peng Tao <[email protected]>
pnfsblock: fix partial page buffer wirte
Chris Wilson <[email protected]>
drm/i915: Add no-lvds quirk for Supermicro X7SPA-H
Calvin Walton <[email protected]>
i915: Quirk no_lvds on Gigabyte GA-D525TUD ITX motherboard
Alan Cox <[email protected]>
ACPI: missing break
Heiko Carstens <[email protected]>
s390/mm: have 16 byte aligned struct pages
Ariel Elior <[email protected]>
bnx2x: remove redundant warning log
Mike Galbraith <[email protected]>
Revert "sched, autogroup: Stop going ahead if autogroup is disabled"
Jean Delvare <[email protected]>
i7300_edac: Fix error flag testing
NeilBrown <[email protected]>
md/raid10: close race that lose writes lost when replacement completes.
Mike Galbraith <[email protected]>
workqueue: exit rescuer_thread() as TASK_RUNNING
Vincent Palatin <[email protected]>
x86, fpu: Avoid FPU lazy restore after suspend
Jason Gunthorpe <[email protected]>
ARM: Kirkwood: Update PCI-E fixup
Naoya Horiguchi <[email protected]>
mm: soft offline: split thp at the beginning of soft_offline_page()
Jianguo Wu <[email protected]>
mm/vmemmap: fix wrong use of virt_to_page
Alex Deucher <[email protected]>
drm/radeon: properly track the crtc not_enabled case evergreen_mc_stop()
Alex Deucher <[email protected]>
drm/radeon: properly handle mc_stop/mc_resume on evergreen+ (v2)
Alex Deucher <[email protected]>
drm/radeon/dce4+: don't use radeon_crtc for vblank callback
Russell King - ARM Linux <[email protected]>
Dove: Fix irq_to_pmu()
Russell King - ARM Linux <[email protected]>
Dove: Attempt to fix PMU/RTC interrupts
-------------
Diffstat:
Makefile | 4 +- arch/arm/Kconfig | 1 + arch/arm/mach-dove/include/mach/pm.h | 2 +- arch/arm/mach-dove/irq.c | 14 ++- arch/arm/mach-kirkwood/pcie.c | 11 ++- arch/s390/Kconfig | 1 + arch/x86/include/asm/fpu-internal.h | 15 +-- arch/x86/kernel/smpboot.c | 5 + drivers/acpi/processor_driver.c | 1 + drivers/edac/i7300_edac.c | 8 +- drivers/gpu/drm/i915/intel_lvds.c | 16 ++++ drivers/gpu/drm/radeon/evergreen.c | 191 +++++++++++++++++++------------------ drivers/gpu/drm/radeon/evergreen_reg.h | 2 + drivers/gpu/drm/radeon/evergreend.h | 7 ++ drivers/gpu/drm/radeon/radeon_asic.h | 1 + drivers/md/raid10.c | 100 ++++++++++--------- drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 11 ++- fs/nfs/blocklayout/blocklayout.c | 176 +++++++++++++++++++++++++++++++--- fs/nfs/blocklayout/blocklayout.h | 1 + kernel/sched/auto_group.c | 4 - kernel/sched/auto_group.h | 5 - kernel/workqueue.c | 4 +- mm/memory-failure.c | 8 ++ mm/sparse.c | 10 +- scripts/package/buildtar | 2 +- 25 files changed, 408 insertions(+), 192 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/20 Dove: Attempt to fix PMU/RTC interrupts
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Russell King - ARM Linux <[email protected]>
commit 5d3df935426271016b895aecaa247101b4bfa35e upstream.
Fix the acknowledgement of PMU interrupts on Dove: some Dove hardware has not been sensibly designed so that interrupts can be handled in a race free manner. The PMU is one such instance.
The pending (aka 'cause') register is a bunch of RW bits, meaning that these bits can be both cleared and set by software (confirmed on the Armada-510 on the cubox.)
Hardware sets the appropriate bit when an interrupt is asserted, and software is required to clear the bits which are to be processed. If we write ~(1 << bit), then we end up asserting every other interrupt except the one we're processing. So, we need to do a read-modify-write cycle to clear the asserted bit.
However, any interrupts which occur in the middle of this cycle will also be written back as zero, which will also clear the new interrupts.
The upshot of this is: there is _no_ way to safely clear down interrupts in this register (and other similarly behaving interrupt pending registers on this device.) The patch below at least stops us creating new interrupts.
--- arch/arm/mach-dove/irq.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
arch/arm/mach-dove/irq.c +13 -1
@@ -61,8 +61,20 @@ static void pmu_irq_ack(struct irq_dataint pin =irq_to_pmu (d->irq);u32 u; +/* +* The PMU mask register is not RW0C: it is RW. This means that +* the bits take whatever value is written to them; if you write +* a '1', you will set the interrupt. +* +* Unfortunately this means there is NO race free way to clear +* these interrupts. +* +* So, let's structure the code so that the window is as small as +* possible. +*/ u = ~(1 << (pin &31 )); -writel (u,PMU_INTERRUPT_CAUSE ); + u &=readl_relaxed (PMU_INTERRUPT_CAUSE ); +writel_relaxed (u,PMU_INTERRUPT_CAUSE ); }static struct irq_chip pmu_irq_chip = {
Greg Kroah-Hartman
maintainerPATCH 2/20 Dove: Fix irq_to_pmu()
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Russell King - ARM Linux <[email protected]>
commit d356cf5a74afa32b40decca3c9dd88bc3cd63eb5 upstream.
PMU interrupts start at IRQ_DOVE_PMU_START, not IRQ_DOVE_PMU_START + 1. Fix the condition. (It may have been less likely to occur had the code been written "if (irq >= IRQ_DOVE_PMU_START" which imho is the easier to understand notation, and matches the normal way of thinking about these things.)
--- arch/arm/mach-dove/include/mach/pm.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/mach-dove/include/mach/pm.h +1 -1
@@ -45,7 +45,7 @@ static inline int pmu_to_irq(int pin)static inline int irq_to_pmu (int irq) { -if (IRQ_DOVE_PMU_START < irq && irq <NR_IRQS ) +if (IRQ_DOVE_PMU_START <= irq && irq <NR_IRQS )return irq -IRQ_DOVE_PMU_START ;return -EINVAL ;
Greg Kroah-Hartman
maintainerPATCH 3/20 drm/radeon/dce4+: dont use radeon_crtc for vblank callback
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Deucher <[email protected]>
commit 4a15903db02026728d0cf2755c6fabae16b8db6a upstream.
This might be called before we've allocated the radeon_crtcs
--- drivers/gpu/drm/radeon/evergreen.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
drivers/gpu/drm/radeon/evergreen.c +16 -4
@@ -37,6 +37,16 @@#define EVERGREEN_PFP_UCODE_SIZE 1120#define EVERGREEN_PM4_UCODE_SIZE 1376 +static const u32 crtc_offsets[6 ] = +{ +EVERGREEN_CRTC0_REGISTER_OFFSET , +EVERGREEN_CRTC1_REGISTER_OFFSET , +EVERGREEN_CRTC2_REGISTER_OFFSET , +EVERGREEN_CRTC3_REGISTER_OFFSET , +EVERGREEN_CRTC4_REGISTER_OFFSET , +EVERGREEN_CRTC5_REGISTER_OFFSET +}; +static void evergreen_gpu_init (struct radeon_device *rdev);void evergreen_fini (struct radeon_device *rdev);void evergreen_pcie_gen2_enable (struct radeon_device *rdev);
@@ -101,17 +111,19 @@ void evergreen_fix_pci_max_read_req_sizevoid dce4_wait_for_vblank (struct radeon_device *rdev,int crtc) { -struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc];int i; -if (RREG32 (EVERGREEN_CRTC_CONTROL + radeon_crtc->crtc_offset) &EVERGREEN_CRTC_MASTER_EN ) { +if (crtc >= rdev->num_crtc) +return ; + +if (RREG32 (EVERGREEN_CRTC_CONTROL + crtc_offsets[crtc]) &EVERGREEN_CRTC_MASTER_EN ) {for (i =0 ; i < rdev->usec_timeout; i++) { -if (!(RREG32 (EVERGREEN_CRTC_STATUS + radeon_crtc->crtc_offset) &EVERGREEN_CRTC_V_BLANK )) +if (!(RREG32 (EVERGREEN_CRTC_STATUS + crtc_offsets[crtc]) &EVERGREEN_CRTC_V_BLANK ))break ;udelay (1 ); }for (i =0 ; i < rdev->usec_timeout; i++) { -if (RREG32 (EVERGREEN_CRTC_STATUS + radeon_crtc->crtc_offset) &EVERGREEN_CRTC_V_BLANK ) +if (RREG32 (EVERGREEN_CRTC_STATUS + crtc_offsets[crtc]) &EVERGREEN_CRTC_V_BLANK )break ;udelay (1 ); }
Greg Kroah-Hartman
maintainerPATCH 4/20 drm/radeon: properly handle mc_stop/mc_resume on evergreen+ (v2)
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Deucher <[email protected]>
commit 62444b7462a2b98bc78d68736c03a7c4e66ba7e2 upstream.
- Stop the displays from accessing the FB
- Block CPU access
- Turn off MC client access
This should fix issues some users have seen, especially with UEFI, when changing the MC FB location that result in hangs or display corruption.
v2: fix crtc enabled check noticed by Luca Tettamanti
--- drivers/gpu/drm/radeon/evergreen.c | 173 +++++++++++++++------------------ drivers/gpu/drm/radeon/evergreen_reg.h | 2 drivers/gpu/drm/radeon/evergreend.h | 7 + drivers/gpu/drm/radeon/radeon_asic.h | 1 4 files changed, 90 insertions(+), 93 deletions(-)
drivers/gpu/drm/radeon/evergreen.c +80 -93
@@ -1129,116 +1129,103 @@ void evergreen_agp_enable(struct radeon_void evergreen_mc_stop (struct radeon_device *rdev,struct evergreen_mc_save *save) { +u32 crtc_enabled, tmp, frame_count, blackout; +int i, j; + save->vga_render_control =RREG32 (VGA_RENDER_CONTROL ); save->vga_hdp_control =RREG32 (VGA_HDP_CONTROL ); -/* Stop all video */ +/* disable VGA render */ WREG32 (VGA_RENDER_CONTROL ,0 ); -WREG32 (EVERGREEN_CRTC_UPDATE_LOCK +EVERGREEN_CRTC0_REGISTER_OFFSET ,1 ); -WREG32 (EVERGREEN_CRTC_UPDATE_LOCK +EVERGREEN_CRTC1_REGISTER_OFFSET ,1 ); -if (rdev->num_crtc >=4 ) { -WREG32 (EVERGREEN_CRTC_UPDATE_LOCK +EVERGREEN_CRTC2_REGISTER_OFFSET ,1 ); -WREG32 (EVERGREEN_CRTC_UPDATE_LOCK +EVERGREEN_CRTC3_REGISTER_OFFSET ,1 ); - } -if (rdev->num_crtc >=6 ) { -WREG32 (EVERGREEN_CRTC_UPDATE_LOCK +EVERGREEN_CRTC4_REGISTER_OFFSET ,1 ); -WREG32 (EVERGREEN_CRTC_UPDATE_LOCK +EVERGREEN_CRTC5_REGISTER_OFFSET ,1 ); - } -WREG32 (EVERGREEN_CRTC_CONTROL +EVERGREEN_CRTC0_REGISTER_OFFSET ,0 ); -WREG32 (EVERGREEN_CRTC_CONTROL +EVERGREEN_CRTC1_REGISTER_OFFSET ,0 ); -if (rdev->num_crtc >=4 ) { -WREG32 (EVERGREEN_CRTC_CONTROL +EVERGREEN_CRTC2_REGISTER_OFFSET ,0 ); -WREG32 (EVERGREEN_CRTC_CONTROL +EVERGREEN_CRTC3_REGISTER_OFFSET ,0 ); - } -if (rdev->num_crtc >=6 ) { -WREG32 (EVERGREEN_CRTC_CONTROL +EVERGREEN_CRTC4_REGISTER_OFFSET ,0 ); -WREG32 (EVERGREEN_CRTC_CONTROL +EVERGREEN_CRTC5_REGISTER_OFFSET ,0 ); - } -WREG32 (EVERGREEN_CRTC_UPDATE_LOCK +EVERGREEN_CRTC0_REGISTER_OFFSET ,0 ); -WREG32 (EVERGREEN_CRTC_UPDATE_LOCK +EVERGREEN_CRTC1_REGISTER_OFFSET ,0 ); -if (rdev->num_crtc >=4 ) { -WREG32 (EVERGREEN_CRTC_UPDATE_LOCK +EVERGREEN_CRTC2_REGISTER_OFFSET ,0 ); -WREG32 (EVERGREEN_CRTC_UPDATE_LOCK +EVERGREEN_CRTC3_REGISTER_OFFSET ,0 ); - } -if (rdev->num_crtc >=6 ) { -WREG32 (EVERGREEN_CRTC_UPDATE_LOCK +EVERGREEN_CRTC4_REGISTER_OFFSET ,0 ); -WREG32 (EVERGREEN_CRTC_UPDATE_LOCK +EVERGREEN_CRTC5_REGISTER_OFFSET ,0 ); - } - -WREG32 (D1VGA_CONTROL ,0 ); -WREG32 (D2VGA_CONTROL ,0 ); -if (rdev->num_crtc >=4 ) { -WREG32 (EVERGREEN_D3VGA_CONTROL ,0 ); -WREG32 (EVERGREEN_D4VGA_CONTROL ,0 ); - } -if (rdev->num_crtc >=6 ) { -WREG32 (EVERGREEN_D5VGA_CONTROL ,0 ); -WREG32 (EVERGREEN_D6VGA_CONTROL ,0 ); +/* blank the display controllers */ +for (i =0 ; i < rdev->num_crtc; i++) { + crtc_enabled =RREG32 (EVERGREEN_CRTC_CONTROL + crtc_offsets[i]) &EVERGREEN_CRTC_MASTER_EN ; +if (crtc_enabled) { + save->crtc_enabled[i] = true; +if (ASIC_IS_DCE6 (rdev)) { + tmp =RREG32 (EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i]); +if (!(tmp &EVERGREEN_CRTC_BLANK_DATA_EN )) { +radeon_wait_for_vblank (rdev, i); + tmp |=EVERGREEN_CRTC_BLANK_DATA_EN ; +WREG32 (EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i], tmp); + } + }else { + tmp =RREG32 (EVERGREEN_CRTC_CONTROL + crtc_offsets[i]); +if (!(tmp &EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE )) { +radeon_wait_for_vblank (rdev, i); + tmp |=EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE ; +WREG32 (EVERGREEN_CRTC_CONTROL + crtc_offsets[i], tmp); + } + } +/* wait for the next frame */ + frame_count =radeon_get_vblank_counter (rdev, i); +for (j =0 ; j < rdev->usec_timeout; j++) { +if (radeon_get_vblank_counter (rdev, i) != frame_count) +break ; +udelay (1 ); + } + } + } + +radeon_mc_wait_for_idle (rdev); + + blackout =RREG32 (MC_SHARED_BLACKOUT_CNTL ); +if ((blackout &BLACKOUT_MODE_MASK ) !=1 ) { +/* Block CPU access */ +WREG32 (BIF_FB_EN ,0 ); +/* blackout the MC */ + blackout &= ~BLACKOUT_MODE_MASK ; +WREG32 (MC_SHARED_BLACKOUT_CNTL , blackout |1 ); } }void evergreen_mc_resume (struct radeon_device *rdev,struct evergreen_mc_save *save) { -WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH +EVERGREEN_CRTC0_REGISTER_OFFSET , -upper_32_bits (rdev->mc.vram_start)); -WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH +EVERGREEN_CRTC0_REGISTER_OFFSET , -upper_32_bits (rdev->mc.vram_start)); -WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS +EVERGREEN_CRTC0_REGISTER_OFFSET , - (u32 )rdev->mc.vram_start); -WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS +EVERGREEN_CRTC0_REGISTER_OFFSET , - (u32 )rdev->mc.vram_start); - -WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH +EVERGREEN_CRTC1_REGISTER_OFFSET , -upper_32_bits (rdev->mc.vram_start)); -WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH +EVERGREEN_CRTC1_REGISTER_OFFSET , -upper_32_bits (rdev->mc.vram_start)); -WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS +EVERGREEN_CRTC1_REGISTER_OFFSET , - (u32 )rdev->mc.vram_start); -WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS +EVERGREEN_CRTC1_REGISTER_OFFSET , - (u32 )rdev->mc.vram_start); - -if (rdev->num_crtc >=4 ) { -WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH +EVERGREEN_CRTC2_REGISTER_OFFSET , -upper_32_bits (rdev->mc.vram_start)); -WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH +EVERGREEN_CRTC2_REGISTER_OFFSET , -upper_32_bits (rdev->mc.vram_start)); -WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS +EVERGREEN_CRTC2_REGISTER_OFFSET , - (u32 )rdev->mc.vram_start); -WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS +EVERGREEN_CRTC2_REGISTER_OFFSET , - (u32 )rdev->mc.vram_start); +u32 tmp, frame_count; +int i, j; -WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH +EVERGREEN_CRTC3_REGISTER_OFFSET , +/* update crtc base addresses */ +for (i =0 ; i < rdev->num_crtc; i++) { +WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + crtc_offsets[i],upper_32_bits (rdev->mc.vram_start)); -WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH +EVERGREEN_CRTC3_REGISTER_OFFSET , +WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + crtc_offsets[i],upper_32_bits (rdev->mc.vram_start)); -WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS +EVERGREEN_CRTC3_REGISTER_OFFSET , +WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + crtc_offsets[i], (u32 )rdev->mc.vram_start); -WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS +EVERGREEN_CRTC3_REGISTER_OFFSET , +WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + crtc_offsets[i], (u32 )rdev->mc.vram_start); } -if (rdev->num_crtc >=6 ) { -WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH +EVERGREEN_CRTC4_REGISTER_OFFSET , -upper_32_bits (rdev->mc.vram_start)); -WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH +EVERGREEN_CRTC4_REGISTER_OFFSET , -upper_32_bits (rdev->mc.vram_start)); -WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS +EVERGREEN_CRTC4_REGISTER_OFFSET , - (u32 )rdev->mc.vram_start); -WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS +EVERGREEN_CRTC4_REGISTER_OFFSET , - (u32 )rdev->mc.vram_start); - -WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH +EVERGREEN_CRTC5_REGISTER_OFFSET , -upper_32_bits (rdev->mc.vram_start)); -WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH +EVERGREEN_CRTC5_REGISTER_OFFSET , -upper_32_bits (rdev->mc.vram_start)); -WREG32 (EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS +EVERGREEN_CRTC5_REGISTER_OFFSET , - (u32 )rdev->mc.vram_start); -WREG32 (EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS +EVERGREEN_CRTC5_REGISTER_OFFSET , - (u32 )rdev->mc.vram_start); - } -WREG32 (EVERGREEN_VGA_MEMORY_BASE_ADDRESS_HIGH ,upper_32_bits (rdev->mc.vram_start));WREG32 (EVERGREEN_VGA_MEMORY_BASE_ADDRESS , (u32 )rdev->mc.vram_start); -/* Unlock host access */ + +/* unblackout the MC */ + tmp =RREG32 (MC_SHARED_BLACKOUT_CNTL ); + tmp &= ~BLACKOUT_MODE_MASK ; +WREG32 (MC_SHARED_BLACKOUT_CNTL , tmp); +/* allow CPU access */ +WREG32 (BIF_FB_EN ,FB_READ_EN |FB_WRITE_EN ); + +for (i =0 ; i < rdev->num_crtc; i++) { +if (save->crtc_enabled) { +if (ASIC_IS_DCE6 (rdev)) { + tmp =RREG32 (EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i]); + tmp |=EVERGREEN_CRTC_BLANK_DATA_EN ; +WREG32 (EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i], tmp); + }else { + tmp =RREG32 (EVERGREEN_CRTC_CONTROL + crtc_offsets[i]); + tmp &= ~EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE ; +WREG32 (EVERGREEN_CRTC_CONTROL + crtc_offsets[i], tmp); + } +/* wait for the next frame */ + frame_count =radeon_get_vblank_counter (rdev, i); +for (j =0 ; j < rdev->usec_timeout; j++) { +if (radeon_get_vblank_counter (rdev, i) != frame_count) +break ; +udelay (1 ); + } + } + } +/* Unlock vga access */ WREG32 (VGA_HDP_CONTROL , save->vga_hdp_control);mdelay (1 );WREG32 (VGA_RENDER_CONTROL , save->vga_render_control);
drivers/gpu/drm/radeon/evergreen_reg.h +2 -0
@@ -218,6 +218,8 @@#define EVERGREEN_CRTC_CONTROL 0x6e70# define EVERGREEN_CRTC_MASTER_EN (1 << 0)# define EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE (1 << 24) +#define EVERGREEN_CRTC_BLANK_CONTROL 0x6e74 +# define EVERGREEN_CRTC_BLANK_DATA_EN (1 << 8)#define EVERGREEN_CRTC_STATUS 0x6e8c# define EVERGREEN_CRTC_V_BLANK (1 << 0)#define EVERGREEN_CRTC_STATUS_POSITION 0x6e90
drivers/gpu/drm/radeon/evergreend.h +7 -0
@@ -77,6 +77,10 @@#define CONFIG_MEMSIZE 0x5428 +#define BIF_FB_EN 0x5490 +#define FB_READ_EN (1 << 0) +#define FB_WRITE_EN (1 << 1) +#define CP_STRMOUT_CNTL 0x84FC#define CP_COHER_CNTL 0x85F0
@@ -200,6 +204,9 @@#define NOOFCHAN_MASK 0x00003000#define MC_SHARED_CHREMAP 0x2008 +#define MC_SHARED_BLACKOUT_CNTL 0x20ac +#define BLACKOUT_MODE_MASK 0x00000007 +#define MC_ARB_RAMCFG 0x2760#define NOOFBANK_SHIFT 0#define NOOFBANK_MASK 0x00000003
drivers/gpu/drm/radeon/radeon_asic.h +1 -0
@@ -400,6 +400,7 @@ void r700_cp_fini(struct radeon_device *struct evergreen_mc_save {u32 vga_render_control;u32 vga_hdp_control; +bool crtc_enabled[RADEON_MAX_CRTCS ]; };void evergreen_pcie_gart_tlb_flush (struct radeon_device *rdev);
Greg Kroah-Hartman
maintainerPATCH 5/20 drm/radeon: properly track the crtc not_enabled case evergreen_mc_stop()
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Deucher <[email protected]>
commit 804cc4a0ad3a896ca295f771a28c6eb36ced7903 upstream.
The save struct is not initialized previously so explicitly mark the crtcs as not used when they are not in use.
--- drivers/gpu/drm/radeon/evergreen.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/gpu/drm/radeon/evergreen.c +2 -0
@@ -1164,6 +1164,8 @@ void evergreen_mc_stop(struct radeon_devbreak ;udelay (1 ); } + }else { + save->crtc_enabled[i] = false; } }
Greg Kroah-Hartman
maintainerPATCH 6/20 mm/vmemmap: fix wrong use of virt_to_page
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jianguo Wu <[email protected]>
commit ae64ffcac35de0db628ba9631edf8ff34c5cd7ac upstream.
I enable CONFIG_DEBUG_VIRTUAL and CONFIG_SPARSEMEM_VMEMMAP, when doing memory hotremove, there is a kernel BUG at arch/x86/mm/physaddr.c:20.
It is caused by free_section_usemap()->virt_to_page(), virt_to_page() is only used for kernel direct mapping address, but sparse-vmemmap uses vmemmap address, so it is going wrong here.
------------[ cut here ]------------ kernel BUG at arch/x86/mm/physaddr.c:20! invalid opcode: 0000 [#1] SMP Modules linked in: acpihp_drv acpihp_slot edd cpufreq_conservative cpufreq_userspace cpufreq_powersave acpi_cpufreq mperf fuse vfat fat loop dm_mod coretemp kvm crc32c_intel ipv6 ixgbe igb iTCO_wdt i7core_edac edac_core pcspkr iTCO_vendor_support ioatdma microcode joydev sr_mod i2c_i801 dca lpc_ich mfd_core mdio tpm_tis i2c_core hid_generic tpm cdrom sg tpm_bios rtc_cmos button ext3 jbd mbcache usbhid hid uhci_hcd ehci_hcd usbcore usb_common sd_mod crc_t10dif processor thermal_sys hwmon scsi_dh_alua scsi_dh_hp_sw scsi_dh_rdac scsi_dh_emc scsi_dh ata_generic ata_piix libata megaraid_sas scsi_mod CPU 39 Pid: 6454, comm: sh Not tainted 3.7.0-rc1-acpihp-final+ #45 QCI QSSC-S4R/QSSC-S4R RIP: 0010:[<ffffffff8103c908>] [<ffffffff8103c908>] __phys_addr+0x88/0x90 RSP: 0018:ffff8804440d7c08 EFLAGS: 00010006 RAX: 0000000000000006 RBX: ffffea0012000000 RCX: 000000000000002c ...
--- mm/sparse.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
mm/sparse.c +4 -6
@@ -619,7 +619,7 @@ static void __kfree_section_memmap(struc {return ;/* XXX: Not implemented yet */ } -static void free_map_bootmem (struct page *page,unsigned long nr_pages) +static void free_map_bootmem (struct page *memmap,unsigned long nr_pages) { }#else
@@ -660,10 +660,11 @@ static void __kfree_section_memmap(struc get_order(sizeof(struct page) * nr_pages)); } -static void free_map_bootmem (struct page *page,unsigned long nr_pages) +static void free_map_bootmem (struct page *memmap,unsigned long nr_pages) {unsigned long maps_section_nr, removing_section_nr, i;unsigned long magic; +struct page *page =virt_to_page (memmap);for (i =0 ; i < nr_pages; i++, page++) { magic = (unsigned long ) page->lru.next;
@@ -712,13 +713,10 @@ static void free_section_usemap(struct p*/ if (memmap) { -struct page *memmap_page; - memmap_page =virt_to_page (memmap); - nr_pages =PAGE_ALIGN (PAGES_PER_SECTION *sizeof (struct page )) >>PAGE_SHIFT ; -free_map_bootmem (memmap_page, nr_pages); +free_map_bootmem (memmap, nr_pages); } }
Greg Kroah-Hartman
maintainerPATCH 7/20 mm: soft offline: split thp at the beginning of soft_offline_page()
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Naoya Horiguchi <[email protected]>
commit 783657a7dc20e5c0efbc9a09a9dd38e238a723da upstream.
When we try to soft-offline a thp tail page, put_page() is called on the tail page unthinkingly and VM_BUG_ON is triggered in put_compound_page().
This patch splits thp before going into the main body of soft-offlining.
--- mm/memory-failure.c | 8 ++++++++ 1 file changed, 8 insertions(+)
mm/memory-failure.c +8 -0
@@ -1481,9 +1481,17 @@ int soft_offline_page(struct page *page, {int ret;unsigned long pfn =page_to_pfn (page); +struct page *hpage =compound_trans_head (page);if (PageHuge (page))return soft_offline_huge_page (page, flags); +if (PageTransHuge (hpage)) { +if (PageAnon (hpage) &&unlikely (split_huge_page (hpage))) { +pr_info ("soft offline: %#lx: failed to split THP\n" , + pfn); +return -EBUSY ; + } + } ret =get_any_page (page, pfn, flags);if (ret <0 )
Greg Kroah-Hartman
maintainerPATCH 8/20 ARM: Kirkwood: Update PCI-E fixup
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jason Gunthorpe <[email protected]>
commit 1dc831bf53fddcc6443f74a39e72db5bcea4f15d upstream.
- The code relies on rc_pci_fixup being called, which only happens when CONFIG_PCI_QUIRKS is enabled, so add that to Kconfig. Omitting this causes a booting failure with a non-obvious cause.
- Update rc_pci_fixup to set the class properly, copying the more modern style from other places
- Correct the rc_pci_fixup comment
--- arch/arm/Kconfig | 1 + arch/arm/mach-kirkwood/pcie.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-)
arch/arm/Kconfig +1 -0
@@ -579,6 +579,7 @@ config ARCH_KIRKWOOD bool "Marvell Kirkwood" select CPU_FEROCEON select PCI + select PCI_QUIRKS select ARCH_REQUIRE_GPIOLIB select GENERIC_CLOCKEVENTS select NEED_MACH_IO_H
arch/arm/mach-kirkwood/pcie.c +8 -3
@@ -212,14 +212,19 @@ static int __init kirkwood_pcie_setup(inreturn 1 ; } +/* +* The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it +* is operating as a root complex this needs to be switched to +* PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on +* the device. Decoding setup is handled by the orion code. +*/ static void __devinit rc_pci_fixup (struct pci_dev *dev) { -/* -* Prevent enumeration of root complex. -*/ if (dev->bus->parent ==NULL && dev->devfn ==0 ) {int i; + dev->class &=0xff ; + dev->class |=PCI_CLASS_BRIDGE_HOST <<8 ;for (i =0 ; i <DEVICE_COUNT_RESOURCE ; i++) { dev->resource[i].start =0 ; dev->resource[i].end =0 ;
Greg Kroah-Hartman
maintainerPATCH 9/20 x86, fpu: Avoid FPU lazy restore after suspend
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vincent Palatin <[email protected]>
commit 644c154186386bb1fa6446bc5e037b9ed098db46 upstream.
When a cpu enters S3 state, the FPU state is lost.
After resuming for S3, if we try to lazy restore the FPU for a process running on the same CPU, this will result in a corrupted FPU context.
Ensure that "fpu_owner_task" is properly invalided when (re-)initializing a CPU, so nobody will try to lazy restore a state which doesn't exist in the hardware.
Tested with a 64-bit kernel on a 4-core Ivybridge CPU with eagerfpu=off, by doing thousands of suspend/resume cycles with 4 processes doing FPU operations running. Without the patch, a process is killed after a few hundreds cycles by a SIGFPE.
--- arch/x86/include/asm/fpu-internal.h | 15 +++++++++------ arch/x86/kernel/smpboot.c | 5 +++++ 2 files changed, 14 insertions(+), 6 deletions(-)
arch/x86/include/asm/fpu-internal.h +9 -6
@@ -334,14 +334,17 @@ static inline void __thread_fpu_begin(sttypedef struct {int preload; }fpu_switch_t ;/* -* FIXME! We could do a totally lazy restore, but we need to -* add a per-cpu "this was the task that last touched the FPU -* on this CPU" variable, and the task needs to have a "I last -* touched the FPU on this CPU" and check them. +* Must be run with preemption disabled: this clears the fpu_owner_task, +* on this CPU. * -* We don't do that yet, so "fpu_lazy_restore()" always returns -* false, but some day.. +* This will disable any lazy FPU state restore of the current FPU state, +* but if the current thread owns the FPU, it will still be saved by. */ +static inline void __cpu_disable_lazy_restore (unsigned int cpu) +{ +per_cpu (fpu_owner_task, cpu) =NULL ; +} +static inline int fpu_lazy_restore (struct task_struct *new,unsigned int cpu) { return new == percpu_read_stable(fpu_owner_task) &&
arch/x86/kernel/smpboot.c +5 -0
@@ -66,6 +66,8 @@#include <asm/mwait.h> #include <asm/apic.h> #include <asm/io_apic.h> +#include <asm/i387.h> +#include <asm/fpu-internal.h> #include <asm/setup.h> #include <asm/uv/uv.h> #include <linux/mc146818rtc.h>
@@ -851,6 +853,9 @@ int __cpuinit native_cpu_up(unsigned intper_cpu (cpu_state, cpu) =CPU_UP_PREPARE ; +/* the FPU context is blank, nobody can own it */ +__cpu_disable_lazy_restore (cpu); + err =do_boot_cpu (apicid, cpu);if (err) {pr_debug ("do_boot_cpu failed %d\n" , err);
Greg Kroah-Hartman
maintainerPATCH 10/20 workqueue: exit rescuer_thread() as TASK_RUNNING
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mike Galbraith <[email protected]>
commit 412d32e6c98527078779e5b515823b2810e40324 upstream.
A rescue thread exiting TASK_INTERRUPTIBLE can lead to a task scheduling off, never to be seen again. In the case where this occurred, an exiting thread hit reiserfs homebrew conditional resched while holding a mutex, bringing the box to its knees.
PID: 18105 TASK: ffff8807fd412180 CPU: 5 COMMAND: "kdmflush"
#0 [ffff8808157e7670] schedule at ffffffff8143f489
#1 [ffff8808157e77b8] reiserfs_get_block at ffffffffa038ab2d [reiserfs] #2 [ffff8808157e79a8] __block_write_begin at ffffffff8117fb14 #3 [ffff8808157e7a98] reiserfs_write_begin at ffffffffa0388695 [reiserfs] #4 [ffff8808157e7ad8] generic_perform_write at ffffffff810ee9e2 #5 [ffff8808157e7b58] generic_file_buffered_write at ffffffff810eeb41 #6 [ffff8808157e7ba8] __generic_file_aio_write at ffffffff810f1a3a #7 [ffff8808157e7c58] generic_file_aio_write at ffffffff810f1c88 #8 [ffff8808157e7cc8] do_sync_write at ffffffff8114f850
#9 [ffff8808157e7dd8] do_acct_process at ffffffff810a268f
[exception RIP: kernel_thread_helper]
RIP: ffffffff8144a5c0 RSP: ffff8808157e7f58 RFLAGS: 00000202
RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
RDX: 0000000000000000 RSI: ffffffff8107af60 RDI: ffff8803ee491d18
RBP: 0000000000000000 R8: 0000000000000000 R9: 0000000000000000
R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018--- kernel/workqueue.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
kernel/workqueue.c +3 -1
@@ -2040,8 +2040,10 @@ static int rescuer_thread(void *__wq) repeat:set_current_state (TASK_INTERRUPTIBLE ); -if (kthread_should_stop ()) +if (kthread_should_stop ()) { +__set_current_state (TASK_RUNNING );return 0 ; + }/* * See whether any cpu is asking for help. Unbounded
Greg Kroah-Hartman
maintainerPATCH 11/20 md/raid10: close race that lose writes lost when replacement completes.
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: NeilBrown <[email protected]>
commit e7c0c3fa29280d62aa5e11101a674bb3064bd791 upstream.
When a replacement operation completes there is a small window when the original device is marked 'faulty' and the replacement still looks like a replacement. The faulty should be removed and the replacement moved in place very quickly, bit it isn't instant.
So the code write out to the array must handle the possibility that the only working device for some slot in the replacement - but it doesn't. If the primary device is faulty it just gives up. This can lead to corruption.
So make the code more robust: if either the primary or the replacement is present and working, write to them. Only when neither are present do we give up.
This bug has been present since replacement was introduced in 3.3, so it is suitable for any -stable kernel since then.
--- drivers/md/raid10.c | 104 +++++++++++++++++++++++++++------------------------- 1 file changed, 55 insertions(+), 49 deletions(-)
drivers/md/raid10.c +55 -49
@@ -1182,18 +1182,21 @@ retry_write: blocked_rdev = rrdev;break ; } +if (rdev && (test_bit (Faulty, &rdev->flags) + ||test_bit (Unmerged, &rdev->flags))) + rdev =NULL ;if (rrdev && (test_bit (Faulty, &rrdev->flags) ||test_bit (Unmerged, &rrdev->flags))) rrdev =NULL ; r10_bio->devs[i].bio =NULL ; r10_bio->devs[i].repl_bio =NULL ; -if (!rdev ||test_bit (Faulty, &rdev->flags) || -test_bit (Unmerged, &rdev->flags)) { + +if (!rdev && !rrdev) {set_bit (R10BIO_Degraded, &r10_bio->state);continue ; } -if (test_bit (WriteErrorSeen, &rdev->flags)) { +if (rdev &&test_bit (WriteErrorSeen, &rdev->flags)) {sector_t first_bad;sector_t dev_sector = r10_bio->devs[i].addr;int bad_sectors;
@@ -1235,8 +1238,10 @@ retry_write: max_sectors = good_sectors; } } - r10_bio->devs[i].bio = bio; -atomic_inc (&rdev->nr_pending); +if (rdev) { + r10_bio->devs[i].bio = bio; +atomic_inc (&rdev->nr_pending); + }if (rrdev) { r10_bio->devs[i].repl_bio = bio;atomic_inc (&rrdev->nr_pending);
@@ -1292,51 +1297,52 @@ retry_write:for (i =0 ; i < conf->copies; i++) {struct bio *mbio;int d = r10_bio->devs[i].devnum; -if (!r10_bio->devs[i].bio) -continue ; - - mbio =bio_clone_mddev (bio,GFP_NOIO , mddev); -md_trim_bio (mbio, r10_bio->sector - bio->bi_sector, - max_sectors); - r10_bio->devs[i].bio = mbio; - - mbio->bi_sector = (r10_bio->devs[i].addr+ - conf->mirrors[d].rdev->data_offset); - mbio->bi_bdev = conf->mirrors[d].rdev->bdev; - mbio->bi_end_io = raid10_end_write_request; - mbio->bi_rw =WRITE | do_sync | do_fua; - mbio->bi_private = r10_bio; - -atomic_inc (&r10_bio->remaining); -spin_lock_irqsave (&conf->device_lock, flags); -bio_list_add (&conf->pending_bio_list, mbio); - conf->pending_count++; -spin_unlock_irqrestore (&conf->device_lock, flags); - -if (!r10_bio->devs[i].repl_bio) -continue ; +if (r10_bio->devs[i].bio) { +struct md_rdev *rdev = conf->mirrors[d].rdev; + mbio =bio_clone_mddev (bio,GFP_NOIO , mddev); +md_trim_bio (mbio, r10_bio->sector - bio->bi_sector, + max_sectors); + r10_bio->devs[i].bio = mbio; + + mbio->bi_sector = (r10_bio->devs[i].addr+ + rdev->data_offset); + mbio->bi_bdev = rdev->bdev; + mbio->bi_end_io = raid10_end_write_request; + mbio->bi_rw =WRITE | do_sync | do_fua; + mbio->bi_private = r10_bio; + +atomic_inc (&r10_bio->remaining); +spin_lock_irqsave (&conf->device_lock, flags); +bio_list_add (&conf->pending_bio_list, mbio); + conf->pending_count++; +spin_unlock_irqrestore (&conf->device_lock, flags); + } - mbio =bio_clone_mddev (bio,GFP_NOIO , mddev); -md_trim_bio (mbio, r10_bio->sector - bio->bi_sector, - max_sectors); - r10_bio->devs[i].repl_bio = mbio; - -/* We are actively writing to the original device -* so it cannot disappear, so the replacement cannot -* become NULL here -*/ - mbio->bi_sector = (r10_bio->devs[i].addr+ - conf->mirrors[d].replacement->data_offset); - mbio->bi_bdev = conf->mirrors[d].replacement->bdev; - mbio->bi_end_io = raid10_end_write_request; - mbio->bi_rw =WRITE | do_sync | do_fua; - mbio->bi_private = r10_bio; - -atomic_inc (&r10_bio->remaining); -spin_lock_irqsave (&conf->device_lock, flags); -bio_list_add (&conf->pending_bio_list, mbio); - conf->pending_count++; -spin_unlock_irqrestore (&conf->device_lock, flags); +if (r10_bio->devs[i].repl_bio) { +struct md_rdev *rdev = conf->mirrors[d].replacement; +if (rdev ==NULL ) { +/* Replacement just got moved to main 'rdev' */ +smp_mb (); + rdev = conf->mirrors[d].rdev; + } + mbio =bio_clone_mddev (bio,GFP_NOIO , mddev); +md_trim_bio (mbio, r10_bio->sector - bio->bi_sector, + max_sectors); + r10_bio->devs[i].repl_bio = mbio; + + mbio->bi_sector = (r10_bio->devs[i].addr+ + rdev->data_offset); + mbio->bi_bdev = rdev->bdev; + mbio->bi_end_io = raid10_end_write_request; + mbio->bi_rw =WRITE | do_sync | do_fua; + mbio->bi_private = r10_bio; + +atomic_inc (&r10_bio->remaining); +spin_lock_irqsave (&conf->device_lock, flags); +bio_list_add (&conf->pending_bio_list, mbio); + conf->pending_count++; +spin_unlock_irqrestore (&conf->device_lock, flags); + } }/* Don't remove the bias on 'remaining' (one_write_done) until
Greg Kroah-Hartman
maintainerPATCH 12/20 i7300_edac: Fix error flag testing
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jean Delvare <[email protected]>
commit 7e06b7a3333f5c7a0cec12aff20d39c5c87c0795 upstream.
* Right-shift the values in GET_FBD_FAT_IDX and GET_FBD_NF_IDX, so that the callers get the result they expect.
* Fix definition of FERR_FAT_FBD_ERR_MASK.
* Call GET_FBD_NF_IDX, not GET_FBD_FAT_IDX, when operating on register FERR_NF_FBD. We were lucky they have the same definition.
This fixes kernel bug #44131:
https://bugzilla.kernel.org/show_bug.cgi?id=44131
--- drivers/edac/i7300_edac.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/edac/i7300_edac.c +4 -4
@@ -215,8 +215,8 @@ static const char *ferr_fat_fbd_name[] = [0 ] ="Memory Write error on non-redundant retry or " "FBD configuration Write error on retry", }; -#define GET_FBD_FAT_IDX (fbderr) (fbderr & (3 << 28)) -#define FERR_FAT_FBD_ERR_MASK ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3)) +#define GET_FBD_FAT_IDX (fbderr) (((fbderr) >> 28) & 3) +#define FERR_FAT_FBD_ERR_MASK ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 22))#define FERR_NF_FBD 0xa0static const char *ferr_nf_fbd_name[] = {
@@ -243,7 +243,7 @@ static const char *ferr_nf_fbd_name[] = [1] = "Aliased Uncorrectable Non-Mirrored Demand Data ECC", [0] = "Uncorrectable Data ECC on Replay", }; -#define GET_FBD_NF_IDX (fbderr) (fbderr & (3 << 28)) +#define GET_FBD_NF_IDX (fbderr) (((fbderr) >> 28) & 3)#define FERR_NF_FBD_ERR_MASK ((1 << 24) | (1 << 23) | (1 << 22) | (1 << 21) |\ (1 << 18) | (1 << 17) | (1 << 16) | (1 << 15) |\ (1 << 14) | (1 << 13) | (1 << 11) | (1 << 10) |\
@@ -485,7 +485,7 @@ static void i7300_process_fbd_error(stru errnum =find_first_bit (&errors,ARRAY_SIZE (ferr_nf_fbd_name)); specific =GET_ERR_FROM_TABLE (ferr_nf_fbd_name, errnum); - branch = (GET_FBD_FAT_IDX (error_reg) ==2 ) ?1 :0 ; + branch = (GET_FBD_NF_IDX (error_reg) ==2 ) ?1 :0 ;pci_read_config_dword (pvt->pci_dev_16_1_fsb_addr_map,REDMEMA , &syndrome);
Greg Kroah-Hartman
maintainerPATCH 13/20 Revert "sched, autogroup: Stop going ahead if autogroup is disabled"
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mike Galbraith <[email protected]>
commit fd8ef11730f1d03d5d6555aa53126e9e34f52f12 upstream.
This reverts commit 800d4d30c8f20bd728e5741a3b77c4859a613f7c.
Between commits 8323f26ce342 ("sched: Fix race in task_group()") and 800d4d30c8f2 ("sched, autogroup: Stop going ahead if autogroup is disabled"), autogroup is a wreck.
With both applied, all you have to do to crash a box is disable autogroup during boot up, then reboot.. boom, NULL pointer dereference due to commit 800d4d30c8f2 not allowing autogroup to move things, and commit 8323f26ce342 making that the only way to switch runqueues:
BUG: unable to handle kernel NULL pointer dereference at (null)
IP: [<ffffffff81063ac0>] effective_load.isra.43+0x50/0x90
Pid: 7047, comm: systemd-user-se Not tainted 3.6.8-smp #7 MEDIONPC MS-7502/MS-7502
RIP: effective_load.isra.43+0x50/0x90
Process systemd-user-se (pid: 7047, threadinfo ffff880221dde000, task ffff88022618b3a0)
Call Trace:
select_task_rq_fair+0x255/0x780
try_to_wake_up+0x156/0x2c0
wake_up_state+0xb/0x10
signal_wake_up+0x28/0x40
complete_signal+0x1d6/0x250
__send_signal+0x170/0x310
send_signal+0x40/0x80
do_send_sig_info+0x47/0x90
group_send_sig_info+0x4a/0x70
kill_pid_info+0x3a/0x60
sys_kill+0x97/0x1a0
? vfs_read+0x120/0x160
? sys_read+0x45/0x90
system_call_fastpath+0x16/0x1b
Code: 49 0f af 41 50 31 d2 49 f7 f0 48 83 f8 01 48 0f 46 c6 48 2b 07 48 8b bf 40 01 00 00 48 85 ff 74 3a 45 31 c0 48 8b 8f 50 01 00 00 <48> 8b 11 4c 8b 89 80 00 00 00 49 89 d2 48 01 d0 45 8b 59 58 4c
RIP [<ffffffff81063ac0>] effective_load.isra.43+0x50/0x90
RSP <ffff880221ddfbd8>
CR2: 0000000000000000--- kernel/sched/auto_group.c | 4 ---- kernel/sched/auto_group.h | 5 ----- 2 files changed, 9 deletions(-)
kernel/sched/auto_group.c +0 -4
@@ -143,15 +143,11 @@ autogroup_move_group(struct task_struct p->signal->autogroup =autogroup_kref_get (ag); -if (!ACCESS_ONCE (sysctl_sched_autogroup_enabled)) - goto out; - t = p; do { sched_move_task(t); } while_each_thread(p, t); -out: unlock_task_sighand(p, &flags); autogroup_kref_put(prev); }
kernel/sched/auto_group.h +0 -5
@@ -4,11 +4,6 @@#include <linux/rwsem.h> struct autogroup { -/* -* reference doesn't mean how many thread attach to this -* autogroup now. It just stands for the number of task -* could use this autogroup. -*/ struct kref kref;struct task_group *tg;struct rw_semaphore lock;
Greg Kroah-Hartman
maintainerPATCH 14/20 bnx2x: remove redundant warning log
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ariel Elior <[email protected]>
commit 4a25417c20fac00b3afd58ce27408f964d19e708 upstream.
fix bug where a register which was only meant to be read in 578xx/57712 devices causes a bogus error message to be logged when read from other devices.
--- drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +7 -4
@@ -9131,10 +9131,13 @@ static int __devinit bnx2x_prev_unload_c*/ static void __devinit bnx2x_prev_interrupted_dmae (struct bnx2x *bp) { -u32 val =REG_RD (bp,PGLUE_B_REG_PGLUE_B_INT_STS ); -if (val &PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN ) { -BNX2X_ERR ("was error bit was found to be set in pglueb upon startup. Clearing" ); -REG_WR (bp,PGLUE_B_REG_WAS_ERROR_PF_7_0_CLR ,1 <<BP_FUNC (bp)); +if (!CHIP_IS_E1x (bp)) { +u32 val =REG_RD (bp,PGLUE_B_REG_PGLUE_B_INT_STS ); +if (val &PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN ) { +BNX2X_ERR ("was error bit was found to be set in pglueb upon startup. Clearing" ); +REG_WR (bp,PGLUE_B_REG_WAS_ERROR_PF_7_0_CLR , +1 <<BP_FUNC (bp)); + } } }
Greg Kroah-Hartman
maintainerPATCH 15/20 s390/mm: have 16 byte aligned struct pages
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Heiko Carstens <[email protected]>
commit 4bffbb3455372a26816e364fb4448810f7014452 upstream.
Select HAVE_ALIGNED_STRUCT_PAGE on s390, so that the slub allocator can make use of compare and swap double for lockless updates. This increases the size of struct page to 64 bytes (instead of 56 bytes), however the performance gain justifies the increased size:
- now excactly four struct pages fit into a single cache line; the case that accessing a struct page causes two cache line loads does not exist anymore.
- calculating the offset of a struct page within the memmap array is only a simple shift instead of a more expensive multiplication.
A "hackbench 200 process 200" run on a 32 cpu system did show an 8% runtime improvement.
--- arch/s390/Kconfig | 1 + 1 file changed, 1 insertion(+)
arch/s390/Kconfig +1 -0
@@ -93,6 +93,7 @@ config S390 select ARCH_SAVE_PAGE_KEYS if HIBERNATION select HAVE_MEMBLOCK select HAVE_MEMBLOCK_NODE_MAP + select HAVE_ALIGNED_STRUCT_PAGE if SLUB select ARCH_DISCARD_MEMBLOCK select ARCH_INLINE_SPIN_TRYLOCK select ARCH_INLINE_SPIN_TRYLOCK_BH
Re: [ 15/20] s390/mm: have 16 byte aligned struct pages
Quoted 10 lines · Greg Kroah-Hartman
3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Heiko Carstens <[email protected]>
commit
4bffbb3455372a26816e364fb4448810f7014452upstream.Select
HAVE_ALIGNED_STRUCT_PAGEon s390, so that the slub allocator can make use of compare and swap double for lockless updates. This increases the size
The s390 implementation of compare and swap and double was merged for 3.7:b1d6b40c "s390/cmpxchg,percpu: implement cmpxchg_double()".
It is not part of 3.4. So putting this into stable makes not much sense.
Quoted 8 lines
of struct page to 64 bytes (instead of 56 bytes), however the performance gain justifies the increased size:
- now excactly four struct pages fit into a single cache line; the case that accessing a struct page causes two cache line loads does not exist anymore.
- calculating the offset of a struct page within the memmap array is only a simple shift instead of a more expensive multiplication.
This is obviously still true, but I've made no measurements if we still see any (significant) performance gain if the slub allocator doesn't make use of compare and swap double or if it's just a waste of memory.
So I'd prefer to not have this patch in stable.
Quoted 22 lines
A "hackbench 200 process 200" run on a 32 cpu system did show an 8% runtime improvement.
Signed-off-by Heiko Carstens <[email protected]>Signed-off-by Martin Schwidefsky <[email protected]>Signed-off-by CAI Qian <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>--- arch/s390/Kconfig | 1 + 1 file changed, 1 insertion(+)arch/s390/Kconfig +1
-0@@ -93,6 +93,7 @@ config S390 select ARCH_SAVE_PAGE_KEYS if HIBERNATION select HAVE_MEMBLOCK select HAVE_MEMBLOCK_NODE_MAP + select HAVE_ALIGNED_STRUCT_PAGE if SLUB select ARCH_DISCARD_MEMBLOCK select ARCH_INLINE_SPIN_TRYLOCK select ARCH_INLINE_SPIN_TRYLOCK_BH
Greg Kroah-Hartman
maintainerPATCH 16/20 ACPI: missing break
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alan Cox <[email protected]>
commit 879dca019dc43a1622edca3e7dde644b14b5acc5 upstream.
We handle NOTIFY_THROTTLING so don't then fall through to unsupported event.
--- drivers/acpi/processor_driver.c | 1 + 1 file changed, 1 insertion(+)
drivers/acpi/processor_driver.c +1 -0
@@ -407,6 +407,7 @@ static void acpi_processor_notify(structacpi_bus_generate_proc_event (device, event,0 );acpi_bus_generate_netlink_event (device->pnp.device_class,dev_name (&device->dev), event,0 ); +break ;default :ACPI_DEBUG_PRINT ((ACPI_DB_INFO ,"Unsupported event [0x%x]\n" , event));
Greg Kroah-Hartman
maintainerPATCH 17/20 i915: Quirk no_lvds on Gigabyte GA-D525TUD ITX motherboard
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Calvin Walton <[email protected]>
commit a51d4ed01e5bb39d2cf36a12f9976ab08872c192 upstream.
This board is incorrectly detected as having an LVDS connector, resulting in the VGA output (the only available output on the board) showing the console only in the top-left 1024x768 pixels, and an extra LVDS connector appearing in X.
It's a desktop Mini-ITX board using an Atom D525 CPU with an NM10 chipset.
I've had this board for about a year, but this is the first time I noticed the issue because I've been running it headless for most of its life.
--- drivers/gpu/drm/i915/intel_lvds.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/gpu/drm/i915/intel_lvds.c +8 -0
@@ -785,6 +785,14 @@ static const struct dmi_system_id intel_ DMI_MATCH(DMI_BOARD_NAME, "ZBOXSD-ID12/ID13"), }, }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Gigabyte GA-D525TUD", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co., Ltd."), + DMI_MATCH(DMI_BOARD_NAME, "D525TUD"), + }, + }, { }/* terminating entry */ };
Greg Kroah-Hartman
maintainerPATCH 18/20 drm/i915: Add no-lvds quirk for Supermicro X7SPA-H
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chris Wilson <[email protected]>
commit c31407a3672aaebb4acddf90944a114fa5c8af7b upstream.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=55375
--- drivers/gpu/drm/i915/intel_lvds.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/gpu/drm/i915/intel_lvds.c +8 -0
@@ -793,6 +793,14 @@ static const struct dmi_system_id intel_ DMI_MATCH(DMI_BOARD_NAME, "D525TUD"), }, }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Supermicro X7SPA-H", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"), + DMI_MATCH(DMI_PRODUCT_NAME, "X7SPA-H"), + }, + }, { }/* terminating entry */ };
Greg Kroah-Hartman
maintainerPATCH 19/20 pnfsblock: fix partial page buffer wirte
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peng Tao <[email protected]>
commit fe6e1e8d9fad86873eb74a26e80a8f91f9e870b5 upstream.
If applications use flock to protect its write range, generic NFS will not do read-modify-write cycle at page cache level. Therefore LD should know how to handle non-sector aligned writes. Otherwise there will be data corruption.
--- fs/nfs/blocklayout/blocklayout.c | 176 ++++++++++++++++++++++++++++++++++++--- fs/nfs/blocklayout/blocklayout.h | 1 2 files changed, 165 insertions(+), 12 deletions(-)
fs/nfs/blocklayout/blocklayout.c +164 -12
@@ -162,25 +162,39 @@ static struct bio *bl_alloc_init_bio(intreturn bio; } -static struct bio *bl_add_page_to_bio (struct bio *bio,int npg,int rw, +static struct bio *do_add_page_to_bio (struct bio *bio,int npg,int rw,sector_t isect,struct page *page,struct pnfs_block_extent *be,void (*end_io)(struct bio *,int err), -struct parallel_io *par) +struct parallel_io *par, +unsigned int offset,int len) { + isect = isect + (offset >>SECTOR_SHIFT ); +dprintk ("%s: npg %d rw %d isect %llu offset %u len %d\n" , __func__, + npg, rw, (unsigned long long )isect, offset, len); retry:if (!bio) { bio =bl_alloc_init_bio (npg, isect, be, end_io, par);if (!bio)return ERR_PTR (-ENOMEM ); } -if (bio_add_page (bio, page,PAGE_CACHE_SIZE ,0 ) <PAGE_CACHE_SIZE ) { +if (bio_add_page (bio, page, len, offset) < len) { bio =bl_submit_bio (rw, bio); goto retry; }return bio; } +static struct bio *bl_add_page_to_bio (struct bio *bio,int npg,int rw, +sector_t isect,struct page *page, +struct pnfs_block_extent *be, +void (*end_io)(struct bio *,int err), +struct parallel_io *par) +{ +return do_add_page_to_bio (bio, npg, rw, isect, page, be, + end_io, par,0 ,PAGE_CACHE_SIZE ); +} +/* This is basically copied from mpage_end_io_read */ static void bl_end_io_read (struct bio *bio,int err) {
@@ -443,6 +457,107 @@ map_block(struct buffer_head *bh, sectorreturn ; } +static void +bl_read_single_end_io (struct bio *bio,int error) +{ +struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt -1 ; +struct page *page = bvec->bv_page; + +/* Only one page in bvec */ +unlock_page (page); +} + +static int +bl_do_readpage_sync (struct page *page,struct pnfs_block_extent *be, +unsigned int offset,unsigned int len) +{ +struct bio *bio; +struct page *shadow_page; +sector_t isect; +char *kaddr, *kshadow_addr; +int ret =0 ; + +dprintk ("%s: offset %u len %u\n" , __func__, offset, len); + + shadow_page =alloc_page (GFP_NOFS | __GFP_HIGHMEM); +if (shadow_page ==NULL ) +return -ENOMEM ; + + bio =bio_alloc (GFP_NOIO ,1 ); +if (bio ==NULL ) +return -ENOMEM ; + + isect = (page->index <<PAGE_CACHE_SECTOR_SHIFT ) + + (offset /SECTOR_SIZE ); + + bio->bi_sector = isect - be->be_f_offset + be->be_v_offset; + bio->bi_bdev = be->be_mdev; + bio->bi_end_io = bl_read_single_end_io; + +lock_page (shadow_page); +if (bio_add_page (bio, shadow_page, +SECTOR_SIZE ,round_down (offset,SECTOR_SIZE )) ==0 ) { +unlock_page (shadow_page); +bio_put (bio); +return -EIO ; + } + +submit_bio (READ , bio); +wait_on_page_locked (shadow_page); +if (unlikely (!test_bit (BIO_UPTODATE , &bio->bi_flags))) { + ret = -EIO ; + }else { + kaddr =kmap_atomic (page); + kshadow_addr =kmap_atomic (shadow_page); +memcpy (kaddr + offset, kshadow_addr + offset, len); +kunmap_atomic (kshadow_addr); +kunmap_atomic (kaddr); + } +__free_page (shadow_page); +bio_put (bio); + +return ret; +} + +static int +bl_read_partial_page_sync (struct page *page,struct pnfs_block_extent *be, +unsigned int dirty_offset,unsigned int dirty_len, +bool full_page) +{ +int ret =0 ; +unsigned int start, end; + +if (full_page) { + start =0 ; + end =PAGE_CACHE_SIZE ; + }else { + start =round_down (dirty_offset,SECTOR_SIZE ); + end =round_up (dirty_offset + dirty_len,SECTOR_SIZE ); + } + +dprintk ("%s: offset %u len %d\n" , __func__, dirty_offset, dirty_len); +if (!be) { +zero_user_segments (page, start, dirty_offset, + dirty_offset + dirty_len, end); +if (start ==0 && end ==PAGE_CACHE_SIZE && +trylock_page (page)) { +SetPageUptodate (page); +unlock_page (page); + } +return ret; + } + +if (start != dirty_offset) + ret =bl_do_readpage_sync (page, be, start, + dirty_offset - start); + +if (!ret && (dirty_offset + dirty_len < end)) + ret =bl_do_readpage_sync (page, be, dirty_offset + dirty_len, + end - dirty_offset - dirty_len); + +return ret; +} +/* Given an unmapped page, zero it or read in page for COW, page is locked * by caller. */
@@ -476,7 +591,6 @@ init_page_for_write(struct page *page, sSetPageUptodate (page); cleanup: -bl_put_extent (cow_read);if (bh)free_buffer_head (bh);if (ret) {
@@ -547,6 +661,7 @@ bl_write_pagelist(struct nfs_write_datastruct parallel_io *par;loff_t offset = wdata->args.offset;size_t count = wdata->args.count; +unsigned int pg_offset, pg_len, saved_len;struct page **pages = wdata->args.pages;struct page *page;pgoff_t index;
@@ -651,10 +766,11 @@ next_page:if (!extent_length) {/* We've used up the previous extent */ bl_put_extent (be); +bl_put_extent (cow_read); bio =bl_submit_bio (WRITE , bio);/* Get the next one */ be =bl_find_get_extent (BLK_LSEG2EXT (wdata->lseg), - isect,NULL ); + isect, &cow_read);if (!be || !is_writable (be, isect)) { wdata->pnfs_error = -EINVAL ; goto out;
@@ -671,7 +787,26 @@ next_page: extent_length = be->be_length - (isect - be->be_f_offset); } -if (be->be_state ==PNFS_BLOCK_INVALID_DATA ) { + +dprintk ("%s offset %lld count %Zu\n" , __func__, offset, count); + pg_offset = offset & ~PAGE_CACHE_MASK ; +if (pg_offset + count >PAGE_CACHE_SIZE ) + pg_len =PAGE_CACHE_SIZE - pg_offset; +else + pg_len = count; + + saved_len = pg_len; +if (be->be_state ==PNFS_BLOCK_INVALID_DATA && + !bl_is_sector_init (be->be_inval, isect)) { + ret =bl_read_partial_page_sync (pages[i], cow_read, + pg_offset, pg_len, true); +if (ret) { +dprintk ("%s bl_read_partial_page_sync fail %d\n" , + __func__, ret); + wdata->pnfs_error = ret; + goto out; + } + ret =bl_mark_sectors_init (be->be_inval, isect,PAGE_CACHE_SECTORS );if (unlikely (ret)) {
@@ -680,15 +815,33 @@ next_page: wdata->pnfs_error = ret; goto out; } + +/* Expand to full page write */ + pg_offset =0 ; + pg_len =PAGE_CACHE_SIZE ; + }else if ((pg_offset & (SECTOR_SIZE -1 )) || + (pg_len & (SECTOR_SIZE -1 ))) { +/* ahh, nasty case. We have to do sync full sector +* read-modify-write cycles. +*/ +unsigned int saved_offset = pg_offset; + ret =bl_read_partial_page_sync (pages[i], be, pg_offset, + pg_len, false); + pg_offset =round_down (pg_offset,SECTOR_SIZE ); + pg_len =round_up (saved_offset + pg_len,SECTOR_SIZE ) + - pg_offset; } - bio =bl_add_page_to_bio (bio, wdata->npages - i,WRITE , + bio =do_add_page_to_bio (bio, wdata->npages - i,WRITE , isect, pages[i], be, - bl_end_io_write, par); + bl_end_io_write, par, + pg_offset, pg_len);if (IS_ERR (bio)) { wdata->pnfs_error =PTR_ERR (bio); bio =NULL ; goto out; } + offset += saved_len; + count -= saved_len; isect +=PAGE_CACHE_SECTORS ; last_isect = isect; extent_length -=PAGE_CACHE_SECTORS ;
@@ -706,17 +859,16 @@ next_page: } write_done: - wdata->res.count = (last_isect <<SECTOR_SHIFT ) - (offset); -if (count < wdata->res.count) { - wdata->res.count = count; - } + wdata->res.count = wdata->args.count; out:bl_put_extent (be); +bl_put_extent (cow_read);bl_submit_bio (WRITE , bio);put_parallel (par);return PNFS_ATTEMPTED ; out_mds:bl_put_extent (be); +bl_put_extent (cow_read);kfree (par);return PNFS_NOT_ATTEMPTED ; }
fs/nfs/blocklayout/blocklayout.h +1 -0
@@ -41,6 +41,7 @@#define PAGE_CACHE_SECTORS (PAGE_CACHE_SIZE >> SECTOR_SHIFT)#define PAGE_CACHE_SECTOR_SHIFT (PAGE_CACHE_SHIFT - SECTOR_SHIFT) +#define SECTOR_SIZE (1 << SECTOR_SHIFT)struct block_mount_id {spinlock_t bm_lock;/* protects list */
Greg Kroah-Hartman
maintainerPATCH 20/20 kbuild: Do not package /boot and /lib in make tar-pkg
In reply to Greg Kroah-Hartman3.4-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michal Marek <[email protected]>
commit fe04ddf7c2910362f3817c8156e41cbd6c0ee35d upstream.
There were reports of users destroying their Fedora installs by a kernel tarball that replaces the /lib -> /usr/lib symlink. Let's remove the toplevel directories from the tarball to prevent this from happening.
[bwh: Fold in commit 3ce9e53e788881da0d5f3912f80e0dd6b501f304 to avoid
conflicts]
--- scripts/package/buildtar | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
scripts/package/buildtar +1 -1
@@ -109,7 +109,7 @@ esac if tar --owner=root --group=root --help >/dev/null 2>&1; then opts="--owner=root --group=root" fi - tar cf - . $opts | ${compress} > "${tarball}${file_ext}" + tar cf - boot/* lib/* $opts | ${compress} > "${tarball}${file_ext}" ) echo "Tarball successfully created in ${tarball}${file_ext}"
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 3.4.23 release. There are 20 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun Dec 9 00:50:03 UTC 2012. Anything received after that time might be too late.
Quoted 7 lines
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.4.23-rc1.gzand the diffstat can be found below.
thanks,
greg k-h
Patche applied cleanly and compiled and booted on the following systems:
HP EliteBook 6930p Intel(R) Core(TM)2 Duo CPU T9400 @ 2.53GHz
HP ProBook 6475b AMD A10-4600M APU with Radeon(tm) HD Graphics
Cross-compile tests
alpha: defconfig passed
arm: defconfig passed
c6x: defconfig passed
mips: defconfig passed
mipsel: defconfig passed
powerpc: wii_defconfig passed
sh: defconfig passed
sparc: defconfig passed
tile: tilegx_defconfig passed
-- Shuah
Quoted 23 lines · Shuah Khan
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 3.4.23 release. There are 20 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun Dec 9 00:50:03 UTC 2012. Anything received after that time might be too late.
Quoted 7 lines
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.4.23-rc1.gzand the diffstat can be found below.
thanks,
greg k-h
Patche applied cleanly and compiled and booted on the following systems:
HP EliteBook 6930p Intel(R) Core(TM)2 Duo CPU T9400 @ 2.53GHz
HP ProBook 6475b AMD A10-4600M APU with Radeon(tm) HD Graphics
Quoted 10 lines
Cross-compile tests
alpha: defconfig passed
arm: defconfig passed
c6x: defconfig passed
mips: defconfig passed
mipsel: defconfig passed
powerpc:wii_defconfigpassed
sh: defconfig passed
sparc: defconfig passed
tile:tilegx_defconfigpassed
Correction.
tile: tilegx_defconfig failed:
tile tilegx_defconfig
Just a snippet, I can send a full log.
LD init/built-in.o
HOSTCC usr/gen_init_cpio /home/shuah/lkml/linux_stable_testing_3.0.56/scripts/gen_initramfs_list.sh:
Cannot open 'usr/contents.txt'
make[1]: *** [usr/initramfs_data.cpio] Error 1
make: *** [usr] Error 2
Didn't get a chance to investigate.
-- Shuah
Quoted 42 lines · Shuah Khan
Quoted 23 lines · Shuah Khan
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 3.4.23 release. There are 20 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun Dec 9 00:50:03 UTC 2012. Anything received after that time might be too late.
Quoted 7 lines
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.4.23-rc1.gzand the diffstat can be found below.
thanks,
greg k-h
Patche applied cleanly and compiled and booted on the following systems:
HP EliteBook 6930p Intel(R) Core(TM)2 Duo CPU T9400 @ 2.53GHz
HP ProBook 6475b AMD A10-4600M APU with Radeon(tm) HD GraphicsQuoted 10 lines
Cross-compile tests
alpha: defconfig passed
arm: defconfig passed
c6x: defconfig passed
mips: defconfig passed
mipsel: defconfig passed
powerpc:wii_defconfigpassed
sh: defconfig passed
sparc: defconfig passed
tile:tilegx_defconfigpassedCorrection.
tile:tilegx_defconfigfailed:tile
tilegx_defconfigJust a snippet, I can send a full log.
Quoted 8 lines
LD
init/built-in.o
HOSTCCusr/gen_init_cpio/home/shuah/lkml/linux_stable_testing_3.0.56/scripts/gen_initramfs_list.sh:
Cannot open 'usr/contents.txt'
make[1]: *** [usr/initramfs_data.cpio] Error 1
make: *** [usr] Error 2Didn't get a chance to investigate.
Sorry tile failure is for 3.0.56
-- Shuah
Greg Kroah-Hartman
maintainerQuoted 50 lines · Shuah Khan
Quoted 49 lines · Shuah Khan
Quoted 23 lines · Shuah Khan
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 3.4.23 release. There are 20 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun Dec 9 00:50:03 UTC 2012. Anything received after that time might be too late.
Quoted 7 lines
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.4.23-rc1.gzand the diffstat can be found below.
thanks,
greg k-h
Patche applied cleanly and compiled and booted on the following systems:
HP EliteBook 6930p Intel(R) Core(TM)2 Duo CPU T9400 @ 2.53GHz
HP ProBook 6475b AMD A10-4600M APU with Radeon(tm) HD GraphicsQuoted 10 lines
Cross-compile tests
alpha: defconfig passed
arm: defconfig passed
c6x: defconfig passed
mips: defconfig passed
mipsel: defconfig passed
powerpc:wii_defconfigpassed
sh: defconfig passed
sparc: defconfig passed
tile:tilegx_defconfigpassedCorrection.
tile:tilegx_defconfigfailed:tile
tilegx_defconfigJust a snippet, I can send a full log.
LD
init/built-in.o
HOSTCCusr/gen_init_cpio/home/shuah/lkml/linux_stable_testing_3.0.56/scripts/gen_initramfs_list.sh:
Cannot open 'usr/contents.txt'
make[1]: *** [usr/initramfs_data.cpio] Error 1
make: *** [usr] Error 2
Quoted 3 lines
Quoted 1 line
Didn't get a chance to investigate.
Sorry tile failure is for 3.0.56
Is that caused by something new in 3.0.56, or has it always been that way?
thanks,
greg k-h
Quoted 51 lines · Greg Kroah-Hartman
Quoted 50 lines · Shuah Khan
Quoted 49 lines · Shuah Khan
Quoted 23 lines · Shuah Khan
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 3.4.23 release. There are 20 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun Dec 9 00:50:03 UTC 2012. Anything received after that time might be too late.
Quoted 7 lines
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.4.23-rc1.gzand the diffstat can be found below.
thanks,
greg k-h
Patche applied cleanly and compiled and booted on the following systems:
HP EliteBook 6930p Intel(R) Core(TM)2 Duo CPU T9400 @ 2.53GHz
HP ProBook 6475b AMD A10-4600M APU with Radeon(tm) HD GraphicsQuoted 10 lines
Cross-compile tests
alpha: defconfig passed
arm: defconfig passed
c6x: defconfig passed
mips: defconfig passed
mipsel: defconfig passed
powerpc:wii_defconfigpassed
sh: defconfig passed
sparc: defconfig passed
tile:tilegx_defconfigpassedCorrection.
tile:tilegx_defconfigfailed:tile
tilegx_defconfigJust a snippet, I can send a full log.
LD
init/built-in.o
HOSTCCusr/gen_init_cpio/home/shuah/lkml/linux_stable_testing_3.0.56/scripts/gen_initramfs_list.sh:
Cannot open 'usr/contents.txt'
make[1]: *** [usr/initramfs_data.cpio] Error 1
make: *** [usr] Error 2
Quoted 6 lines
Quoted 3 lines
Quoted 1 line
Didn't get a chance to investigate.
Sorry tile failure is for 3.0.56
Is that caused by something new in 3.0.56, or has it always been that way?
Sorry forgot to mention that it is not a regression in 3.0.56. I compared the patch
and this source file is not patched in 3.0.56-rc1. git log shows that this file was last
touched back in Jan of 2011 and very likely this error was introduced in a commit from
Sept 2010.
You can choose to leave this in and I sent a patch which can go through its normal process
and get pulled in when it gets approved by the powerpc maintainers.
-- Shuah
Hi Greg,
2012/12/7 Greg Kroah-Hartman <[email protected]>:
Quoted 11 lines
This is the start of the stable review cycle for the 3.4.23 release. There are 20 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Sun Dec 9 00:50:03 UTC 2012. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v3.0/stable-review/patch-3.4.23-rc1.gzand the diffstat can be found below.
This kernel can be built and boot without any problem. Building a kernel with this kernel also works fine.
- Build Machine: debian wheezy x86_64
CPU: Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz x 4
memory: 8GB
- Test machine: debian wheezy x86_64(KVM guest on the Build Machine)
vCPU: x2
memory: 2GB
I reviewed the following patches and it looks good to me.
Quoted 6 lines
Alan Cox <[email protected]>
ACPI: missing breakMike Galbraith <[email protected]>
Revert "sched, autogroup: Stop going ahead if autogroup is disabled"
Quoted 8 lines
Mike Galbraith <[email protected]>
workqueue: exitrescuer_thread()asTASK_RUNNINGNaoya Horiguchi <[email protected]>
mm: soft offline: split thp at the beginning ofsoft_offline_page()Jianguo Wu <[email protected]>
mm/vmemmap: fix wrong use ofvirt_to_page
Thanks,
Satoru
Quoted 37 lines
-------------
Diffstat:
Makefile | 4 +- arch/arm/Kconfig | 1 + arch/arm/mach-dove/include/mach/pm.h | 2 +- arch/arm/mach-dove/irq.c | 14 ++- arch/arm/mach-kirkwood/pcie.c | 11 ++- arch/s390/Kconfig | 1 + arch/x86/include/asm/fpu-internal.h | 15 +-- arch/x86/kernel/smpboot.c | 5 + drivers/acpi/processor_driver.c | 1 + drivers/edac/i7300_edac.c | 8 +- drivers/gpu/drm/i915/intel_lvds.c | 16 ++++ drivers/gpu/drm/radeon/evergreen.c | 191 +++++++++++++++++++------------------ drivers/gpu/drm/radeon/evergreen_reg.h | 2 + drivers/gpu/drm/radeon/evergreend.h | 7 ++ drivers/gpu/drm/radeon/radeon_asic.h | 1 + drivers/md/raid10.c | 100 ++++++++++--------- drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 11 ++- fs/nfs/blocklayout/blocklayout.c | 176 +++++++++++++++++++++++++++++++--- fs/nfs/blocklayout/blocklayout.h | 1 + kernel/sched/auto_group.c | 4 - kernel/sched/auto_group.h | 5 - kernel/workqueue.c | 4 +- mm/memory-failure.c | 8 ++ mm/sparse.c | 10 +- scripts/package/buildtar | 2 +- 25 files changed, 408 insertions(+), 192 deletions(-)--
To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html