1. 27 2月, 2015 1 次提交
  2. 19 2月, 2015 1 次提交
    • B
      x86/intel/quark: Add Isolated Memory Regions for Quark X1000 · 28a375df
      Bryan O'Donoghue 提交于
      Intel's Quark X1000 SoC contains a set of registers called
      Isolated Memory Regions. IMRs are accessed over the IOSF mailbox
      interface. IMRs are areas carved out of memory that define
      read/write access rights to the various system agents within the
      Quark system. For a given agent in the system it is possible to
      specify if that agent may read or write an area of memory
      defined by an IMR with a granularity of 1 KiB.
      
      Quark_SecureBootPRM_330234_001.pdf section 4.5 details the
      concept of IMRs quark-x1000-datasheet.pdf section 12.7.4 details
      the implementation of IMRs in silicon.
      
      eSRAM flush, CPU Snoop write-only, CPU SMM Mode, CPU non-SMM
      mode, RMU and PCIe Virtual Channels (VC0 and VC1) can have
      individual read/write access masks applied to them for a given
      memory region in Quark X1000. This enables IMRs to treat each
      memory transaction type listed above on an individual basis and
      to filter appropriately based on the IMR access mask for the
      memory region. Quark supports eight IMRs.
      
      Since all of the DMA capable SoC components in the X1000 are
      mapped to VC0 it is possible to define sections of memory as
      invalid for DMA write operations originating from Ethernet, USB,
      SD and any other DMA capable south-cluster component on VC0.
      Similarly it is possible to mark kernel memory as non-SMM mode
      read/write only or to mark BIOS runtime memory as SMM mode
      accessible only depending on the particular memory footprint on
      a given system.
      
      On an IMR violation Quark SoC X1000 systems are configured to
      reset the system, so ensuring that the IMR memory map is
      consistent with the EFI provided memory map is critical to
      ensure no IMR violations reset the system.
      
      The API for accessing IMRs is based on MTRR code but doesn't
      provide a /proc or /sys interface to manipulate IMRs. Defining
      the size and extent of IMRs is exclusively the domain of
      in-kernel code.
      
      Quark firmware sets up a series of locked IMRs around pieces of
      memory that firmware owns such as ACPI runtime data. During boot
      a series of unlocked IMRs are placed around items in memory to
      guarantee no DMA modification of those items can take place.
      Grub also places an unlocked IMR around the kernel boot params
      data structure and compressed kernel image. It is necessary for
      the kernel to tear down all unlocked IMRs in order to ensure
      that the kernel's view of memory passed via the EFI memory map
      is consistent with the IMR memory map. Without tearing down all
      unlocked IMRs on boot transitory IMRs such as those used to
      protect the compressed kernel image will cause IMR violations and system reboots.
      
      The IMR init code tears down all unlocked IMRs and sets a
      protective IMR around the kernel .text and .rodata as one
      contiguous block. This sanitizes the IMR memory map with respect
      to the EFI memory map and protects the read-only portions of the
      kernel from unwarranted DMA access.
      Tested-by: NOng, Boon Leong <boon.leong.ong@intel.com>
      Signed-off-by: NBryan O'Donoghue <pure.logic@nexus-software.ie>
      Reviewed-by: NAndy Shevchenko <andy.schevchenko@gmail.com>
      Reviewed-by: NDarren Hart <dvhart@linux.intel.com>
      Reviewed-by: NOng, Boon Leong <boon.leong.ong@intel.com>
      Cc: andy.shevchenko@gmail.com
      Cc: dvhart@infradead.org
      Link: http://lkml.kernel.org/r/1422635379-12476-2-git-send-email-pure.logic@nexus-software.ieSigned-off-by: NIngo Molnar <mingo@kernel.org>
      28a375df
  3. 12 2月, 2015 13 次提交
  4. 11 2月, 2015 1 次提交
  5. 10 2月, 2015 1 次提交
    • A
      toshiba_acpi: Make toshiba_eco_mode_available more robust · 98fc4ec6
      Azael Avalos 提交于
      Some Toshiba laptops do not come with the ECO led installed, however,
      the driver is registering support for it when it should not.
      
      This patch makes the toshiba_eco_mode_available function more robust
      in detecting ECO led capabilities, not registering the led on laptops
      that do not support it and registering the led when it really does.
      
      The ECO led function now returns 0x8e00 (Not Installed) by querying
      with in[3] = 0, whenever theres no physical LED installed, and
      returning 0x8300 (Input Data Error) when it is, however, there are
      some BIOSes that have stub function calls not returning anything and
      and the LED device was being registered too, hence the change of the
      default return value from 1 to 0.
      Signed-off-by: NAzael Avalos <coproscefalo@gmail.com>
      
      Minor comment update, fixed a whitespace error, s/truly/actual/.
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      98fc4ec6
  6. 08 2月, 2015 2 次提交
  7. 07 2月, 2015 4 次提交
  8. 29 1月, 2015 5 次提交
  9. 24 1月, 2015 8 次提交
  10. 16 12月, 2014 1 次提交
    • R
      platform/x86/acerhdf: Still depends on THERMAL · 200db647
      Randy Dunlap 提交于
      acerhdf uses thermal interfaces so it should depend on THERMAL.
      It also should not select a thermal driver without checking that
      THERMAL is enabled.
      
      This fixes the following build errors when THERMAL=m and
      ACERHDF=y.
      
      drivers/built-in.o: In function `acerhdf_set_mode':
      acerhdf.c:(.text+0x3e02e1): undefined reference to `thermal_zone_device_update'
      drivers/built-in.o: In function `acerhdf_unbind':
      acerhdf.c:(.text+0x3e052d): undefined reference to `thermal_zone_unbind_cooling_device'
      drivers/built-in.o: In function `acerhdf_bind':
      acerhdf.c:(.text+0x3e0593): undefined reference to `thermal_zone_bind_cooling_device'
      drivers/built-in.o: In function `acerhdf_init':
      acerhdf.c:(.init.text+0x1c2f5): undefined reference to `thermal_cooling_device_register'
      acerhdf.c:(.init.text+0x1c360): undefined reference to `thermal_zone_device_register'
      drivers/built-in.o: In function `acerhdf_unregister_thermal':
      acerhdf.c:(.text.unlikely+0x3c67): undefined reference to `thermal_cooling_device_unregister'
      acerhdf.c:(.text.unlikely+0x3c91): undefined reference to `thermal_zone_device_unregister'
      Signed-off-by: NRandy Dunlap <rdunlap@infradead.org>
      Acked-by: NPeter Feuerer <peter@piie.net>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      200db647
  11. 04 12月, 2014 3 次提交
    • A
      thinkpad-acpi: Try to use full software mute control · 9a417ec0
      Andy Lutomirski 提交于
      ThinkPads have hardware volume controls and three buttons to control
      them.  (These are separate from the standard mixer.)  By default,
      the buttons are:
      
       - Mute: Mutes the hardware volume control and, on some models,
         generates KEY_MUTE.
      
       - Up: Unmutes, generates KEY_VOLUMEUP, and increases volume if
         applicable.  (Newer thinkpads only have hardware mute/unmute.)
      
       - Down: Unmutes, generates KEY_VOLUMEDOWN, and decreases volume
         if applicable.
      
      This behavior is unfortunate, since modern userspace will also
      handle the hotkeys and change the other mixer.  If the software
      mixer is muted and the hardware mixer is unmuted and you push mute,
      hilarity ensues as they both switch state.
      
      Rather than adding a lot of complex ALSA integration to fix this,
      just disable the special ThinkPad volume controls when possible.
      This turns the mute and volume buttons into regular buttons, and
      standard software controls will work as expected.
      
      ALSA already knows about the mute light on models with a mute light,
      so everything should just work.
      
      This should also allow us to remove _OSI(Linux) for all ThinkPads.
      
      For future reference: It turns out that we can ask ACPI for one of
      three behaviors directly on very new models.  They are "latch" (the
      default), "none" (no automatic control), and "toggle" (mute unmutes
      when muted).  All of the modes besides "none" seem to be a bit
      buggy, though, and there doesn't seem to be a consistent way to get
      any notification when the HW mute state is changed.
      Signed-off-by: NAndy Lutomirski <luto@mit.edu>
      Acked-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      9a417ec0
    • P
      acerhdf: minor clean up · f587f07f
      Peter Feuerer 提交于
        * renamed bios_settings_t to bios_settings, as it is no typedef
        * replaced "unsigned char" by u8 in bios_settings struct for better
          readability.
      
      Cc: platform-driver-x86@vger.kernel.org
      Cc: Darren Hart <dvhart@infradead.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andreas Mohr <andi@lisas.de>
      Acked-by: NBorislav Petkov <bp@suse.de>
      Signed-off-by: NPeter Feuerer <peter@piie.net>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      f587f07f
    • P
      acerhdf: added critical trip point · 7e8b6d73
      Peter Feuerer 提交于
      added critical trip point which represents the temperature limit.
      Added return -EINVAL in case wrong trip point is provided.
      
      Cc: platform-driver-x86@vger.kernel.org
      Cc: Darren Hart <dvhart@infradead.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Andreas Mohr <andi@lisas.de>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Javi Merino <javi.merino@arm.com>
      Signed-off-by: NPeter Feuerer <peter@piie.net>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      7e8b6d73