OSDN Git Service

Merge remote-tracking branch 'aosp/android-4.9' into kernel-4.9
authorChih-Wei Huang <cwhuang@linux.org.tw>
Wed, 25 Apr 2018 02:09:50 +0000 (10:09 +0800)
committerChih-Wei Huang <cwhuang@linux.org.tw>
Wed, 25 Apr 2018 02:09:50 +0000 (10:09 +0800)
Conflicts:
Makefile
drivers/acpi/pmic/intel_pmic_xpower.c
drivers/cpufreq/cpufreq.c
fs/ext4/mballoc.c

35 files changed:
1  2 
Documentation/kernel-parameters.txt
Makefile
arch/x86/Kconfig
arch/x86/Makefile
arch/x86/kernel/cpu/intel.c
arch/x86/kernel/signal.c
arch/x86/kernel/traps.c
drivers/cpufreq/cpufreq.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
drivers/gpu/drm/drm_edid.c
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/intel_drv.h
drivers/gpu/drm/i915/intel_hdmi.c
drivers/gpu/drm/nouveau/nouveau_connector.c
drivers/gpu/drm/nouveau/nouveau_display.c
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
drivers/hid/hid-core.c
drivers/hid/hid-ids.h
drivers/hid/hid-input.c
drivers/i2c/busses/i2c-designware-core.c
drivers/input/touchscreen/goodix.c
drivers/net/wireless/marvell/mwifiex/main.c
drivers/video/hdmi.c
fs/ext4/mballoc.c
fs/ext4/super.c
mm/shmem.c
net/wireless/nl80211.c
sound/pci/hda/patch_realtek.c
sound/soc/generic/simple-card.c
sound/soc/intel/atom/sst/sst_acpi.c
sound/soc/intel/atom/sst/sst_stream.c
sound/soc/intel/boards/cht_bsw_rt5645.c
sound/soc/intel/skylake/skl-messages.c
sound/soc/intel/skylake/skl-pcm.c
sound/soc/intel/skylake/skl.c

Simple merge
diff --cc Makefile
+++ b/Makefile
@@@ -345,7 -347,8 +347,8 @@@ include scripts/Kbuild.includ
  
  # Make variables (CC, etc...)
  AS            = $(CROSS_COMPILE)as
 -LD            = $(CROSS_COMPILE)ld
 +LD            = $(CROSS_COMPILE)ld$(if $(wildcard $(lastword $(CROSS_COMPILE))ld.bfd),.bfd)
