1. 17 3月, 2015 1 次提交
    • R
      ACPI: Introduce has_acpi_companion() · ca5b74d2
      Rafael J. Wysocki 提交于
      Now that the ACPI companions of devices are represented by pointers
      to struct fwnode_handle, it is not quite efficient to check whether
      or not an ACPI companion of a device is present by evaluating the
      ACPI_COMPANION() macro.
      
      For this reason, introduce a special static inline routine for that,
      has_acpi_companion(), and update the code to use it where applicable.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      ca5b74d2
  2. 19 1月, 2015 3 次提交
  3. 05 1月, 2015 2 次提交
  4. 02 12月, 2014 1 次提交
  5. 18 11月, 2014 4 次提交
  6. 06 11月, 2014 1 次提交
    • L
      x86/vt-d: Fix incorrect bit operations in setting values · 1a2262f9
      Li, Zhen-Hua 提交于
      The function context_set_address_root() and set_root_value are setting new
      address in a wrong way, and this patch is trying to fix this problem.
      
      According to Intel Vt-d specs(Feb 2011, Revision 1.3), Chapter 9.1 and 9.2,
      field ctp in root entry is using bits 12:63, field asr in context entry is
      using bits 12:63.
      
      To set these fields, the following functions are used:
      static inline void context_set_address_root(struct context_entry *context,
              unsigned long value);
      and
      static inline void set_root_value(struct root_entry *root, unsigned long value)
      
      But they are using an invalid method to set these fields, in current code, only
      a '|' operator is used to set it. This will not set the asr to the expected
      value if it has an old value.
      
      For example:
      Before calling this function,
      	context->lo = 0x3456789012111;
      	value = 0x123456789abcef12;
      
      After we call context_set_address_root(context, value), expected result is
      	context->lo == 0x123456789abce111;
      
      But the actual result is:
      	context->lo == 0x1237577f9bbde111;
      
      So we need to clear bits 12:63 before setting the new value, this will fix
      this problem.
      Signed-off-by: NLi, Zhen-Hua <zhen-hual@hp.com>
      Signed-off-by: NJoerg Roedel <jroedel@suse.de>
      1a2262f9
  7. 04 11月, 2014 1 次提交
    • O
      iommu: Add iommu_map_sg() function · 315786eb
      Olav Haugan 提交于
      Mapping and unmapping are more often than not in the critical path.
      map_sg allows IOMMU driver implementations to optimize the process
      of mapping buffers into the IOMMU page tables.
      
      Instead of mapping a buffer one page at a time and requiring potentially
      expensive TLB operations for each page, this function allows the driver
      to map all pages in one go and defer TLB maintenance until after all
      pages have been mapped.
      
      Additionally, the mapping operation would be faster in general since
      clients does not have to keep calling map API over and over again for
      each physically contiguous chunk of memory that needs to be mapped to a
      virtually contiguous region.
      Signed-off-by: NOlav Haugan <ohaugan@codeaurora.org>
      Signed-off-by: NJoerg Roedel <jroedel@suse.de>
      315786eb
  8. 02 10月, 2014 1 次提交
  9. 25 9月, 2014 1 次提交
  10. 18 8月, 2014 1 次提交
    • J
      iommu/vt-d: Defer domain removal if device is assigned to a driver · e7f9fa54
      Joerg Roedel 提交于
      When the BUS_NOTIFY_DEL_DEVICE event is received the device
      might still be attached to a driver. In this case the domain
      can't be released as the mappings might still be in use.
      
      Defer the domain removal in this case until we receivce the
      BUS_NOTIFY_UNBOUND_DRIVER event.
      
      Cc: Jiang Liu <jiang.liu@linux.intel.com>
      Cc: David Woodhouse <dwmw2@infradead.org>
      Cc: stable@vger.kernel.org   # v3.15, v3.16
      Signed-off-by: NJoerg Roedel <jroedel@suse.de>
      e7f9fa54
  11. 29 7月, 2014 1 次提交
  12. 23 7月, 2014 12 次提交
  13. 07 7月, 2014 1 次提交
  14. 04 7月, 2014 10 次提交