1. 27 3月, 2006 1 次提交
    • V
      [PATCH] i386: export: memory more than 4G through /proc/iomem · 10dbe196
      Vivek Goyal 提交于
      Currently /proc/iomem exports physical memory also apart from io device
      memory.  But on i386, it truncates any memory more than 4GB.  This leads to
      problems for kexec/kdump.
      
      Kexec reads /proc/iomem to determine the system memory layout and prepares a
      memory map based on that and passes it to the kernel being kexeced.  Given the
      fact that memory more than 4GB has been truncated, new kernel never gets to
      see and use that memory.
      
      Kdump also reads /proc/iomem to determine the physical memory layout of the
      system and encodes this informaiton in ELF headers.  After a crash new kernel
      parses these ELF headers being used by previous kernel and vmcore is prepared
      accordingly.  As memory more than 4GB has been truncated, kdump never sees
      that memory and never prepares ELF headers for it.  Hence vmcore is truncated
      and limited to 4GB even if there is more physical memory in the system.
      
      This patch exports memory more than 4GB through /proc/iomem on i386.
      Signed-off-by: NVivek Goyal <vgoyal@in.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      10dbe196
  2. 24 3月, 2006 1 次提交
    • L
      [PATCH] PCI: resource address mismatch · b408cbc7
      Linus Torvalds 提交于
      On Tue, 21 Feb 2006, Ivan Kokshaysky wrote:
      > There are two bogus entries in the BIOS memory map table which are
      > conflicting with a prefetchable memory range of the AGP bridge:
      >
      >  BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
      >  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
      >
      > 0000:00:02.0 PCI bridge: Silicon Integrated Systems [SiS] Virtual PCI-to-PCI bridge (AGP) (prog-if 00 [Normal decode])
      > 	Flags: bus master, fast devsel, latency 0
      > 	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
      > 	I/O behind bridge: 0000c000-0000cfff
      > 	Memory behind bridge: e7e00000-e7efffff
      > 	Prefetchable memory behind bridge: fec00000-ffcfffff
      > 					   ^^^^^^^^^^^^^^^^^
      
      Yes. However, it's pretty clear that the e820 entries are there for a
      reason. Probably they are a hack by the BIOS maintainers to keep Windows
      from stomping/moving that region, exactly because they want to keep the
      bridge where it is (or, it's actually for the BIOS itself - the BIOS
      tables are a horrid mess, and BIOS engineers are pretty hacky people:
      they'll add random entries to make their own broken algorithms do the
      "right thing").
      
      > Starting from 2.6.13, kernel tries to resolve that sort of conflicts,
      > so that prefetch window of the bridge and the framebuffer memory behind
      > it get moved to 0x10000000.
      
      I think we could (and probably should) solve this another way: consider
      the ACPI "reserved regions" from the e820 map exactly the same way that we
      do other ACPI hints - they should restrict _new_ allocations, but not
      impact stuff we figure out on our own.
      
      Basically, right now we assign _unassigned_ resources at "fs_initcall"
      time. If we were to add in the e820 "reserved region" stuff before that
      (but after we've done PCI discovery), we'd probably do the right thing.
      
      Right now we do the e820 reserved regions very early indeed: we call
      "register_memory()" from setup_arch(). We could move at least part of it
      (the part that registers the resources) down a bit.
      
      Here's a test-patch. I'm not saying we should absolutely do this, but it
      might be interesting to try...
      
      Cc: "Antonino A. Daplas" <adaplas@pol.net>
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Cc: <bjk@luxsci.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      b408cbc7
  3. 23 3月, 2006 2 次提交
    • S
      [PATCH] x86: early printk handling fixes · 99b7de33
      Stas Sergeev 提交于
      The history is that -mm kernels do not work for me for a few months
      already.  The things started from crashing somewhere after starting init,
      and for the last month - no boot at all, just "Uncompressing...  OK,
      booting kernel", and silence.  Early console didn't work too.  With the
      latest releases this degraded into an infinite stream of the "Unknown
      interrupt or fault" messages.  So today my patience ran out and I started
      to think how can I collect at least some info for the bug-report.  Attached
      is the patch that allows to gather some valueable debug info on the problem
      by making an early console more useable.  I can't properly test the patch,
      as the kernel still doesn't boot, so I'll explain it in details in a hope
      someone else can justify the intrusive changes.
      
      arch_hooks.h: added prototypes for setup_early_printk() and early_printk().
      
      setup.c: killed wrong setup_early_printk() prototype.  Moved
      setup_early_printk() a bit earlier, as it was not "early enough" to cover
      the bug I was fighting with.
      
      early_printk.c: made it to start printing from the bottom of the screen,
      otherwise the messages interfere with the ones of the boot-loader, so you
      can't read them.
      Signed-off-by: NStas Sergeev <stsp@aknet.ru>
      Cc: Andi Kleen <ak@muc.de>
      Cc: Zwane Mwaikambo <zwane@arm.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      99b7de33
    • G
      [PATCH] x86: SMP alternatives · 9a0b5817
      Gerd Hoffmann 提交于
      Implement SMP alternatives, i.e.  switching at runtime between different
      code versions for UP and SMP.  The code can patch both SMP->UP and UP->SMP.
      The UP->SMP case is useful for CPU hotplug.
      
      With CONFIG_CPU_HOTPLUG enabled the code switches to UP at boot time and
      when the number of CPUs goes down to 1, and switches to SMP when the number
      of CPUs goes up to 2.
      
      Without CONFIG_CPU_HOTPLUG or on non-SMP-capable systems the code is
      patched once at boot time (if needed) and the tables are released
      afterwards.
      
      The changes in detail:
      
        * The current alternatives bits are moved to a separate file,
          the SMP alternatives code is added there.
      
        * The patch adds some new elf sections to the kernel:
          .smp_altinstructions
      	like .altinstructions, also contains a list
      	of alt_instr structs.
          .smp_altinstr_replacement
      	like .altinstr_replacement, but also has some space to
      	save original instruction before replaving it.
          .smp_locks
      	list of pointers to lock prefixes which can be nop'ed
      	out on UP.
          The first two are used to replace more complex instruction
          sequences such as spinlocks and semaphores.  It would be possible
          to deal with the lock prefixes with that as well, but by handling
          them as special case the table sizes become much smaller.
      
       * The sections are page-aligned and padded up to page size, so they
         can be free if they are not needed.
      
       * Splitted the code to release init pages to a separate function and
         use it to release the elf sections if they are unused.
      Signed-off-by: NGerd Hoffmann <kraxel@suse.de>
      Signed-off-by: NChuck Ebbert <76306.1226@compuserve.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      9a0b5817
  4. 09 3月, 2006 1 次提交
    • A
      [PATCH] i386: port ATI timer fix from x86_64 to i386 II · f9262c12
      Andi Kleen 提交于
      ATI chipsets tend to generate double timer interrupts for the local APIC
      timer when both the 8254 and the IO-APIC timer pins are enabled.  This is
      because they route it to both and the result is anded together and the CPU
      ends up processing it twice.
      
      This patch changes check_timer to disable the 8254 routing for interrupt 0.
      
      I think it would be safe on all chipsets actually (i tested it on a couple
      and it worked everywhere) and Windows seems to do it in a similar way, but
      to be conservative this patch only enables this mode on ATI (and adds
      options to enable/disable too)
      
      Ported over from a similar x86-64 change.
      
      I reused the ACPI earlyquirk infrastructure for the ATI bridge check, but
      tweaked it a bit to work even without ACPI.
      
      Inspired by a patch from Chuck Ebbert, but redone.
      
      Cc: Chuck Ebbert <76306.1226@compuserve.com>
      Cc: "Brown, Len" <len.brown@intel.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f9262c12
  5. 12 1月, 2006 2 次提交
  6. 11 1月, 2006 1 次提交
  7. 07 1月, 2006 1 次提交
  8. 09 11月, 2005 1 次提交
  9. 31 10月, 2005 1 次提交
    • D
      [PATCH] fixup bogus e820 entry with mem= · f014a556
      Dave Hansen 提交于
      This was reported because someone was getting oopses reading /proc/iomem.
      It was tracked down to a zero-sized 'struct resource' entry which was
      located right at 4GB.
      
      You need two conditions to hit this bug: a BIOS E820_RAM area starting at
      exactly the boundary where you specify mem= (to get a zero-sized entry),
      and for the legacy_init_iomem_resources() loop to skip that resource (which
      only happens at exactly 4G).
      
      I think the killing zero-sized e820 entry is the easiest way to fix this.
      Signed-off-by: NDave Hansen <haveblue@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f014a556
  10. 14 9月, 2005 1 次提交
  11. 13 9月, 2005 1 次提交
  12. 10 9月, 2005 2 次提交
  13. 08 9月, 2005 1 次提交
  14. 05 9月, 2005 2 次提交
  15. 25 8月, 2005 2 次提交
  16. 23 7月, 2005 1 次提交
    • L
      Remove "noreplacement" kernel command line option. · 72538d85
      Linus Torvalds 提交于
      It is no longer valid to not replace instructions, since we depend on
      different behaviour depending on CPU capabilities.
      
      If you need to limit the capabilities of the replacements (because the
      boot CPU has features that non-boot CPU's do not have, for example), you
      need to explicitly disable those capabilities that are not shared across
      all CPU's.
      
      For example, if your boot CPU has FXSR, but other CPU's in your system
      do not, you need to use the "nofxsr" kernel command line, not disable
      instruction replacement per se.
      72538d85
  17. 26 6月, 2005 6 次提交
  18. 24 6月, 2005 2 次提交
  19. 01 6月, 2005 1 次提交
  20. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4