Linux 3.5.3
I'm announcing the release of the 3.5.3 kernel.
All users of the 3.5 kernel series must upgrade.
The updated 3.5.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-3.5.y
and can be browsed at the normal kernel.org git web browser:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/s390/kernel/compat_linux.c | 2 arch/s390/kernel/compat_wrapper.S | 4 arch/x86/kvm/emulate.c | 4 arch/x86/kvm/i8259.c | 17 + arch/x86/kvm/vmx.c | 90 +++++++- arch/x86/kvm/x86.c | 4 arch/x86/xen/p2m.c | 5 drivers/base/core.c | 9 drivers/dma/imx-dma.c | 36 ++- drivers/gpu/drm/i915/i915_sysfs.c | 12 + drivers/gpu/drm/i915/intel_display.c | 11 - drivers/gpu/drm/i915/intel_dp.c | 18 - drivers/gpu/drm/i915/intel_ringbuffer.c | 7 drivers/gpu/drm/mgag200/mgag200_mode.c | 12 - drivers/gpu/drm/nouveau/nvc0_pm.c | 2 drivers/gpu/drm/nouveau/nvd0_display.c | 2 drivers/gpu/drm/radeon/atombios_crtc.c | 14 + drivers/gpu/drm/radeon/evergreen.c | 71 +------ drivers/gpu/drm/radeon/evergreen_cs.c | 6 drivers/gpu/drm/radeon/evergreend.h | 2 drivers/gpu/drm/radeon/ni.c | 14 + drivers/gpu/drm/radeon/r600_cs.c | 6 drivers/gpu/drm/radeon/radeon_asic.h | 8 drivers/gpu/drm/radeon/radeon_drv.c | 3 drivers/gpu/drm/radeon/radeon_legacy_crtc.c | 4 drivers/gpu/drm/radeon/radeon_mode.h | 1 drivers/gpu/drm/radeon/rv515.c | 13 - drivers/gpu/drm/radeon/si.c | 14 + drivers/infiniband/ulp/srp/ib_srp.c | 87 ++++++-- drivers/net/wireless/rt2x00/rt2800usb.c | 1 drivers/staging/comedi/drivers.c | 2 drivers/tty/serial/pmac_zilog.c | 12 - drivers/usb/gadget/u_ether.c | 6 drivers/usb/host/pci-quirks.c | 7 drivers/usb/host/pci-quirks.h | 1 drivers/usb/host/xhci-pci.c | 10 drivers/usb/host/xhci-ring.c | 36 ++- drivers/usb/host/xhci.c | 8 drivers/usb/host/xhci.h | 1 drivers/usb/serial/ftdi_sio.c | 1 drivers/usb/serial/ftdi_sio_ids.h | 7 drivers/usb/serial/mos7840.c | 9 drivers/usb/serial/option.c | 281 +++++++++++----------------- fs/ext4/balloc.c | 62 +++--- fs/ext4/bitmap.c | 1 fs/ext4/extents.c | 1 fs/ext4/super.c | 6 fs/fuse/file.c | 2 fs/jbd2/journal.c | 3 include/drm/drm_pciids.h | 3 include/linux/jbd2.h | 1 include/linux/usb.h | 21 ++ security/yama/yama_lsm.c | 10 54 files changed, 561 insertions(+), 411 deletions(-)
Alex Deucher (4):
drm/radeon: properly handle crtc powergating drm/radeon: add some new SI pci ids drm/radeon: fix bank tiling parameters on cayman drm/radeon: fix bank tiling parameters on evergreen
Avi Kivity (2):
KVM: VMX: Fix ds/es corruption on i386 with preemption
KVM: x86 emulator: fix byte-sized MOVZX/MOVSX
Bart Van Assche (1):
IB/srp: Fix a race condition
Bjørn Mork (1):
USB: option: add ZTE K5006-Z
Bruce Rogers (1):
KVM: x86: apply kvmclock offset to guest wall clock time
Christian König (1):
drm/radeon: fix bank tiling parameters on SI
Christoph Bumiller (1):
drm/nvd0/disp: mask off high 16 bit of negative cursor x-coordinate
Daniel Vetter (3):
drm/i915: correctly order the ring init sequence drm/i915: ignore eDP bpc settings from vbt drm/i915: reorder edp disabling to fix ivb MacBook Air
Dave Airlie (1):
drm/mgag200: fix G200ER pll picking algorithm
Fabio Estevam (1):
dma: imx-dma: Fix kernel crash due to missing clock conversion
Gleb Natapov (1):
KVM: PIC: call ack notifiers for irqs that are dropped form irr
Greg Kroah-Hartman (1):
Linux 3.5.3
Gustavo Padovan (1):
USB: add USB_VENDOR_AND_INTERFACE_INFO() macro
Heiko Carstens (2):
s390/compat: fix compat wrappers for process_vm system calls s390/compat: fix mmap compat system calls
Hunt Xu (1):
drm/i915: make rc6 in sysfs functions conditional
Ian Abbott (1):
staging: comedi: Fix reversed test in comedi_device_attach()
Jason Wessel (1):
pmac_zilog,kdb: Fix console poll hook to return instead of loop
Jeongdo Son (1):
rt2x00: Add support for BUFFALO WLI-UC-GNM2 to rt2800usb.
Jerome Glisse (1):
drm/radeon: do not reenable crtc after moving vram start address
Jesse Barnes (1):
drm/i915: prefer wide & slow to fast & narrow in DP configs
Jim Cromie (1):
drivers-core: make structured logging play nice with dynamic-debug
Kees Cook (1):
Yama: access task_struct->comm directly
Konrad Rzeszutek Wilk (1):
xen/p2m: Reserve 8MB of _brk space for P2M leafs when populating back.
Maarten Lankhorst (1):
nouveau: fixup scanout enable in nvc0_pm
Marek Olšák (1):
drm/radeon/kms: allow "invalid" DB formats as a means to disable DB
Mark Ferrell (1):
usb: serial: mos7840: Fixup mos7840_chars_in_buffer()
Michael Grzeschik (1):
usb: gadget: u_ether: fix kworker 100% CPU issue with still used interfaces in eth_stop
Orit Wasserman (1):
KVM: VMX: Fix KVM_SET_SREGS with big real mode segments
Ozan Çağlayan (1):
USB: ftdi_sio: Add VID/PID for Kondo Serial USB
Sarah Sharp (4):
xhci: Add Etron XHCI_TRUST_TX_LENGTH quirk.
xhci: Increase reset timeout for Renesas 720201 host.
xhci: Switch PPT ports to EHCI on shutdown.
xhci: Fix bug after deq ptr set to link TRB.
Theodore Ts'o (5):
ext4: make sure the journal sb is written in ext4_clear_journal_err()
ext4: avoid kmemcheck complaint from reading uninitialized memory
ext4: don't call ext4_error while block group is locked
ext4: fix long mount times on very big file systems
ext4: fix kernel BUG on large-scale rm -rf commands
Zach Brown (1):
fuse: verify all ioctl retry iov elements
fangxiaozhi (1):
USB: support the new interfaces of Huawei Data Card devices in option driver
Makefile +1 -1
@@ -1,6 +1,6 @@ VERSION = 3 PATCHLEVEL = 5 -SUBLEVEL = 2 +SUBLEVEL = 3 EXTRAVERSION = NAME = Saber-toothed Squirrel
arch/s390/kernel/compat_linux.c +0 -2
@@ -622,7 +622,6 @@ asmlinkage unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg)return -EFAULT ;if (a.offset & ~PAGE_MASK )return -EINVAL ; - a.addr = (unsigned long )compat_ptr (a.addr);return sys_mmap_pgoff (a.addr, a.len, a.prot, a.flags, a.fd, a.offset >>PAGE_SHIFT ); }
@@ -633,7 +632,6 @@ asmlinkage long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg)if (copy_from_user (&a, arg,sizeof (a)))return -EFAULT ; - a.addr = (unsigned long )compat_ptr (a.addr);return sys_mmap_pgoff (a.addr, a.len, a.prot, a.flags, a.fd, a.offset); }
arch/s390/kernel/compat_wrapper.S +2 -2
@@ -1636,7 +1636,7 @@ ENTRY(compat_sys_process_vm_readv_wrapper) llgfr %r6,%r6 # unsigned long llgf %r0,164(%r15) # unsigned long stg %r0,160(%r15) - jg sys_process_vm_readv + jg compat_sys_process_vm_readv ENTRY(compat_sys_process_vm_writev_wrapper) lgfr %r2,%r2 # compat_pid_t
@@ -1646,4 +1646,4 @@ ENTRY(compat_sys_process_vm_writev_wrapper) llgfr %r6,%r6 # unsigned long llgf %r0,164(%r15) # unsigned long stg %r0,160(%r15) - jg sys_process_vm_writev + jg compat_sys_process_vm_writev
arch/x86/kvm/emulate.c +2 -2
@@ -4426,12 +4426,12 @@ twobyte_insn:break ; case 0xb6 ... 0xb7: /* movzx */ ctxt->dst.bytes = ctxt->op_bytes; - ctxt->dst.val = (ctxt->d & ByteOp) ? (u8 ) ctxt->src.val + ctxt->dst.val = (ctxt->src.bytes ==1 ) ? (u8 ) ctxt->src.val : (u16 ) ctxt->src.val;break ; case 0xbe ... 0xbf: /* movsx */ ctxt->dst.bytes = ctxt->op_bytes; - ctxt->dst.val = (ctxt->d & ByteOp) ? (s8 ) ctxt->src.val : + ctxt->dst.val = (ctxt->src.bytes ==1 ) ? (s8 ) ctxt->src.val : (s16 ) ctxt->src.val;break ; case 0xc0 ... 0xc1: /* xadd */
arch/x86/kvm/i8259.c +17 -0
@@ -305,6 +305,11 @@ static void pic_ioport_write(void *opaque, u32 addr, u32 val) addr &=1 ;if (addr ==0 ) {if (val &0x10 ) { +u8 edge_irr = s->irr & ~s->elcr; +int i; +bool found; +struct kvm_vcpu *vcpu; + s->init4 = val &1 ; s->last_irr =0 ; s->irr &= s->elcr;
@@ -322,6 +327,18 @@ static void pic_ioport_write(void *opaque, u32 addr, u32 val)if (val &0x08 )pr_pic_unimpl ("level sensitive irq not supported" ); + +kvm_for_each_vcpu (i, vcpu, s->pics_state->kvm) +if (kvm_apic_accept_pic_intr (vcpu)) { + found = true; +break ; + } + + +if (found) +for (irq =0 ; irq <PIC_NUM_PINS /2 ; irq++) +if (edge_irr & (1 << irq)) +pic_clear_isr (s, irq); }else if (val &0x08 ) {if (val &0x04 ) s->poll =1 ;
arch/x86/kvm/vmx.c +71 -19
128 lines not on this page · raw message
arch/x86/kvm/x86.c +4 -0
@@ -907,6 +907,10 @@ static void kvm_write_wall_clock(struct kvm *kvm, gpa_t wall_clock)*/ getboottime (&boot); +if (kvm->arch.kvmclock_offset) { +struct timespec ts =ns_to_timespec (kvm->arch.kvmclock_offset); + boot =timespec_sub (boot, ts); + } wc.sec = boot.tv_sec; wc.nsec = boot.tv_nsec; wc.version = version;
arch/x86/xen/p2m.c +5 -0
@@ -194,6 +194,11 @@ RESERVE_BRK(p2m_mid_mfn, PAGE_SIZE * (MAX_DOMAIN_PAGES / (P2M_PER_PAGE * P2M_MID* boundary violation will require three middle nodes. */ RESERVE_BRK (p2m_mid_identity,PAGE_SIZE *2 *3 ); +/* When we populate back during bootup, the amount of pages can vary. The +* max we have is seen is 395979, but that does not mean it can't be more. +* But some machines can have 3GB I/O holes even. So lets reserve enough +* for 4GB of I/O and E820 holes. */ +RESERVE_BRK (p2m_populated,PMD_SIZE *4 );static inline unsigned p2m_top_index (unsigned long pfn) {BUG_ON (pfn >=MAX_P2M_PFN );
drivers/base/core.c +7 -2
@@ -1848,6 +1848,7 @@ int __dev_printk(const char *level, const struct device *dev, struct va_format *vaf) {char dict[128 ]; +const char *level_extra ="" ;size_t dictlen =0 ;const char *subsys;
@@ -1894,10 +1895,14 @@ int __dev_printk(const char *level, const struct device *dev, "DEVICE=+%s:%s", subsys, dev_name(dev)); } skip: +if (level[3 ]) + level_extra = &level[3 ];/* skip past "<L>" */ +return printk_emit (0 , level[1 ] -'0' , dictlen ? dict :NULL , dictlen, -"%s %s: %pV" , -dev_driver_string (dev),dev_name (dev), vaf); +"%s %s: %s%pV" , +dev_driver_string (dev),dev_name (dev), + level_extra, vaf); }EXPORT_SYMBOL (__dev_printk);
drivers/dma/imx-dma.c +25 -11
@@ -172,7 +172,8 @@ struct imxdma_engine {struct device_dma_parameters dma_parms;struct dma_device dma_device;void __iomem *base; -struct clk *dma_clk; +struct clk *dma_ahb; +struct clk *dma_ipg;spinlock_t lock;struct imx_dma_2d_config slots_2d[IMX_DMA_2D_SLOTS ];struct imxdma_channel channel[IMX_DMA_CHANNELS ];
@@ -976,10 +977,20 @@ static int __init imxdma_probe(struct platform_device *pdev)return 0 ; } - imxdma->dma_clk =clk_get (NULL ,"dma" ); -if (IS_ERR (imxdma->dma_clk)) -return PTR_ERR (imxdma->dma_clk); -clk_enable (imxdma->dma_clk); + imxdma->dma_ipg =devm_clk_get (&pdev->dev,"ipg" ); +if (IS_ERR (imxdma->dma_ipg)) { + ret =PTR_ERR (imxdma->dma_ipg); + goto err_clk; + } + + imxdma->dma_ahb =devm_clk_get (&pdev->dev,"ahb" ); +if (IS_ERR (imxdma->dma_ahb)) { + ret =PTR_ERR (imxdma->dma_ahb); + goto err_clk; + } + +clk_prepare_enable (imxdma->dma_ipg); +clk_prepare_enable (imxdma->dma_ahb);/* reset DMA module */ imx_dmav1_writel (imxdma,DCR_DRST ,DMA_DCR );
@@ -988,16 +999,14 @@ static int __init imxdma_probe(struct platform_device *pdev) ret =request_irq (MX1_DMA_INT , dma_irq_handler,0 ,"DMA" , imxdma);if (ret) {dev_warn (imxdma->dev,"Can't register IRQ for DMA\n" ); -kfree (imxdma); -return ret; + goto err_enable; } ret =request_irq (MX1_DMA_ERR , imxdma_err_handler,0 ,"DMA" , imxdma);if (ret) {dev_warn (imxdma->dev,"Can't register ERRIRQ for DMA\n" );free_irq (MX1_DMA_INT ,NULL ); -kfree (imxdma); -return ret; + goto err_enable; } }
@@ -1094,7 +1103,10 @@ err_init:free_irq (MX1_DMA_INT ,NULL );free_irq (MX1_DMA_ERR ,NULL ); } - +err_enable: +clk_disable_unprepare (imxdma->dma_ipg); +clk_disable_unprepare (imxdma->dma_ahb); +err_clk:kfree (imxdma);return ret; }
@@ -1114,7 +1126,9 @@ static int __exit imxdma_remove(struct platform_device *pdev)free_irq (MX1_DMA_ERR ,NULL ); } -kfree (imxdma); +clk_disable_unprepare (imxdma->dma_ipg); +clk_disable_unprepare (imxdma->dma_ahb); +kfree (imxdma);return 0 ; }
drivers/gpu/drm/i915/i915_sysfs.c +12 -0
@@ -31,6 +31,7 @@#include <linux/sysfs.h> #include "i915_drv.h" +#ifdef CONFIG_PM static u32 calc_residency (struct drm_device *dev,const u32 reg) {struct drm_i915_private *dev_priv = dev->dev_private;
@@ -109,3 +110,14 @@ void i915_teardown_sysfs(struct drm_device *dev) {sysfs_unmerge_group (&dev->primary->kdev.kobj, &rc6_attr_group); } +#else +void i915_setup_sysfs (struct drm_device *dev) +{ +return ; +} + +void i915_teardown_sysfs (struct drm_device *dev) +{ +return ; +} +#endif /* CONFIG_PM */
drivers/gpu/drm/i915/intel_display.c +0 -11
@@ -3581,17 +3581,6 @@ static bool intel_choose_pipe_bpp_dither(struct drm_crtc *crtc,continue ; } -if (intel_encoder->type ==INTEL_OUTPUT_EDP ) { -/* Use VBT settings if we have an eDP panel */ -unsigned int edp_bpc = dev_priv->edp.bpp /3 ; - -if (edp_bpc < display_bpc) { -DRM_DEBUG_KMS ("clamping display bpc (was %d) to eDP (%d)\n" , display_bpc, edp_bpc); - display_bpc = edp_bpc; - } -continue ; - } -/* Not one of the known troublemakers, check the EDID */ list_for_each_entry (connector, &dev->mode_config.connector_list, head) {
drivers/gpu/drm/i915/intel_dp.c +9 -9
@@ -726,8 +726,8 @@ intel_dp_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode, bpp = adjusted_mode->private_flags &INTEL_MODE_DP_FORCE_6BPC ?18 :24 ; mode_rate =intel_dp_link_required (mode->clock, bpp); -for (lane_count =1 ; lane_count <= max_lane_count; lane_count <<=1 ) { -for (clock =0 ; clock <= max_clock; clock++) { +for (clock =0 ; clock <= max_clock; clock++) { +for (lane_count =1 ; lane_count <= max_lane_count; lane_count <<=1 ) {int link_avail =intel_dp_max_data_rate (intel_dp_link_clock (bws[clock]), lane_count);if (mode_rate <= link_avail) {
@@ -1171,10 +1171,14 @@ static void ironlake_edp_panel_off(struct intel_dp *intel_dp)WARN (!intel_dp->want_panel_vdd,"Need VDD to turn off panel\n" ); pp =ironlake_get_pp_control (dev_priv); - pp &= ~(POWER_TARGET_ON |PANEL_POWER_RESET |EDP_BLC_ENABLE ); +/* We need to switch off panel power _and_ force vdd, for otherwise some +* panels get very unhappy and cease to work. */ + pp &= ~(POWER_TARGET_ON |EDP_FORCE_VDD |PANEL_POWER_RESET |EDP_BLC_ENABLE );I915_WRITE (PCH_PP_CONTROL , pp);POSTING_READ (PCH_PP_CONTROL ); + intel_dp->want_panel_vdd = false; +ironlake_wait_panel_off (intel_dp); }
@@ -1284,11 +1288,9 @@ static void intel_dp_prepare(struct drm_encoder *encoder)* ensure that we have vdd while we switch off the panel. */ ironlake_edp_panel_vdd_on (intel_dp);ironlake_edp_backlight_off (intel_dp); -ironlake_edp_panel_off (intel_dp); -intel_dp_sink_dpms (intel_dp,DRM_MODE_DPMS_ON ); +ironlake_edp_panel_off (intel_dp);intel_dp_link_down (intel_dp); -ironlake_edp_panel_vdd_off (intel_dp, false); }static void intel_dp_commit (struct drm_encoder *encoder)
@@ -1323,11 +1325,9 @@ intel_dp_dpms(struct drm_encoder *encoder, int mode)/* Switching the panel off requires vdd. */ ironlake_edp_panel_vdd_on (intel_dp);ironlake_edp_backlight_off (intel_dp); -ironlake_edp_panel_off (intel_dp); -intel_dp_sink_dpms (intel_dp, mode); +ironlake_edp_panel_off (intel_dp);intel_dp_link_down (intel_dp); -ironlake_edp_panel_vdd_off (intel_dp, false);if (is_cpu_edp (intel_dp))ironlake_edp_pll_off (encoder);
drivers/gpu/drm/i915/intel_ringbuffer.c +5 -2
@@ -280,8 +280,6 @@ static int init_ring_common(struct intel_ring_buffer *ring)I915_WRITE_HEAD (ring,0 ); ring->write_tail (ring,0 ); -/* Initialize the ring. */ -I915_WRITE_START (ring, obj->gtt_offset); head =I915_READ_HEAD (ring) &HEAD_ADDR ;/* G45 ring initialization fails to reset head to zero */
@@ -307,6 +305,11 @@ static int init_ring_common(struct intel_ring_buffer *ring) } } +/* Initialize the ring. This must happen _after_ we've cleared the ring +* registers with the above sequence (the readback of the HEAD registers +* also enforces ordering), otherwise the hw might lose the new ring +* register values. */ +I915_WRITE_START (ring, obj->gtt_offset);I915_WRITE_CTL (ring, ((ring->size -PAGE_SIZE ) &RING_NR_PAGES ) |RING_VALID );
drivers/gpu/drm/mgag200/mgag200_mode.c +7 -5
@@ -468,10 +468,11 @@ static int mga_g200er_set_plls(struct mga_device *mdev, long clock) {unsigned int vcomax, vcomin, pllreffreq;unsigned int delta, tmpdelta; -unsigned int testr, testn, testm, testo; +int testr, testn, testm, testo;unsigned int p, m, n; -unsigned int computed; +unsigned int computed, vco;int tmp; +const unsigned int m_div_val[] = {1 ,2 ,4 ,8 }; m = n = p =0 ; vcomax =1488000 ;
@@ -490,12 +491,13 @@ static int mga_g200er_set_plls(struct mga_device *mdev, long clock)if (delta ==0 )break ;for (testo =5 ; testo <33 ; testo++) { - computed = pllreffreq * (testn +1 ) / + vco = pllreffreq * (testn +1 ) / (testr +1 ); -if (computed < vcomin) +if (vco < vcomin)continue ; -if (computed > vcomax) +if (vco > vcomax)continue ; + computed = vco / (m_div_val[testm] * (testo +1 ));if (computed > clock) tmpdelta = computed - clock;else
drivers/gpu/drm/nouveau/nvc0_pm.c +1 -1
@@ -557,7 +557,7 @@ prog_mem(struct drm_device *dev, struct nvc0_pm_state *info)nouveau_mem_exec (&exec, info->perflvl);if (dev_priv->chipset <0xd0 ) -nv_wr32 (dev,0x611200 ,0x00003300 ); +nv_wr32 (dev,0x611200 ,0x00003330 );else nv_wr32 (dev,0x62c000 ,0x03030300 ); }
drivers/gpu/drm/nouveau/nvd0_display.c +1 -1
@@ -790,7 +790,7 @@ nvd0_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)struct nouveau_crtc *nv_crtc =nouveau_crtc (crtc);int ch =EVO_CURS (nv_crtc->index); -evo_piow (crtc->dev, ch,0x0084 , (y <<16 ) | x); +evo_piow (crtc->dev, ch,0x0084 , (y <<16 ) | (x &0xffff ));evo_piow (crtc->dev, ch,0x0080 ,0x00000000 );return 0 ; }
drivers/gpu/drm/radeon/atombios_crtc.c +12 -2
@@ -259,7 +259,7 @@ void atombios_crtc_dpms(struct drm_crtc *crtc, int mode)/* adjust pm to dpms changes BEFORE enabling crtcs */ radeon_pm_compute_clocks (rdev);/* disable crtc pair power gating before programming */ -if (ASIC_IS_DCE6 (rdev)) +if (ASIC_IS_DCE6 (rdev) && !radeon_crtc->in_mode_set)atombios_powergate_crtc (crtc,ATOM_DISABLE );atombios_enable_crtc (crtc,ATOM_ENABLE );if (ASIC_IS_DCE3 (rdev) && !ASIC_IS_DCE6 (rdev))
@@ -279,7 +279,7 @@ void atombios_crtc_dpms(struct drm_crtc *crtc, int mode)atombios_enable_crtc (crtc,ATOM_DISABLE ); radeon_crtc->enabled = false;/* power gating is per-pair */ -if (ASIC_IS_DCE6 (rdev)) { +if (ASIC_IS_DCE6 (rdev) && !radeon_crtc->in_mode_set) {struct drm_crtc *other_crtc;struct radeon_crtc *other_radeon_crtc;list_for_each_entry (other_crtc, &rdev->ddev->mode_config.crtc_list, head) {
@@ -1639,18 +1639,28 @@ static bool atombios_crtc_mode_fixup(struct drm_crtc *crtc,static void atombios_crtc_prepare (struct drm_crtc *crtc) {struct radeon_crtc *radeon_crtc =to_radeon_crtc (crtc); +struct drm_device *dev = crtc->dev; +struct radeon_device *rdev = dev->dev_private; + radeon_crtc->in_mode_set = true;/* pick pll */ radeon_crtc->pll_id =radeon_atom_pick_pll (crtc); +/* disable crtc pair power gating before programming */ +if (ASIC_IS_DCE6 (rdev)) +atombios_powergate_crtc (crtc,ATOM_DISABLE ); +atombios_lock_crtc (crtc,ATOM_ENABLE );atombios_crtc_dpms (crtc,DRM_MODE_DPMS_OFF ); }static void atombios_crtc_commit (struct drm_crtc *crtc) { +struct radeon_crtc *radeon_crtc =to_radeon_crtc (crtc); +atombios_crtc_dpms (crtc,DRM_MODE_DPMS_ON );atombios_lock_crtc (crtc,ATOM_DISABLE ); + radeon_crtc->in_mode_set = false; }static void atombios_crtc_disable (struct drm_crtc *crtc)
drivers/gpu/drm/radeon/evergreen.c +11 -60
92 lines not on this page · raw message
drivers/gpu/drm/radeon/evergreen_cs.c +4 -2
@@ -961,13 +961,15 @@ static int evergreen_cs_track_check(struct radeon_cs_parser *p)if (track->db_dirty) {/* Check stencil buffer */ -if (G_028800_STENCIL_ENABLE (track->db_depth_control)) { +if (G_028044_FORMAT (track->db_s_info) !=V_028044_STENCIL_INVALID && +G_028800_STENCIL_ENABLE (track->db_depth_control)) { r =evergreen_cs_track_validate_stencil (p);if (r)return r; }/* Check depth buffer */ -if (G_028800_Z_ENABLE (track->db_depth_control)) { +if (G_028040_FORMAT (track->db_z_info) !=V_028040_Z_INVALID && +G_028800_Z_ENABLE (track->db_depth_control)) { r =evergreen_cs_track_validate_depth (p);if (r)return r;
drivers/gpu/drm/radeon/evergreend.h +2 -0
@@ -1273,6 +1273,8 @@#define S_028044_FORMAT (x) (((x) & 0x1) << 0)#define G_028044_FORMAT (x) (((x) >> 0) & 0x1)#define C_028044_FORMAT 0xFFFFFFFE +#define V_028044_STENCIL_INVALID 0 +#define V_028044_STENCIL_8 1#define G_028044_TILE_SPLIT (x) (((x) >> 8) & 0x7)#define DB_Z_READ_BASE 0x28048#define DB_STENCIL_READ_BASE 0x2804c
drivers/gpu/drm/radeon/ni.c +11 -3
@@ -574,10 +574,18 @@ static void cayman_gpu_init(struct radeon_device *rdev)if (rdev->flags &RADEON_IS_IGP ) rdev->config.cayman.tile_config |=1 <<4 ;else { -if ((mc_arb_ramcfg &NOOFBANK_MASK ) >>NOOFBANK_SHIFT ) - rdev->config.cayman.tile_config |=1 <<4 ; -else +switch ((mc_arb_ramcfg &NOOFBANK_MASK ) >>NOOFBANK_SHIFT ) { +case 0 :/* four banks */ rdev->config.cayman.tile_config |=0 <<4 ; +break ; +case 1 :/* eight banks */ + rdev->config.cayman.tile_config |=1 <<4 ; +break ; +case 2 :/* sixteen banks */ +default : + rdev->config.cayman.tile_config |=2 <<4 ; +break ; + } } rdev->config.cayman.tile_config |= ((gb_addr_config &PIPE_INTERLEAVE_SIZE_MASK ) >>PIPE_INTERLEAVE_SIZE_SHIFT ) <<8 ;
drivers/gpu/drm/radeon/r600_cs.c +4 -2
@@ -764,8 +764,10 @@ static int r600_cs_track_check(struct radeon_cs_parser *p) }/* Check depth buffer */ -if (track->db_dirty && (G_028800_STENCIL_ENABLE (track->db_depth_control) || -G_028800_Z_ENABLE (track->db_depth_control))) { +if (track->db_dirty && +G_028010_FORMAT (track->db_depth_info) !=V_028010_DEPTH_INVALID && + (G_028800_STENCIL_ENABLE (track->db_depth_control) || +G_028800_Z_ENABLE (track->db_depth_control))) { r =r600_cs_track_validate_db (p);if (r)return r;
drivers/gpu/drm/radeon/radeon_asic.h +2 -6
@@ -256,13 +256,10 @@ extern int rs690_mc_wait_for_idle(struct radeon_device *rdev);* rv515 */ struct rv515_mc_save { -u32 d1vga_control; -u32 d2vga_control;u32 vga_render_control;u32 vga_hdp_control; -u32 d1crtc_control; -u32 d2crtc_control; }; +int rv515_init (struct radeon_device *rdev);void rv515_fini (struct radeon_device *rdev);uint32_t rv515_mc_rreg (struct radeon_device *rdev,uint32_t reg);
@@ -389,11 +386,10 @@ void r700_cp_fini(struct radeon_device *rdev);* evergreen */ struct evergreen_mc_save { -u32 vga_control[6 ];u32 vga_render_control;u32 vga_hdp_control; -u32 crtc_control[6 ]; }; +void evergreen_pcie_gart_tlb_flush (struct radeon_device *rdev);int evergreen_init (struct radeon_device *rdev);void evergreen_fini (struct radeon_device *rdev);
drivers/gpu/drm/radeon/radeon_drv.c +2 -1
@@ -59,9 +59,10 @@* 2.15.0 - add max_pipes query * 2.16.0 - fix evergreen 2D tiled surface calculation * 2.17.0 - add STRMOUT_BASE_UPDATE for r7xx +* 2.18.0 - r600-eg: allow "invalid" DB formats */ #define KMS_DRIVER_MAJOR 2 -#define KMS_DRIVER_MINOR 17 +#define KMS_DRIVER_MINOR 18#define KMS_DRIVER_PATCHLEVEL 0int radeon_driver_load_kms (struct drm_device *dev,unsigned long flags);int radeon_driver_unload_kms (struct drm_device *dev);
drivers/gpu/drm/radeon/radeon_legacy_crtc.c +4 -0
@@ -1025,9 +1025,11 @@ static int radeon_crtc_mode_set(struct drm_crtc *crtc,static void radeon_crtc_prepare (struct drm_crtc *crtc) { +struct radeon_crtc *radeon_crtc =to_radeon_crtc (crtc);struct drm_device *dev = crtc->dev;struct drm_crtc *crtci; + radeon_crtc->in_mode_set = true;/* * The hardware wedges sometimes if you reconfigure one CRTC * whilst another is running (see fdo bug #24611).
@@ -1038,6 +1040,7 @@ static void radeon_crtc_prepare(struct drm_crtc *crtc)static void radeon_crtc_commit (struct drm_crtc *crtc) { +struct radeon_crtc *radeon_crtc =to_radeon_crtc (crtc);struct drm_device *dev = crtc->dev;struct drm_crtc *crtci;
@@ -1048,6 +1051,7 @@ static void radeon_crtc_commit(struct drm_crtc *crtc)if (crtci->enabled)radeon_crtc_dpms (crtci,DRM_MODE_DPMS_ON ); } + radeon_crtc->in_mode_set = false; }static const struct drm_crtc_helper_funcs legacy_helper_funcs = {
drivers/gpu/drm/radeon/radeon_mode.h +1 -0
@@ -275,6 +275,7 @@ struct radeon_crtc {u16 lut_r[256 ], lut_g[256 ], lut_b[256 ];bool enabled;bool can_tile; +bool in_mode_set;uint32_t crtc_offset;struct drm_gem_object *cursor_bo;uint64_t cursor_addr;
drivers/gpu/drm/radeon/rv515.c +0 -13
@@ -281,12 +281,8 @@ int rv515_debugfs_ga_info_init(struct radeon_device *rdev)void rv515_mc_stop (struct radeon_device *rdev,struct rv515_mc_save *save) { - save->d1vga_control =RREG32 (R_000330_D1VGA_CONTROL ); - save->d2vga_control =RREG32 (R_000338_D2VGA_CONTROL ); save->vga_render_control =RREG32 (R_000300_VGA_RENDER_CONTROL ); save->vga_hdp_control =RREG32 (R_000328_VGA_HDP_CONTROL ); - save->d1crtc_control =RREG32 (R_006080_D1CRTC_CONTROL ); - save->d2crtc_control =RREG32 (R_006880_D2CRTC_CONTROL );/* Stop all video */ WREG32 (R_0068E8_D2CRTC_UPDATE_LOCK ,0 );
@@ -311,15 +307,6 @@ void rv515_mc_resume(struct radeon_device *rdev, struct rv515_mc_save *save)/* Unlock host access */ WREG32 (R_000328_VGA_HDP_CONTROL , save->vga_hdp_control);mdelay (1 ); -/* Restore video state */ -WREG32 (R_000330_D1VGA_CONTROL , save->d1vga_control); -WREG32 (R_000338_D2VGA_CONTROL , save->d2vga_control); -WREG32 (R_0060E8_D1CRTC_UPDATE_LOCK ,1 ); -WREG32 (R_0068E8_D2CRTC_UPDATE_LOCK ,1 ); -WREG32 (R_006080_D1CRTC_CONTROL , save->d1crtc_control); -WREG32 (R_006880_D2CRTC_CONTROL , save->d2crtc_control); -WREG32 (R_0060E8_D1CRTC_UPDATE_LOCK ,0 ); -WREG32 (R_0068E8_D2CRTC_UPDATE_LOCK ,0 );WREG32 (R_000300_VGA_RENDER_CONTROL , save->vga_render_control); }
drivers/gpu/drm/radeon/si.c +11 -3
@@ -1640,10 +1640,18 @@ static void si_gpu_init(struct radeon_device *rdev) rdev->config.si.tile_config |= (3 <<0 );break ; } -if ((mc_arb_ramcfg &NOOFBANK_MASK ) >>NOOFBANK_SHIFT ) - rdev->config.si.tile_config |=1 <<4 ; -else +switch ((mc_arb_ramcfg &NOOFBANK_MASK ) >>NOOFBANK_SHIFT ) { +case 0 :/* four banks */ rdev->config.si.tile_config |=0 <<4 ; +break ; +case 1 :/* eight banks */ + rdev->config.si.tile_config |=1 <<4 ; +break ; +case 2 :/* sixteen banks */ +default : + rdev->config.si.tile_config |=2 <<4 ; +break ; + } rdev->config.si.tile_config |= ((gb_addr_config &PIPE_INTERLEAVE_SIZE_MASK ) >>PIPE_INTERLEAVE_SIZE_SHIFT ) <<8 ; rdev->config.si.tile_config |=
drivers/infiniband/ulp/srp/ib_srp.c +63 -24
130 lines not on this page · raw message
drivers/net/wireless/rt2x00/rt2800usb.c +1 -0
@@ -971,6 +971,7 @@ static struct usb_device_id rt2800usb_device_table[] = { { USB_DEVICE(0x0411, 0x015d) }, { USB_DEVICE(0x0411, 0x016f) }, { USB_DEVICE(0x0411, 0x01a2) }, + { USB_DEVICE(0x0411, 0x01ee) },/* Corega */ { USB_DEVICE(0x07aa, 0x002f) }, { USB_DEVICE(0x07aa, 0x003c) },
drivers/staging/comedi/drivers.c +1 -1
@@ -144,7 +144,7 @@ int comedi_device_attach(struct comedi_device *dev, struct comedi_devconfig *it) dev->board_ptr =comedi_recognize (driv, it->board_name);if (dev->board_ptr)break ; - }else if (strcmp (driv->driver_name, it->board_name)) + }else if (strcmp (driv->driver_name, it->board_name) ==0 )break ;module_put (driv->module); }
drivers/tty/serial/pmac_zilog.c +9 -3
@@ -1348,10 +1348,16 @@ static int pmz_verify_port(struct uart_port *port, struct serial_struct *ser)static int pmz_poll_get_char (struct uart_port *port) {struct uart_pmac_port *uap = (struct uart_pmac_port *)port; +int tries =2 ; -while ((read_zsreg (uap,R0 ) & Rx_CH_AV) ==0 ) -udelay (5 ); -return read_zsdata (uap); +while (tries) { +if ((read_zsreg (uap,R0 ) & Rx_CH_AV) !=0 ) +return read_zsdata (uap); +if (tries--) +udelay (5 ); + } + +return NO_POLL_CHAR ; }static void pmz_poll_put_char (struct uart_port *port,unsigned char c)
drivers/usb/gadget/u_ether.c +6 -0
@@ -669,6 +669,8 @@ static int eth_stop(struct net_device *net)spin_lock_irqsave (&dev->lock, flags);if (dev->port_usb) {struct gether *link = dev->port_usb; +const struct usb_endpoint_descriptor *in; +const struct usb_endpoint_descriptor *out;if (link->close) link->close (link);
@@ -682,10 +684,14 @@ static int eth_stop(struct net_device *net)* their own pace; the network stack can handle old packets. * For the moment we leave this here, since it works. */ + in = link->in_ep->desc; + out = link->out_ep->desc;usb_ep_disable (link->in_ep);usb_ep_disable (link->out_ep);if (netif_carrier_ok (net)) {DBG (dev,"host still using in/out endpoints\n" ); + link->in_ep->desc = in; + link->out_ep->desc = out;usb_ep_enable (link->in_ep);usb_ep_enable (link->out_ep); }
drivers/usb/host/pci-quirks.c +7 -0
@@ -800,6 +800,13 @@ void usb_enable_xhci_ports(struct pci_dev *xhci_pdev) }EXPORT_SYMBOL_GPL (usb_enable_xhci_ports); +void usb_disable_xhci_ports (struct pci_dev *xhci_pdev) +{ +pci_write_config_dword (xhci_pdev,USB_INTEL_USB3_PSSEN ,0x0 ); +pci_write_config_dword (xhci_pdev,USB_INTEL_XUSB2PR ,0x0 ); +} +EXPORT_SYMBOL_GPL (usb_disable_xhci_ports); +/** * PCI Quirks for xHCI. *
drivers/usb/host/pci-quirks.h +1 -0
@@ -10,6 +10,7 @@ void usb_amd_quirk_pll_disable(void);void usb_amd_quirk_pll_enable (void );bool usb_is_intel_switchable_xhci (struct pci_dev *pdev);void usb_enable_xhci_ports (struct pci_dev *xhci_pdev); +void usb_disable_xhci_ports (struct pci_dev *xhci_pdev);#else static inline void usb_amd_quirk_pll_disable (void ) {}static inline void usb_amd_quirk_pll_enable (void ) {}
drivers/usb/host/xhci-pci.c +10 -0
@@ -94,11 +94,21 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) xhci->quirks |=XHCI_EP_LIMIT_QUIRK ; xhci->limit_active_eps =64 ; xhci->quirks |=XHCI_SW_BW_CHECKING ; +/* +* PPT desktop boards DH77EB and DH77DF will power back on after +* a few seconds of being shutdown. The fix for this is to +* switch the ports from xHCI to EHCI on shutdown. We can't use +* DMI information to find those particular boards (since each +* vendor will change the board name), so we have to key off all +* PPT chipsets. +*/ + xhci->quirks |=XHCI_SPURIOUS_REBOOT ; }if (pdev->vendor ==PCI_VENDOR_ID_ETRON && pdev->device ==PCI_DEVICE_ID_ASROCK_P67 ) { xhci->quirks |=XHCI_RESET_ON_RESUME ;xhci_dbg (xhci,"QUIRK: Resetting on resume\n" ); + xhci->quirks |=XHCI_TRUST_TX_LENGTH ; }if (pdev->vendor ==PCI_VENDOR_ID_VIA ) xhci->quirks |=XHCI_RESET_ON_RESUME ;
drivers/usb/host/xhci-ring.c +22 -14
@@ -145,29 +145,37 @@ static void next_trb(struct xhci_hcd *xhci,*/ static void inc_deq (struct xhci_hcd *xhci,struct xhci_ring *ring) { -union xhci_trb *next;unsigned long long addr; ring->deq_updates++; -/* If this is not event ring, there is one more usable TRB */ +/* +* If this is not event ring, and the dequeue pointer +* is not on a link TRB, there is one more usable TRB +*/ if (ring->type !=TYPE_EVENT && !last_trb (xhci, ring, ring->deq_seg, ring->dequeue)) ring->num_trbs_free++; - next = ++(ring->dequeue); -/* Update the dequeue pointer further if that was a link TRB or we're at -* the end of an event ring segment (which doesn't have link TRBS) -*/ -while (last_trb (xhci, ring, ring->deq_seg, next)) { -if (ring->type ==TYPE_EVENT &&last_trb_on_last_seg (xhci, - ring, ring->deq_seg, next)) { - ring->cycle_state = (ring->cycle_state ?0 :1 ); +do { +/* +* Update the dequeue pointer further if that was a link TRB or +* we're at the end of an event ring segment (which doesn't have +* link TRBS) +*/ +if (last_trb (xhci, ring, ring->deq_seg, ring->dequeue)) { +if (ring->type ==TYPE_EVENT && +last_trb_on_last_seg (xhci, ring, + ring->deq_seg, ring->dequeue)) { + ring->cycle_state = (ring->cycle_state ?0 :1 ); + } + ring->deq_seg = ring->deq_seg->next; + ring->dequeue = ring->deq_seg->trbs; + }else { + ring->dequeue++; } - ring->deq_seg = ring->deq_seg->next; - ring->dequeue = ring->deq_seg->trbs; - next = ring->dequeue; - } + }while (last_trb (xhci, ring, ring->deq_seg, ring->dequeue)); + addr = (unsigned long long )xhci_trb_virt_to_dma (ring->deq_seg, ring->dequeue); }
drivers/usb/host/xhci.c +6 -2
@@ -166,7 +166,7 @@ int xhci_reset(struct xhci_hcd *xhci)xhci_writel (xhci, command, &xhci->op_regs->command); ret =handshake (xhci, &xhci->op_regs->command, -CMD_RESET ,0 ,250 *1000 ); +CMD_RESET ,0 ,10 *1000 *1000 );if (ret)return ret;
@@ -175,7 +175,8 @@ int xhci_reset(struct xhci_hcd *xhci)* xHCI cannot write to any doorbells or operational registers other * than status until the "Controller Not Ready" flag is cleared. */ - ret =handshake (xhci, &xhci->op_regs->status,STS_CNR ,0 ,250 *1000 ); + ret =handshake (xhci, &xhci->op_regs->status, +STS_CNR ,0 ,10 *1000 *1000 );for (i =0 ; i <2 ; ++i) { xhci->bus_state[i].port_c_suspend =0 ;
@@ -658,6 +659,9 @@ void xhci_shutdown(struct usb_hcd *hcd) {struct xhci_hcd *xhci =hcd_to_xhci (hcd); +if (xhci->quirks &&XHCI_SPURIOUS_REBOOT ) +usb_disable_xhci_ports (to_pci_dev (hcd->self.controller)); +spin_lock_irq (&xhci->lock);xhci_halt (xhci);spin_unlock_irq (&xhci->lock);
drivers/usb/host/xhci.h +1 -0
@@ -1494,6 +1494,7 @@ struct xhci_hcd {#define XHCI_TRUST_TX_LENGTH (1 << 10)#define XHCI_LPM_SUPPORT (1 << 11)#define XHCI_INTEL_HOST (1 << 12) +#define XHCI_SPURIOUS_REBOOT (1 << 13)unsigned int num_active_eps;unsigned int limit_active_eps;/* There are two roothubs to keep track of bus suspend info for */
drivers/usb/serial/ftdi_sio.c +1 -0
@@ -811,6 +811,7 @@ static struct usb_device_id id_table_combined [] = { { USB_DEVICE(LARSENBRUSGAARD_VID, LB_ALTITRACK_PID) }, { USB_DEVICE(GN_OTOMETRICS_VID, AURICAL_USB_PID) }, { USB_DEVICE(PI_VID, PI_E861_PID) }, + { USB_DEVICE(KONDO_VID, KONDO_USB_SERIAL_PID) }, { USB_DEVICE(BAYER_VID, BAYER_CONTOUR_CABLE_PID) }, { USB_DEVICE(FTDI_VID, MARVELL_OPENRD_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
drivers/usb/serial/ftdi_sio_ids.h +7 -0
@@ -795,6 +795,13 @@#define PI_E861_PID 0x1008/* E-861 piezo controller USB connection */ /* +* Kondo Kagaku Co.Ltd. +* http://www.kondo-robot.com/EN +*/ +#define KONDO_VID 0x165c +#define KONDO_USB_SERIAL_PID 0x0002 + +/* * Bayer Ascensia Contour blood glucose meter USB-converter cable. * http://winglucofacts.com/cables/ */
drivers/usb/serial/mos7840.c +6 -3
@@ -1232,9 +1232,12 @@ static int mos7840_chars_in_buffer(struct tty_struct *tty)return 0 ;spin_lock_irqsave (&mos7840_port->pool_lock, flags); -for (i =0 ; i <NUM_URBS ; ++i) -if (mos7840_port->busy[i]) - chars +=URB_TRANSFER_BUFFER_SIZE ; +for (i =0 ; i <NUM_URBS ; ++i) { +if (mos7840_port->busy[i]) { +struct urb *urb = mos7840_port->write_urb_pool[i]; + chars += urb->transfer_buffer_length; + } + }spin_unlock_irqrestore (&mos7840_port->pool_lock, flags);dbg ("%s - returns %d" , __func__, chars);return chars;
drivers/usb/serial/option.c +113 -168
308 lines not on this page · raw message
fs/ext4/balloc.c +37 -25
102 lines not on this page · raw message
fs/ext4/bitmap.c +0 -1
@@ -86,7 +86,6 @@ int ext4_block_bitmap_csum_verify(struct super_block *sb, ext4_group_t group,if (provided == calculated)return 1 ; -ext4_error (sb,"Bad block bitmap checksum: block_group = %u" , group);return 0 ; }
fs/ext4/extents.c +1 -0
@@ -2663,6 +2663,7 @@ cont: } path[0 ].p_depth = depth; path[0 ].p_hdr =ext_inode_hdr (inode); + i =0 ;if (ext4_ext_check (inode, path[0 ].p_hdr, depth)) { err = -EIO ;
fs/ext4/super.c +6 -0
@@ -976,6 +976,7 @@ static struct inode *ext4_alloc_inode(struct super_block *sb) ei->i_reserved_meta_blocks =0 ; ei->i_allocated_meta_blocks =0 ; ei->i_da_metadata_calc_len =0 ; + ei->i_da_metadata_calc_last_lblock =0 ;spin_lock_init (&(ei->i_block_reservation_lock));#ifdef CONFIG_QUOTA ei->i_reserved_quota =0 ;
@@ -3109,6 +3110,10 @@ static int count_overhead(struct super_block *sb, ext4_group_t grp,ext4_group_t i, ngroups =ext4_get_groups_count (sb);int s, j, count =0 ; +if (!EXT4_HAS_RO_COMPAT_FEATURE (sb,EXT4_FEATURE_RO_COMPAT_BIGALLOC )) +return (ext4_bg_has_super (sb, grp) +ext4_bg_num_gdb (sb, grp) + + sbi->s_itb_per_group +2 ); + first_block =le32_to_cpu (sbi->s_es->s_first_data_block) + (grp *EXT4_BLOCKS_PER_GROUP (sb)); last_block = first_block +EXT4_BLOCKS_PER_GROUP (sb) -1 ;
@@ -4406,6 +4411,7 @@ static void ext4_clear_journal_err(struct super_block *sb,ext4_commit_super (sb,1 );jbd2_journal_clear_err (journal); +jbd2_journal_update_sb_errno (journal); } }
fs/fuse/file.c +1 -1
@@ -1700,7 +1700,7 @@ static int fuse_verify_ioctl_iov(struct iovec *iov, size_t count)size_t n;u32 max =FUSE_MAX_PAGES_PER_REQ <<PAGE_SHIFT ; -for (n =0 ; n < count; n++) { +for (n =0 ; n < count; n++, iov++) {if (iov->iov_len > (size_t ) max)return -ENOMEM ; max -= iov->iov_len;
fs/jbd2/journal.c +2 -1
@@ -1377,7 +1377,7 @@ static void jbd2_mark_journal_empty(journal_t *journal)* Update a journal's errno. Write updated superblock to disk waiting for IO * to complete. */ -static void jbd2_journal_update_sb_errno (journal_t *journal) +void jbd2_journal_update_sb_errno (journal_t *journal) {journal_superblock_t *sb = journal->j_superblock;
@@ -1390,6 +1390,7 @@ static void jbd2_journal_update_sb_errno(journal_t *journal)jbd2_write_superblock (journal,WRITE_SYNC ); } +EXPORT_SYMBOL (jbd2_journal_update_sb_errno);/* * Read the superblock for a given journal, performing initial
include/drm/drm_pciids.h +3 -0
@@ -213,9 +213,12 @@ {0x1002, 0x6800, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6801, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6802, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6806, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6808, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6809, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6810, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6816, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6817, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6818, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6819, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6820, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
include/linux/jbd2.h +1 -0
@@ -1125,6 +1125,7 @@ extern int jbd2_journal_destroy (journal_t *);extern int jbd2_journal_recover (journal_t *journal);extern int jbd2_journal_wipe (journal_t *,int );extern int jbd2_journal_skip_recovery (journal_t *); +extern void jbd2_journal_update_sb_errno (journal_t *);extern void jbd2_journal_update_sb_log_tail (journal_t *,tid_t ,unsigned long ,int );extern void __jbd2_journal_abort_hard (journal_t *);
include/linux/usb.h +21 -0
@@ -828,6 +828,27 @@ static inline int usb_make_path(struct usb_device *dev, char *buf, size_t size) .bInterfaceSubClass = (sc), \ .bInterfaceProtocol = (pr) +/** +* USB_VENDOR_AND_INTERFACE_INFO - describe a specific usb vendor with a class of usb interfaces +* @vend: the 16 bit USB Vendor ID +* @cl: bInterfaceClass value +* @sc: bInterfaceSubClass value +* @pr: bInterfaceProtocol value +* +* This macro is used to create a struct usb_device_id that matches a +* specific vendor with a specific class of interfaces. +* +* This is especially useful when explicitly matching devices that have +* vendor specific bDeviceClass values, but standards-compliant interfaces. + */ +#define USB_VENDOR_AND_INTERFACE_INFO (vend, cl, sc, pr) \ + .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \ + | USB_DEVICE_ID_MATCH_VENDOR, \ + .idVendor = (vend), \ + .bInterfaceClass = (cl), \ + .bInterfaceSubClass = (sc), \ + .bInterfaceProtocol = (pr) +/* ----------------------------------------------------------------------- */ /* Stuff for dynamic usb ids */
security/yama/yama_lsm.c +2 -8
@@ -279,12 +279,9 @@ static int yama_ptrace_access_check(struct task_struct *child, }if (rc) { -char name[sizeof (current->comm)];printk_ratelimited (KERN_NOTICE "ptrace of pid %d was attempted by: %s (pid %d)\n" , - child->pid, -get_task_comm (name, current), - current->pid); + child->pid, current->comm, current->pid); }return rc;
@@ -319,12 +316,9 @@ static int yama_ptrace_traceme(struct task_struct *parent) }if (rc) { -char name[sizeof (current->comm)];printk_ratelimited (KERN_NOTICE "ptraceme of pid %d was attempted by: %s (pid %d)\n" , - current->pid, -get_task_comm (name, parent), - parent->pid); + current->pid, parent->comm, parent->pid); }return rc;