Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6

+175 -88
+7 -6
Documentation/scheduler/sched-rt-group.txt
··· 73 realtime tasks have explicitly allocated the CPU time they need to perform 74 their tasks, buffer underruns in the graphics or audio can be eliminated. 75 76 - NOTE: the above example is not fully implemented as of yet (2.6.25). We still 77 lack an EDF scheduler to make non-uniform periods usable. 78 79 ··· 140 141 .o CONFIG_CGROUP_SCHED (aka "Basis for grouping tasks" = "Control groups") 142 143 - This uses the /cgroup virtual file system and "/cgroup/<cgroup>/cpu.rt_runtime_us" 144 - to control the CPU time reserved for each control group instead. 145 146 For more information on working with control groups, you should read 147 Documentation/cgroups/cgroups.txt as well. 148 149 - Group settings are checked against the following limits in order to keep the configuration 150 - schedulable: 151 152 \Sum_{i} runtime_{i} / global_period <= global_runtime / global_period 153 ··· 190 the biggest challenge as the current linux PI infrastructure is geared towards 191 the limited static priority levels 0-99. With deadline scheduling you need to 192 do deadline inheritance (since priority is inversely proportional to the 193 - deadline delta (deadline - now). 194 195 This means the whole PI machinery will have to be reworked - and that is one of 196 the most complex pieces of code we have.
··· 73 realtime tasks have explicitly allocated the CPU time they need to perform 74 their tasks, buffer underruns in the graphics or audio can be eliminated. 75 76 + NOTE: the above example is not fully implemented yet. We still 77 lack an EDF scheduler to make non-uniform periods usable. 78 79 ··· 140 141 .o CONFIG_CGROUP_SCHED (aka "Basis for grouping tasks" = "Control groups") 142 143 + This uses the /cgroup virtual file system and 144 + "/cgroup/<cgroup>/cpu.rt_runtime_us" to control the CPU time reserved for each 145 + control group instead. 146 147 For more information on working with control groups, you should read 148 Documentation/cgroups/cgroups.txt as well. 149 150 + Group settings are checked against the following limits in order to keep the 151 + configuration schedulable: 152 153 \Sum_{i} runtime_{i} / global_period <= global_runtime / global_period 154 ··· 189 the biggest challenge as the current linux PI infrastructure is geared towards 190 the limited static priority levels 0-99. With deadline scheduling you need to 191 do deadline inheritance (since priority is inversely proportional to the 192 + deadline delta (deadline - now)). 193 194 This means the whole PI machinery will have to be reworked - and that is one of 195 the most complex pieces of code we have.
+2 -1
Makefile
··· 343 KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ 344 -fno-strict-aliasing -fno-common \ 345 -Werror-implicit-function-declaration \ 346 - -Wno-format-security 347 KBUILD_AFLAGS := -D__ASSEMBLY__ 348 349 # Read KERNELRELEASE from include/config/kernel.release (if it exists)
··· 343 KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ 344 -fno-strict-aliasing -fno-common \ 345 -Werror-implicit-function-declaration \ 346 + -Wno-format-security \ 347 + -fno-delete-null-pointer-checks 348 KBUILD_AFLAGS := -D__ASSEMBLY__ 349 350 # Read KERNELRELEASE from include/config/kernel.release (if it exists)
+2
arch/ia64/include/asm/fpu.h
··· 6 * David Mosberger-Tang <davidm@hpl.hp.com> 7 */ 8 9 /* floating point status register: */ 10 #define FPSR_TRAP_VD (1 << 0) /* invalid op trap disabled */ 11 #define FPSR_TRAP_DD (1 << 1) /* denormal trap disabled */
··· 6 * David Mosberger-Tang <davidm@hpl.hp.com> 7 */ 8 9 + #include <linux/types.h> 10 + 11 /* floating point status register: */ 12 #define FPSR_TRAP_VD (1 << 0) /* invalid op trap disabled */ 13 #define FPSR_TRAP_DD (1 << 1) /* denormal trap disabled */
+1
arch/ia64/include/asm/xen/hypervisor.h
··· 33 #ifndef _ASM_IA64_XEN_HYPERVISOR_H 34 #define _ASM_IA64_XEN_HYPERVISOR_H 35 36 #include <xen/interface/xen.h> 37 #include <xen/interface/version.h> /* to compile feature.c */ 38 #include <xen/features.h> /* to comiple xen-netfront.c */
··· 33 #ifndef _ASM_IA64_XEN_HYPERVISOR_H 34 #define _ASM_IA64_XEN_HYPERVISOR_H 35 36 + #include <linux/err.h> 37 #include <xen/interface/xen.h> 38 #include <xen/interface/version.h> /* to compile feature.c */ 39 #include <xen/features.h> /* to comiple xen-netfront.c */
+8
arch/ia64/kernel/dma-mapping.c
··· 6 struct dma_map_ops *dma_ops; 7 EXPORT_SYMBOL(dma_ops); 8 9 struct dma_map_ops *dma_get_ops(struct device *dev) 10 { 11 return dma_ops;
··· 6 struct dma_map_ops *dma_ops; 7 EXPORT_SYMBOL(dma_ops); 8 9 + #define PREALLOC_DMA_DEBUG_ENTRIES (1 << 16) 10 + 11 + static int __init dma_init(void) 12 + { 13 + dma_debug_init(PREALLOC_DMA_DEBUG_ENTRIES); 14 + } 15 + fs_initcall(dma_init); 16 + 17 struct dma_map_ops *dma_get_ops(struct device *dev) 18 { 19 return dma_ops;
+9 -8
arch/powerpc/kernel/ptrace.c
··· 736 { 737 struct pt_regs *regs = task->thread.regs; 738 739 - 740 - #if defined(CONFIG_BOOKE) 741 - /* If DAC then do not single step, skip */ 742 - if (task->thread.dabr) 743 - return; 744 - #endif 745 - 746 if (regs != NULL) { 747 - #if defined(CONFIG_40x) || defined(CONFIG_BOOKE) 748 task->thread.dbcr0 &= ~(DBCR0_IC | DBCR0_BT | DBCR0_IDM); 749 regs->msr &= ~MSR_DE; 750 #else
··· 736 { 737 struct pt_regs *regs = task->thread.regs; 738 739 if (regs != NULL) { 740 + #if defined(CONFIG_BOOKE) 741 + /* If DAC don't clear DBCRO_IDM or MSR_DE */ 742 + if (task->thread.dabr) 743 + task->thread.dbcr0 &= ~(DBCR0_IC | DBCR0_BT); 744 + else { 745 + task->thread.dbcr0 &= ~(DBCR0_IC | DBCR0_BT | DBCR0_IDM); 746 + regs->msr &= ~MSR_DE; 747 + } 748 + #elif defined(CONFIG_40x) 749 task->thread.dbcr0 &= ~(DBCR0_IC | DBCR0_BT | DBCR0_IDM); 750 regs->msr &= ~MSR_DE; 751 #else
+3 -3
arch/powerpc/kernel/vector.S
··· 80 mtvscr vr0 81 REST_32VRS(0,r4,r5) 82 #ifndef CONFIG_SMP 83 - /* Update last_task_used_math to 'current' */ 84 subi r4,r5,THREAD /* Back to 'current' */ 85 fromreal(r4) 86 - PPC_STL r4,ADDROFF(last_task_used_math)(r3) 87 #endif /* CONFIG_SMP */ 88 /* restore registers and return */ 89 blr ··· 172 oris r12,r12,MSR_VSX@h 173 std r12,_MSR(r1) 174 #ifndef CONFIG_SMP 175 - /* Update last_task_used_math to 'current' */ 176 ld r4,PACACURRENT(r13) 177 std r4,0(r3) 178 #endif /* CONFIG_SMP */
··· 80 mtvscr vr0 81 REST_32VRS(0,r4,r5) 82 #ifndef CONFIG_SMP 83 + /* Update last_task_used_altivec to 'current' */ 84 subi r4,r5,THREAD /* Back to 'current' */ 85 fromreal(r4) 86 + PPC_STL r4,ADDROFF(last_task_used_altivec)(r3) 87 #endif /* CONFIG_SMP */ 88 /* restore registers and return */ 89 blr ··· 172 oris r12,r12,MSR_VSX@h 173 std r12,_MSR(r1) 174 #ifndef CONFIG_SMP 175 + /* Update last_task_used_vsx to 'current' */ 176 ld r4,PACACURRENT(r13) 177 std r4,0(r3) 178 #endif /* CONFIG_SMP */
+2
arch/x86/include/asm/io_apic.h
··· 161 struct io_apic_irq_attr *irq_attr); 162 extern int (*ioapic_renumber_irq)(int ioapic, int irq); 163 extern void ioapic_init_mappings(void); 164 165 extern struct IO_APIC_route_entry **alloc_ioapic_entries(void); 166 extern void free_ioapic_entries(struct IO_APIC_route_entry **ioapic_entries); ··· 181 #define io_apic_assign_pci_irqs 0 182 static const int timer_through_8259 = 0; 183 static inline void ioapic_init_mappings(void) { } 184 185 static inline void probe_nr_irqs_gsi(void) { } 186 #endif
··· 161 struct io_apic_irq_attr *irq_attr); 162 extern int (*ioapic_renumber_irq)(int ioapic, int irq); 163 extern void ioapic_init_mappings(void); 164 + extern void ioapic_insert_resources(void); 165 166 extern struct IO_APIC_route_entry **alloc_ioapic_entries(void); 167 extern void free_ioapic_entries(struct IO_APIC_route_entry **ioapic_entries); ··· 180 #define io_apic_assign_pci_irqs 0 181 static const int timer_through_8259 = 0; 182 static inline void ioapic_init_mappings(void) { } 183 + static inline void ioapic_insert_resources(void) { } 184 185 static inline void probe_nr_irqs_gsi(void) { } 186 #endif
+1 -1
arch/x86/include/asm/lguest_hcall.h
··· 30 #include <asm/hw_irq.h> 31 #include <asm/kvm_para.h> 32 33 - /*G:031 But first, how does our Guest contact the Host to ask for privileged 34 * operations? There are two ways: the direct way is to make a "hypercall", 35 * to make requests of the Host Itself. 36 *
··· 30 #include <asm/hw_irq.h> 31 #include <asm/kvm_para.h> 32 33 + /*G:030 But first, how does our Guest contact the Host to ask for privileged 34 * operations? There are two ways: the direct way is to make a "hypercall", 35 * to make requests of the Host Itself. 36 *
+3 -11
arch/x86/kernel/apic/io_apic.c
··· 4181 } 4182 } 4183 4184 - static int __init ioapic_insert_resources(void) 4185 { 4186 int i; 4187 struct resource *r = ioapic_resources; 4188 4189 if (!r) { 4190 - if (nr_ioapics > 0) { 4191 printk(KERN_ERR 4192 "IO APIC resources couldn't be allocated.\n"); 4193 - return -1; 4194 - } 4195 - return 0; 4196 } 4197 4198 for (i = 0; i < nr_ioapics; i++) { 4199 insert_resource(&iomem_resource, r); 4200 r++; 4201 } 4202 - 4203 - return 0; 4204 } 4205 - 4206 - /* Insert the IO APIC resources after PCI initialization has occured to handle 4207 - * IO APICS that are mapped in on a BAR in PCI space. */ 4208 - late_initcall(ioapic_insert_resources);
··· 4181 } 4182 } 4183 4184 + void __init ioapic_insert_resources(void) 4185 { 4186 int i; 4187 struct resource *r = ioapic_resources; 4188 4189 if (!r) { 4190 + if (nr_ioapics > 0) 4191 printk(KERN_ERR 4192 "IO APIC resources couldn't be allocated.\n"); 4193 + return; 4194 } 4195 4196 for (i = 0; i < nr_ioapics; i++) { 4197 insert_resource(&iomem_resource, r); 4198 r++; 4199 } 4200 }
+6 -1
arch/x86/lguest/boot.c
··· 379 380 native_cpuid(ax, bx, cx, dx); 381 switch (function) { 382 case 1: /* Basic feature request. */ 383 /* We only allow kernel to see SSE3, CMPXCHG16B and SSSE3 */ 384 *cx &= 0x00002201; ··· 1084 return insn_len; 1085 } 1086 1087 - /*G:030 Once we get to lguest_init(), we know we're a Guest. The various 1088 * pv_ops structures in the kernel provide points for (almost) every routine we 1089 * have to override to avoid privileged instructions. */ 1090 __init void lguest_init(void)
··· 379 380 native_cpuid(ax, bx, cx, dx); 381 switch (function) { 382 + case 0: /* ID and highest CPUID. Futureproof a little by sticking to 383 + * older ones. */ 384 + if (*ax > 5) 385 + *ax = 5; 386 + break; 387 case 1: /* Basic feature request. */ 388 /* We only allow kernel to see SSE3, CMPXCHG16B and SSSE3 */ 389 *cx &= 0x00002201; ··· 1079 return insn_len; 1080 } 1081 1082 + /*G:029 Once we get to lguest_init(), we know we're a Guest. The various 1083 * pv_ops structures in the kernel provide points for (almost) every routine we 1084 * have to override to avoid privileged instructions. */ 1085 __init void lguest_init(void)
+7
arch/x86/pci/i386.c
··· 35 #include <asm/pat.h> 36 #include <asm/e820.h> 37 #include <asm/pci_x86.h> 38 39 40 static int ··· 228 pcibios_allocate_resources(1); 229 230 e820_reserve_resources_late(); 231 } 232 233 /**
··· 35 #include <asm/pat.h> 36 #include <asm/e820.h> 37 #include <asm/pci_x86.h> 38 + #include <asm/io_apic.h> 39 40 41 static int ··· 227 pcibios_allocate_resources(1); 228 229 e820_reserve_resources_late(); 230 + /* 231 + * Insert the IO APIC resources after PCI initialization has 232 + * occured to handle IO APICS that are mapped in on a BAR in 233 + * PCI space, but before trying to assign unassigned pci res. 234 + */ 235 + ioapic_insert_resources(); 236 } 237 238 /**
+4 -1
drivers/block/virtio_blk.c
··· 213 * Only allow the generic SCSI ioctls if the host can support it. 214 */ 215 if (!virtio_has_feature(vblk->vdev, VIRTIO_BLK_F_SCSI)) 216 - return -ENOIOCTLCMD; 217 218 return scsi_cmd_ioctl(disk->queue, disk, mode, cmd, argp); 219 } ··· 359 /* We can handle whatever the host told us to handle. */ 360 blk_queue_max_phys_segments(vblk->disk->queue, vblk->sg_elems-2); 361 blk_queue_max_hw_segments(vblk->disk->queue, vblk->sg_elems-2); 362 363 /* No real sector limit. */ 364 blk_queue_max_sectors(vblk->disk->queue, -1U);
··· 213 * Only allow the generic SCSI ioctls if the host can support it. 214 */ 215 if (!virtio_has_feature(vblk->vdev, VIRTIO_BLK_F_SCSI)) 216 + return -ENOTTY; 217 218 return scsi_cmd_ioctl(disk->queue, disk, mode, cmd, argp); 219 } ··· 359 /* We can handle whatever the host told us to handle. */ 360 blk_queue_max_phys_segments(vblk->disk->queue, vblk->sg_elems-2); 361 blk_queue_max_hw_segments(vblk->disk->queue, vblk->sg_elems-2); 362 + 363 + /* No need to bounce any requests */ 364 + blk_queue_bounce_limit(vblk->disk->queue, BLK_BOUNCE_ANY); 365 366 /* No real sector limit. */ 367 blk_queue_max_sectors(vblk->disk->queue, -1U);
-3
drivers/char/n_tty.c
··· 1331 1332 static void n_tty_write_wakeup(struct tty_struct *tty) 1333 { 1334 - /* Write out any echoed characters that are still pending */ 1335 - process_echoes(tty); 1336 - 1337 if (tty->fasync && test_and_clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags)) 1338 kill_fasync(&tty->fasync, SIGIO, POLL_OUT); 1339 }
··· 1331 1332 static void n_tty_write_wakeup(struct tty_struct *tty) 1333 { 1334 if (tty->fasync && test_and_clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags)) 1335 kill_fasync(&tty->fasync, SIGIO, POLL_OUT); 1336 }
+8 -4
drivers/char/nozomi.c
··· 828 struct port *port = &dc->port[index]; 829 void __iomem *addr = port->dl_addr[port->toggle_dl]; 830 struct tty_struct *tty = tty_port_tty_get(&port->port); 831 - int i; 832 833 if (unlikely(!tty)) { 834 DBG1("tty not open for port: %d?", index); ··· 844 845 /* disable interrupt in downlink... */ 846 disable_transmit_dl(index, dc); 847 - return 0; 848 } 849 850 if (unlikely(size == 0)) { 851 dev_err(&dc->pdev->dev, "size == 0?\n"); 852 - return 1; 853 } 854 855 tty_buffer_request_room(tty, size); ··· 873 } 874 875 set_bit(index, &dc->flip); 876 tty_kref_put(tty); 877 - return 1; 878 } 879 880 /* Debug for interrupts */
··· 828 struct port *port = &dc->port[index]; 829 void __iomem *addr = port->dl_addr[port->toggle_dl]; 830 struct tty_struct *tty = tty_port_tty_get(&port->port); 831 + int i, ret; 832 833 if (unlikely(!tty)) { 834 DBG1("tty not open for port: %d?", index); ··· 844 845 /* disable interrupt in downlink... */ 846 disable_transmit_dl(index, dc); 847 + ret = 0; 848 + goto put; 849 } 850 851 if (unlikely(size == 0)) { 852 dev_err(&dc->pdev->dev, "size == 0?\n"); 853 + ret = 1; 854 + goto put; 855 } 856 857 tty_buffer_request_room(tty, size); ··· 871 } 872 873 set_bit(index, &dc->flip); 874 + ret = 1; 875 + put: 876 tty_kref_put(tty); 877 + return ret; 878 } 879 880 /* Debug for interrupts */
+15 -10
drivers/char/tty_ldisc.c
··· 790 * N_TTY. 791 */ 792 if (tty->driver->flags & TTY_DRIVER_RESET_TERMIOS) { 793 - /* Avoid racing set_ldisc */ 794 mutex_lock(&tty->ldisc_mutex); 795 - /* Switch back to N_TTY */ 796 - tty_ldisc_halt(tty); 797 - tty_ldisc_wait_idle(tty); 798 - tty_ldisc_reinit(tty); 799 - /* At this point we have a closed ldisc and we want to 800 - reopen it. We could defer this to the next open but 801 - it means auditing a lot of other paths so this is a FIXME */ 802 - WARN_ON(tty_ldisc_open(tty, tty->ldisc)); 803 - tty_ldisc_enable(tty); 804 mutex_unlock(&tty->ldisc_mutex); 805 tty_reset_termios(tty); 806 } ··· 868 869 tty_ldisc_wait_idle(tty); 870 871 /* 872 * Now kill off the ldisc 873 */ ··· 879 880 /* Ensure the next open requests the N_TTY ldisc */ 881 tty_set_termios_ldisc(tty, N_TTY); 882 883 /* This will need doing differently if we need to lock */ 884 if (o_tty)
··· 790 * N_TTY. 791 */ 792 if (tty->driver->flags & TTY_DRIVER_RESET_TERMIOS) { 793 + /* Avoid racing set_ldisc or tty_ldisc_release */ 794 mutex_lock(&tty->ldisc_mutex); 795 + if (tty->ldisc) { /* Not yet closed */ 796 + /* Switch back to N_TTY */ 797 + tty_ldisc_halt(tty); 798 + tty_ldisc_wait_idle(tty); 799 + tty_ldisc_reinit(tty); 800 + /* At this point we have a closed ldisc and we want to 801 + reopen it. We could defer this to the next open but 802 + it means auditing a lot of other paths so this is 803 + a FIXME */ 804 + WARN_ON(tty_ldisc_open(tty, tty->ldisc)); 805 + tty_ldisc_enable(tty); 806 + } 807 mutex_unlock(&tty->ldisc_mutex); 808 tty_reset_termios(tty); 809 } ··· 865 866 tty_ldisc_wait_idle(tty); 867 868 + mutex_lock(&tty->ldisc_mutex); 869 /* 870 * Now kill off the ldisc 871 */ ··· 875 876 /* Ensure the next open requests the N_TTY ldisc */ 877 tty_set_termios_ldisc(tty, N_TTY); 878 + mutex_unlock(&tty->ldisc_mutex); 879 880 /* This will need doing differently if we need to lock */ 881 if (o_tty)
+1 -1
drivers/char/tty_port.c
··· 267 if (retval == 0) 268 port->flags |= ASYNC_NORMAL_ACTIVE; 269 spin_unlock_irqrestore(&port->lock, flags); 270 - return 0; 271 272 } 273 EXPORT_SYMBOL(tty_port_block_til_ready);
··· 267 if (retval == 0) 268 port->flags |= ASYNC_NORMAL_ACTIVE; 269 spin_unlock_irqrestore(&port->lock, flags); 270 + return retval; 271 272 } 273 EXPORT_SYMBOL(tty_port_block_til_ready);
+3 -9
drivers/char/vt.c
··· 770 visual_init(vc, currcons, 1); 771 if (!*vc->vc_uni_pagedir_loc) 772 con_set_default_unimap(vc); 773 - if (!vc->vc_kmalloced) 774 - vc->vc_screenbuf = kmalloc(vc->vc_screenbuf_size, GFP_KERNEL); 775 if (!vc->vc_screenbuf) { 776 kfree(vc); 777 vc_cons[currcons].d = NULL; 778 return -ENOMEM; 779 } 780 - vc->vc_kmalloced = 1; 781 vc_init(vc, vc->vc_rows, vc->vc_cols, 1); 782 vcs_make_sysfs(currcons); 783 atomic_notifier_call_chain(&vt_notifier_list, VT_ALLOCATE, &param); ··· 911 if (new_scr_end > new_origin) 912 scr_memsetw((void *)new_origin, vc->vc_video_erase_char, 913 new_scr_end - new_origin); 914 - if (vc->vc_kmalloced) 915 - kfree(vc->vc_screenbuf); 916 vc->vc_screenbuf = newscreen; 917 - vc->vc_kmalloced = 1; 918 vc->vc_screenbuf_size = new_screen_size; 919 set_origin(vc); 920 ··· 991 vc->vc_sw->con_deinit(vc); 992 put_pid(vc->vt_pid); 993 module_put(vc->vc_sw->owner); 994 - if (vc->vc_kmalloced) 995 - kfree(vc->vc_screenbuf); 996 if (currcons >= MIN_NR_CONSOLES) 997 kfree(vc); 998 vc_cons[currcons].d = NULL; ··· 2876 INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); 2877 visual_init(vc, currcons, 1); 2878 vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size, GFP_NOWAIT); 2879 - vc->vc_kmalloced = 0; 2880 vc_init(vc, vc->vc_rows, vc->vc_cols, 2881 currcons || !vc->vc_sw->con_save_screen); 2882 }
··· 770 visual_init(vc, currcons, 1); 771 if (!*vc->vc_uni_pagedir_loc) 772 con_set_default_unimap(vc); 773 + vc->vc_screenbuf = kmalloc(vc->vc_screenbuf_size, GFP_KERNEL); 774 if (!vc->vc_screenbuf) { 775 kfree(vc); 776 vc_cons[currcons].d = NULL; 777 return -ENOMEM; 778 } 779 vc_init(vc, vc->vc_rows, vc->vc_cols, 1); 780 vcs_make_sysfs(currcons); 781 atomic_notifier_call_chain(&vt_notifier_list, VT_ALLOCATE, &param); ··· 913 if (new_scr_end > new_origin) 914 scr_memsetw((void *)new_origin, vc->vc_video_erase_char, 915 new_scr_end - new_origin); 916 + kfree(vc->vc_screenbuf); 917 vc->vc_screenbuf = newscreen; 918 vc->vc_screenbuf_size = new_screen_size; 919 set_origin(vc); 920 ··· 995 vc->vc_sw->con_deinit(vc); 996 put_pid(vc->vt_pid); 997 module_put(vc->vc_sw->owner); 998 + kfree(vc->vc_screenbuf); 999 if (currcons >= MIN_NR_CONSOLES) 1000 kfree(vc); 1001 vc_cons[currcons].d = NULL; ··· 2881 INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); 2882 visual_init(vc, currcons, 1); 2883 vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size, GFP_NOWAIT); 2884 vc_init(vc, vc->vc_rows, vc->vc_cols, 2885 currcons || !vc->vc_sw->con_save_screen); 2886 }
-2
drivers/lguest/lg.h
··· 38 #define CHANGED_GDT_TLS 4 /* Actually a subset of CHANGED_GDT */ 39 #define CHANGED_ALL 3 40 41 - struct lguest; 42 - 43 struct lg_cpu { 44 unsigned int id; 45 struct lguest *lg;
··· 38 #define CHANGED_GDT_TLS 4 /* Actually a subset of CHANGED_GDT */ 39 #define CHANGED_ALL 3 40 41 struct lg_cpu { 42 unsigned int id; 43 struct lguest *lg;
+1
drivers/net/ppp_async.c
··· 356 if (!skb_queue_empty(&ap->rqueue)) 357 tasklet_schedule(&ap->tsk); 358 ap_put(ap); 359 } 360 361 static void
··· 356 if (!skb_queue_empty(&ap->rqueue)) 357 tasklet_schedule(&ap->tsk); 358 ap_put(ap); 359 + tty_unthrottle(tty); 360 } 361 362 static void
+1
drivers/net/ppp_synctty.c
··· 397 if (!skb_queue_empty(&ap->rqueue)) 398 tasklet_schedule(&ap->tsk); 399 sp_put(ap); 400 } 401 402 static void
··· 397 if (!skb_queue_empty(&ap->rqueue)) 398 tasklet_schedule(&ap->tsk); 399 sp_put(ap); 400 + tty_unthrottle(tty); 401 } 402 403 static void
-1
drivers/serial/bfin_sport_uart.c
··· 236 int retval; 237 238 pr_debug("%s enter\n", __func__); 239 - memset(buffer, 20, '\0'); 240 snprintf(buffer, 20, "%s rx", up->name); 241 retval = request_irq(up->rx_irq, sport_uart_rx_irq, IRQF_SAMPLE_RANDOM, buffer, up); 242 if (retval) {
··· 236 int retval; 237 238 pr_debug("%s enter\n", __func__); 239 snprintf(buffer, 20, "%s rx", up->name); 240 retval = request_irq(up->rx_irq, sport_uart_rx_irq, IRQF_SAMPLE_RANDOM, buffer, up); 241 if (retval) {
-1
drivers/serial/msm_serial.c
··· 730 } 731 732 static struct platform_driver msm_platform_driver = { 733 - .probe = msm_serial_probe, 734 .remove = msm_serial_remove, 735 .driver = { 736 .name = "msm_serial",
··· 730 } 731 732 static struct platform_driver msm_platform_driver = { 733 .remove = msm_serial_remove, 734 .driver = { 735 .name = "msm_serial",
+1 -1
drivers/virtio/virtio_pci.c
··· 669 670 err = pci_register_driver(&virtio_pci_driver); 671 if (err) 672 - device_unregister(virtio_pci_root); 673 674 return err; 675 }
··· 669 670 err = pci_register_driver(&virtio_pci_driver); 671 if (err) 672 + root_device_unregister(virtio_pci_root); 673 674 return err; 675 }
-1
include/linux/console_struct.h
··· 89 unsigned int vc_need_wrap : 1; 90 unsigned int vc_can_do_color : 1; 91 unsigned int vc_report_mouse : 2; 92 - unsigned int vc_kmalloced : 1; 93 unsigned char vc_utf : 1; /* Unicode UTF-8 encoding */ 94 unsigned char vc_utf_count; 95 int vc_utf_char;
··· 89 unsigned int vc_need_wrap : 1; 90 unsigned int vc_can_do_color : 1; 91 unsigned int vc_report_mouse : 2; 92 unsigned char vc_utf : 1; /* Unicode UTF-8 encoding */ 93 unsigned char vc_utf_count; 94 int vc_utf_char;
+1 -1
include/linux/hrtimer.h
··· 448 449 static inline void timer_stats_account_hrtimer(struct hrtimer *timer) 450 { 451 - if (likely(!timer->start_pid)) 452 return; 453 timer_stats_update_stats(timer, timer->start_pid, timer->start_site, 454 timer->function, timer->start_comm, 0);
··· 448 449 static inline void timer_stats_account_hrtimer(struct hrtimer *timer) 450 { 451 + if (likely(!timer->start_site)) 452 return; 453 timer_stats_update_stats(timer, timer->start_pid, timer->start_site, 454 timer->function, timer->start_comm, 0);
+1 -1
include/linux/lguest.h
··· 11 #define LG_CLOCK_MIN_DELTA 100UL 12 #define LG_CLOCK_MAX_DELTA ULONG_MAX 13 14 - /*G:032 The second method of communicating with the Host is to via "struct 15 * lguest_data". Once the Guest's initialization hypercall tells the Host where 16 * this is, the Guest and Host both publish information in it. :*/ 17 struct lguest_data
··· 11 #define LG_CLOCK_MIN_DELTA 100UL 12 #define LG_CLOCK_MAX_DELTA ULONG_MAX 13 14 + /*G:031 The second method of communicating with the Host is to via "struct 15 * lguest_data". Once the Guest's initialization hypercall tells the Host where 16 * this is, the Guest and Host both publish information in it. :*/ 17 struct lguest_data
+10 -4
include/linux/virtio_net.h
··· 27 #define VIRTIO_NET_F_CTRL_VQ 17 /* Control channel available */ 28 #define VIRTIO_NET_F_CTRL_RX 18 /* Control channel RX mode support */ 29 #define VIRTIO_NET_F_CTRL_VLAN 19 /* Control channel VLAN filtering */ 30 31 #define VIRTIO_NET_S_LINK_UP 1 /* Link is up */ 32 ··· 82 #define VIRTIO_NET_ERR 1 83 84 /* 85 - * Control the RX mode, ie. promisucous and allmulti. PROMISC and 86 - * ALLMULTI commands require an "out" sg entry containing a 1 byte 87 - * state value, zero = disable, non-zero = enable. These commands 88 - * are supported with the VIRTIO_NET_F_CTRL_RX feature. 89 */ 90 #define VIRTIO_NET_CTRL_RX 0 91 #define VIRTIO_NET_CTRL_RX_PROMISC 0 92 #define VIRTIO_NET_CTRL_RX_ALLMULTI 1 93 94 /* 95 * Control the MAC filter table.
··· 27 #define VIRTIO_NET_F_CTRL_VQ 17 /* Control channel available */ 28 #define VIRTIO_NET_F_CTRL_RX 18 /* Control channel RX mode support */ 29 #define VIRTIO_NET_F_CTRL_VLAN 19 /* Control channel VLAN filtering */ 30 + #define VIRTIO_NET_F_CTRL_RX_EXTRA 20 /* Extra RX mode control support */ 31 32 #define VIRTIO_NET_S_LINK_UP 1 /* Link is up */ 33 ··· 81 #define VIRTIO_NET_ERR 1 82 83 /* 84 + * Control the RX mode, ie. promisucous, allmulti, etc... 85 + * All commands require an "out" sg entry containing a 1 byte 86 + * state value, zero = disable, non-zero = enable. Commands 87 + * 0 and 1 are supported with the VIRTIO_NET_F_CTRL_RX feature. 88 + * Commands 2-5 are added with VIRTIO_NET_F_CTRL_RX_EXTRA. 89 */ 90 #define VIRTIO_NET_CTRL_RX 0 91 #define VIRTIO_NET_CTRL_RX_PROMISC 0 92 #define VIRTIO_NET_CTRL_RX_ALLMULTI 1 93 + #define VIRTIO_NET_CTRL_RX_ALLUNI 2 94 + #define VIRTIO_NET_CTRL_RX_NOMULTI 3 95 + #define VIRTIO_NET_CTRL_RX_NOUNI 4 96 + #define VIRTIO_NET_CTRL_RX_NOBCAST 5 97 98 /* 99 * Control the MAC filter table.
+33 -10
kernel/sched.c
··· 493 #endif 494 #ifdef CONFIG_SMP 495 unsigned long rt_nr_migratory; 496 int overloaded; 497 struct plist_head pushable_tasks; 498 #endif ··· 2572 p->se.avg_wakeup = sysctl_sched_wakeup_granularity; 2573 2574 #ifdef CONFIG_SCHEDSTATS 2575 - p->se.wait_start = 0; 2576 - p->se.sum_sleep_runtime = 0; 2577 - p->se.sleep_start = 0; 2578 - p->se.block_start = 0; 2579 - p->se.sleep_max = 0; 2580 - p->se.block_max = 0; 2581 - p->se.exec_max = 0; 2582 - p->se.slice_max = 0; 2583 - p->se.wait_max = 0; 2584 #endif 2585 2586 INIT_LIST_HEAD(&p->rt.run_list); ··· 9097 #ifdef CONFIG_SMP 9098 rt_rq->rt_nr_migratory = 0; 9099 rt_rq->overloaded = 0; 9100 - plist_head_init(&rq->rt.pushable_tasks, &rq->lock); 9101 #endif 9102 9103 rt_rq->rt_time = 0;
··· 493 #endif 494 #ifdef CONFIG_SMP 495 unsigned long rt_nr_migratory; 496 + unsigned long rt_nr_total; 497 int overloaded; 498 struct plist_head pushable_tasks; 499 #endif ··· 2571 p->se.avg_wakeup = sysctl_sched_wakeup_granularity; 2572 2573 #ifdef CONFIG_SCHEDSTATS 2574 + p->se.wait_start = 0; 2575 + p->se.wait_max = 0; 2576 + p->se.wait_count = 0; 2577 + p->se.wait_sum = 0; 2578 + 2579 + p->se.sleep_start = 0; 2580 + p->se.sleep_max = 0; 2581 + p->se.sum_sleep_runtime = 0; 2582 + 2583 + p->se.block_start = 0; 2584 + p->se.block_max = 0; 2585 + p->se.exec_max = 0; 2586 + p->se.slice_max = 0; 2587 + 2588 + p->se.nr_migrations_cold = 0; 2589 + p->se.nr_failed_migrations_affine = 0; 2590 + p->se.nr_failed_migrations_running = 0; 2591 + p->se.nr_failed_migrations_hot = 0; 2592 + p->se.nr_forced_migrations = 0; 2593 + p->se.nr_forced2_migrations = 0; 2594 + 2595 + p->se.nr_wakeups = 0; 2596 + p->se.nr_wakeups_sync = 0; 2597 + p->se.nr_wakeups_migrate = 0; 2598 + p->se.nr_wakeups_local = 0; 2599 + p->se.nr_wakeups_remote = 0; 2600 + p->se.nr_wakeups_affine = 0; 2601 + p->se.nr_wakeups_affine_attempts = 0; 2602 + p->se.nr_wakeups_passive = 0; 2603 + p->se.nr_wakeups_idle = 0; 2604 + 2605 #endif 2606 2607 INIT_LIST_HEAD(&p->rt.run_list); ··· 9074 #ifdef CONFIG_SMP 9075 rt_rq->rt_nr_migratory = 0; 9076 rt_rq->overloaded = 0; 9077 + plist_head_init(&rt_rq->pushable_tasks, &rq->lock); 9078 #endif 9079 9080 rt_rq->rt_time = 0;
+2 -1
kernel/sched_fair.c
··· 687 * all of which have the same weight. 688 */ 689 if (sched_feat(NORMALIZED_SLEEPER) && 690 - task_of(se)->policy != SCHED_IDLE) 691 thresh = calc_delta_fair(thresh, se); 692 693 vruntime -= thresh;
··· 687 * all of which have the same weight. 688 */ 689 if (sched_feat(NORMALIZED_SLEEPER) && 690 + (!entity_is_task(se) || 691 + task_of(se)->policy != SCHED_IDLE)) 692 thresh = calc_delta_fair(thresh, se); 693 694 vruntime -= thresh;
+17 -1
kernel/sched_rt.c
··· 10 11 #ifdef CONFIG_RT_GROUP_SCHED 12 13 static inline struct rq *rq_of_rt_rq(struct rt_rq *rt_rq) 14 { 15 return rt_rq->rq; ··· 23 } 24 25 #else /* CONFIG_RT_GROUP_SCHED */ 26 27 static inline struct rq *rq_of_rt_rq(struct rt_rq *rt_rq) 28 { ··· 77 78 static void update_rt_migration(struct rt_rq *rt_rq) 79 { 80 - if (rt_rq->rt_nr_migratory && (rt_rq->rt_nr_running > 1)) { 81 if (!rt_rq->overloaded) { 82 rt_set_overload(rq_of_rt_rq(rt_rq)); 83 rt_rq->overloaded = 1; ··· 90 91 static void inc_rt_migration(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq) 92 { 93 if (rt_se->nr_cpus_allowed > 1) 94 rt_rq->rt_nr_migratory++; 95 ··· 104 105 static void dec_rt_migration(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq) 106 { 107 if (rt_se->nr_cpus_allowed > 1) 108 rt_rq->rt_nr_migratory--; 109
··· 10 11 #ifdef CONFIG_RT_GROUP_SCHED 12 13 + #define rt_entity_is_task(rt_se) (!(rt_se)->my_q) 14 + 15 static inline struct rq *rq_of_rt_rq(struct rt_rq *rt_rq) 16 { 17 return rt_rq->rq; ··· 21 } 22 23 #else /* CONFIG_RT_GROUP_SCHED */ 24 + 25 + #define rt_entity_is_task(rt_se) (1) 26 27 static inline struct rq *rq_of_rt_rq(struct rt_rq *rt_rq) 28 { ··· 73 74 static void update_rt_migration(struct rt_rq *rt_rq) 75 { 76 + if (rt_rq->rt_nr_migratory && rt_rq->rt_nr_total > 1) { 77 if (!rt_rq->overloaded) { 78 rt_set_overload(rq_of_rt_rq(rt_rq)); 79 rt_rq->overloaded = 1; ··· 86 87 static void inc_rt_migration(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq) 88 { 89 + if (!rt_entity_is_task(rt_se)) 90 + return; 91 + 92 + rt_rq = &rq_of_rt_rq(rt_rq)->rt; 93 + 94 + rt_rq->rt_nr_total++; 95 if (rt_se->nr_cpus_allowed > 1) 96 rt_rq->rt_nr_migratory++; 97 ··· 94 95 static void dec_rt_migration(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq) 96 { 97 + if (!rt_entity_is_task(rt_se)) 98 + return; 99 + 100 + rt_rq = &rq_of_rt_rq(rt_rq)->rt; 101 + 102 + rt_rq->rt_nr_total--; 103 if (rt_se->nr_cpus_allowed > 1) 104 rt_rq->rt_nr_migratory--; 105
+1 -1
kernel/trace/trace_functions.c
··· 363 out_reg: 364 ret = register_ftrace_function_probe(glob, ops, count); 365 366 - return ret; 367 } 368 369 static struct ftrace_func_command ftrace_traceon_cmd = {
··· 363 out_reg: 364 ret = register_ftrace_function_probe(glob, ops, count); 365 366 + return ret < 0 ? ret : 0; 367 } 368 369 static struct ftrace_func_command ftrace_traceon_cmd = {
+1 -1
sound/arm/pxa2xx-pcm-lib.c
··· 75 { 76 struct pxa2xx_runtime_data *rtd = substream->runtime->private_data; 77 78 - if (rtd && rtd->params) 79 *rtd->params->drcmr = 0; 80 81 snd_pcm_set_runtime_buffer(substream, NULL);
··· 75 { 76 struct pxa2xx_runtime_data *rtd = substream->runtime->private_data; 77 78 + if (rtd && rtd->params && rtd->params->drcmr) 79 *rtd->params->drcmr = 0; 80 81 snd_pcm_set_runtime_buffer(substream, NULL);
+6
sound/pci/hda/patch_realtek.c
··· 4505 &dig_nid, 1); 4506 if (err < 0) 4507 continue; 4508 if (!i) 4509 spec->multiout.dig_out_nid = dig_nid; 4510 else {
··· 4505 &dig_nid, 1); 4506 if (err < 0) 4507 continue; 4508 + if (dig_nid > 0x7f) { 4509 + printk(KERN_ERR "alc880_auto: invalid dig_nid " 4510 + "connection 0x%x for NID 0x%x\n", dig_nid, 4511 + spec->autocfg.dig_out_pins[i]); 4512 + continue; 4513 + } 4514 if (!i) 4515 spec->multiout.dig_out_nid = dig_nid; 4516 else {
+5 -2
sound/pci/riptide/riptide.c
··· 2197 if (err < 0) 2198 return err; 2199 #if defined(SUPPORT_JOYSTICK) 2200 - pci_register_driver(&joystick_driver); 2201 #endif 2202 - return 0; 2203 } 2204 2205 static void __exit alsa_card_riptide_exit(void)
··· 2197 if (err < 0) 2198 return err; 2199 #if defined(SUPPORT_JOYSTICK) 2200 + err = pci_register_driver(&joystick_driver); 2201 + /* On failure unregister formerly registered audio driver */ 2202 + if (err < 0) 2203 + pci_unregister_driver(&driver); 2204 #endif 2205 + return err; 2206 } 2207 2208 static void __exit alsa_card_riptide_exit(void)
+13 -1
sound/usb/usbaudio.c
··· 2661 struct usb_interface_descriptor *altsd; 2662 int i, altno, err, stream; 2663 int format; 2664 - struct audioformat *fp; 2665 unsigned char *fmt, *csep; 2666 int num; 2667 ··· 2733 dev->devnum, iface_no, altno); 2734 continue; 2735 } 2736 2737 csep = snd_usb_find_desc(alts->endpoint[0].extra, alts->endpoint[0].extralen, NULL, USB_DT_CS_ENDPOINT); 2738 /* Creamware Noah has this descriptor after the 2nd endpoint */
··· 2661 struct usb_interface_descriptor *altsd; 2662 int i, altno, err, stream; 2663 int format; 2664 + struct audioformat *fp = NULL; 2665 unsigned char *fmt, *csep; 2666 int num; 2667 ··· 2733 dev->devnum, iface_no, altno); 2734 continue; 2735 } 2736 + 2737 + /* 2738 + * Blue Microphones workaround: The last altsetting is identical 2739 + * with the previous one, except for a larger packet size, but 2740 + * is actually a mislabeled two-channel setting; ignore it. 2741 + */ 2742 + if (fmt[4] == 1 && fmt[5] == 2 && altno == 2 && num == 3 && 2743 + fp && fp->altsetting == 1 && fp->channels == 1 && 2744 + fp->format == SNDRV_PCM_FORMAT_S16_LE && 2745 + le16_to_cpu(get_endpoint(alts, 0)->wMaxPacketSize) == 2746 + fp->maxpacksize * 2) 2747 + continue; 2748 2749 csep = snd_usb_find_desc(alts->endpoint[0].extra, alts->endpoint[0].extralen, NULL, USB_DT_CS_ENDPOINT); 2750 /* Creamware Noah has this descriptor after the 2nd endpoint */