Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branches 'bugzilla-13121+', 'bugzilla-13233', 'redhat-bugzilla-500311', 'pci-bind-oops', 'misc-2.6.30' and 'i7300_idle' into release

Len Brown 6afec830 93bcece2

+49 -45
+2 -2
arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
··· 693 693 if (perf->control_register.space_id == ACPI_ADR_SPACE_FIXED_HARDWARE && 694 694 policy->cpuinfo.transition_latency > 20 * 1000) { 695 695 policy->cpuinfo.transition_latency = 20 * 1000; 696 - printk_once(KERN_INFO "Capping off P-state tranision" 697 - " latency at 20 uS\n"); 696 + printk_once(KERN_INFO 697 + "P-state transition latency capped at 20 uS\n"); 698 698 } 699 699 700 700 /* table init */
+6 -18
drivers/acpi/pci_bind.c
··· 116 116 struct acpi_pci_data *pdata; 117 117 struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; 118 118 acpi_handle handle; 119 - struct pci_dev *dev; 120 - struct pci_bus *bus; 121 - 122 119 123 120 if (!device || !device->parent) 124 121 return -EINVAL; ··· 173 176 * Locate matching device in PCI namespace. If it doesn't exist 174 177 * this typically means that the device isn't currently inserted 175 178 * (e.g. docking station, port replicator, etc.). 176 - * We cannot simply search the global pci device list, since 177 - * PCI devices are added to the global pci list when the root 178 - * bridge start ops are run, which may not have happened yet. 179 179 */ 180 - bus = pci_find_bus(data->id.segment, data->id.bus); 181 - if (bus) { 182 - list_for_each_entry(dev, &bus->devices, bus_list) { 183 - if (dev->devfn == PCI_DEVFN(data->id.device, 184 - data->id.function)) { 185 - data->dev = dev; 186 - break; 187 - } 188 - } 189 - } 180 + data->dev = pci_get_slot(pdata->bus, 181 + PCI_DEVFN(data->id.device, data->id.function)); 190 182 if (!data->dev) { 191 183 ACPI_DEBUG_PRINT((ACPI_DB_INFO, 192 184 "Device %04x:%02x:%02x.%d not present in PCI namespace\n", ··· 245 259 246 260 end: 247 261 kfree(buffer.pointer); 248 - if (result) 262 + if (result) { 263 + pci_dev_put(data->dev); 249 264 kfree(data); 250 - 265 + } 251 266 return result; 252 267 } 253 268 ··· 290 303 if (data->dev->subordinate) { 291 304 acpi_pci_irq_del_prt(data->id.segment, data->bus->number); 292 305 } 306 + pci_dev_put(data->dev); 293 307 kfree(data); 294 308 295 309 end:
+7 -1
drivers/acpi/processor_idle.c
··· 148 148 if (cpu_has(&cpu_data(pr->id), X86_FEATURE_ARAT)) 149 149 return; 150 150 151 + if (boot_cpu_has(X86_FEATURE_AMDC1E)) 152 + type = ACPI_STATE_C1; 153 + 151 154 /* 152 155 * Check, if one of the previous states already marked the lapic 153 156 * unstable ··· 614 611 switch (cx->type) { 615 612 case ACPI_STATE_C1: 616 613 cx->valid = 1; 614 + acpi_timer_check_state(i, pr, cx); 617 615 break; 618 616 619 617 case ACPI_STATE_C2: ··· 834 830 835 831 /* Do not access any ACPI IO ports in suspend path */ 836 832 if (acpi_idle_suspend) { 837 - acpi_safe_halt(); 838 833 local_irq_enable(); 834 + cpu_relax(); 839 835 return 0; 840 836 } 841 837 838 + acpi_state_timer_broadcast(pr, cx, 1); 842 839 kt1 = ktime_get_real(); 843 840 acpi_idle_do_entry(cx); 844 841 kt2 = ktime_get_real(); ··· 847 842 848 843 local_irq_enable(); 849 844 cx->usage++; 845 + acpi_state_timer_broadcast(pr, cx, 0); 850 846 851 847 return idle_time; 852 848 }
+9 -3
drivers/acpi/processor_perflib.c
··· 309 309 (u32) px->bus_master_latency, 310 310 (u32) px->control, (u32) px->status)); 311 311 312 - if (!px->core_frequency) { 313 - printk(KERN_ERR PREFIX 314 - "Invalid _PSS data: freq is zero\n"); 312 + /* 313 + * Check that ACPI's u64 MHz will be valid as u32 KHz in cpufreq 314 + */ 315 + if (!px->core_frequency || 316 + ((u32)(px->core_frequency * 1000) != 317 + (px->core_frequency * 1000))) { 318 + printk(KERN_ERR FW_BUG PREFIX 319 + "Invalid BIOS _PSS frequency: 0x%llx MHz\n", 320 + px->core_frequency); 315 321 result = -EFAULT; 316 322 kfree(pr->performance->states); 317 323 goto end;
+1 -1
drivers/acpi/processor_throttling.c
··· 840 840 state = acpi_get_throttling_state(pr, value); 841 841 if (state == -1) { 842 842 ACPI_WARNING((AE_INFO, 843 - "Invalid throttling state, reset\n")); 843 + "Invalid throttling state, reset")); 844 844 state = 0; 845 845 ret = acpi_processor_set_throttling(pr, state); 846 846 if (ret)
+1 -1
drivers/acpi/video.c
··· 2350 2350 return acpi_video_register(); 2351 2351 } 2352 2352 2353 - void __exit acpi_video_exit(void) 2353 + void acpi_video_exit(void) 2354 2354 { 2355 2355 2356 2356 acpi_bus_unregister_driver(&acpi_video_bus);
+1 -1
drivers/dma/ioat_dma.c
··· 173 173 xfercap = (xfercap_scale == 0 ? -1 : (1UL << xfercap_scale)); 174 174 175 175 #ifdef CONFIG_I7300_IDLE_IOAT_CHANNEL 176 - if (i7300_idle_platform_probe(NULL, NULL) == 0) { 176 + if (i7300_idle_platform_probe(NULL, NULL, 1) == 0) { 177 177 device->common.chancnt--; 178 178 } 179 179 #endif
+7 -7
drivers/gpu/drm/Kconfig
··· 67 67 will load the correct one. 68 68 69 69 config DRM_I915 70 + tristate "i915 driver" 70 71 select FB_CFB_FILLRECT 71 72 select FB_CFB_COPYAREA 72 73 select FB_CFB_IMAGEBLIT 73 74 select FB 74 75 select FRAMEBUFFER_CONSOLE if !EMBEDDED 75 - tristate "i915 driver" 76 + # i915 depends on ACPI_VIDEO when ACPI is enabled 77 + # but for select to work, need to select ACPI_VIDEO's dependencies, ick 78 + select VIDEO_OUTPUT_CONTROL if ACPI 79 + select BACKLIGHT_CLASS_DEVICE if ACPI 80 + select INPUT if ACPI 81 + select ACPI_VIDEO if ACPI 76 82 help 77 83 Choose this option if you have a system that has Intel 830M, 845G, 78 84 852GM, 855GM 865G or 915G integrated graphics. If M is selected, the ··· 90 84 config DRM_I915_KMS 91 85 bool "Enable modesetting on intel by default" 92 86 depends on DRM_I915 93 - # i915 KMS depends on ACPI_VIDEO when ACPI is enabled 94 - # but for select to work, need to select ACPI_VIDEO's dependencies, ick 95 - select VIDEO_OUTPUT_CONTROL if ACPI 96 - select BACKLIGHT_CLASS_DEVICE if ACPI 97 - select INPUT if ACPI 98 - select ACPI_VIDEO if ACPI 99 87 help 100 88 Choose this option if you want kernel modesetting enabled by default, 101 89 and you have a new enough userspace to support this. Running old
+5 -1
drivers/idle/i7300_idle.c
··· 41 41 module_param_named(debug, debug, uint, 0644); 42 42 MODULE_PARM_DESC(debug, "Enable debug printks in this driver"); 43 43 44 + static int forceload; 45 + module_param_named(forceload, forceload, uint, 0644); 46 + MODULE_PARM_DESC(debug, "Enable driver testing on unvalidated i5000"); 47 + 44 48 #define dprintk(fmt, arg...) \ 45 49 do { if (debug) printk(KERN_INFO I7300_PRINT fmt, ##arg); } while (0) 46 50 ··· 556 552 cpus_clear(idle_cpumask); 557 553 total_us = 0; 558 554 559 - if (i7300_idle_platform_probe(&fbd_dev, &ioat_dev)) 555 + if (i7300_idle_platform_probe(&fbd_dev, &ioat_dev, forceload)) 560 556 return -ENODEV; 561 557 562 558 if (i7300_idle_thrt_save())
+10 -10
include/linux/i7300_idle.h
··· 16 16 struct fbd_ioat { 17 17 unsigned int vendor; 18 18 unsigned int ioat_dev; 19 + unsigned int enabled; 19 20 }; 20 21 21 22 /* 22 23 * The i5000 chip-set has the same hooks as the i7300 23 - * but support is disabled by default because this driver 24 - * has not been validated on that platform. 24 + * but it is not enabled by default and must be manually 25 + * manually enabled with "forceload=1" because it is 26 + * only lightly validated. 25 27 */ 26 - #define SUPPORT_I5000 0 27 28 28 29 static const struct fbd_ioat fbd_ioat_list[] = { 29 - {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IOAT_CNB}, 30 - #if SUPPORT_I5000 31 - {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IOAT}, 32 - #endif 30 + {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IOAT_CNB, 1}, 31 + {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IOAT, 0}, 33 32 {0, 0} 34 33 }; 35 34 36 35 /* table of devices that work with this driver */ 37 36 static const struct pci_device_id pci_tbl[] = { 38 37 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_FBD_CNB) }, 39 - #if SUPPORT_I5000 40 38 { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_5000_ERR) }, 41 - #endif 42 39 { } /* Terminating entry */ 43 40 }; 44 41 45 42 /* Check for known platforms with I/O-AT */ 46 43 static inline int i7300_idle_platform_probe(struct pci_dev **fbd_dev, 47 - struct pci_dev **ioat_dev) 44 + struct pci_dev **ioat_dev, 45 + int enable_all) 48 46 { 49 47 int i; 50 48 struct pci_dev *memdev, *dmadev; ··· 67 69 for (i = 0; fbd_ioat_list[i].vendor != 0; i++) { 68 70 if (dmadev->vendor == fbd_ioat_list[i].vendor && 69 71 dmadev->device == fbd_ioat_list[i].ioat_dev) { 72 + if (!(fbd_ioat_list[i].enabled || enable_all)) 73 + continue; 70 74 if (fbd_dev) 71 75 *fbd_dev = memdev; 72 76 if (ioat_dev)