- 22 2月, 2012 1 次提交
-
-
由 Hitoshi Mitake 提交于
This provides unified readq()/writeq() helper functions for 32-bit drivers. For some cases, readq/writeq without atomicity is harmful, and order of io access has to be specified explicitly. So in this patch, new two header files which contain non-atomic readq/writeq are added. - <asm-generic/io-64-nonatomic-lo-hi.h> provides non-atomic readq/ writeq with the order of lower address -> higher address - <asm-generic/io-64-nonatomic-hi-lo.h> provides non-atomic readq/ writeq with reversed order This allows us to remove some readq()s that were added drivers when the default non-atomic ones were removed in commit dbee8a0a ("x86: remove 32-bit versions of readq()/writeq()") The drivers which need readq/writeq but can do with the non-atomic ones must add the line: #include <asm-generic/io-64-nonatomic-lo-hi.h> /* or hi-lo.h */ But this will be nop in 64-bit environments, and no other #ifdefs are required. So I believe that this patch can solve the problem of 1. driver-specific readq/writeq 2. atomicity and order of io access This patch is tested with building allyesconfig and allmodconfig as ARCH=x86 and ARCH=i386 on top of tip/master. Cc: Kashyap Desai <Kashyap.Desai@lsi.com> Cc: Len Brown <lenb@kernel.org> Cc: Ravi Anand <ravi.anand@qlogic.com> Cc: Vikas Chaudhary <vikas.chaudhary@qlogic.com> Cc: Matthew Garrett <mjg@redhat.com> Cc: Jason Uhlenkott <juhlenko@akamai.com> Cc: James Bottomley <James.Bottomley@parallels.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Roland Dreier <roland@purestorage.com> Cc: James Bottomley <jbottomley@parallels.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Cc: Matthew Wilcox <matthew.r.wilcox@intel.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: NHitoshi Mitake <h.mitake@gmail.com> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 06 8月, 2011 1 次提交
-
-
由 Jesse Barnes 提交于
When enabling turbo, we need to set both the TDC and TDP bits. IIRC only the TDC one actually matters, but fix it up anyway since the current code is confusing. Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
- 25 5月, 2011 1 次提交
-
-
由 Roland Dreier 提交于
The presense of a writeq() implementation on 32-bit x86 that splits the 64-bit write into two 32-bit writes turns out to break the mpt2sas driver (and in general is risky for drivers as was discussed in <http://lkml.kernel.org/r/adaab6c1h7c.fsf@cisco.com>). To fix this, revert 2c5643b1 ("x86: provide readq()/writeq() on 32-bit too") and follow-on cleanups. This unfortunately leads to pushing non-atomic definitions of readq() and write() to various x86-only drivers that in the meantime started using the definitions in the x86 version of <asm/io.h>. However as discussed exhaustively, this is actually the right thing to do, because the right way to split a 64-bit transaction is hardware dependent and therefore belongs in the hardware driver (eg mpt2sas needs a spinlock to make sure no other accesses occur in between the two halves of the access). Build tested on 32- and 64-bit x86 allmodconfig. Link: http://lkml.kernel.org/r/x86-32-writeq-is-broken@mdm.bga.comAcked-by: NHitoshi Mitake <h.mitake@gmail.com> Cc: Kashyap Desai <Kashyap.Desai@lsi.com> Cc: Len Brown <lenb@kernel.org> Cc: Ravi Anand <ravi.anand@qlogic.com> Cc: Vikas Chaudhary <vikas.chaudhary@qlogic.com> Cc: Matthew Garrett <mjg@redhat.com> Cc: Jason Uhlenkott <juhlenko@akamai.com> Acked-by: NJames Bottomley <James.Bottomley@parallels.com> Acked-by: NIngo Molnar <mingo@elte.hu> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Signed-off-by: NRoland Dreier <roland@purestorage.com> Signed-off-by: NAndrew Morton <akpm@linux-foundation.org> Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
-
- 28 3月, 2011 1 次提交
-
-
由 Jesse Barnes 提交于
This is what I intended to do since: 1) the driver handles variable waits just fine, and 2) interruptible waits aren't reported as load in the load avg. Reported-and-tested-by: NAndreas Hartmann <andihartmann@freenet.de> Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
- 11 1月, 2011 1 次提交
-
-
由 Randy Dunlap 提交于
Fix sparse warning for non-ANSI function declaration: drivers/platform/x86/intel_ips.c:1477:25: warning: non-ANSI function declaration of function 'ips_link_to_i915_driver' Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com> Cc: Matthew Garrett <mjg@redhat.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
- 23 12月, 2010 1 次提交
-
-
由 Eric Anholt 提交于
The IPS driver is designed to be able to run detached from i915 and just not enable GPU turbo in that case, in order to avoid module dependencies between the two drivers. This means that we don't know what the load order between the two is going to be, and we had previously only supported IPS after (optionally) i915, but not i915 after IPS. If the wrong order was chosen, you'd get no GPU turbo, and something like half the possible graphics performance. Signed-off-by: NEric Anholt <eric@anholt.net> Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk> Cc: stable@kernel.org
-
- 06 10月, 2010 11 次提交
-
-
由 Matthew Garrett 提交于
Values here are in internal units rather than Watts, so we shouldn't perform any conversion. Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Jesse Barnes 提交于
The undocumented interface we're using for reading CPU power seems to be overreporting power. Until we figure out how to correct it, disable CPU turbo and power reporting to be safe. This will keep the CPU within default limits and still allow us to increase GPU frequency as needed. Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Jesse Barnes 提交于
The BIOS may hand us a lower CPU power limit than the default for a given SKU. We should use it in case the platform isn't designed to dissapate the full TDP of a given part. Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Andy Whitcroft 提交于
Both when polling the current turbo status (in poll_turbo_status mode) and when handling thermal events (in ips_irq_handler) the current status of GPU turbo is updated to match the hardware status. However if during driver initialisation we were unable aquire linkage to the i915 driver enabling GPU turbo will lead to an oops on the first attempt to determine GPU busy status. Ensure that we do not enable GPU turbo unless we have driver linkage. BugLink: http://bugs.launchpad.net/bugs/632430 Cc: stable@kernel.org Signed-off-by: NAndy Whitcroft <apw@canonical.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Tim Gardner 提交于
Print some interesting values when MCP limits are exceeded. Signed-off-by: NTim Gardner <tim.gardner@canonical.com> Cc: Matthew Garrett <mjg@redhat.com> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Jesse Barnes 提交于
They're optional. If not present or sane, we should use the CPU defaults. Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Jesse Barnes 提交于
If the CPU doesn't support turbo, don't try to enable/disable it. http://bugzilla.kernel.org/show_bug.cgi?id=18742Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 minskey guo 提交于
The patch is to create ips_adjust thread before ips_monitor begins to run because the latter will kthread_stop() or wake up the former via ips->adjust pointer. Without this change, it is possible that ips->adjust is NULL when kthread_stop() or wake_up_process() is called in ips_monitor(). Signed-off-by: Nminskey guo <chaohong.guo@intel.com> Acked-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 minskey guo 提交于
In ips_get_i915_syms(), the symbol i915_gpu_busy() is not released when error occurs. Signed-off-by: Nminskey guo <chaohong.guo@intel.com> Acked-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 minskey guo 提交于
The variable old_cpu_power is used to save the value of THM_CEC register. In get_cpu_power(), it will be divided by 65535. Signed-off-by: Nminskey guo <chaohong.guo@intel.com> Acked-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 minskey guo 提交于
The mask of sequence number in THM_ITV register is 16bit width instead of 8bit. Signed-off-by: Nminskey guo <chaohong.guo@intel.com> Acked-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
- 16 8月, 2010 2 次提交
-
-
由 Dan Carpenter 提交于
There is a potential NULL dereference of "limits." We can just return NULL earlier to avoid it. The caller already handles NULL returns. Signed-off-by: NDan Carpenter <error27@gmail.com> Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Kulikov Vasiliy 提交于
IRQ and resource[] may not have correct values until after PCI hotplug setup occurs at pci_enable_device() time. The semantic match that finds this problem is as follows: // <smpl> @@ identifier x; identifier request ~= "pci_request.*|pci_resource.*"; @@ ( * x->irq | * x->resource | * request(x, ...) ) ... *pci_enable_device(x) // </smpl> Signed-off-by: NKulikov Vasiliy <segooon@gmail.com> Reviewed-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
- 03 8月, 2010 4 次提交
-
-
由 Jesse Barnes 提交于
We don't need a dev_warn when we exceed a thermal or power limit as we'll handle it appropriately by clamping down on the CPU, GPU or both as needed. Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Jiri Slaby 提交于
Stanse found that there are two NULL checks missing in ips_monitor. So check their value too and bail out appropriately if the allocation failed. While at it, add one more kfree to the fail path. It is not necessary now, but may be needed in the future when a new allocation is added. And for completeness. Also remove unneeded initialization of the variables. They are all set right after their declaration. Signed-off-by: NJiri Slaby <jslaby@suse.cz> Signed-off-by: NMatthew Garrett <mjg@redhat.com> Acked-by: NJesse Barnes <jbarnes@virtuousgeek.org>
-
由 Jesse Barnes 提交于
Be sure to enable GPU turbo by default at load time and check GPU busy and MCP exceeded status correctly. Also fix up CPU power comparison and work around buggy MCH temp reporting. Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-
由 Jesse Barnes 提交于
Intel Core i3/5 platforms with integrated graphics support both CPU and GPU turbo mode. CPU turbo mode is opportunistic: the CPU will use any available power to increase core frequencies if thermal headroom is available. The GPU side is more manual however; the graphics driver must monitor GPU power and temperature and coordinate with a core thermal driver to take advantage of available thermal and power headroom in the package. The intelligent power sharing (IPS) driver is intended to coordinate this activity by monitoring MCP (multi-chip package) temperature and power, allowing the CPU and/or GPU to increase their power consumption, and thus performance, when possible. The goal is to maximize performance within a given platform's TDP (thermal design point). Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: NMatthew Garrett <mjg@redhat.com>
-