1. 15 Mar, 2008 1 commit
    • Linus Torvalds's avatar
      ACPI: Remove ACPI_CUSTOM_DSDT_INITRD option · 9a9e0d68
      Linus Torvalds authored
      This essentially reverts commit 71fc47a9
      
      
      ("ACPI: basic initramfs DSDT override support"), because the code simply
      isn't ready.
      
      It did ugly things to the init sequence to populate the rootfs image
      early, but that just ended up showing other problems with the whole
      approach.  The fact is, the VFS layer simply isn't initialized this
      early, and the relevant ACPI code should either run much later, or this
      shouldn't be done at all.
      
      For 2.6.25, we'll just pick the latter option.  We can revisit this
      concept later if necessary.
      
      Cc: Dave Hansen <haveblue@us.ibm.com>
      Cc: Tilman Schmidt <tilman@imap.cc>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Thomas Renninger <trenn@suse.de>
      Cc: Eric Piel <eric.piel@tremplin-utc.net>
      Cc: Len Brown <len.brown@intel.com>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Markus Gaugusch <dsdt@gaugusch.at>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9a9e0d68
  2. 11 Mar, 2008 1 commit
  3. 14 Feb, 2008 3 commits
  4. 13 Feb, 2008 1 commit
  5. 10 Feb, 2008 1 commit
  6. 07 Feb, 2008 6 commits
    • Len Brown's avatar
      ACPI: add newline to printk · b0b23e0a
      Len Brown authored
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      b0b23e0a
    • Len Brown's avatar
      ACPI: update intrd DSDT override console messages · 04d94886
      Len Brown authored
      
      also, address some checkpatch.pl violations
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      04d94886
    • Éric Piel's avatar
      ACPI: Add "acpi_no_initrd_override" kernel parameter · 9cbc7960
      Éric Piel authored
      
      The acpi_no_initrd_override parameter permits to disable the load of an ACPI
      table from the initramfs.
      Signed-off-by: default avatarEric Piel <eric.piel@tremplin-utc.net>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      9cbc7960
    • Adrian Bunk's avatar
      ACPI: misc cleanups · e5685b9d
      Adrian Bunk authored
      
          This patch contains the following possible cleanups:
          - make the following needlessly global code static:
            - drivers/acpi/bay.c:dev_attr_eject
            - drivers/acpi/bay.c:dev_attr_present
            - drivers/acpi/dock.c:dev_attr_docked
            - drivers/acpi/dock.c:dev_attr_flags
            - drivers/acpi/dock.c:dev_attr_uid
            - drivers/acpi/dock.c:dev_attr_undock
            - drivers/acpi/pci_bind.c:acpi_pci_unbind()
            - drivers/acpi/pci_link.c:acpi_link_lock
            - drivers/acpi/sbs.c:acpi_sbs_callback()
            - drivers/acpi/sbshc.c:acpi_smbus_transaction()
            - drivers/acpi/sleep/main.c:acpi_sleep_prepare()
          - #if 0 the following unused global functions:
            - drivers/acpi/numa.c:acpi_unmap_pxm_to_node()
          - remove the following unused EXPORT_SYMBOL's:
            - acpi_register_gsi
            - acpi_unregister_gsi
            - acpi_strict
            - acpi_bus_receive_event
            - register_acpi_bus_type
            - unregister_acpi_bus_type
            - acpi_os_printf
            - acpi_os_sleep
            - acpi_os_stall
            - acpi_os_read_pci_configuration
            - acpi_os_create_semaphore
            - acpi_os_delete_semaphore
            - acpi_os_wait_semaphore
            - acpi_os_signal_semaphore
            - acpi_os_signal
            - acpi_pci_irq_enable
            - acpi_get_pxm
      Signed-off-by: default avatarAdrian Bunk <bunk@kernel.org>
      Acked-by: default avatarAlexey Starikovskiy <astarikovskiy@suse.de>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      e5685b9d
    • Thomas Renninger's avatar
      ACPI: Export acpi_check_resource_conflict · 443dea72
      Thomas Renninger authored
      
      Export acpi_check_resource_conflict(), sometimes drivers already have
      a struct resource at hand so no need to use the wrappers to build a new
      one.
      Signed-off-by: default avatarJean Delvare <jdelvare@suse.de>
      Cc: "Mark M. Hoffman" <mhoffman@lightlink.com>
      Cc: Bjorn Helgaas <bjorn.helgaas@hp.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      443dea72
    • Thomas Renninger's avatar
      ACPI: track opregion names to avoid driver resource conflicts. · df92e695
      Thomas Renninger authored
      
      Small ACPICA extension to be able to store the name of operation regions in osl.c later
      
      In ACPI, AML can define accesses to IO ports and System Memory by Operation
      Regions.  Those are not registered as done by PNPACPI using resource templates
      (and _CRS/_SRS methods).
      
      The IO ports and System Memory regions may get accessed by arbitrary AML code.
       When native drivers are accessing the same resources bad things can happen
      (e.g.  a critical shutdown temperature of 3000 C every 2 months or so).
      
      It is not really possible to register the operation regions via
      request_resource, as they often overlap with pnp or other resources (e.g.
      statically setup IO resources below 0x100).
      
      This approach stores all Operation Region declarations (IO and System Memory
      only) at ACPI table parse time.  It offers a similar functionality like
      request_region and let drivers which are known to possibly use the same IO
      ports and Memory which are also often used by ACPI (hwmon and i2c) check for
      ACPI interference.
      
      A boot parameter acpi_enforce_resources=strict/lax/no is provided, which
      is default set to lax:
        - strict: let conflicting drivers fail to load with an error message
        - lax:    let conflicting driver work normal with a warning message
        - no:     no functional change at all
      Depending on the feedback and the kind of interferences we see, this
      should be set to strict at later time.
      
      Goal of this patch set is:
        - Identify ACPI interferences in bug reports (very hard to reproduce
          and to identify)
        - Find BIOSes for that an ACPI driver should exist for specific HW
          instead of a native one.
        - stability in general
      
      Provide acpi_check_{mem_}region.
      
      Drivers can additionally check against possible ACPI interference by also
      invoking this shortly before they call request_region.
      If -EBUSY is returned, the driver must not load.
      Use acpi_enforce_resources=strict/lax/no options to:
        - strict: let conflicting drivers fail to load with an error message
        - lax:    let conflicting driver work normal with a warning message
        - no:     no functional change at all
      
      Cc: "Mark M. Hoffman" <mhoffman@lightlink.com>
      Cc: Jean Delvare <khali@linux-fr.org>
      Cc: Len Brown <lenb@kernel.org>
      Cc: Bjorn Helgaas <bjorn.helgaas@hp.com>
      Signed-off-by: default avatarThomas Renninger <trenn@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      df92e695
  7. 06 Feb, 2008 3 commits
  8. 03 Feb, 2008 3 commits
  9. 23 Jan, 2008 4 commits
    • Len Brown's avatar
      ACPI: make _OSI(Linux) console messages smarter · d4b7dc49
      Len Brown authored
      
      If BIOS invokes _OSI(Linux), the kernel response
      depends on what the ACPI DMI list knows about the system,
      and that is reflectd in dmesg:
      
      1) System unknown to DMI:
      
      ACPI: BIOS _OSI(Linux) query ignored
      ACPI: DMI System Vendor: LENOVO
      ACPI: DMI Product Name: 7661W1P
      ACPI: DMI Product Version: ThinkPad T61
      ACPI: DMI Board Name: 7661W1P
      ACPI: DMI BIOS Vendor: LENOVO
      ACPI: DMI BIOS Date: 10/18/2007
      ACPI: Please send DMI info above to linux-acpi@vger.kernel.org
      ACPI: If "acpi_osi=Linux" works better, please notify linux-acpi@vger.kernel.org
      
      2) System known to DMI, but effect of OSI(Linux) unknown:
      
      ACPI: DMI detected: Lenovo ThinkPad T61
      ...
      ACPI: BIOS _OSI(Linux) query ignored via DMI
      ACPI: If "acpi_osi=Linux" works better, please notify linux-acpi@vger.kernel.org
      
      3) System known to DMI, which disables _OSI(Linux):
      
      ACPI: DMI detected: Lenovo ThinkPad T61
      ...
      ACPI: BIOS _OSI(Linux) query ignored via DMI
      
      4) System known to DMI, which enable _OSI(Linux):
      
      ACPI: DMI detected: Lenovo ThinkPad T61
      ACPI: Added _OSI(Linux)
      ...
      ACPI: BIOS _OSI(Linux) query honored via DMI
      
      cmdline overrides take precidence over the built-in
      default and the DMI prescribed default.
      cmdline "acpi_osi=Linux" results in:
      
      ACPI: BIOS _OSI(Linux) query honored via cmdline
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      d4b7dc49
    • Len Brown's avatar
      ACPI: Delete Intel Customer Reference Board (CRB) from OSI(Linux) DMI list · 7ce95ce5
      Len Brown authored
      
      Linux does not want BIOS writers to invoke _OSI(Linux) -
      for in the field it causes more Windows incompatibility problems
      than it solves.
      
      So when it is seen in the BIOS for an Intel Customer Reference Board,
      Linux should ignore its effect by default, and should complain loudly.
      Otherwise, the reference BIOS will go unfixed, and the bad BIOS
      will spread to the field.
      
      Users of this board can get the old behavior with "acpi_osi=Linux"
      
      As this was the only entry, delete acpi_osl_dmi_table[].
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      7ce95ce5
    • Len Brown's avatar
    • Len Brown's avatar
      ACPI: create acpi_dmi_dump() · 5a4e1432
      Len Brown authored
      
      A utility routine to print common entries used
      for ACPI-related DMI blacklist entries.
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      5a4e1432
  10. 14 Dec, 2007 1 commit
    • Len Brown's avatar
      ACPI: tables: complete searching upon RSDP w/ bad checksum. · 239665a3
      Len Brown authored
      ACPI tables follow a tree structure in memory.
      The root of the tree is the RSDP (Root System Description Pointer).
      
      To find the RSDP, the OS searches for the signature "RSD PTR "
      in well known physical memory locations.  Then the OS computes
      a table checksum to verify that the signature is really part
      of a valid table header.
      
      Some systems have a proper signature but an invalid checksum;
      followed elsewhere by a proper signature with valid checksum.
      
      http://bugzilla.kernel.org/show_bug.cgi?id=9444
      
      
      
      The Linux RSDP scanning code bailed out on those systems
      and as a result they booted with ACPI disabled.
      
      Fix this by deleting the Linux RSDP scanning code and
      plugging in the ACPICA RSDP scanning code.
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      239665a3
  11. 13 Dec, 2007 1 commit
  12. 06 Dec, 2007 1 commit
  13. 16 Nov, 2007 1 commit
  14. 10 Oct, 2007 1 commit
    • Len Brown's avatar
      cpuidle: consolidate 2.6.22 cpuidle branch into one patch · 4f86d3a8
      Len Brown authored
      
      commit e5a16b1f9eec0af7cfa0830304b41c1c0833cf9f
      Author: Len Brown <len.brown@intel.com>
      Date:   Tue Oct 2 23:44:44 2007 -0400
      
          cpuidle: shrink diff
      
          processor_idle.c |  440 +++++++++++++++++++++++++++++++++++++++++--
          1 file changed, 429 insertions(+), 11 deletions(-)
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      
      commit dfbb9d5aedfb18848a3e0d6f6e3e4969febb209c
      Author: Len Brown <len.brown@intel.com>
      Date:   Wed Sep 26 02:17:55 2007 -0400
      
          cpuidle: reduce diff size
      
          Reduces the cpuidle processor_idle.c diff vs 2.6.22 from this
           processor_idle.c | 2006 ++++++++++++++++++++++++++-----------------
           1 file changed, 1219 insertions(+), 787 deletions(-)
      
          to this:
           processor_idle.c |  502 +++++++++++++++++++++++++++++++++++++++----
           1 file changed, 458 insertions(+), 44 deletions(-)
      
          ...for the purpose of making the cpuilde patch less invasive
          and easier to review.
      
          no functional changes.  build tes...
      4f86d3a8
  15. 09 Oct, 2007 1 commit
    • Jeff Garzik's avatar
      drivers/firmware: const-ify DMI API and internals · 1855256c
      Jeff Garzik authored
      
      Three main sets of changes:
      
      1) dmi_get_system_info() return value should have been marked const,
         since callers should not be changing that data.
      
      2) const-ify DMI internals, since DMI firmware tables should,
         whenever possible, be marked const to ensure we never ever write to
         that data area.
      
      3) const-ify DMI API, to enable marking tables const where possible
         in low-level drivers.
      
      And if we're really lucky, this might enable some additional
      optimizations on the part of the compiler.
      
      The bulk of the changes are #2 and #3, which are interrelated.  #1 could
      have been a separate patch, but it was so small compared to the others,
      it was easier to roll it into this changeset.
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      1855256c
  16. 19 Jul, 2007 1 commit
    • Paul Mundt's avatar
      mm: Remove slab destructors from kmem_cache_create(). · 20c2df83
      Paul Mundt authored
      Slab destructors were no longer supported after Christoph's
      c59def9f
      
       change. They've been
      BUGs for both slab and slub, and slob never supported them
      either.
      
      This rips out support for the dtor pointer from kmem_cache_create()
      completely and fixes up every single callsite in the kernel (there were
      about 224, not including the slab allocator definitions themselves,
      or the documentation references).
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      20c2df83
  17. 03 Jul, 2007 2 commits
  18. 09 Jun, 2007 1 commit
    • Len Brown's avatar
      ACPI: disable _OSI(Linux) by default · 072971d7
      Len Brown authored
      In Linux-2.6.22 we expanded the boot parameter osi=
      so that it can enable and !enable an OSI string.
      
      _OSI(Linux) is a special case because we know that there
      are both systems that require it set, and systems
      require that it _not_ to be set.  In the long term it can't
      be set, for the same reason _OS(Linux) can't be enabled --
      it tends to confuse BIOS that are not properly
      validated with Linux.  Further, the semantics and version
      information of _OSI(Linux) were never actually defined.
      
      The kernel prints out a message if it sees _OSI(Linux)
      requested, and there is a DMI workaround to invoke
      "osi=Linux" automatically for existing systems that need it.
      
      http://bugzilla.kernel.org/show_bug.cgi?id=7787
      
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      072971d7
  19. 30 May, 2007 2 commits
    • Len Brown's avatar
      ACPI: add __init to acpi_initialize_subsystem() · dd272b57
      Len Brown authored
      
      Add __init to:
      acpi_initialize_subsystem() (and un-export it)
      acpi_os_initialize()
      
      Add __initdata to:
      acpi_osl_dmi_table[]
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      dd272b57
    • Len Brown's avatar
      ACPI: Make _OSI(Linux) a special case · f507654d
      Len Brown authored
      _OSI("Linux") is like _OS("Linux"), it is ill-defined and
      virtually no BIOS vendors test interaction with it.
      As a result, it can do more damage than good because
      it causes the BIOS to follow un-tested paths.
      
      Recently, several machines have turned up that erroneously
      test this string in a way which causes them to _not_ test other
      compatibility strings, including the ZI9 and Toshiba.
      So it appears that this bad code has made it into
      a BIOS vendor's reference BIOS.
      
      Linux has no choice but to stop advertising compatibility
      with _OSI string "Linux" - as there are an unbounded
      number of possible incompatibilities going forward.
      
      But some BIOSes have already shipped which do use it
      for things like conditionally re-enabling video on resume
      from S3.  (Too bad they didn't do that unconditionally)
      
      Add special case code for _OSI(Linux)
      Squawk to dmesg if _OSI(Linux) is requested
      Add DMI list both to enable and disable _OSI(Linux)
      But for now, keep the default enabled via
      #define OSI_LINUX_ENABLED.
      
      http://bugzilla.kernel.org/show_bug.cgi?id=7787
      
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      f507654d
  20. 29 May, 2007 1 commit
    • Len Brown's avatar
      ACPI: extend "acpi_osi=" boot option · ae00d812
      Len Brown authored
      
      The boot option "acpi_osi=" has always disabled Linux _OSI support,
      thus disabling all OS Interface strings which are advertised
      by Linux to the BIOS.
      
      Now...
      acpi_osi="string" adds the interface string, and
      acpi_osi="!string" invalidates the pre-defined interface string
      
      eg. acpi_osi="!Windows 2006"
      would disable Linux's claim of Vista compatibility.
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      ae00d812
  21. 09 May, 2007 1 commit
    • Alexey Starikovskiy's avatar
      ACPI: created a dedicated workqueue for notify() execution · 88db5e14
      Alexey Starikovskiy authored
      HP nx6125/nx6325/... machines have a _GPE handler with an infinite
      loop sending Notify() events to different ACPI subsystems.
      
      Notify handler in ACPI driver is a C-routine, which may call ACPI
      interpreter again to get access to some ACPI variables
      (acpi_evaluate_xxx).
      On these HP machines such an evaluation changes state of some variable
      and lets the loop above break.
      
      In the current ACPI implementation Notify requests are being deferred
      to the same kacpid workqueue on which the above GPE handler with
      infinite loop is executing. Thus we have a deadlock -- loop will
      continue to spin, sending notify events, and at the same time
      preventing these notify events from being run on a workqueue. All
      notify events are deferred, thus we see increase in memory consumption
      noticed by author of the thread. Also as GPE handling is bloked,
      machines overheat. Eventually by external poll of the same
      acpi_evaluate, kacpid is released and all the queued notify events are
      free to run, thus 100% cpu utilization by kacpid for several seconds
      or more.
      
      To prevent all these horrors it's needed to not put notify events to
      kacpid workqueue by either executing them immediately or putting them
      on some other thread. It's dangerous to execute notify events in
      place, as it will put several ACPI interpreter stacks on top of each
      other (at least 4 in case of nx6125), thus causing kernel  stack
      overflow.
      
      First attempt to create a new thread was done by Peter Wainwright
      He created a bunch of threads, which were stealing work from a kacpid
      workqueue.
      This patch appeared in 2.6.15 kernel shipped with Ubuntu 6.06 LTS.
      
      Second attempt was done by me, I created a new thread for each Notify
      event. This worked OK on HP nx machines, but broke Linus' Compaq
      n620c, by producing threads with a speed what they stopped the machine
      completely. Thus this patch was reverted from 18-rc2 as I remember.
      I re-made the patch to create second workqueue just for notify events,
      thus hopping it will not break Linus' machine. Patch was tested on the
      same HP nx machines in #5534 and #7122, but I did not received reply
      from Linus on a test patch sent to him.
      Patch went to 19-rc and was rejected with much fanfare again.
      There was 4th patch, which inserted schedule_timeout(1) into deferred
      execution of kacpid, if we had any notify requests pending, but Linus
      decided that it was too complex (involved either changes to workqueue
      to see if it's empty or atomic inc/dec).
      Now you see last variant which adds yield() to every GPE execution.
      
      http://bugzilla.kernel.org/show_bug.cgi?id=5534
      http://bugzilla.kernel.org/show_bug.cgi?id=8385
      
      Signed-off-by: default avatarAlexey Starikovskiy <alexey.y.starikovskiy@intel.com>
      Signed-off-by: default avatarLen Brown <len.brown@intel.com>
      88db5e14
  22. 08 May, 2007 1 commit
  23. 16 Feb, 2007 1 commit
  24. 15 Feb, 2007 1 commit