1. 02 2月, 2010 1 次提交
    • E
      x86, mtrr: Constify struct mtrr_ops · 3b9cfc0a
      Emese Revfy 提交于
      This is part of the ops structure constification
      effort started by Arjan van de Ven et al.
      
      Benefits of this constification:
      
       * prevents modification of data that is shared
         (referenced) by many other structure instances
         at runtime
      
       * detects/prevents accidental (but not intentional)
         modification attempts on archs that enforce
         read-only kernel data at runtime
      
       * potentially better optimized code as the compiler
         can assume that the const data cannot be changed
      
       * the compiler/linker move const data into .rodata
         and therefore exclude them from false sharing
      Signed-off-by: NEmese Revfy <re.emese@gmail.com>
      LKML-Reference: <4B65D712.3080804@gmail.com>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      3b9cfc0a
  2. 16 12月, 2009 1 次提交
    • A
      tree-wide: convert open calls to remove spaces to skip_spaces() lib function · e7d2860b
      André Goddard Rosa 提交于
      Makes use of skip_spaces() defined in lib/string.c for removing leading
      spaces from strings all over the tree.
      
      It decreases lib.a code size by 47 bytes and reuses the function tree-wide:
         text    data     bss     dec     hex filename
        64688     584     592   65864   10148 (TOTALS-BEFORE)
        64641     584     592   65817   10119 (TOTALS-AFTER)
      
      Also, while at it, if we see (*str && isspace(*str)), we can be sure to
      remove the first condition (*str) as the second one (isspace(*str)) also
      evaluates to 0 whenever *str == 0, making it redundant. In other words,
      "a char equals zero is never a space".
      
      Julia Lawall tried the semantic patch (http://coccinelle.lip6.fr) below,
      and found occurrences of this pattern on 3 more files:
          drivers/leds/led-class.c
          drivers/leds/ledtrig-timer.c
          drivers/video/output.c
      
      @@
      expression str;
      @@
      
      ( // ignore skip_spaces cases
      while (*str &&  isspace(*str)) { \(str++;\|++str;\) }
      |
      - *str &&
      isspace(*str)
      )
      Signed-off-by: NAndré Goddard Rosa <andre.goddard@gmail.com>
      Cc: Julia Lawall <julia@diku.dk>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Jeff Dike <jdike@addtoit.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Richard Purdie <rpurdie@rpsys.net>
      Cc: Neil Brown <neilb@suse.de>
      Cc: Kyle McMartin <kyle@mcmartin.ca>
      Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
      Cc: David Howells <dhowells@redhat.com>
      Cc: <linux-ext4@vger.kernel.org>
      Cc: Samuel Ortiz <samuel@sortiz.org>
      Cc: Patrick McHardy <kaber@trash.net>
      Cc: Takashi Iwai <tiwai@suse.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e7d2860b
  3. 25 11月, 2009 1 次提交
  4. 18 11月, 2009 1 次提交
  5. 02 11月, 2009 1 次提交
  6. 03 10月, 2009 1 次提交
    • A
      x86: Simplify bound checks in the MTRR code · 11879ba5
      Arjan van de Ven 提交于
      The current bound checks for copy_from_user in the MTRR driver are
      not as obvious as they could be, and gcc agrees with that.
      
      This patch simplifies the boundary checks to the point that gcc can
      now prove to itself that the copy_from_user() is never going past
      its bounds.
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      LKML-Reference: <20090926205150.30797709@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      11879ba5
  7. 21 9月, 2009 1 次提交
  8. 22 8月, 2009 2 次提交
    • H
      x86, mtrr: make mtrr_aps_delayed_init static bool · 5400743d
      H. Peter Anvin 提交于
      mtr_aps_delayed_init was declared u32 and made global, but it only
      ever takes boolean values and is only ever used in
      arch/x86/kernel/cpu/mtrr/main.c.  Declare it "static bool" and remove
      external references.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      Cc: Suresh Siddha <suresh.b.siddha@intel.com>
      5400743d
    • S
      x86, pat/mtrr: Rendezvous all the cpus for MTRR/PAT init · d0af9eed
      Suresh Siddha 提交于
      SDM Vol 3a section titled "MTRR considerations in MP systems" specifies
      the need for synchronizing the logical cpu's while initializing/updating
      MTRR.
      
      Currently Linux kernel does the synchronization of all cpu's only when
      a single MTRR register is programmed/updated. During an AP online
      (during boot/cpu-online/resume)  where we initialize all the MTRR/PAT registers,
      we don't follow this synchronization algorithm.
      
      This can lead to scenarios where during a dynamic cpu online, that logical cpu
      is initializing MTRR/PAT with cache disabled (cr0.cd=1) etc while other logical
      HT sibling continue to run (also with cache disabled because of cr0.cd=1
      on its sibling).
      
      Starting from Westmere, VMX transitions with cr0.cd=1 don't work properly
      (because of some VMX performance optimizations) and the above scenario
      (with one logical cpu doing VMX activity and another logical cpu coming online)
      can result in system crash.
      
      Fix the MTRR initialization by doing rendezvous of all the cpus. During
      boot and resume, we delay the MTRR/PAT init for APs till all the
      logical cpu's come online and the rendezvous process at the end of AP's bringup,
      will initialize the MTRR/PAT for all AP's.
      
      For dynamic single cpu online, we synchronize all the logical cpus and
      do the MTRR/PAT init on the AP that is coming online.
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      d0af9eed
  9. 05 7月, 2009 1 次提交
    • I
      x86: Further clean up of mtrr/generic.c · e3d0e692
      Ingo Molnar 提交于
      Yinghai noticed that i defined BIOS_BUG_MSG but added no
      usage for it. The usage is to clean up this turd in generic.c:
      
      			printk(KERN_WARNING "WARNING: BIOS bug: VAR MTRR %d "
      				"contains strange UC entry under 1M, check "
      				"with your system vendor!\n", i);
      
      Breaking printk lines in the middle looks ugly, is hard to read
      and breaks 'git grep'. Use the BIOS_BUG_MSG instead.
      
      Also complete the moving of structure definitions and variables
      to the top of the file.
      Reported-by: NYinghai Lu <yinghai@kernel.org>
      LKML-Reference: <20090703164225.GA21447@elte.hu>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e3d0e692
  10. 04 7月, 2009 9 次提交
    • J
      x86: Clean up mtrr/main.c · dbd51be0
      Jaswinder Singh Rajput 提交于
      Fix following trivial style problems:
      
        ERROR: trailing whitespace X 25
        WARNING: Use #include <linux/uaccess.h> instead of <asm/uaccess.h>
        WARNING: Use #include <linux/kvm_para.h> instead of <asm/kvm_para.h>
        ERROR: do not initialise externals to 0 or NULL X 2
        ERROR: "foo * bar" should be "foo *bar" X 5
        ERROR: do not use assignment in if condition X 2
        WARNING: line over 80 characters X 8
        ERROR: return is not a function, parentheses are not required
        WARNING: braces {} are not necessary for any arm of this statement
        ERROR: space required before the open parenthesis '(' X 2
        ERROR: open brace '{' following function declarations go on the next line
        ERROR: space required after that ',' (ctx:VxV) X 8
        ERROR: space required before the open parenthesis '(' X 3
        ERROR: else should follow close brace '}'
        WARNING: space prohibited between function name and open parenthesis '('
        WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable X 2
      
      Also use pr_debug and pr_warning where possible.
      
      total: 50 errors, 14 warnings
      
      arch/x86/kernel/cpu/mtrr/main.o:
      
         text	   data	    bss	    dec	    hex	filename
         3668	    116	   4156	   7940	   1f04	main.o.before
         3668	    116	   4156	   7940	   1f04	main.o.after
      
      md5:
         e01af2fd28deef77c8d01e71acfbd365  main.o.before.asm
         e01af2fd28deef77c8d01e71acfbd365  main.o.after.asm
      Suggested-by: NAlan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NJaswinder Singh Rajput <jaswinderrajput@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      LKML-Reference: <20090703164225.GA21447@elte.hu>
      Cc: Avi Kivity <avi@redhat.com> # Avi, please have a look at the kvm_para.h bit
      [ More cleanups ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      dbd51be0
    • J
      x86: Clean up mtrr/state.c · 09b22c85
      Jaswinder Singh Rajput 提交于
      Fix:
      
        WARNING: Use #include <linux/io.h> instead of <asm/io.h>
        WARNING: line over 80 characters X 4
      
      arch/x86/kernel/cpu/mtrr/state.o:
      
         text	   data	    bss	    dec	    hex	filename
          864	      0	      0	    864	    360	state.o.before
          864	      0	      0	    864	    360	state.o.after
      
      md5:
         c5c4364b9aeac74d70111e1e49667a2c  state.o.before.asm
         c5c4364b9aeac74d70111e1e49667a2c  state.o.after.asm
      Suggested-by: NAlan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NJaswinder Singh Rajput <jaswinderrajput@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      LKML-Reference: <20090703164225.GA21447@elte.hu>
      [ More cleanups ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      09b22c85
    • J
      x86: Clean up mtrr/mtrr.h · 3ec8dbcb
      Jaswinder Singh Rajput 提交于
      Fix:
      
        ERROR: do not use C99 // comments
        ERROR: "foo * bar" should be "foo *bar" X 2
      Suggested-by: NAlan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NJaswinder Singh Rajput <jaswinderrajput@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      LKML-Reference: <20090703164225.GA21447@elte.hu>
      [ More tidyups ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      3ec8dbcb
    • J
      x86: Clean up mtrr/if.c · 26dc67ed
      Jaswinder Singh Rajput 提交于
      Fix:
      
        WARNING: Use #include <linux/uaccess.h> instead of <asm/uaccess.h>
        ERROR: trailing whitespace X 7
        ERROR: trailing statements should be on next line X 3
        WARNING: line over 80 characters X 5
        ERROR: space required before the open parenthesis '('
      
      arch/x86/kernel/cpu/mtrr/if.o:
      
         text	   data	    bss	    dec	    hex	filename
         2239	      4	      0	   2243	    8c3	if.o.before
         2239	      4	      0	   2243	    8c3	if.o.after
      
      md5:
         78d1f2aa4843ec6509c18e2dee54bc7f  if.o.before.asm
         78d1f2aa4843ec6509c18e2dee54bc7f  if.o.after.asm
      Suggested-by: NAlan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NJaswinder Singh Rajput <jaswinderrajput@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      LKML-Reference: <20090703164225.GA21447@elte.hu>
      [ More cleanups to make the code more consistent. ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      26dc67ed
    • J
      x86: Clean up mtrr/generic.c · a1a499a3
      Jaswinder Singh Rajput 提交于
      Fix following trivial style problems:
      
        ERROR: trailing whitespace X 4
        WARNING: Use #include <linux/io.h> instead of <asm/io.h>
        WARNING: braces {} are not necessary for single statement blocks X 3
        ERROR: "foo * bar" should be "foo *bar"
        WARNING: line over 80 characters X 6
        ERROR: "foo * bar" should be "foo *bar"
        ERROR: spaces required around that '=' (ctx:VxO)
        ERROR: space required before that '-' (ctx:OxV)
        WARNING: suspect code indent for conditional statements (8, 12)
        ERROR: spaces required around that '=' (ctx:VxV)
        ERROR: do not initialise statics to 0 or NULL
        ERROR: space prohibited after that open parenthesis '(' X 2
        ERROR: space prohibited before that close parenthesis ')' X 2
        ERROR: trailing statements should be on next line
        ERROR: return is not a function, parentheses are not required
      
      Also use pr_debug and pr_warning where possible.
      
      arch/x86/kernel/cpu/mtrr/generic.o:
      
         text	   data	    bss	    dec	    hex	filename
         5652	     77	   4224	   9953	   26e1	generic.o.before
         5652	     77	   4220	   9949	   26dd	generic.o.after
      
      The md5 changed:
         b34d6c045f06daa4ed092b90cc760e8f  generic.o.before.asm
         a490c6251cfd8442fbffecc0e09a573d  generic.o.after.asm
      
      Because mtrr_state moved from data to bss, changing its
      offsets - and also because __LINE__ numbers changed.
      Suggested-by: NAlan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NJaswinder Singh Rajput <jaswinderrajput@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      LKML-Reference: <20090703164225.GA21447@elte.hu>
      [ Further cleanups to make the code more consistent ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      a1a499a3
    • J
      x86: Clean up mtrr/cyrix.c · 23110377
      Jaswinder Singh Rajput 提交于
      Fix trivial style problems:
      
        WARNING: Use #include <linux/io.h> instead of <asm/io.h>
        WARNING: line over 80 characters
        ERROR: do not initialise statics to 0 or NULL
        ERROR: space prohibited after that open parenthesis '(' X 2
        ERROR: space prohibited before that close parenthesis ')' X 2
        ERROR: trailing whitespace X 2
        ERROR: trailing statements should be on next line
        ERROR: do not use C99 // comments X 2
      
      arch/x86/kernel/cpu/mtrr/cyrix.o:
      
         text	   data	    bss	    dec	    hex	filename
         1637	     32	      8	   1677	    68d	cyrix.o.before
         1637	     32	      8	   1677	    68d	cyrix.o.after
      
      md5:
         6f52abd06905be3f4cabb5239f9b0ff0  cyrix.o.before.asm
         6f52abd06905be3f4cabb5239f9b0ff0  cyrix.o.after.asm
      Suggested-by: NAlan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NJaswinder Singh Rajput <jaswinderrajput@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      LKML-Reference: <20090703164225.GA21447@elte.hu>
      [ Made the code more consistent ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      23110377
    • J
      x86: Clean up mtrr/cleanup.c · 63f9600f
      Jaswinder Singh Rajput 提交于
      Fix trivial style problems:
      
        WARNING: Use #include <linux/uaccess.h> instead of <asm/uaccess.h>
        WARNING: Use #include <linux/kvm_para.h> instead of <asm/kvm_para.h>
      
      Also, nr_mtrr_spare_reg should be unsigned long.
      
      arch/x86/kernel/cpu/mtrr/cleanup.o:
      
         text	   data	    bss	    dec	    hex	filename
         6241	   8992	   2056	  17289	   4389	cleanup.o.before
         6241	   8992	   2056	  17289	   4389	cleanup.o.after
      
      The md5 has changed:
         1a7a27513aef1825236daf29110fe657  cleanup.o.before.asm
         bcea358efa2532b6020e338e158447af  cleanup.o.after.asm
      
      Because a WARN_ON()'s __LINE__ value changed by 3 lines.
      Suggested-by: NAlan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NJaswinder Singh Rajput <jaswinderrajput@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      LKML-Reference: <20090703164225.GA21447@elte.hu>
      [ Did lots of other cleanups to make the code look more consistent. ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      63f9600f
    • J
      x86: Clean up mtrr/centaur.c · 6c4caa1a
      Jaswinder Singh Rajput 提交于
      Remove dead code and fix trivial style problems:
      
        ERROR: trailing whitespace X 2
        WARNING: line over 80 characters X 3
        ROR: trailing whitespace
        ERROR: do not use C99 // comments X 2
      
      arch/x86/kernel/cpu/mtrr/centaur.o:
      
         text	   data	    bss	    dec	    hex	filename
          605	     32	     68	    705	    2c1	centaur.o.before
          605	     32	     68	    705	    2c1	centaur.o.after
      
      md5:
         a4865ea98ce3c163bb1d376a3949b3e3  centaur.o.before.asm
         a4865ea98ce3c163bb1d376a3949b3e3  centaur.o.after.asm
      Suggested-by: NAlan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NJaswinder Singh Rajput <jaswinderrajput@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      LKML-Reference: <20090703164225.GA21447@elte.hu>
      [ Standardized comments, DocBook, curly braces, newlines. ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      6c4caa1a
    • J
      x86: Clean up mtrr/amd.c: · 42204455
      Jaswinder Singh Rajput 提交于
      Fix trivial style problems :
      
        ERROR: trailing whitespace
        WARNING: line over 80 characters
        ERROR: do not use C99 // comments
      
      arch/x86/kernel/cpu/mtrr/amd.o:
      
         text	   data	    bss	    dec	    hex	filename
          501	     32	      0	    533	    215	amd.o.before
          501	     32	      0	    533	    215	amd.o.after
      
      md5:
         62f795eb840ee2d17b03df89e789e76c  amd.o.before.asm
         62f795eb840ee2d17b03df89e789e76c  amd.o.after.asm
      Suggested-by: NAlan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NJaswinder Singh Rajput <jaswinderrajput@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      LKML-Reference: <20090703164225.GA21447@elte.hu>
      [ Also restructured comments to be standard, removed stray return,
        converted function description to DocBook style, etc. ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      42204455
  11. 15 5月, 2009 6 次提交
  12. 11 5月, 2009 1 次提交
    • Y
      x86: mtrr: Fix high_width computation when phys-addr is >= 44bit · 917a0153
      Yinghai Lu 提交于
      found one system where cpu address line is 44bits, mtrr printout
      is not right:
      
       [    0.000000] MTRR variable ranges enabled:
       [    0.000000]   0 base 0   00000000 mask FF0 00000000 write-back
       [    0.000000]   1 base 10  00000000 mask FFF 80000000 write-back
       [    0.000000]   2 base 0   80000000 mask FFF 80000000 uncachable
       [    0.000000]   3 base 0   7F800000 mask FFF FF800000 uncachable
      
      Li Zefan and Frederic pointed out the high_width could be -4 some how.
      
      It turns out when phys_addr is 44bit, size_or_mask will be
      ffffffff,00000000 so ffs(size_or_mask) will be 0.
      
      Try to check low 32 bit, to get correct high_width.
      Signed-off-by: NYinghai Lu <yinghai@kerne.org>
      Also-analyzed-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Also-analyzed-by: NLi Zefan <lizf@cn.fujitsu.com>
      Cc: Jeremy Fitzhardinge <jeremy@goop.org>
      Cc: Zhaolei <zhaolei@cn.fujitsu.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Vegard Nossum <vegard.nossum@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      LKML-Reference: <4A026540.8060504@kernel.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      917a0153
  13. 04 4月, 2009 1 次提交
    • I
      x86, mtrr: remove debug message · c5c67c7c
      Ingo Molnar 提交于
      The MTRR code grew a new debug message which triggers commonly:
      
      [   40.142276]   get_mtrr: cpu0 reg00 base=0000000000 size=0000080000 write-back
      [   40.142280]   get_mtrr: cpu0 reg01 base=0000080000 size=0000040000 write-back
      [   40.142284]   get_mtrr: cpu0 reg02 base=0000100000 size=0000040000 write-back
      [   40.142311]   get_mtrr: cpu0 reg00 base=0000000000 size=0000080000 write-back
      [   40.142314]   get_mtrr: cpu0 reg01 base=0000080000 size=0000040000 write-back
      [   40.142317]   get_mtrr: cpu0 reg02 base=0000100000 size=0000040000 write-back
      
      Remove this annoyance.
      Reported-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      c5c67c7c
  14. 31 3月, 2009 1 次提交
    • A
      proc 2/2: remove struct proc_dir_entry::owner · 99b76233
      Alexey Dobriyan 提交于
      Setting ->owner as done currently (pde->owner = THIS_MODULE) is racy
      as correctly noted at bug #12454. Someone can lookup entry with NULL
      ->owner, thus not pinning enything, and release it later resulting
      in module refcount underflow.
      
      We can keep ->owner and supply it at registration time like ->proc_fops
      and ->data.
      
      But this leaves ->owner as easy-manipulative field (just one C assignment)
      and somebody will forget to unpin previous/pin current module when
      switching ->owner. ->proc_fops is declared as "const" which should give
      some thoughts.
      
      ->read_proc/->write_proc were just fixed to not require ->owner for
      protection.
      
      rmmod'ed directories will be empty and return "." and ".." -- no harm.
      And directories with tricky enough readdir and lookup shouldn't be modular.
      We definitely don't want such modular code.
      
      Removing ->owner will also make PDE smaller.
      
      So, let's nuke it.
      
      Kudos to Jeff Layton for reminding about this, let's say, oversight.
      
      http://bugzilla.kernel.org/show_bug.cgi?id=12454Signed-off-by: NAlexey Dobriyan <adobriyan@gmail.com>
      99b76233
  15. 18 3月, 2009 1 次提交
  16. 17 3月, 2009 1 次提交
  17. 14 3月, 2009 2 次提交
  18. 13 3月, 2009 4 次提交
    • A
      x86: mtrr: don't modify RdDram/WrDram bits of fixed MTRRs · 3ff42da5
      Andreas Herrmann 提交于
      Impact: bug fix + BIOS workaround
      
      BIOS is expected to clear the SYSCFG[MtrrFixDramModEn] on AMD CPUs
      after fixed MTRRs are configured.
      
      Some BIOSes do not clear SYSCFG[MtrrFixDramModEn] on BP (and on APs).
      
      This can lead to obfuscation in Linux when this bit is not cleared on
      BP but cleared on APs. A consequence of this is that the saved
      fixed-MTRR state (from BP) differs from the fixed-MTRRs of APs --
      because RdDram/WrDram bits are read as zero when
      SYSCFG[MtrrFixDramModEn] is cleared -- and Linux tries to sync
      fixed-MTRR state from BP to AP. This implies that Linux sets
      SYSCFG[MtrrFixDramEn] and activates those bits.
      
      More important is that (some) systems change these bits in SMM when
      ACPI is enabled. Hence it is racy if Linux modifies RdMem/WrMem bits,
      too.
      
      (1) The patch modifies an old fix from Bernhard Kaindl to get
          suspend/resume working on some Acer Laptops. Bernhard's patch
          tried to sync RdMem/WrMem bits of fixed MTRR registers and that
          helped on those old Laptops. (Don't ask me why -- can't test it
          myself). But this old problem was not the motivation for the
          patch. (See http://lkml.org/lkml/2007/4/3/110)
      
      (2) The more important effect is to fix issues on some more current systems.
      
          On those systems Linux panics or just freezes, see
      
          http://bugzilla.kernel.org/show_bug.cgi?id=11541
          (and also duplicates of this bug:
          http://bugzilla.kernel.org/show_bug.cgi?id=11737
          http://bugzilla.kernel.org/show_bug.cgi?id=11714)
      
          The affected systems boot only using acpi=ht, acpi=off or
          when the kernel is built with CONFIG_MTRR=n.
      
          The acpi options prevent full enablement of ACPI.  Obviously when
          ACPI is enabled the BIOS/SMM modfies RdMem/WrMem bits.  When
          CONFIG_MTRR=y Linux also accesses and modifies those bits when it
          needs to sync fixed-MTRRs across cores (Bernhard's fix, see (1)).
          How do you synchronize that? You can't. As a consequence Linux
          shouldn't touch those bits at all (Rationale are AMD's BKDGs which
          recommend to clear the bit that makes RdMem/WrMem accessible).
          This is the purpose of this patch. And (so far) this suffices to
          fix (1) and (2).
      
      I suggest not to touch RdDram/WrDram bits of fixed-MTRRs and
      SYSCFG[MtrrFixDramEn] and to clear SYSCFG[MtrrFixDramModEn] as
      suggested by AMD K8, and AMD family 10h/11h BKDGs.
      BIOS is expected to do this anyway. This should avoid that
      Linux and SMM tread on each other's toes ...
      Signed-off-by: NAndreas Herrmann <andreas.herrmann3@amd.com>
      Cc: trenn@suse.de
      Cc: Yinghai Lu <yinghai@kernel.org>
      LKML-Reference: <20090312163937.GH20716@alberich.amd.com>
      Cc: <stable@kernel.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      3ff42da5
    • Y
      x86: separate mtrr cleanup/mtrr_e820 trim to separate file · 0d890355
      Yinghai Lu 提交于
      Impact: cleanup
      
      mtrr main.c is too big, seperate mtrr cleanup and mtrr e820 trim
      code to another file.
      Signed-off-by: NYinghai Lu <yinghai@kernel.org>
      LKML-Reference: <49B87C7B.80809@kernel.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      0d890355
    • Y
      x86: print out mtrr_range_state when user specify size · c1ab7e93
      Yinghai Lu 提交于
      Impact: print more debug info
      
      Keep it consistent with autodetect version.
      Signed-off-by: NYinghai Lu <yinghai@kernel.org>
      LKML-Reference: <49B87C0A.4010105@kernel.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      c1ab7e93
    • Y
      x86: more MTRR debug printouts · 8ad97905
      Yinghai Lu 提交于
      Impact: improve MTRR debugging messages
      
      There's still inefficiencies suspected with the MTRR sanitizing
      code, so make sure we get all the info we need from a dmesg.
      
      - Remove unneeded mtrr_show
      
       (It will only printout one time by first cpu, so it is no big deal.)
      
      - Also print out directly from get_mtrr, because it doesn't update mtrr_state.
      Signed-off-by: NYinghai Lu <yinghai@kernel.org>
      LKML-Reference: <49B9BA5A.40108@kernel.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      8ad97905
  19. 29 1月, 2009 1 次提交
  20. 21 1月, 2009 1 次提交
  21. 31 12月, 2008 2 次提交