Merge branch 'x86/urgent' into core/memblock

Reason for merge:

Forward-port urgent change to arch/x86/mm/srat_64.c to the memblock tree.

Resolved Conflicts:
arch/x86/mm/srat_64.c

Originally-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>

+494 -255
+1 -1
Documentation/vm/page-types.c
··· 478 } 479 480 if (opt_unpoison && !hwpoison_forget_fd) { 481 - sprintf(buf, "%s/renew-pfn", hwpoison_debug_fs); 482 hwpoison_forget_fd = checked_open(buf, O_WRONLY); 483 } 484 }
··· 478 } 479 480 if (opt_unpoison && !hwpoison_forget_fd) { 481 + sprintf(buf, "%s/unpoison-pfn", hwpoison_debug_fs); 482 hwpoison_forget_fd = checked_open(buf, O_WRONLY); 483 } 484 }
+11 -1
MAINTAINERS
··· 969 S: Maintained 970 F: arch/arm/mach-s5p*/ 971 972 ARM/SHMOBILE ARM ARCHITECTURE 973 M: Paul Mundt <lethal@linux-sh.org> 974 M: Magnus Damm <magnus.damm@gmail.com> ··· 2545 F: drivers/scsi/gdt* 2546 2547 GENERIC GPIO I2C DRIVER 2548 - M: Haavard Skinnemoen <hskinnemoen@atmel.com> 2549 S: Supported 2550 F: drivers/i2c/busses/i2c-gpio.c 2551 F: include/linux/i2c-gpio.h
··· 969 S: Maintained 970 F: arch/arm/mach-s5p*/ 971 972 + ARM/SAMSUNG S5P SERIES FIMC SUPPORT 973 + M: Kyungmin Park <kyungmin.park@samsung.com> 974 + M: Sylwester Nawrocki <s.nawrocki@samsung.com> 975 + L: linux-arm-kernel@lists.infradead.org 976 + L: linux-media@vger.kernel.org 977 + S: Maintained 978 + F: arch/arm/plat-s5p/dev-fimc* 979 + F: arch/arm/plat-samsung/include/plat/*fimc* 980 + F: drivers/media/video/s5p-fimc/ 981 + 982 ARM/SHMOBILE ARM ARCHITECTURE 983 M: Paul Mundt <lethal@linux-sh.org> 984 M: Magnus Damm <magnus.damm@gmail.com> ··· 2535 F: drivers/scsi/gdt* 2536 2537 GENERIC GPIO I2C DRIVER 2538 + M: Haavard Skinnemoen <hskinnemoen@gmail.com> 2539 S: Supported 2540 F: drivers/i2c/busses/i2c-gpio.c 2541 F: include/linux/i2c-gpio.h
+3 -6
arch/x86/kernel/cpu/mcheck/mce_amd.c
··· 141 address = (low & MASK_BLKPTR_LO) >> 21; 142 if (!address) 143 break; 144 address += MCG_XBLK_ADDR; 145 } else 146 ++address; ··· 149 if (rdmsr_safe(address, &low, &high)) 150 break; 151 152 - if (!(high & MASK_VALID_HI)) { 153 - if (block) 154 - continue; 155 - else 156 - break; 157 - } 158 159 if (!(high & MASK_CNTP_HI) || 160 (high & MASK_LOCKED_HI))
··· 141 address = (low & MASK_BLKPTR_LO) >> 21; 142 if (!address) 143 break; 144 + 145 address += MCG_XBLK_ADDR; 146 } else 147 ++address; ··· 148 if (rdmsr_safe(address, &low, &high)) 149 break; 150 151 + if (!(high & MASK_VALID_HI)) 152 + continue; 153 154 if (!(high & MASK_CNTP_HI) || 155 (high & MASK_LOCKED_HI))
+2 -1
arch/x86/kernel/cpu/mcheck/therm_throt.c
··· 216 err = sysfs_add_file_to_group(&sys_dev->kobj, 217 &attr_core_power_limit_count.attr, 218 thermal_attr_group.name); 219 - if (cpu_has(c, X86_FEATURE_PTS)) 220 err = sysfs_add_file_to_group(&sys_dev->kobj, 221 &attr_package_throttle_count.attr, 222 thermal_attr_group.name); ··· 224 err = sysfs_add_file_to_group(&sys_dev->kobj, 225 &attr_package_power_limit_count.attr, 226 thermal_attr_group.name); 227 228 return err; 229 }
··· 216 err = sysfs_add_file_to_group(&sys_dev->kobj, 217 &attr_core_power_limit_count.attr, 218 thermal_attr_group.name); 219 + if (cpu_has(c, X86_FEATURE_PTS)) { 220 err = sysfs_add_file_to_group(&sys_dev->kobj, 221 &attr_package_throttle_count.attr, 222 thermal_attr_group.name); ··· 224 err = sysfs_add_file_to_group(&sys_dev->kobj, 225 &attr_package_power_limit_count.attr, 226 thermal_attr_group.name); 227 + } 228 229 return err; 230 }
+5 -3
arch/x86/mm/srat_64.c
··· 421 return -1; 422 } 423 424 - for_each_node_mask(i, nodes_parsed) 425 - memblock_x86_register_active_regions(i, nodes[i].start >> PAGE_SHIFT, 426 - nodes[i].end >> PAGE_SHIFT); 427 /* for out of order entries in SRAT */ 428 sort_node_map(); 429 if (!nodes_cover_memory(nodes)) {
··· 421 return -1; 422 } 423 424 + for (i = 0; i < num_node_memblks; i++) 425 + memblock_x86_register_active_regions(memblk_nodeid[i], 426 + node_memblk_range[i].start >> PAGE_SHIFT, 427 + node_memblk_range[i].end >> PAGE_SHIFT); 428 + 429 /* for out of order entries in SRAT */ 430 sort_node_map(); 431 if (!nodes_cover_memory(nodes)) {
+8 -4
block/elevator.c
··· 938 } 939 } 940 kobject_uevent(&e->kobj, KOBJ_ADD); 941 } 942 return error; 943 } ··· 948 { 949 kobject_uevent(&e->kobj, KOBJ_REMOVE); 950 kobject_del(&e->kobj); 951 } 952 953 void elv_unregister_queue(struct request_queue *q) ··· 1044 1045 spin_unlock_irq(q->queue_lock); 1046 1047 - __elv_unregister_queue(old_elevator); 1048 1049 - err = elv_register_queue(q); 1050 - if (err) 1051 - goto fail_register; 1052 1053 /* 1054 * finally exit old elevator and turn off BYPASS.
··· 938 } 939 } 940 kobject_uevent(&e->kobj, KOBJ_ADD); 941 + e->registered = 1; 942 } 943 return error; 944 } ··· 947 { 948 kobject_uevent(&e->kobj, KOBJ_REMOVE); 949 kobject_del(&e->kobj); 950 + e->registered = 0; 951 } 952 953 void elv_unregister_queue(struct request_queue *q) ··· 1042 1043 spin_unlock_irq(q->queue_lock); 1044 1045 + if (old_elevator->registered) { 1046 + __elv_unregister_queue(old_elevator); 1047 1048 + err = elv_register_queue(q); 1049 + if (err) 1050 + goto fail_register; 1051 + } 1052 1053 /* 1054 * finally exit old elevator and turn off BYPASS.
+1 -1
drivers/gpu/drm/i915/intel_fb.c
··· 238 239 drm_framebuffer_cleanup(&ifb->base); 240 if (ifb->obj) { 241 - drm_gem_object_handle_unreference(ifb->obj); 242 drm_gem_object_unreference(ifb->obj); 243 } 244 245 return 0;
··· 238 239 drm_framebuffer_cleanup(&ifb->base); 240 if (ifb->obj) { 241 drm_gem_object_unreference(ifb->obj); 242 + ifb->obj = NULL; 243 } 244 245 return 0;
-1
drivers/gpu/drm/nouveau/nouveau_fbcon.c
··· 352 353 if (nouveau_fb->nvbo) { 354 nouveau_bo_unmap(nouveau_fb->nvbo); 355 - drm_gem_object_handle_unreference_unlocked(nouveau_fb->nvbo->gem); 356 drm_gem_object_unreference_unlocked(nouveau_fb->nvbo->gem); 357 nouveau_fb->nvbo = NULL; 358 }
··· 352 353 if (nouveau_fb->nvbo) { 354 nouveau_bo_unmap(nouveau_fb->nvbo); 355 drm_gem_object_unreference_unlocked(nouveau_fb->nvbo->gem); 356 nouveau_fb->nvbo = NULL; 357 }
-1
drivers/gpu/drm/nouveau/nouveau_notifier.c
··· 79 mutex_lock(&dev->struct_mutex); 80 nouveau_bo_unpin(chan->notifier_bo); 81 mutex_unlock(&dev->struct_mutex); 82 - drm_gem_object_handle_unreference_unlocked(chan->notifier_bo->gem); 83 drm_gem_object_unreference_unlocked(chan->notifier_bo->gem); 84 drm_mm_takedown(&chan->notifier_heap); 85 }
··· 79 mutex_lock(&dev->struct_mutex); 80 nouveau_bo_unpin(chan->notifier_bo); 81 mutex_unlock(&dev->struct_mutex); 82 drm_gem_object_unreference_unlocked(chan->notifier_bo->gem); 83 drm_mm_takedown(&chan->notifier_heap); 84 }
-1
drivers/gpu/drm/radeon/radeon_fb.c
··· 97 radeon_bo_unpin(rbo); 98 radeon_bo_unreserve(rbo); 99 } 100 - drm_gem_object_handle_unreference(gobj); 101 drm_gem_object_unreference_unlocked(gobj); 102 } 103
··· 97 radeon_bo_unpin(rbo); 98 radeon_bo_unreserve(rbo); 99 } 100 drm_gem_object_unreference_unlocked(gobj); 101 } 102
+71 -12
drivers/gpu/drm/ttm/ttm_bo.c
··· 442 } 443 444 /** 445 * If bo idle, remove from delayed- and lru lists, and unref. 446 * If not idle, and already on delayed list, do nothing. 447 * If not idle, and not on delayed list, put on delayed list, ··· 493 int ret; 494 495 spin_lock(&bo->lock); 496 (void) ttm_bo_wait(bo, false, false, !remove_all); 497 498 if (!bo->sync_obj) { ··· 502 spin_unlock(&bo->lock); 503 504 spin_lock(&glob->lru_lock); 505 - put_count = ttm_bo_del_from_lru(bo); 506 507 - ret = ttm_bo_reserve_locked(bo, false, false, false, 0); 508 - BUG_ON(ret); 509 - if (bo->ttm) 510 - ttm_tt_unbind(bo->ttm); 511 512 if (!list_empty(&bo->ddestroy)) { 513 list_del_init(&bo->ddestroy); 514 ++put_count; 515 } 516 - if (bo->mem.mm_node) { 517 - drm_mm_put_block(bo->mem.mm_node); 518 - bo->mem.mm_node = NULL; 519 - } 520 - spin_unlock(&glob->lru_lock); 521 522 - atomic_set(&bo->reserved, 0); 523 524 while (put_count--) 525 kref_put(&bo->list_kref, ttm_bo_ref_bug); 526 527 return 0; 528 } 529 - 530 spin_lock(&glob->lru_lock); 531 if (list_empty(&bo->ddestroy)) { 532 void *sync_obj = bo->sync_obj;
··· 442 } 443 444 /** 445 + * Call bo::reserved and with the lru lock held. 446 + * Will release GPU memory type usage on destruction. 447 + * This is the place to put in driver specific hooks. 448 + * Will release the bo::reserved lock and the 449 + * lru lock on exit. 450 + */ 451 + 452 + static void ttm_bo_cleanup_memtype_use(struct ttm_buffer_object *bo) 453 + { 454 + struct ttm_bo_global *glob = bo->glob; 455 + 456 + if (bo->ttm) { 457 + 458 + /** 459 + * Release the lru_lock, since we don't want to have 460 + * an atomic requirement on ttm_tt[unbind|destroy]. 461 + */ 462 + 463 + spin_unlock(&glob->lru_lock); 464 + ttm_tt_unbind(bo->ttm); 465 + ttm_tt_destroy(bo->ttm); 466 + bo->ttm = NULL; 467 + spin_lock(&glob->lru_lock); 468 + } 469 + 470 + if (bo->mem.mm_node) { 471 + drm_mm_put_block(bo->mem.mm_node); 472 + bo->mem.mm_node = NULL; 473 + } 474 + 475 + atomic_set(&bo->reserved, 0); 476 + wake_up_all(&bo->event_queue); 477 + spin_unlock(&glob->lru_lock); 478 + } 479 + 480 + 481 + /** 482 * If bo idle, remove from delayed- and lru lists, and unref. 483 * If not idle, and already on delayed list, do nothing. 484 * If not idle, and not on delayed list, put on delayed list, ··· 456 int ret; 457 458 spin_lock(&bo->lock); 459 + retry: 460 (void) ttm_bo_wait(bo, false, false, !remove_all); 461 462 if (!bo->sync_obj) { ··· 464 spin_unlock(&bo->lock); 465 466 spin_lock(&glob->lru_lock); 467 + ret = ttm_bo_reserve_locked(bo, false, !remove_all, false, 0); 468 469 + /** 470 + * Someone else has the object reserved. Bail and retry. 471 + */ 472 + 473 + if (unlikely(ret == -EBUSY)) { 474 + spin_unlock(&glob->lru_lock); 475 + spin_lock(&bo->lock); 476 + goto requeue; 477 + } 478 + 479 + /** 480 + * We can re-check for sync object without taking 481 + * the bo::lock since setting the sync object requires 482 + * also bo::reserved. A busy object at this point may 483 + * be caused by another thread starting an accelerated 484 + * eviction. 485 + */ 486 + 487 + if (unlikely(bo->sync_obj)) { 488 + atomic_set(&bo->reserved, 0); 489 + wake_up_all(&bo->event_queue); 490 + spin_unlock(&glob->lru_lock); 491 + spin_lock(&bo->lock); 492 + if (remove_all) 493 + goto retry; 494 + else 495 + goto requeue; 496 + } 497 + 498 + put_count = ttm_bo_del_from_lru(bo); 499 500 if (!list_empty(&bo->ddestroy)) { 501 list_del_init(&bo->ddestroy); 502 ++put_count; 503 } 504 505 + ttm_bo_cleanup_memtype_use(bo); 506 507 while (put_count--) 508 kref_put(&bo->list_kref, ttm_bo_ref_bug); 509 510 return 0; 511 } 512 + requeue: 513 spin_lock(&glob->lru_lock); 514 if (list_empty(&bo->ddestroy)) { 515 void *sync_obj = bo->sync_obj;
+5
drivers/i2c/busses/i2c-cpm.c
··· 677 dev_dbg(&ofdev->dev, "hw routines for %s registered.\n", 678 cpm->adap.name); 679 680 return 0; 681 out_shut: 682 cpm_i2c_shutdown(cpm);
··· 677 dev_dbg(&ofdev->dev, "hw routines for %s registered.\n", 678 cpm->adap.name); 679 680 + /* 681 + * register OF I2C devices 682 + */ 683 + of_i2c_register_devices(&cpm->adap); 684 + 685 return 0; 686 out_shut: 687 cpm_i2c_shutdown(cpm);
+3
drivers/i2c/busses/i2c-ibm_iic.c
··· 761 dev_info(&ofdev->dev, "using %s mode\n", 762 dev->fast_mode ? "fast (400 kHz)" : "standard (100 kHz)"); 763 764 return 0; 765 766 error_cleanup:
··· 761 dev_info(&ofdev->dev, "using %s mode\n", 762 dev->fast_mode ? "fast (400 kHz)" : "standard (100 kHz)"); 763 764 + /* Now register all the child nodes */ 765 + of_i2c_register_devices(adap); 766 + 767 return 0; 768 769 error_cleanup:
+1
drivers/i2c/busses/i2c-mpc.c
··· 632 dev_err(i2c->dev, "failed to add adapter\n"); 633 goto fail_add; 634 } 635 636 return result; 637
··· 632 dev_err(i2c->dev, "failed to add adapter\n"); 633 goto fail_add; 634 } 635 + of_i2c_register_devices(&i2c->adap); 636 637 return result; 638
+8 -4
drivers/i2c/busses/i2c-pca-isa.c
··· 71 72 static int pca_isa_waitforcompletion(void *pd) 73 { 74 - long ret = ~0; 75 unsigned long timeout; 76 77 if (irq > -1) { 78 ret = wait_event_timeout(pca_wait, ··· 81 } else { 82 /* Do polling */ 83 timeout = jiffies + pca_isa_ops.timeout; 84 - while (((pca_isa_readbyte(pd, I2C_PCA_CON) 85 - & I2C_PCA_CON_SI) == 0) 86 - && (ret = time_before(jiffies, timeout))) 87 udelay(100); 88 } 89 return ret > 0; 90 } 91
··· 71 72 static int pca_isa_waitforcompletion(void *pd) 73 { 74 unsigned long timeout; 75 + long ret; 76 77 if (irq > -1) { 78 ret = wait_event_timeout(pca_wait, ··· 81 } else { 82 /* Do polling */ 83 timeout = jiffies + pca_isa_ops.timeout; 84 + do { 85 + ret = time_before(jiffies, timeout); 86 + if (pca_isa_readbyte(pd, I2C_PCA_CON) 87 + & I2C_PCA_CON_SI) 88 + break; 89 udelay(100); 90 + } while (ret); 91 } 92 + 93 return ret > 0; 94 } 95
+7 -4
drivers/i2c/busses/i2c-pca-platform.c
··· 80 static int i2c_pca_pf_waitforcompletion(void *pd) 81 { 82 struct i2c_pca_pf_data *i2c = pd; 83 - long ret = ~0; 84 unsigned long timeout; 85 86 if (i2c->irq) { 87 ret = wait_event_timeout(i2c->wait, ··· 90 } else { 91 /* Do polling */ 92 timeout = jiffies + i2c->adap.timeout; 93 - while (((i2c->algo_data.read_byte(i2c, I2C_PCA_CON) 94 - & I2C_PCA_CON_SI) == 0) 95 - && (ret = time_before(jiffies, timeout))) 96 udelay(100); 97 } 98 99 return ret > 0;
··· 80 static int i2c_pca_pf_waitforcompletion(void *pd) 81 { 82 struct i2c_pca_pf_data *i2c = pd; 83 unsigned long timeout; 84 + long ret; 85 86 if (i2c->irq) { 87 ret = wait_event_timeout(i2c->wait, ··· 90 } else { 91 /* Do polling */ 92 timeout = jiffies + i2c->adap.timeout; 93 + do { 94 + ret = time_before(jiffies, timeout); 95 + if (i2c->algo_data.read_byte(i2c, I2C_PCA_CON) 96 + & I2C_PCA_CON_SI) 97 + break; 98 udelay(100); 99 + } while (ret); 100 } 101 102 return ret > 0;
+24 -30
drivers/i2c/i2c-core.c
··· 32 #include <linux/init.h> 33 #include <linux/idr.h> 34 #include <linux/mutex.h> 35 - #include <linux/of_i2c.h> 36 #include <linux/of_device.h> 37 #include <linux/completion.h> 38 #include <linux/hardirq.h> ··· 196 { 197 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; 198 199 - if (pm_runtime_suspended(dev)) 200 - return 0; 201 - 202 - if (pm) 203 - return pm->suspend ? pm->suspend(dev) : 0; 204 205 return i2c_legacy_suspend(dev, PMSG_SUSPEND); 206 } ··· 216 else 217 ret = i2c_legacy_resume(dev); 218 219 - if (!ret) { 220 - pm_runtime_disable(dev); 221 - pm_runtime_set_active(dev); 222 - pm_runtime_enable(dev); 223 - } 224 - 225 return ret; 226 } 227 ··· 223 { 224 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; 225 226 - if (pm_runtime_suspended(dev)) 227 - return 0; 228 - 229 - if (pm) 230 - return pm->freeze ? pm->freeze(dev) : 0; 231 232 return i2c_legacy_suspend(dev, PMSG_FREEZE); 233 } ··· 237 { 238 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; 239 240 - if (pm_runtime_suspended(dev)) 241 - return 0; 242 - 243 - if (pm) 244 - return pm->thaw ? pm->thaw(dev) : 0; 245 246 return i2c_legacy_resume(dev); 247 } ··· 251 { 252 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; 253 254 - if (pm_runtime_suspended(dev)) 255 - return 0; 256 - 257 - if (pm) 258 - return pm->poweroff ? pm->poweroff(dev) : 0; 259 260 return i2c_legacy_suspend(dev, PMSG_HIBERNATE); 261 } ··· 872 /* create pre-declared device nodes */ 873 if (adap->nr < __i2c_first_dynamic_bus_num) 874 i2c_scan_static_board_info(adap); 875 - 876 - /* Register devices from the device tree */ 877 - of_i2c_register_devices(adap); 878 879 /* Notify drivers */ 880 mutex_lock(&core_lock);
··· 32 #include <linux/init.h> 33 #include <linux/idr.h> 34 #include <linux/mutex.h> 35 #include <linux/of_device.h> 36 #include <linux/completion.h> 37 #include <linux/hardirq.h> ··· 197 { 198 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; 199 200 + if (pm) { 201 + if (pm_runtime_suspended(dev)) 202 + return 0; 203 + else 204 + return pm->suspend ? pm->suspend(dev) : 0; 205 + } 206 207 return i2c_legacy_suspend(dev, PMSG_SUSPEND); 208 } ··· 216 else 217 ret = i2c_legacy_resume(dev); 218 219 return ret; 220 } 221 ··· 229 { 230 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; 231 232 + if (pm) { 233 + if (pm_runtime_suspended(dev)) 234 + return 0; 235 + else 236 + return pm->freeze ? pm->freeze(dev) : 0; 237 + } 238 239 return i2c_legacy_suspend(dev, PMSG_FREEZE); 240 } ··· 242 { 243 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; 244 245 + if (pm) { 246 + if (pm_runtime_suspended(dev)) 247 + return 0; 248 + else 249 + return pm->thaw ? pm->thaw(dev) : 0; 250 + } 251 252 return i2c_legacy_resume(dev); 253 } ··· 255 { 256 const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; 257 258 + if (pm) { 259 + if (pm_runtime_suspended(dev)) 260 + return 0; 261 + else 262 + return pm->poweroff ? pm->poweroff(dev) : 0; 263 + } 264 265 return i2c_legacy_suspend(dev, PMSG_HIBERNATE); 266 } ··· 875 /* create pre-declared device nodes */ 876 if (adap->nr < __i2c_first_dynamic_bus_num) 877 i2c_scan_static_board_info(adap); 878 879 /* Notify drivers */ 880 mutex_lock(&core_lock);
+3
drivers/input/joydev.c
··· 483 484 memcpy(joydev->abspam, abspam, len); 485 486 out: 487 kfree(abspam); 488 return retval;
··· 483 484 memcpy(joydev->abspam, abspam, len); 485 486 + for (i = 0; i < joydev->nabs; i++) 487 + joydev->absmap[joydev->abspam[i]] = i; 488 + 489 out: 490 kfree(abspam); 491 return retval;
+7
drivers/input/misc/uinput.c
··· 404 retval = uinput_validate_absbits(dev); 405 if (retval < 0) 406 goto exit; 407 } 408 409 udev->state = UIST_SETUP_COMPLETE;
··· 404 retval = uinput_validate_absbits(dev); 405 if (retval < 0) 406 goto exit; 407 + if (test_bit(ABS_MT_SLOT, dev->absbit)) { 408 + int nslot = input_abs_get_max(dev, ABS_MT_SLOT) + 1; 409 + input_mt_create_slots(dev, nslot); 410 + input_set_events_per_packet(dev, 6 * nslot); 411 + } else if (test_bit(ABS_MT_POSITION_X, dev->absbit)) { 412 + input_set_events_per_packet(dev, 60); 413 + } 414 } 415 416 udev->state = UIST_SETUP_COMPLETE;
+12 -11
drivers/input/tablet/wacom_sys.c
··· 103 static int wacom_open(struct input_dev *dev) 104 { 105 struct wacom *wacom = input_get_drvdata(dev); 106 107 mutex_lock(&wacom->lock); 108 109 - wacom->irq->dev = wacom->usbdev; 110 - 111 - if (usb_autopm_get_interface(wacom->intf) < 0) { 112 - mutex_unlock(&wacom->lock); 113 - return -EIO; 114 - } 115 - 116 if (usb_submit_urb(wacom->irq, GFP_KERNEL)) { 117 - usb_autopm_put_interface(wacom->intf); 118 - mutex_unlock(&wacom->lock); 119 - return -EIO; 120 } 121 122 wacom->open = true; 123 wacom->intf->needs_remote_wakeup = 1; 124 125 mutex_unlock(&wacom->lock); 126 - return 0; 127 } 128 129 static void wacom_close(struct input_dev *dev) ··· 134 wacom->open = false; 135 wacom->intf->needs_remote_wakeup = 0; 136 mutex_unlock(&wacom->lock); 137 } 138 139 static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hid_desc,
··· 103 static int wacom_open(struct input_dev *dev) 104 { 105 struct wacom *wacom = input_get_drvdata(dev); 106 + int retval = 0; 107 + 108 + if (usb_autopm_get_interface(wacom->intf) < 0) 109 + return -EIO; 110 111 mutex_lock(&wacom->lock); 112 113 if (usb_submit_urb(wacom->irq, GFP_KERNEL)) { 114 + retval = -EIO; 115 + goto out; 116 } 117 118 wacom->open = true; 119 wacom->intf->needs_remote_wakeup = 1; 120 121 + out: 122 mutex_unlock(&wacom->lock); 123 + if (retval) 124 + usb_autopm_put_interface(wacom->intf); 125 + return retval; 126 } 127 128 static void wacom_close(struct input_dev *dev) ··· 135 wacom->open = false; 136 wacom->intf->needs_remote_wakeup = 0; 137 mutex_unlock(&wacom->lock); 138 + 139 + usb_autopm_put_interface(wacom->intf); 140 } 141 142 static int wacom_parse_hid(struct usb_interface *intf, struct hid_descriptor *hid_desc,
+5 -4
drivers/md/bitmap.c
··· 1000 page = bitmap->sb_page; 1001 offset = sizeof(bitmap_super_t); 1002 if (!file) 1003 - read_sb_page(bitmap->mddev, 1004 - bitmap->mddev->bitmap_info.offset, 1005 - page, 1006 - index, count); 1007 } else if (file) { 1008 page = read_page(file, index, bitmap, count); 1009 offset = 0;
··· 1000 page = bitmap->sb_page; 1001 offset = sizeof(bitmap_super_t); 1002 if (!file) 1003 + page = read_sb_page( 1004 + bitmap->mddev, 1005 + bitmap->mddev->bitmap_info.offset, 1006 + page, 1007 + index, count); 1008 } else if (file) { 1009 page = read_page(file, index, bitmap, count); 1010 offset = 0;
+3 -1
drivers/md/raid1.c
··· 1839 1840 /* take from bio_init */ 1841 bio->bi_next = NULL; 1842 bio->bi_flags |= 1 << BIO_UPTODATE; 1843 bio->bi_rw = READ; 1844 bio->bi_vcnt = 0; 1845 bio->bi_idx = 0; ··· 1914 !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) 1915 break; 1916 BUG_ON(sync_blocks < (PAGE_SIZE>>9)); 1917 - if (len > (sync_blocks<<9)) 1918 len = sync_blocks<<9; 1919 } 1920
··· 1839 1840 /* take from bio_init */ 1841 bio->bi_next = NULL; 1842 + bio->bi_flags &= ~(BIO_POOL_MASK-1); 1843 bio->bi_flags |= 1 << BIO_UPTODATE; 1844 + bio->bi_comp_cpu = -1; 1845 bio->bi_rw = READ; 1846 bio->bi_vcnt = 0; 1847 bio->bi_idx = 0; ··· 1912 !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) 1913 break; 1914 BUG_ON(sync_blocks < (PAGE_SIZE>>9)); 1915 + if ((len >> 9) > sync_blocks) 1916 len = sync_blocks<<9; 1917 } 1918
+8 -1
drivers/media/IR/ir-keytable.c
··· 319 * a keyup event might follow immediately after the keydown. 320 */ 321 spin_lock_irqsave(&ir->keylock, flags); 322 - if (time_is_after_eq_jiffies(ir->keyup_jiffies)) 323 ir_keyup(ir); 324 spin_unlock_irqrestore(&ir->keylock, flags); 325 } ··· 509 driver_name, rc_tab->name, 510 (ir_dev->props && ir_dev->props->driver_type == RC_DRIVER_IR_RAW) ? 511 " in raw mode" : ""); 512 513 return 0; 514
··· 319 * a keyup event might follow immediately after the keydown. 320 */ 321 spin_lock_irqsave(&ir->keylock, flags); 322 + if (time_is_before_eq_jiffies(ir->keyup_jiffies)) 323 ir_keyup(ir); 324 spin_unlock_irqrestore(&ir->keylock, flags); 325 } ··· 509 driver_name, rc_tab->name, 510 (ir_dev->props && ir_dev->props->driver_type == RC_DRIVER_IR_RAW) ? 511 " in raw mode" : ""); 512 + 513 + /* 514 + * Default delay of 250ms is too short for some protocols, expecially 515 + * since the timeout is currently set to 250ms. Increase it to 500ms, 516 + * to avoid wrong repetition of the keycodes. 517 + */ 518 + input_dev->rep[REP_DELAY] = 500; 519 520 return 0; 521
+1 -1
drivers/media/IR/ir-lirc-codec.c
··· 267 features |= LIRC_CAN_SET_SEND_CARRIER; 268 269 if (ir_dev->props->s_tx_duty_cycle) 270 - features |= LIRC_CAN_SET_REC_DUTY_CYCLE; 271 } 272 273 if (ir_dev->props->s_rx_carrier_range)
··· 267 features |= LIRC_CAN_SET_SEND_CARRIER; 268 269 if (ir_dev->props->s_tx_duty_cycle) 270 + features |= LIRC_CAN_SET_SEND_DUTY_CYCLE; 271 } 272 273 if (ir_dev->props->s_rx_carrier_range)
+3 -1
drivers/media/IR/ir-raw-event.c
··· 279 "rc%u", (unsigned int)ir->devno); 280 281 if (IS_ERR(ir->raw->thread)) { 282 kfree(ir->raw); 283 ir->raw = NULL; 284 - return PTR_ERR(ir->raw->thread); 285 } 286 287 mutex_lock(&ir_raw_handler_lock);
··· 279 "rc%u", (unsigned int)ir->devno); 280 281 if (IS_ERR(ir->raw->thread)) { 282 + int ret = PTR_ERR(ir->raw->thread); 283 + 284 kfree(ir->raw); 285 ir->raw = NULL; 286 + return ret; 287 } 288 289 mutex_lock(&ir_raw_handler_lock);
+11 -6
drivers/media/IR/ir-sysfs.c
··· 67 char *tmp = buf; 68 int i; 69 70 - if (ir_dev->props->driver_type == RC_DRIVER_SCANCODE) { 71 enabled = ir_dev->rc_tab.ir_type; 72 allowed = ir_dev->props->allowed_protos; 73 - } else { 74 enabled = ir_dev->raw->enabled_protocols; 75 allowed = ir_raw_get_allowed_protocols(); 76 - } 77 78 IR_dprintk(1, "allowed - 0x%llx, enabled - 0x%llx\n", 79 (long long)allowed, ··· 122 int rc, i, count = 0; 123 unsigned long flags; 124 125 - if (ir_dev->props->driver_type == RC_DRIVER_SCANCODE) 126 type = ir_dev->rc_tab.ir_type; 127 - else 128 type = ir_dev->raw->enabled_protocols; 129 130 while ((tmp = strsep((char **) &data, " \n")) != NULL) { 131 if (!*tmp) ··· 190 } 191 } 192 193 - if (ir_dev->props->driver_type == RC_DRIVER_SCANCODE) { 194 spin_lock_irqsave(&ir_dev->rc_tab.lock, flags); 195 ir_dev->rc_tab.ir_type = type; 196 spin_unlock_irqrestore(&ir_dev->rc_tab.lock, flags);
··· 67 char *tmp = buf; 68 int i; 69 70 + if (ir_dev->props && ir_dev->props->driver_type == RC_DRIVER_SCANCODE) { 71 enabled = ir_dev->rc_tab.ir_type; 72 allowed = ir_dev->props->allowed_protos; 73 + } else if (ir_dev->raw) { 74 enabled = ir_dev->raw->enabled_protocols; 75 allowed = ir_raw_get_allowed_protocols(); 76 + } else 77 + return sprintf(tmp, "[builtin]\n"); 78 79 IR_dprintk(1, "allowed - 0x%llx, enabled - 0x%llx\n", 80 (long long)allowed, ··· 121 int rc, i, count = 0; 122 unsigned long flags; 123 124 + if (ir_dev->props && ir_dev->props->driver_type == RC_DRIVER_SCANCODE) 125 type = ir_dev->rc_tab.ir_type; 126 + else if (ir_dev->raw) 127 type = ir_dev->raw->enabled_protocols; 128 + else { 129 + IR_dprintk(1, "Protocol switching not supported\n"); 130 + return -EINVAL; 131 + } 132 133 while ((tmp = strsep((char **) &data, " \n")) != NULL) { 134 if (!*tmp) ··· 185 } 186 } 187 188 + if (ir_dev->props && ir_dev->props->driver_type == RC_DRIVER_SCANCODE) { 189 spin_lock_irqsave(&ir_dev->rc_tab.lock, flags); 190 ir_dev->rc_tab.ir_type = type; 191 spin_unlock_irqrestore(&ir_dev->rc_tab.lock, flags);
+3
drivers/media/IR/keymaps/rc-rc6-mce.c
··· 19 20 { 0x800f0416, KEY_PLAY }, 21 { 0x800f0418, KEY_PAUSE }, 22 { 0x800f0419, KEY_STOP }, 23 { 0x800f0417, KEY_RECORD }, 24 ··· 38 { 0x800f0411, KEY_VOLUMEDOWN }, 39 { 0x800f0412, KEY_CHANNELUP }, 40 { 0x800f0413, KEY_CHANNELDOWN }, 41 42 { 0x800f0401, KEY_NUMERIC_1 }, 43 { 0x800f0402, KEY_NUMERIC_2 },
··· 19 20 { 0x800f0416, KEY_PLAY }, 21 { 0x800f0418, KEY_PAUSE }, 22 + { 0x800f046e, KEY_PLAYPAUSE }, 23 { 0x800f0419, KEY_STOP }, 24 { 0x800f0417, KEY_RECORD }, 25 ··· 37 { 0x800f0411, KEY_VOLUMEDOWN }, 38 { 0x800f0412, KEY_CHANNELUP }, 39 { 0x800f0413, KEY_CHANNELDOWN }, 40 + { 0x800f043a, KEY_BRIGHTNESSUP }, 41 + { 0x800f0480, KEY_BRIGHTNESSDOWN }, 42 43 { 0x800f0401, KEY_NUMERIC_1 }, 44 { 0x800f0402, KEY_NUMERIC_2 },
+4
drivers/media/IR/mceusb.c
··· 120 { USB_DEVICE(VENDOR_PHILIPS, 0x0613) }, 121 /* Philips eHome Infrared Transceiver */ 122 { USB_DEVICE(VENDOR_PHILIPS, 0x0815) }, 123 /* Realtek MCE IR Receiver */ 124 { USB_DEVICE(VENDOR_REALTEK, 0x0161) }, 125 /* SMK/Toshiba G83C0004D410 */
··· 120 { USB_DEVICE(VENDOR_PHILIPS, 0x0613) }, 121 /* Philips eHome Infrared Transceiver */ 122 { USB_DEVICE(VENDOR_PHILIPS, 0x0815) }, 123 + /* Philips/Spinel plus IR transceiver for ASUS */ 124 + { USB_DEVICE(VENDOR_PHILIPS, 0x206c) }, 125 + /* Philips/Spinel plus IR transceiver for ASUS */ 126 + { USB_DEVICE(VENDOR_PHILIPS, 0x2088) }, 127 /* Realtek MCE IR Receiver */ 128 { USB_DEVICE(VENDOR_REALTEK, 0x0161) }, 129 /* SMK/Toshiba G83C0004D410 */
-3
drivers/media/dvb/dvb-usb/dib0700_core.c
··· 673 else 674 dev->props.rc.core.bulk_mode = false; 675 676 - /* Need a higher delay, to avoid wrong repeat */ 677 - dev->rc_input_dev->rep[REP_DELAY] = 500; 678 - 679 dib0700_rc_setup(dev); 680 681 return 0;
··· 673 else 674 dev->props.rc.core.bulk_mode = false; 675 676 dib0700_rc_setup(dev); 677 678 return 0;
+54 -2
drivers/media/dvb/dvb-usb/dib0700_devices.c
··· 940 return adap->fe == NULL ? -ENODEV : 0; 941 } 942 943 /* DIB807x generic */ 944 static struct dibx000_agc_config dib807x_agc_config[2] = { 945 { ··· 1833 /* 60 */{ USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T_XXS_2) }, 1834 { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_STK807XPVR) }, 1835 { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_STK807XP) }, 1836 - { USB_DEVICE(USB_VID_PIXELVIEW, USB_PID_PIXELVIEW_SBTVD) }, 1837 { USB_DEVICE(USB_VID_EVOLUTEPC, USB_PID_TVWAY_PLUS) }, 1838 /* 65 */{ USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV73ESE) }, 1839 { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV282E) }, ··· 2458 .pid_filter_count = 32, 2459 .pid_filter = stk70x0p_pid_filter, 2460 .pid_filter_ctrl = stk70x0p_pid_filter_ctrl, 2461 - .frontend_attach = stk7070p_frontend_attach, 2462 .tuner_attach = dib7770p_tuner_attach, 2463 2464 DIB0700_DEFAULT_STREAMING_CONFIG(0x02),
··· 940 return adap->fe == NULL ? -ENODEV : 0; 941 } 942 943 + /* STK7770P */ 944 + static struct dib7000p_config dib7770p_dib7000p_config = { 945 + .output_mpeg2_in_188_bytes = 1, 946 + 947 + .agc_config_count = 1, 948 + .agc = &dib7070_agc_config, 949 + .bw = &dib7070_bw_config_12_mhz, 950 + .tuner_is_baseband = 1, 951 + .spur_protect = 1, 952 + 953 + .gpio_dir = DIB7000P_GPIO_DEFAULT_DIRECTIONS, 954 + .gpio_val = DIB7000P_GPIO_DEFAULT_VALUES, 955 + .gpio_pwm_pos = DIB7000P_GPIO_DEFAULT_PWM_POS, 956 + 957 + .hostbus_diversity = 1, 958 + .enable_current_mirror = 1, 959 + .disable_sample_and_hold = 0, 960 + }; 961 + 962 + static int stk7770p_frontend_attach(struct dvb_usb_adapter *adap) 963 + { 964 + struct usb_device_descriptor *p = &adap->dev->udev->descriptor; 965 + if (p->idVendor == cpu_to_le16(USB_VID_PINNACLE) && 966 + p->idProduct == cpu_to_le16(USB_PID_PINNACLE_PCTV72E)) 967 + dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 0); 968 + else 969 + dib0700_set_gpio(adap->dev, GPIO6, GPIO_OUT, 1); 970 + msleep(10); 971 + dib0700_set_gpio(adap->dev, GPIO9, GPIO_OUT, 1); 972 + dib0700_set_gpio(adap->dev, GPIO4, GPIO_OUT, 1); 973 + dib0700_set_gpio(adap->dev, GPIO7, GPIO_OUT, 1); 974 + dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 0); 975 + 976 + dib0700_ctrl_clock(adap->dev, 72, 1); 977 + 978 + msleep(10); 979 + dib0700_set_gpio(adap->dev, GPIO10, GPIO_OUT, 1); 980 + msleep(10); 981 + dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1); 982 + 983 + if (dib7000p_i2c_enumeration(&adap->dev->i2c_adap, 1, 18, 984 + &dib7770p_dib7000p_config) != 0) { 985 + err("%s: dib7000p_i2c_enumeration failed. Cannot continue\n", 986 + __func__); 987 + return -ENODEV; 988 + } 989 + 990 + adap->fe = dvb_attach(dib7000p_attach, &adap->dev->i2c_adap, 0x80, 991 + &dib7770p_dib7000p_config); 992 + return adap->fe == NULL ? -ENODEV : 0; 993 + } 994 + 995 /* DIB807x generic */ 996 static struct dibx000_agc_config dib807x_agc_config[2] = { 997 { ··· 1781 /* 60 */{ USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T_XXS_2) }, 1782 { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_STK807XPVR) }, 1783 { USB_DEVICE(USB_VID_DIBCOM, USB_PID_DIBCOM_STK807XP) }, 1784 + { USB_DEVICE_VER(USB_VID_PIXELVIEW, USB_PID_PIXELVIEW_SBTVD, 0x000, 0x3f00) }, 1785 { USB_DEVICE(USB_VID_EVOLUTEPC, USB_PID_TVWAY_PLUS) }, 1786 /* 65 */{ USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV73ESE) }, 1787 { USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV282E) }, ··· 2406 .pid_filter_count = 32, 2407 .pid_filter = stk70x0p_pid_filter, 2408 .pid_filter_ctrl = stk70x0p_pid_filter_ctrl, 2409 + .frontend_attach = stk7770p_frontend_attach, 2410 .tuner_attach = dib7770p_tuner_attach, 2411 2412 DIB0700_DEFAULT_STREAMING_CONFIG(0x02),
+1 -3
drivers/media/dvb/dvb-usb/opera1.c
··· 483 } 484 } 485 kfree(p); 486 - if (fw) { 487 - release_firmware(fw); 488 - } 489 return ret; 490 } 491
··· 483 } 484 } 485 kfree(p); 486 + release_firmware(fw); 487 return ret; 488 } 489
+7 -1
drivers/media/dvb/frontends/dib7000p.c
··· 260 261 // dprintk( "908: %x, 909: %x\n", reg_908, reg_909); 262 263 dib7000p_write_word(state, 908, reg_908); 264 dib7000p_write_word(state, 909, reg_909); 265 } ··· 781 default: 782 case GUARD_INTERVAL_1_32: value *= 1; break; 783 } 784 - state->div_sync_wait = (value * 3) / 2 + 32; // add 50% SFN margin + compensate for one DVSY-fifo TODO 785 786 /* deactive the possibility of diversity reception if extended interleaver */ 787 state->div_force_off = !1 && ch->u.ofdm.transmission_mode != TRANSMISSION_MODE_8K;
··· 260 261 // dprintk( "908: %x, 909: %x\n", reg_908, reg_909); 262 263 + reg_909 |= (state->cfg.disable_sample_and_hold & 1) << 4; 264 + reg_908 |= (state->cfg.enable_current_mirror & 1) << 7; 265 + 266 dib7000p_write_word(state, 908, reg_908); 267 dib7000p_write_word(state, 909, reg_909); 268 } ··· 778 default: 779 case GUARD_INTERVAL_1_32: value *= 1; break; 780 } 781 + if (state->cfg.diversity_delay == 0) 782 + state->div_sync_wait = (value * 3) / 2 + 48; // add 50% SFN margin + compensate for one DVSY-fifo 783 + else 784 + state->div_sync_wait = (value * 3) / 2 + state->cfg.diversity_delay; // add 50% SFN margin + compensate for one DVSY-fifo 785 786 /* deactive the possibility of diversity reception if extended interleaver */ 787 state->div_force_off = !1 && ch->u.ofdm.transmission_mode != TRANSMISSION_MODE_8K;
+5
drivers/media/dvb/frontends/dib7000p.h
··· 33 int (*agc_control) (struct dvb_frontend *, u8 before); 34 35 u8 output_mode; 36 }; 37 38 #define DEFAULT_DIB7000P_I2C_ADDRESS 18
··· 33 int (*agc_control) (struct dvb_frontend *, u8 before); 34 35 u8 output_mode; 36 + u8 disable_sample_and_hold : 1; 37 + 38 + u8 enable_current_mirror : 1; 39 + u8 diversity_delay; 40 + 41 }; 42 43 #define DEFAULT_DIB7000P_I2C_ADDRESS 18
+13 -20
drivers/media/dvb/siano/smscoreapi.c
··· 1098 * 1099 * @return pointer to descriptor on success, NULL on error. 1100 */ 1101 - struct smscore_buffer_t *smscore_getbuffer(struct smscore_device_t *coredev) 1102 { 1103 struct smscore_buffer_t *cb = NULL; 1104 unsigned long flags; 1105 1106 - DEFINE_WAIT(wait); 1107 - 1108 spin_lock_irqsave(&coredev->bufferslock, flags); 1109 - 1110 - /* This function must return a valid buffer, since the buffer list is 1111 - * finite, we check that there is an available buffer, if not, we wait 1112 - * until such buffer become available. 1113 - */ 1114 - 1115 - prepare_to_wait(&coredev->buffer_mng_waitq, &wait, TASK_INTERRUPTIBLE); 1116 - if (list_empty(&coredev->buffers)) { 1117 - spin_unlock_irqrestore(&coredev->bufferslock, flags); 1118 - schedule(); 1119 - spin_lock_irqsave(&coredev->bufferslock, flags); 1120 } 1121 - 1122 - finish_wait(&coredev->buffer_mng_waitq, &wait); 1123 - 1124 - cb = (struct smscore_buffer_t *) coredev->buffers.next; 1125 - list_del(&cb->entry); 1126 - 1127 spin_unlock_irqrestore(&coredev->bufferslock, flags); 1128 1129 return cb; 1130 }
··· 1098 * 1099 * @return pointer to descriptor on success, NULL on error. 1100 */ 1101 + 1102 + struct smscore_buffer_t *get_entry(struct smscore_device_t *coredev) 1103 { 1104 struct smscore_buffer_t *cb = NULL; 1105 unsigned long flags; 1106 1107 spin_lock_irqsave(&coredev->bufferslock, flags); 1108 + if (!list_empty(&coredev->buffers)) { 1109 + cb = (struct smscore_buffer_t *) coredev->buffers.next; 1110 + list_del(&cb->entry); 1111 } 1112 spin_unlock_irqrestore(&coredev->bufferslock, flags); 1113 + return cb; 1114 + } 1115 + 1116 + struct smscore_buffer_t *smscore_getbuffer(struct smscore_device_t *coredev) 1117 + { 1118 + struct smscore_buffer_t *cb = NULL; 1119 + 1120 + wait_event(coredev->buffer_mng_waitq, (cb = get_entry(coredev))); 1121 1122 return cb; 1123 }
+1 -1
drivers/media/radio/si470x/radio-si470x-i2c.c
··· 395 radio->registers[POWERCFG] = POWERCFG_ENABLE; 396 if (si470x_set_register(radio, POWERCFG) < 0) { 397 retval = -EIO; 398 - goto err_all; 399 } 400 msleep(110); 401
··· 395 radio->registers[POWERCFG] = POWERCFG_ENABLE; 396 if (si470x_set_register(radio, POWERCFG) < 0) { 397 retval = -EIO; 398 + goto err_video; 399 } 400 msleep(110); 401
+1
drivers/media/video/cx231xx/Makefile
··· 11 EXTRA_CFLAGS += -Idrivers/media/common/tuners 12 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core 13 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends 14
··· 11 EXTRA_CFLAGS += -Idrivers/media/common/tuners 12 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core 13 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends 14 + EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-usb 15
+11 -6
drivers/media/video/cx231xx/cx231xx-cards.c
··· 32 #include <media/v4l2-chip-ident.h> 33 34 #include <media/cx25840.h> 35 #include "xc5000.h" 36 37 #include "cx231xx.h" ··· 176 .driver_info = CX231XX_BOARD_CNXT_RDE_250}, 177 {USB_DEVICE(0x0572, 0x58A1), 178 .driver_info = CX231XX_BOARD_CNXT_RDU_250}, 179 {}, 180 }; 181 ··· 229 dev->board.name, dev->model); 230 231 /* set the direction for GPIO pins */ 232 - cx231xx_set_gpio_direction(dev, dev->board.tuner_gpio->bit, 1); 233 - cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, 1); 234 - cx231xx_set_gpio_direction(dev, dev->board.tuner_sif_gpio, 1); 235 236 - /* request some modules if any required */ 237 238 - /* reset the Tuner */ 239 - cx231xx_gpio_set(dev, dev->board.tuner_gpio); 240 241 /* set the mode to Analog mode initially */ 242 cx231xx_set_mode(dev, CX231XX_ANALOG_MODE);
··· 32 #include <media/v4l2-chip-ident.h> 33 34 #include <media/cx25840.h> 35 + #include "dvb-usb-ids.h" 36 #include "xc5000.h" 37 38 #include "cx231xx.h" ··· 175 .driver_info = CX231XX_BOARD_CNXT_RDE_250}, 176 {USB_DEVICE(0x0572, 0x58A1), 177 .driver_info = CX231XX_BOARD_CNXT_RDU_250}, 178 + {USB_DEVICE_VER(USB_VID_PIXELVIEW, USB_PID_PIXELVIEW_SBTVD, 0x4000,0x4fff), 179 + .driver_info = CX231XX_BOARD_UNKNOWN}, 180 {}, 181 }; 182 ··· 226 dev->board.name, dev->model); 227 228 /* set the direction for GPIO pins */ 229 + if (dev->board.tuner_gpio) { 230 + cx231xx_set_gpio_direction(dev, dev->board.tuner_gpio->bit, 1); 231 + cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, 1); 232 + cx231xx_set_gpio_direction(dev, dev->board.tuner_sif_gpio, 1); 233 234 + /* request some modules if any required */ 235 236 + /* reset the Tuner */ 237 + cx231xx_gpio_set(dev, dev->board.tuner_gpio); 238 + } 239 240 /* set the mode to Analog mode initially */ 241 cx231xx_set_mode(dev, CX231XX_ANALOG_MODE);
+1 -1
drivers/media/video/cx25840/cx25840-core.c
··· 1996 1997 state->volume = v4l2_ctrl_new_std(&state->hdl, 1998 &cx25840_audio_ctrl_ops, V4L2_CID_AUDIO_VOLUME, 1999 - 0, 65335, 65535 / 100, default_volume); 2000 state->mute = v4l2_ctrl_new_std(&state->hdl, 2001 &cx25840_audio_ctrl_ops, V4L2_CID_AUDIO_MUTE, 2002 0, 1, 1, 0);
··· 1996 1997 state->volume = v4l2_ctrl_new_std(&state->hdl, 1998 &cx25840_audio_ctrl_ops, V4L2_CID_AUDIO_VOLUME, 1999 + 0, 65535, 65535 / 100, default_volume); 2000 state->mute = v4l2_ctrl_new_std(&state->hdl, 2001 &cx25840_audio_ctrl_ops, V4L2_CID_AUDIO_MUTE, 2002 0, 1, 1, 0);
+1 -1
drivers/media/video/cx88/Kconfig
··· 17 18 config VIDEO_CX88_ALSA 19 tristate "Conexant 2388x DMA audio support" 20 - depends on VIDEO_CX88 && SND && EXPERIMENTAL 21 select SND_PCM 22 ---help--- 23 This is a video4linux driver for direct (DMA) audio on
··· 17 18 config VIDEO_CX88_ALSA 19 tristate "Conexant 2388x DMA audio support" 20 + depends on VIDEO_CX88 && SND 21 select SND_PCM 22 ---help--- 23 This is a video4linux driver for direct (DMA) audio on
+1
drivers/media/video/gspca/gspca.c
··· 223 usb_rcvintpipe(dev, ep->bEndpointAddress), 224 buffer, buffer_len, 225 int_irq, (void *)gspca_dev, interval); 226 gspca_dev->int_urb = urb; 227 ret = usb_submit_urb(urb, GFP_KERNEL); 228 if (ret < 0) {
··· 223 usb_rcvintpipe(dev, ep->bEndpointAddress), 224 buffer, buffer_len, 225 int_irq, (void *)gspca_dev, interval); 226 + urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; 227 gspca_dev->int_urb = urb; 228 ret = usb_submit_urb(urb, GFP_KERNEL); 229 if (ret < 0) {
+1 -2
drivers/media/video/gspca/sn9c20x.c
··· 2357 (data[33] << 10); 2358 avg_lum >>= 9; 2359 atomic_set(&sd->avg_lum, avg_lum); 2360 - gspca_frame_add(gspca_dev, LAST_PACKET, 2361 - data, len); 2362 return; 2363 } 2364 if (gspca_dev->last_packet_type == LAST_PACKET) {
··· 2357 (data[33] << 10); 2358 avg_lum >>= 9; 2359 atomic_set(&sd->avg_lum, avg_lum); 2360 + gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); 2361 return; 2362 } 2363 if (gspca_dev->last_packet_type == LAST_PACKET) {
+2
drivers/media/video/ivtv/ivtvfb.c
··· 466 struct fb_vblank vblank; 467 u32 trace; 468 469 vblank.flags = FB_VBLANK_HAVE_COUNT |FB_VBLANK_HAVE_VCOUNT | 470 FB_VBLANK_HAVE_VSYNC; 471 trace = read_reg(IVTV_REG_DEC_LINE_FIELD) >> 16;
··· 466 struct fb_vblank vblank; 467 u32 trace; 468 469 + memset(&vblank, 0, sizeof(struct fb_vblank)); 470 + 471 vblank.flags = FB_VBLANK_HAVE_COUNT |FB_VBLANK_HAVE_VCOUNT | 472 FB_VBLANK_HAVE_VSYNC; 473 trace = read_reg(IVTV_REG_DEC_LINE_FIELD) >> 16;
+2 -1
drivers/media/video/mem2mem_testdev.c
··· 239 return -EFAULT; 240 } 241 242 - if (in_buf->vb.size < out_buf->vb.size) { 243 v4l2_err(&dev->v4l2_dev, "Output buffer is too small\n"); 244 return -EINVAL; 245 } ··· 1014 v4l2_m2m_release(dev->m2m_dev); 1015 del_timer_sync(&dev->timer); 1016 video_unregister_device(dev->vfd); 1017 v4l2_device_unregister(&dev->v4l2_dev); 1018 kfree(dev); 1019
··· 239 return -EFAULT; 240 } 241 242 + if (in_buf->vb.size > out_buf->vb.size) { 243 v4l2_err(&dev->v4l2_dev, "Output buffer is too small\n"); 244 return -EINVAL; 245 } ··· 1014 v4l2_m2m_release(dev->m2m_dev); 1015 del_timer_sync(&dev->timer); 1016 video_unregister_device(dev->vfd); 1017 + video_device_release(dev->vfd); 1018 v4l2_device_unregister(&dev->v4l2_dev); 1019 kfree(dev); 1020
+7 -1
drivers/media/video/mt9m111.c
··· 447 dev_dbg(&client->dev, "%s left=%d, top=%d, width=%d, height=%d\n", 448 __func__, rect.left, rect.top, rect.width, rect.height); 449 450 ret = mt9m111_make_rect(client, &rect); 451 if (!ret) 452 mt9m111->rect = rect; ··· 469 470 static int mt9m111_cropcap(struct v4l2_subdev *sd, struct v4l2_cropcap *a) 471 { 472 a->bounds.left = MT9M111_MIN_DARK_COLS; 473 a->bounds.top = MT9M111_MIN_DARK_ROWS; 474 a->bounds.width = MT9M111_MAX_WIDTH; 475 a->bounds.height = MT9M111_MAX_HEIGHT; 476 a->defrect = a->bounds; 477 - a->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; 478 a->pixelaspect.numerator = 1; 479 a->pixelaspect.denominator = 1; 480 ··· 492 mf->width = mt9m111->rect.width; 493 mf->height = mt9m111->rect.height; 494 mf->code = mt9m111->fmt->code; 495 mf->field = V4L2_FIELD_NONE; 496 497 return 0;
··· 447 dev_dbg(&client->dev, "%s left=%d, top=%d, width=%d, height=%d\n", 448 __func__, rect.left, rect.top, rect.width, rect.height); 449 450 + if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) 451 + return -EINVAL; 452 + 453 ret = mt9m111_make_rect(client, &rect); 454 if (!ret) 455 mt9m111->rect = rect; ··· 466 467 static int mt9m111_cropcap(struct v4l2_subdev *sd, struct v4l2_cropcap *a) 468 { 469 + if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) 470 + return -EINVAL; 471 + 472 a->bounds.left = MT9M111_MIN_DARK_COLS; 473 a->bounds.top = MT9M111_MIN_DARK_ROWS; 474 a->bounds.width = MT9M111_MAX_WIDTH; 475 a->bounds.height = MT9M111_MAX_HEIGHT; 476 a->defrect = a->bounds; 477 a->pixelaspect.numerator = 1; 478 a->pixelaspect.denominator = 1; 479 ··· 487 mf->width = mt9m111->rect.width; 488 mf->height = mt9m111->rect.height; 489 mf->code = mt9m111->fmt->code; 490 + mf->colorspace = mt9m111->fmt->colorspace; 491 mf->field = V4L2_FIELD_NONE; 492 493 return 0;
-3
drivers/media/video/mt9v022.c
··· 402 if (mt9v022->model != V4L2_IDENT_MT9V022IX7ATC) 403 return -EINVAL; 404 break; 405 - case 0: 406 - /* No format change, only geometry */ 407 - break; 408 default: 409 return -EINVAL; 410 }
··· 402 if (mt9v022->model != V4L2_IDENT_MT9V022IX7ATC) 403 return -EINVAL; 404 break; 405 default: 406 return -EINVAL; 407 }
+4
drivers/media/video/mx2_camera.c
··· 378 379 spin_lock_irqsave(&pcdev->lock, flags); 380 381 vb = &(*fb_active)->vb; 382 dev_dbg(pcdev->dev, "%s (vb=0x%p) 0x%08lx %d\n", __func__, 383 vb, vb->baddr, vb->bsize); ··· 405 406 *fb_active = buf; 407 408 spin_unlock_irqrestore(&pcdev->lock, flags); 409 } 410
··· 378 379 spin_lock_irqsave(&pcdev->lock, flags); 380 381 + if (*fb_active == NULL) 382 + goto out; 383 + 384 vb = &(*fb_active)->vb; 385 dev_dbg(pcdev->dev, "%s (vb=0x%p) 0x%08lx %d\n", __func__, 386 vb, vb->baddr, vb->bsize); ··· 402 403 *fb_active = buf; 404 405 + out: 406 spin_unlock_irqrestore(&pcdev->lock, flags); 407 } 408
+3 -3
drivers/media/video/pvrusb2/pvrusb2-ctrl.c
··· 513 if (ret >= 0) { 514 ret = pvr2_ctrl_range_check(cptr,*valptr); 515 } 516 - if (maskptr) *maskptr = ~0; 517 } else if (cptr->info->type == pvr2_ctl_bool) { 518 ret = parse_token(ptr,len,valptr,boolNames, 519 ARRAY_SIZE(boolNames)); ··· 522 } else if (ret == 0) { 523 *valptr = (*valptr & 1) ? !0 : 0; 524 } 525 - if (maskptr) *maskptr = 1; 526 } else if (cptr->info->type == pvr2_ctl_enum) { 527 ret = parse_token( 528 ptr,len,valptr, ··· 531 if (ret >= 0) { 532 ret = pvr2_ctrl_range_check(cptr,*valptr); 533 } 534 - if (maskptr) *maskptr = ~0; 535 } else if (cptr->info->type == pvr2_ctl_bitmask) { 536 ret = parse_tlist( 537 ptr,len,maskptr,valptr,
··· 513 if (ret >= 0) { 514 ret = pvr2_ctrl_range_check(cptr,*valptr); 515 } 516 + *maskptr = ~0; 517 } else if (cptr->info->type == pvr2_ctl_bool) { 518 ret = parse_token(ptr,len,valptr,boolNames, 519 ARRAY_SIZE(boolNames)); ··· 522 } else if (ret == 0) { 523 *valptr = (*valptr & 1) ? !0 : 0; 524 } 525 + *maskptr = 1; 526 } else if (cptr->info->type == pvr2_ctl_enum) { 527 ret = parse_token( 528 ptr,len,valptr, ··· 531 if (ret >= 0) { 532 ret = pvr2_ctrl_range_check(cptr,*valptr); 533 } 534 + *maskptr = ~0; 535 } else if (cptr->info->type == pvr2_ctl_bitmask) { 536 ret = parse_tlist( 537 ptr,len,maskptr,valptr,
+42 -52
drivers/media/video/s5p-fimc/fimc-core.c
··· 393 dbg("ctx->out_order_1p= %d", ctx->out_order_1p); 394 } 395 396 /** 397 * fimc_prepare_config - check dimensions, operation and color mode 398 * and pre-calculate offset and the scaling coefficients. ··· 437 { 438 struct fimc_frame *s_frame, *d_frame; 439 struct fimc_vid_buffer *buf = NULL; 440 - struct samsung_fimc_variant *variant = ctx->fimc_dev->variant; 441 int ret = 0; 442 443 s_frame = &ctx->s_frame; ··· 449 swap(d_frame->width, d_frame->height); 450 } 451 452 - /* Prepare the output offset ratios for scaler. */ 453 - d_frame->dma_offset.y_h = d_frame->offs_h; 454 - if (!variant->pix_hoff) 455 - d_frame->dma_offset.y_h *= (d_frame->fmt->depth >> 3); 456 457 - d_frame->dma_offset.y_v = d_frame->offs_v; 458 - 459 - d_frame->dma_offset.cb_h = d_frame->offs_h; 460 - d_frame->dma_offset.cb_v = d_frame->offs_v; 461 - 462 - d_frame->dma_offset.cr_h = d_frame->offs_h; 463 - d_frame->dma_offset.cr_v = d_frame->offs_v; 464 - 465 - if (!variant->pix_hoff && d_frame->fmt->planes_cnt == 3) { 466 - d_frame->dma_offset.cb_h >>= 1; 467 - d_frame->dma_offset.cb_v >>= 1; 468 - d_frame->dma_offset.cr_h >>= 1; 469 - d_frame->dma_offset.cr_v >>= 1; 470 - } 471 - 472 - dbg("out offset: color= %d, y_h= %d, y_v= %d", 473 - d_frame->fmt->color, 474 - d_frame->dma_offset.y_h, d_frame->dma_offset.y_v); 475 - 476 - /* Prepare the input offset ratios for scaler. */ 477 - s_frame->dma_offset.y_h = s_frame->offs_h; 478 - if (!variant->pix_hoff) 479 - s_frame->dma_offset.y_h *= (s_frame->fmt->depth >> 3); 480 - s_frame->dma_offset.y_v = s_frame->offs_v; 481 - 482 - s_frame->dma_offset.cb_h = s_frame->offs_h; 483 - s_frame->dma_offset.cb_v = s_frame->offs_v; 484 - 485 - s_frame->dma_offset.cr_h = s_frame->offs_h; 486 - s_frame->dma_offset.cr_v = s_frame->offs_v; 487 - 488 - if (!variant->pix_hoff && s_frame->fmt->planes_cnt == 3) { 489 - s_frame->dma_offset.cb_h >>= 1; 490 - s_frame->dma_offset.cb_v >>= 1; 491 - s_frame->dma_offset.cr_h >>= 1; 492 - s_frame->dma_offset.cr_v >>= 1; 493 - } 494 - 495 - dbg("in offset: color= %d, y_h= %d, y_v= %d", 496 - s_frame->fmt->color, s_frame->dma_offset.y_h, 497 - s_frame->dma_offset.y_v); 498 - 499 - fimc_set_yuv_order(ctx); 500 - 501 - /* Check against the scaler ratio. */ 502 if (s_frame->height > (SCALER_MAX_VRATIO * d_frame->height) || 503 s_frame->width > (SCALER_MAX_HRATIO * d_frame->width)) { 504 err("out of scaler range"); 505 return -EINVAL; 506 } 507 } 508 509 /* Input DMA mode is not allowed when the scaler is disabled. */ ··· 807 } else { 808 v4l2_err(&ctx->fimc_dev->m2m.v4l2_dev, 809 "Wrong buffer/video queue type (%d)\n", f->type); 810 - return -EINVAL; 811 } 812 813 pix = &f->fmt.pix; ··· 1400 } 1401 1402 fimc->work_queue = create_workqueue(dev_name(&fimc->pdev->dev)); 1403 - if (!fimc->work_queue) 1404 goto err_irq; 1405 1406 ret = fimc_register_m2m_device(fimc); 1407 if (ret) ··· 1480 }; 1481 1482 static struct samsung_fimc_variant fimc01_variant_s5pv210 = { 1483 .has_inp_rot = 1, 1484 .has_out_rot = 1, 1485 .min_inp_pixsize = 16, ··· 1495 }; 1496 1497 static struct samsung_fimc_variant fimc2_variant_s5pv210 = { 1498 .min_inp_pixsize = 16, 1499 .min_out_pixsize = 32, 1500
··· 393 dbg("ctx->out_order_1p= %d", ctx->out_order_1p); 394 } 395 396 + static void fimc_prepare_dma_offset(struct fimc_ctx *ctx, struct fimc_frame *f) 397 + { 398 + struct samsung_fimc_variant *variant = ctx->fimc_dev->variant; 399 + 400 + f->dma_offset.y_h = f->offs_h; 401 + if (!variant->pix_hoff) 402 + f->dma_offset.y_h *= (f->fmt->depth >> 3); 403 + 404 + f->dma_offset.y_v = f->offs_v; 405 + 406 + f->dma_offset.cb_h = f->offs_h; 407 + f->dma_offset.cb_v = f->offs_v; 408 + 409 + f->dma_offset.cr_h = f->offs_h; 410 + f->dma_offset.cr_v = f->offs_v; 411 + 412 + if (!variant->pix_hoff) { 413 + if (f->fmt->planes_cnt == 3) { 414 + f->dma_offset.cb_h >>= 1; 415 + f->dma_offset.cr_h >>= 1; 416 + } 417 + if (f->fmt->color == S5P_FIMC_YCBCR420) { 418 + f->dma_offset.cb_v >>= 1; 419 + f->dma_offset.cr_v >>= 1; 420 + } 421 + } 422 + 423 + dbg("in_offset: color= %d, y_h= %d, y_v= %d", 424 + f->fmt->color, f->dma_offset.y_h, f->dma_offset.y_v); 425 + } 426 + 427 /** 428 * fimc_prepare_config - check dimensions, operation and color mode 429 * and pre-calculate offset and the scaling coefficients. ··· 406 { 407 struct fimc_frame *s_frame, *d_frame; 408 struct fimc_vid_buffer *buf = NULL; 409 int ret = 0; 410 411 s_frame = &ctx->s_frame; ··· 419 swap(d_frame->width, d_frame->height); 420 } 421 422 + /* Prepare the DMA offset ratios for scaler. */ 423 + fimc_prepare_dma_offset(ctx, &ctx->s_frame); 424 + fimc_prepare_dma_offset(ctx, &ctx->d_frame); 425 426 if (s_frame->height > (SCALER_MAX_VRATIO * d_frame->height) || 427 s_frame->width > (SCALER_MAX_HRATIO * d_frame->width)) { 428 err("out of scaler range"); 429 return -EINVAL; 430 } 431 + fimc_set_yuv_order(ctx); 432 } 433 434 /* Input DMA mode is not allowed when the scaler is disabled. */ ··· 822 } else { 823 v4l2_err(&ctx->fimc_dev->m2m.v4l2_dev, 824 "Wrong buffer/video queue type (%d)\n", f->type); 825 + ret = -EINVAL; 826 + goto s_fmt_out; 827 } 828 829 pix = &f->fmt.pix; ··· 1414 } 1415 1416 fimc->work_queue = create_workqueue(dev_name(&fimc->pdev->dev)); 1417 + if (!fimc->work_queue) { 1418 + ret = -ENOMEM; 1419 goto err_irq; 1420 + } 1421 1422 ret = fimc_register_m2m_device(fimc); 1423 if (ret) ··· 1492 }; 1493 1494 static struct samsung_fimc_variant fimc01_variant_s5pv210 = { 1495 + .pix_hoff = 1, 1496 .has_inp_rot = 1, 1497 .has_out_rot = 1, 1498 .min_inp_pixsize = 16, ··· 1506 }; 1507 1508 static struct samsung_fimc_variant fimc2_variant_s5pv210 = { 1509 + .pix_hoff = 1, 1510 .min_inp_pixsize = 16, 1511 .min_out_pixsize = 32, 1512
+5 -5
drivers/media/video/saa7134/saa7134-cards.c
··· 4323 }, 4324 [SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM] = { 4325 /* Beholder Intl. Ltd. 2008 */ 4326 - /*Dmitry Belimov <d.belimov@gmail.com> */ 4327 - .name = "Beholder BeholdTV Columbus TVFM", 4328 .audio_clock = 0x00187de7, 4329 .tuner_type = TUNER_ALPS_TSBE5_PAL, 4330 - .radio_type = UNSET, 4331 - .tuner_addr = ADDR_UNSET, 4332 - .radio_addr = ADDR_UNSET, 4333 .tda9887_conf = TDA9887_PRESENT, 4334 .gpiomask = 0x000A8004, 4335 .inputs = {{
··· 4323 }, 4324 [SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM] = { 4325 /* Beholder Intl. Ltd. 2008 */ 4326 + /* Dmitry Belimov <d.belimov@gmail.com> */ 4327 + .name = "Beholder BeholdTV Columbus TV/FM", 4328 .audio_clock = 0x00187de7, 4329 .tuner_type = TUNER_ALPS_TSBE5_PAL, 4330 + .radio_type = TUNER_TEA5767, 4331 + .tuner_addr = 0xc2 >> 1, 4332 + .radio_addr = 0xc0 >> 1, 4333 .tda9887_conf = TDA9887_PRESENT, 4334 .gpiomask = 0x000A8004, 4335 .inputs = {{
+3 -2
drivers/media/video/saa7164/saa7164-buffer.c
··· 136 int saa7164_buffer_dealloc(struct saa7164_tsport *port, 137 struct saa7164_buffer *buf) 138 { 139 - struct saa7164_dev *dev = port->dev; 140 141 - if ((buf == 0) || (port == 0)) 142 return SAA_ERR_BAD_PARAMETER; 143 144 dprintk(DBGLVL_BUF, "%s() deallocating buffer @ 0x%p\n", __func__, buf); 145
··· 136 int saa7164_buffer_dealloc(struct saa7164_tsport *port, 137 struct saa7164_buffer *buf) 138 { 139 + struct saa7164_dev *dev; 140 141 + if (!buf || !port) 142 return SAA_ERR_BAD_PARAMETER; 143 + dev = port->dev; 144 145 dprintk(DBGLVL_BUF, "%s() deallocating buffer @ 0x%p\n", __func__, buf); 146
+24
drivers/media/video/uvc/uvc_driver.c
··· 486 max(frame->dwFrameInterval[0], 487 frame->dwDefaultFrameInterval)); 488 489 uvc_trace(UVC_TRACE_DESCR, "- %ux%u (%u.%u fps)\n", 490 frame->wWidth, frame->wHeight, 491 10000000/frame->dwDefaultFrameInterval, ··· 2032 .bInterfaceClass = USB_CLASS_VENDOR_SPEC, 2033 .bInterfaceSubClass = 1, 2034 .bInterfaceProtocol = 0 }, 2035 /* Alcor Micro AU3820 (Future Boy PC USB Webcam) */ 2036 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE 2037 | USB_DEVICE_ID_MATCH_INT_INFO, ··· 2106 .bInterfaceProtocol = 0, 2107 .driver_info = UVC_QUIRK_PROBE_MINMAX 2108 | UVC_QUIRK_PROBE_DEF }, 2109 /* Syntek (HP Spartan) */ 2110 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE 2111 | USB_DEVICE_ID_MATCH_INT_INFO,
··· 486 max(frame->dwFrameInterval[0], 487 frame->dwDefaultFrameInterval)); 488 489 + if (dev->quirks & UVC_QUIRK_RESTRICT_FRAME_RATE) { 490 + frame->bFrameIntervalType = 1; 491 + frame->dwFrameInterval[0] = 492 + frame->dwDefaultFrameInterval; 493 + } 494 + 495 uvc_trace(UVC_TRACE_DESCR, "- %ux%u (%u.%u fps)\n", 496 frame->wWidth, frame->wHeight, 497 10000000/frame->dwDefaultFrameInterval, ··· 2026 .bInterfaceClass = USB_CLASS_VENDOR_SPEC, 2027 .bInterfaceSubClass = 1, 2028 .bInterfaceProtocol = 0 }, 2029 + /* Chicony CNF7129 (Asus EEE 100HE) */ 2030 + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE 2031 + | USB_DEVICE_ID_MATCH_INT_INFO, 2032 + .idVendor = 0x04f2, 2033 + .idProduct = 0xb071, 2034 + .bInterfaceClass = USB_CLASS_VIDEO, 2035 + .bInterfaceSubClass = 1, 2036 + .bInterfaceProtocol = 0, 2037 + .driver_info = UVC_QUIRK_RESTRICT_FRAME_RATE }, 2038 /* Alcor Micro AU3820 (Future Boy PC USB Webcam) */ 2039 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE 2040 | USB_DEVICE_ID_MATCH_INT_INFO, ··· 2091 .bInterfaceProtocol = 0, 2092 .driver_info = UVC_QUIRK_PROBE_MINMAX 2093 | UVC_QUIRK_PROBE_DEF }, 2094 + /* IMC Networks (Medion Akoya) */ 2095 + { .match_flags = USB_DEVICE_ID_MATCH_DEVICE 2096 + | USB_DEVICE_ID_MATCH_INT_INFO, 2097 + .idVendor = 0x13d3, 2098 + .idProduct = 0x5103, 2099 + .bInterfaceClass = USB_CLASS_VIDEO, 2100 + .bInterfaceSubClass = 1, 2101 + .bInterfaceProtocol = 0, 2102 + .driver_info = UVC_QUIRK_STREAM_NO_FID }, 2103 /* Syntek (HP Spartan) */ 2104 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE 2105 | USB_DEVICE_ID_MATCH_INT_INFO,
+1
drivers/media/video/uvc/uvcvideo.h
··· 182 #define UVC_QUIRK_IGNORE_SELECTOR_UNIT 0x00000020 183 #define UVC_QUIRK_FIX_BANDWIDTH 0x00000080 184 #define UVC_QUIRK_PROBE_DEF 0x00000100 185 186 /* Format flags */ 187 #define UVC_FMT_FLAG_COMPRESSED 0x00000001
··· 182 #define UVC_QUIRK_IGNORE_SELECTOR_UNIT 0x00000020 183 #define UVC_QUIRK_FIX_BANDWIDTH 0x00000080 184 #define UVC_QUIRK_PROBE_DEF 0x00000100 185 + #define UVC_QUIRK_RESTRICT_FRAME_RATE 0x00000200 186 187 /* Format flags */ 188 #define UVC_FMT_FLAG_COMPRESSED 0x00000001
+4 -2
drivers/media/video/videobuf-dma-contig.c
··· 393 } 394 395 /* read() method */ 396 - dma_free_coherent(q->dev, mem->size, mem->vaddr, mem->dma_handle); 397 - mem->vaddr = NULL; 398 } 399 EXPORT_SYMBOL_GPL(videobuf_dma_contig_free); 400
··· 393 } 394 395 /* read() method */ 396 + if (mem->vaddr) { 397 + dma_free_coherent(q->dev, mem->size, mem->vaddr, mem->dma_handle); 398 + mem->vaddr = NULL; 399 + } 400 } 401 EXPORT_SYMBOL_GPL(videobuf_dma_contig_free); 402
+7 -4
drivers/media/video/videobuf-dma-sg.c
··· 94 * must free the memory. 95 */ 96 static struct scatterlist *videobuf_pages_to_sg(struct page **pages, 97 - int nr_pages, int offset) 98 { 99 struct scatterlist *sglist; 100 int i; ··· 110 /* DMA to highmem pages might not work */ 111 goto highmem; 112 sg_set_page(&sglist[0], pages[0], PAGE_SIZE - offset, offset); 113 for (i = 1; i < nr_pages; i++) { 114 if (NULL == pages[i]) 115 goto nopage; 116 if (PageHighMem(pages[i])) 117 goto highmem; 118 - sg_set_page(&sglist[i], pages[i], PAGE_SIZE, 0); 119 } 120 return sglist; 121 ··· 172 173 first = (data & PAGE_MASK) >> PAGE_SHIFT; 174 last = ((data+size-1) & PAGE_MASK) >> PAGE_SHIFT; 175 - dma->offset = data & ~PAGE_MASK; 176 dma->nr_pages = last-first+1; 177 dma->pages = kmalloc(dma->nr_pages * sizeof(struct page *), GFP_KERNEL); 178 if (NULL == dma->pages) ··· 255 256 if (dma->pages) { 257 dma->sglist = videobuf_pages_to_sg(dma->pages, dma->nr_pages, 258 - dma->offset); 259 } 260 if (dma->vaddr) { 261 dma->sglist = videobuf_vmalloc_to_sg(dma->vaddr,
··· 94 * must free the memory. 95 */ 96 static struct scatterlist *videobuf_pages_to_sg(struct page **pages, 97 + int nr_pages, int offset, size_t size) 98 { 99 struct scatterlist *sglist; 100 int i; ··· 110 /* DMA to highmem pages might not work */ 111 goto highmem; 112 sg_set_page(&sglist[0], pages[0], PAGE_SIZE - offset, offset); 113 + size -= PAGE_SIZE - offset; 114 for (i = 1; i < nr_pages; i++) { 115 if (NULL == pages[i]) 116 goto nopage; 117 if (PageHighMem(pages[i])) 118 goto highmem; 119 + sg_set_page(&sglist[i], pages[i], min(PAGE_SIZE, size), 0); 120 + size -= min(PAGE_SIZE, size); 121 } 122 return sglist; 123 ··· 170 171 first = (data & PAGE_MASK) >> PAGE_SHIFT; 172 last = ((data+size-1) & PAGE_MASK) >> PAGE_SHIFT; 173 + dma->offset = data & ~PAGE_MASK; 174 + dma->size = size; 175 dma->nr_pages = last-first+1; 176 dma->pages = kmalloc(dma->nr_pages * sizeof(struct page *), GFP_KERNEL); 177 if (NULL == dma->pages) ··· 252 253 if (dma->pages) { 254 dma->sglist = videobuf_pages_to_sg(dma->pages, dma->nr_pages, 255 + dma->offset, dma->size); 256 } 257 if (dma->vaddr) { 258 dma->sglist = videobuf_vmalloc_to_sg(dma->vaddr,
-1
drivers/misc/bh1780gli.c
··· 190 191 ddata = i2c_get_clientdata(client); 192 sysfs_remove_group(&client->dev.kobj, &bh1780_attr_group); 193 - i2c_set_clientdata(client, NULL); 194 kfree(ddata); 195 196 return 0;
··· 190 191 ddata = i2c_get_clientdata(client); 192 sysfs_remove_group(&client->dev.kobj, &bh1780_attr_group); 193 kfree(ddata); 194 195 return 0;
-1
drivers/regulator/ad5398.c
··· 256 257 regulator_unregister(chip->rdev); 258 kfree(chip); 259 - i2c_set_clientdata(client, NULL); 260 261 return 0; 262 }
··· 256 257 regulator_unregister(chip->rdev); 258 kfree(chip); 259 260 return 0; 261 }
-2
drivers/regulator/isl6271a-regulator.c
··· 191 struct isl_pmic *pmic = i2c_get_clientdata(i2c); 192 int i; 193 194 - i2c_set_clientdata(i2c, NULL); 195 - 196 for (i = 0; i < 3; i++) 197 regulator_unregister(pmic->rdev[i]); 198
··· 191 struct isl_pmic *pmic = i2c_get_clientdata(i2c); 192 int i; 193 194 for (i = 0; i < 3; i++) 195 regulator_unregister(pmic->rdev[i]); 196
-2
drivers/rtc/rtc-ds3232.c
··· 268 free_irq(client->irq, client); 269 270 out_free: 271 - i2c_set_clientdata(client, NULL); 272 kfree(ds3232); 273 return ret; 274 } ··· 286 } 287 288 rtc_device_unregister(ds3232->rtc); 289 - i2c_set_clientdata(client, NULL); 290 kfree(ds3232); 291 return 0; 292 }
··· 268 free_irq(client->irq, client); 269 270 out_free: 271 kfree(ds3232); 272 return ret; 273 } ··· 287 } 288 289 rtc_device_unregister(ds3232->rtc); 290 kfree(ds3232); 291 return 0; 292 }
+1 -1
drivers/staging/tm6000/Kconfig
··· 1 config VIDEO_TM6000 2 tristate "TV Master TM5600/6000/6010 driver" 3 - depends on VIDEO_DEV && I2C && INPUT && USB && EXPERIMENTAL 4 select VIDEO_TUNER 5 select MEDIA_TUNER_XC2028 6 select MEDIA_TUNER_XC5000
··· 1 config VIDEO_TM6000 2 tristate "TV Master TM5600/6000/6010 driver" 3 + depends on VIDEO_DEV && I2C && INPUT && IR_CORE && USB && EXPERIMENTAL 4 select VIDEO_TUNER 5 select MEDIA_TUNER_XC2028 6 select MEDIA_TUNER_XC5000
+39 -22
drivers/staging/tm6000/tm6000-input.c
··· 46 } 47 48 struct tm6000_ir_poll_result { 49 - u8 rc_data[4]; 50 }; 51 52 struct tm6000_IR { ··· 60 int polling; 61 struct delayed_work work; 62 u8 wait:1; 63 struct urb *int_urb; 64 u8 *urb_data; 65 - u8 key:1; 66 67 int (*get_key) (struct tm6000_IR *, struct tm6000_ir_poll_result *); 68 ··· 122 123 if (urb->status != 0) 124 printk(KERN_INFO "not ready\n"); 125 - else if (urb->actual_length > 0) 126 memcpy(ir->urb_data, urb->transfer_buffer, urb->actual_length); 127 128 - dprintk("data %02x %02x %02x %02x\n", ir->urb_data[0], 129 - ir->urb_data[1], ir->urb_data[2], ir->urb_data[3]); 130 131 - ir->key = 1; 132 133 rc = usb_submit_urb(urb, GFP_ATOMIC); 134 } ··· 141 int rc; 142 u8 buf[2]; 143 144 - if (ir->wait && !&dev->int_in) { 145 - poll_result->rc_data[0] = 0xff; 146 return 0; 147 - } 148 149 if (&dev->int_in) { 150 - poll_result->rc_data[0] = ir->urb_data[0]; 151 - poll_result->rc_data[1] = ir->urb_data[1]; 152 } else { 153 tm6000_set_reg(dev, REQ_04_EN_DISABLE_MCU_INT, 2, 0); 154 msleep(10); 155 tm6000_set_reg(dev, REQ_04_EN_DISABLE_MCU_INT, 2, 1); 156 msleep(10); 157 158 - rc = tm6000_read_write_usb(dev, USB_DIR_IN | USB_TYPE_VENDOR | 159 - USB_RECIP_DEVICE, REQ_02_GET_IR_CODE, 0, 0, buf, 1); 160 161 - msleep(10); 162 163 - dprintk("read data=%02x\n", buf[0]); 164 - if (rc < 0) 165 - return rc; 166 167 - poll_result->rc_data[0] = buf[0]; 168 } 169 return 0; 170 } ··· 198 return; 199 } 200 201 - dprintk("ir->get_key result data=%02x %02x\n", 202 - poll_result.rc_data[0], poll_result.rc_data[1]); 203 204 - if (poll_result.rc_data[0] != 0xff && ir->key == 1) { 205 ir_input_keydown(ir->input->input_dev, &ir->ir, 206 - poll_result.rc_data[0] | poll_result.rc_data[1] << 8); 207 208 ir_input_nokey(ir->input->input_dev, &ir->ir); 209 ir->key = 0;
··· 46 } 47 48 struct tm6000_ir_poll_result { 49 + u16 rc_data; 50 }; 51 52 struct tm6000_IR { ··· 60 int polling; 61 struct delayed_work work; 62 u8 wait:1; 63 + u8 key:1; 64 struct urb *int_urb; 65 u8 *urb_data; 66 67 int (*get_key) (struct tm6000_IR *, struct tm6000_ir_poll_result *); 68 ··· 122 123 if (urb->status != 0) 124 printk(KERN_INFO "not ready\n"); 125 + else if (urb->actual_length > 0) { 126 memcpy(ir->urb_data, urb->transfer_buffer, urb->actual_length); 127 128 + dprintk("data %02x %02x %02x %02x\n", ir->urb_data[0], 129 + ir->urb_data[1], ir->urb_data[2], ir->urb_data[3]); 130 131 + ir->key = 1; 132 + } 133 134 rc = usb_submit_urb(urb, GFP_ATOMIC); 135 } ··· 140 int rc; 141 u8 buf[2]; 142 143 + if (ir->wait && !&dev->int_in) 144 return 0; 145 146 if (&dev->int_in) { 147 + if (ir->ir.ir_type == IR_TYPE_RC5) 148 + poll_result->rc_data = ir->urb_data[0]; 149 + else 150 + poll_result->rc_data = ir->urb_data[0] | ir->urb_data[1] << 8; 151 } else { 152 tm6000_set_reg(dev, REQ_04_EN_DISABLE_MCU_INT, 2, 0); 153 msleep(10); 154 tm6000_set_reg(dev, REQ_04_EN_DISABLE_MCU_INT, 2, 1); 155 msleep(10); 156 157 + if (ir->ir.ir_type == IR_TYPE_RC5) { 158 + rc = tm6000_read_write_usb(dev, USB_DIR_IN | 159 + USB_TYPE_VENDOR | USB_RECIP_DEVICE, 160 + REQ_02_GET_IR_CODE, 0, 0, buf, 1); 161 162 + msleep(10); 163 164 + dprintk("read data=%02x\n", buf[0]); 165 + if (rc < 0) 166 + return rc; 167 168 + poll_result->rc_data = buf[0]; 169 + } else { 170 + rc = tm6000_read_write_usb(dev, USB_DIR_IN | 171 + USB_TYPE_VENDOR | USB_RECIP_DEVICE, 172 + REQ_02_GET_IR_CODE, 0, 0, buf, 2); 173 + 174 + msleep(10); 175 + 176 + dprintk("read data=%04x\n", buf[0] | buf[1] << 8); 177 + if (rc < 0) 178 + return rc; 179 + 180 + poll_result->rc_data = buf[0] | buf[1] << 8; 181 + } 182 + if ((poll_result->rc_data & 0x00ff) != 0xff) 183 + ir->key = 1; 184 } 185 return 0; 186 } ··· 180 return; 181 } 182 183 + dprintk("ir->get_key result data=%04x\n", poll_result.rc_data); 184 185 + if (ir->key) { 186 ir_input_keydown(ir->input->input_dev, &ir->ir, 187 + (u32)poll_result.rc_data); 188 189 ir_input_nokey(ir->input->input_dev, &ir->ir); 190 ir->key = 0;
+14 -5
fs/xfs/linux-2.6/xfs_sync.c
··· 668 xfs_perag_put(pag); 669 } 670 671 - void 672 - __xfs_inode_clear_reclaim_tag( 673 - xfs_mount_t *mp, 674 xfs_perag_t *pag, 675 xfs_inode_t *ip) 676 { 677 - radix_tree_tag_clear(&pag->pag_ici_root, 678 - XFS_INO_TO_AGINO(mp, ip->i_ino), XFS_ICI_RECLAIM_TAG); 679 pag->pag_ici_reclaimable--; 680 if (!pag->pag_ici_reclaimable) { 681 /* clear the reclaim tag from the perag radix tree */ ··· 684 trace_xfs_perag_clear_reclaim(ip->i_mount, pag->pag_agno, 685 -1, _RET_IP_); 686 } 687 } 688 689 /* ··· 846 if (!radix_tree_delete(&pag->pag_ici_root, 847 XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino))) 848 ASSERT(0); 849 write_unlock(&pag->pag_ici_lock); 850 851 /*
··· 668 xfs_perag_put(pag); 669 } 670 671 + STATIC void 672 + __xfs_inode_clear_reclaim( 673 xfs_perag_t *pag, 674 xfs_inode_t *ip) 675 { 676 pag->pag_ici_reclaimable--; 677 if (!pag->pag_ici_reclaimable) { 678 /* clear the reclaim tag from the perag radix tree */ ··· 687 trace_xfs_perag_clear_reclaim(ip->i_mount, pag->pag_agno, 688 -1, _RET_IP_); 689 } 690 + } 691 + 692 + void 693 + __xfs_inode_clear_reclaim_tag( 694 + xfs_mount_t *mp, 695 + xfs_perag_t *pag, 696 + xfs_inode_t *ip) 697 + { 698 + radix_tree_tag_clear(&pag->pag_ici_root, 699 + XFS_INO_TO_AGINO(mp, ip->i_ino), XFS_ICI_RECLAIM_TAG); 700 + __xfs_inode_clear_reclaim(pag, ip); 701 } 702 703 /* ··· 838 if (!radix_tree_delete(&pag->pag_ici_root, 839 XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino))) 840 ASSERT(0); 841 + __xfs_inode_clear_reclaim(pag, ip); 842 write_unlock(&pag->pag_ici_lock); 843 844 /*
+3 -1
include/drm/ttm/ttm_bo_api.h
··· 246 247 atomic_t reserved; 248 249 - 250 /** 251 * Members protected by the bo::lock 252 */ 253 254 void *sync_obj_arg;
··· 246 247 atomic_t reserved; 248 249 /** 250 * Members protected by the bo::lock 251 + * In addition, setting sync_obj to anything else 252 + * than NULL requires bo::reserved to be held. This allows for 253 + * checking NULL while reserved but not holding bo::lock. 254 */ 255 256 void *sync_obj_arg;
+1
include/linux/elevator.h
··· 93 struct elevator_type *elevator_type; 94 struct mutex sysfs_lock; 95 struct hlist_head *hash; 96 }; 97 98 /*
··· 93 struct elevator_type *elevator_type; 94 struct mutex sysfs_lock; 95 struct hlist_head *hash; 96 + unsigned int registered:1; 97 }; 98 99 /*
+1
include/media/videobuf-dma-sg.h
··· 48 49 /* for userland buffer */ 50 int offset; 51 struct page **pages; 52 53 /* for kernel buffers */
··· 48 49 /* for userland buffer */ 50 int offset; 51 + size_t size; 52 struct page **pages; 53 54 /* for kernel buffers */
+8
kernel/signal.c
··· 2215 #ifdef __ARCH_SI_TRAPNO 2216 err |= __put_user(from->si_trapno, &to->si_trapno); 2217 #endif 2218 break; 2219 case __SI_CHLD: 2220 err |= __put_user(from->si_pid, &to->si_pid);
··· 2215 #ifdef __ARCH_SI_TRAPNO 2216 err |= __put_user(from->si_trapno, &to->si_trapno); 2217 #endif 2218 + #ifdef BUS_MCEERR_AO 2219 + /* 2220 + * Other callers might not initialize the si_lsb field, 2221 + * so check explicitely for the right codes here. 2222 + */ 2223 + if (from->si_code == BUS_MCEERR_AR || from->si_code == BUS_MCEERR_AO) 2224 + err |= __put_user(from->si_addr_lsb, &to->si_addr_lsb); 2225 + #endif 2226 break; 2227 case __SI_CHLD: 2228 err |= __put_user(from->si_pid, &to->si_pid);
+1 -1
kernel/sysctl.c
··· 2485 kbuf[left] = 0; 2486 } 2487 2488 - for (; left && vleft--; i++, min++, max++, first=0) { 2489 unsigned long val; 2490 2491 if (write) {
··· 2485 kbuf[left] = 0; 2486 } 2487 2488 + for (; left && vleft--; i++, first = 0) { 2489 unsigned long val; 2490 2491 if (write) {
+7 -3
mm/memcontrol.c
··· 3587 3588 static void mem_cgroup_threshold(struct mem_cgroup *memcg) 3589 { 3590 - __mem_cgroup_threshold(memcg, false); 3591 - if (do_swap_account) 3592 - __mem_cgroup_threshold(memcg, true); 3593 } 3594 3595 static int compare_thresholds(const void *a, const void *b)
··· 3587 3588 static void mem_cgroup_threshold(struct mem_cgroup *memcg) 3589 { 3590 + while (memcg) { 3591 + __mem_cgroup_threshold(memcg, false); 3592 + if (do_swap_account) 3593 + __mem_cgroup_threshold(memcg, true); 3594 + 3595 + memcg = parent_mem_cgroup(memcg); 3596 + } 3597 } 3598 3599 static int compare_thresholds(const void *a, const void *b)
+6 -6
mm/memory-failure.c
··· 183 * signal. 184 */ 185 static int kill_proc_ao(struct task_struct *t, unsigned long addr, int trapno, 186 - unsigned long pfn) 187 { 188 struct siginfo si; 189 int ret; ··· 198 #ifdef __ARCH_SI_TRAPNO 199 si.si_trapno = trapno; 200 #endif 201 - si.si_addr_lsb = PAGE_SHIFT; 202 /* 203 * Don't use force here, it's convenient if the signal 204 * can be temporarily blocked. ··· 235 int nr; 236 do { 237 nr = shrink_slab(1000, GFP_KERNEL, 1000); 238 - if (page_count(p) == 0) 239 break; 240 } while (nr > 10); 241 } ··· 327 * wrong earlier. 328 */ 329 static void kill_procs_ao(struct list_head *to_kill, int doit, int trapno, 330 - int fail, unsigned long pfn) 331 { 332 struct to_kill *tk, *next; 333 ··· 352 * process anyways. 353 */ 354 else if (kill_proc_ao(tk->tsk, tk->addr, trapno, 355 - pfn) < 0) 356 printk(KERN_ERR 357 "MCE %#lx: Cannot send advisory machine check signal to %s:%d\n", 358 pfn, tk->tsk->comm, tk->tsk->pid); ··· 928 * any accesses to the poisoned memory. 929 */ 930 kill_procs_ao(&tokill, !!PageDirty(hpage), trapno, 931 - ret != SWAP_SUCCESS, pfn); 932 933 return ret; 934 }
··· 183 * signal. 184 */ 185 static int kill_proc_ao(struct task_struct *t, unsigned long addr, int trapno, 186 + unsigned long pfn, struct page *page) 187 { 188 struct siginfo si; 189 int ret; ··· 198 #ifdef __ARCH_SI_TRAPNO 199 si.si_trapno = trapno; 200 #endif 201 + si.si_addr_lsb = compound_order(compound_head(page)) + PAGE_SHIFT; 202 /* 203 * Don't use force here, it's convenient if the signal 204 * can be temporarily blocked. ··· 235 int nr; 236 do { 237 nr = shrink_slab(1000, GFP_KERNEL, 1000); 238 + if (page_count(p) == 1) 239 break; 240 } while (nr > 10); 241 } ··· 327 * wrong earlier. 328 */ 329 static void kill_procs_ao(struct list_head *to_kill, int doit, int trapno, 330 + int fail, struct page *page, unsigned long pfn) 331 { 332 struct to_kill *tk, *next; 333 ··· 352 * process anyways. 353 */ 354 else if (kill_proc_ao(tk->tsk, tk->addr, trapno, 355 + pfn, page) < 0) 356 printk(KERN_ERR 357 "MCE %#lx: Cannot send advisory machine check signal to %s:%d\n", 358 pfn, tk->tsk->comm, tk->tsk->pid); ··· 928 * any accesses to the poisoned memory. 929 */ 930 kill_procs_ao(&tokill, !!PageDirty(hpage), trapno, 931 + ret != SWAP_SUCCESS, p, pfn); 932 933 return ret; 934 }
+2 -2
mm/page_alloc.c
··· 5198 if (!table) 5199 panic("Failed to allocate %s hash table\n", tablename); 5200 5201 - printk(KERN_INFO "%s hash table entries: %d (order: %d, %lu bytes)\n", 5202 tablename, 5203 - (1U << log2qty), 5204 ilog2(size) - PAGE_SHIFT, 5205 size); 5206
··· 5198 if (!table) 5199 panic("Failed to allocate %s hash table\n", tablename); 5200 5201 + printk(KERN_INFO "%s hash table entries: %ld (order: %d, %lu bytes)\n", 5202 tablename, 5203 + (1UL << log2qty), 5204 ilog2(size) - PAGE_SHIFT, 5205 size); 5206