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

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