+ LDGOLD                = $(CROSS_COMPILE)ld.gold
  CC            = $(CROSS_COMPILE)gcc
  CPP           = $(CC) -E
  AR            = $(CROSS_COMPILE)ar
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -315,45 -316,85 +316,87 @@@ static void adjust_jiffies(unsigned lon
   *********************************************************************/
  
  static DEFINE_PER_CPU(unsigned long, freq_scale) = SCHED_CAPACITY_SCALE;
+ static DEFINE_PER_CPU(unsigned long, max_freq_cpu);
  static DEFINE_PER_CPU(unsigned long, max_freq_scale) = SCHED_CAPACITY_SCALE;
+ static DEFINE_PER_CPU(unsigned long, min_freq_scale);
  
  static void
- scale_freq_capacity(struct cpufreq_policy *policy, struct cpufreq_freqs *freqs)
+ scale_freq_capacity(const cpumask_t *cpus, unsigned long cur_freq,
+                   unsigned long max_freq)
  {
-       if (!policy->max || !policy->cpuinfo.max_freq)
++      if (!max_freq)
 +              return;
-       unsigned long cur = freqs ? freqs->new : policy->cur;
-       unsigned long scale = (cur << SCHED_CAPACITY_SHIFT) / policy->max;
-       struct cpufreq_cpuinfo *cpuinfo = &policy->cpuinfo;
+       unsigned long scale = (cur_freq << SCHED_CAPACITY_SHIFT) / max_freq;
        int cpu;
  
-       pr_debug("cpus %*pbl cur/cur max freq %lu/%u kHz freq scale %lu\n",
-                cpumask_pr_args(policy->cpus), cur, policy->max, scale);
-       for_each_cpu(cpu, policy->cpus)
+       for_each_cpu(cpu, cpus) {
                per_cpu(freq_scale, cpu) = scale;
+               per_cpu(max_freq_cpu, cpu) = max_freq;
+       }
+       pr_debug("cpus %*pbl cur freq/max freq %lu/%lu kHz freq scale %lu\n",
+                cpumask_pr_args(cpus), cur_freq, max_freq, scale);
+ }
  
-       if (freqs)
+ unsigned long cpufreq_scale_freq_capacity(struct sched_domain *sd, int cpu)
+ {
+       return per_cpu(freq_scale, cpu);
+ }
+ static void
+ scale_max_freq_capacity(const cpumask_t *cpus, unsigned long policy_max_freq)
+ {
+       unsigned long scale, max_freq;
+       int cpu = cpumask_first(cpus);
+       if (cpu >= nr_cpu_ids)
                return;
  
-       scale = (policy->max << SCHED_CAPACITY_SHIFT) / cpuinfo->max_freq;
+       max_freq = per_cpu(max_freq_cpu, cpu);
  
-       pr_debug("cpus %*pbl cur max/max freq %u/%u kHz max freq scale %lu\n",
-                cpumask_pr_args(policy->cpus), policy->max, cpuinfo->max_freq,
-                scale);
+       if (!max_freq)
+               return;
  
-       for_each_cpu(cpu, policy->cpus)
+       scale = (policy_max_freq << SCHED_CAPACITY_SHIFT) / max_freq;
+       for_each_cpu(cpu, cpus)
                per_cpu(max_freq_scale, cpu) = scale;
+       pr_debug("cpus %*pbl policy max freq/max freq %lu/%lu kHz max freq scale %lu\n",
+                cpumask_pr_args(cpus), policy_max_freq, max_freq, scale);
  }
  
- unsigned long cpufreq_scale_freq_capacity(struct sched_domain *sd, int cpu)
+ unsigned long cpufreq_scale_max_freq_capacity(struct sched_domain *sd, int cpu)
  {
-       return per_cpu(freq_scale, cpu);
+       return per_cpu(max_freq_scale, cpu);
  }
  
- unsigned long cpufreq_scale_max_freq_capacity(int cpu)
+ static void
+ scale_min_freq_capacity(const cpumask_t *cpus, unsigned long policy_min_freq)
  {
-       return per_cpu(max_freq_scale, cpu);
+       unsigned long scale, max_freq;
+       int cpu = cpumask_first(cpus);
+       if (cpu >= nr_cpu_ids)
+               return;
+       max_freq = per_cpu(max_freq_cpu, cpu);
+       if (!max_freq)
+               return;
+       scale = (policy_min_freq << SCHED_CAPACITY_SHIFT) / max_freq;
+       for_each_cpu(cpu, cpus)
+               per_cpu(min_freq_scale, cpu) = scale;
+       pr_debug("cpus %*pbl policy min freq/max freq %lu/%lu kHz min freq scale %lu\n",
+                cpumask_pr_args(cpus), policy_min_freq, max_freq, scale);
+ }
+ unsigned long cpufreq_scale_min_freq_capacity(struct sched_domain *sd, int cpu)
+ {
+       return per_cpu(min_freq_scale, cpu);
  }
  
  static void __cpufreq_notify_transition(struct cpufreq_policy *policy,
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -4036,10 -4036,11 +4037,11 @@@ repeat
                BUG_ON(pa->pa_type != MB_INODE_PA);
                group = ext4_get_group_number(sb, pa->pa_pstart);
  
-               err = ext4_mb_load_buddy(sb, group, &e4b);
+               err = ext4_mb_load_buddy_gfp(sb, group, &e4b,
+                                            GFP_NOFS|__GFP_NOFAIL);
                if (err) {
-                       ext4_warning(sb, "Error loading buddy information for %u",
-                                       group);
 -                      ext4_error(sb, "Error %d loading buddy information for %u",
++                      ext4_warning(sb, "Error %d loading buddy information for %u",
+                                  err, group);
                        continue;
                }
  
@@@ -4295,11 -4296,14 +4297,14 @@@ ext4_mb_discard_lg_preallocations(struc
        spin_unlock(&lg->lg_prealloc_lock);
  
        list_for_each_entry_safe(pa, tmp, &discard_list, u.pa_tmp_list) {
+               int err;
  
                group = ext4_get_group_number(sb, pa->pa_pstart);
-               if (ext4_mb_load_buddy(sb, group, &e4b)) {
-                       ext4_warning(sb, "Error loading buddy information for %u",
-                                       group);
+               err = ext4_mb_load_buddy_gfp(sb, group, &e4b,
+                                            GFP_NOFS|__GFP_NOFAIL);
+               if (err) {
 -                      ext4_error(sb, "Error %d loading buddy information for %u",
++                      ext4_warning(sb, "Error %d loading buddy information for %u",
+                                  err, group);
                        continue;
                }
                ext4_lock_group(sb, group);
diff --cc fs/ext4/super.c
Simple merge
diff --cc mm/shmem.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge