Merge tag 'powerpc-5.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 5 Apr 2020 18:12:59 +0000 (11:12 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 5 Apr 2020 18:12:59 +0000 (11:12 -0700)
Pull powerpc updates from Michael Ellerman:
 "Slightly late as I had to rebase mid-week to insert a bug fix:

   - A large series from Nick for 64-bit to further rework our exception
     vectors, and rewrite portions of the syscall entry/exit and
     interrupt return in C. The result is much easier to follow code
     that is also faster in general.

   - Cleanup of our ptrace code to split various parts out that had
     become badly intertwined with #ifdefs over the years.

   - Changes to our NUMA setup under the PowerVM hypervisor which should
     hopefully avoid non-sensical topologies which can lead to warnings
     from the workqueue code and other problems.

   - MAINTAINERS updates to remove some of our old orphan entries and
     update the status of others.

   - Quite a few other small changes and fixes all over the map.

  Thanks to: Abdul Haleem, afzal mohammed, Alexey Kardashevskiy, Andrew
  Donnellan, Aneesh Kumar K.V, Balamuruhan S, Cédric Le Goater, Chen
  Zhou, Christophe JAILLET, Christophe Leroy, Christoph Hellwig, Clement
  Courbet, Daniel Axtens, David Gibson, Douglas Miller, Fabiano Rosas,
  Fangrui Song, Ganesh Goudar, Gautham R. Shenoy, Greg Kroah-Hartman,
  Greg Kurz, Gustavo Luiz Duarte, Hari Bathini, Ilie Halip, Jan Kara,
  Joe Lawrence, Joe Perches, Kajol Jain, Larry Finger, Laurentiu Tudor,
  Leonardo Bras, Libor Pechacek, Madhavan Srinivasan, Mahesh Salgaonkar,
  Masahiro Yamada, Masami Hiramatsu, Mauricio Faria de Oliveira, Michael
  Neuling, Michal Suchanek, Mike Rapoport, Nageswara R Sastry, Nathan
  Chancellor, Nathan Lynch, Naveen N. Rao, Nicholas Piggin, Nick
  Desaulniers, Oliver O'Halloran, Po-Hsu Lin, Pratik Rajesh Sampat,
  Rasmus Villemoes, Ravi Bangoria, Roman Bolshakov, Sam Bobroff,
  Sandipan Das, Santosh S, Sedat Dilek, Segher Boessenkool, Shilpasri G
  Bhat, Sourabh Jain, Srikar Dronamraju, Stephen Rothwell, Tyrel
  Datwyler, Vaibhav Jain, YueHaibing"

* tag 'powerpc-5.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (158 commits)
  powerpc: Make setjmp/longjmp signature standard
  powerpc/cputable: Remove unnecessary copy of cpu_spec->oprofile_type
  powerpc: Suppress .eh_frame generation
  powerpc: Drop -fno-dwarf2-cfi-asm
  powerpc/32: drop unused ISA_DMA_THRESHOLD
  powerpc/powernv: Add documentation for the opal sensor_groups sysfs interfaces
  selftests/powerpc: Fix try-run when source tree is not writable
  powerpc/vmlinux.lds: Explicitly retain .gnu.hash
  powerpc/ptrace: move ptrace_triggered() into hw_breakpoint.c
  powerpc/ptrace: create ppc_gethwdinfo()
  powerpc/ptrace: create ptrace_get_debugreg()
  powerpc/ptrace: split out ADV_DEBUG_REGS related functions.
  powerpc/ptrace: move register viewing functions out of ptrace.c
  powerpc/ptrace: split out TRANSACTIONAL_MEM related functions.
  powerpc/ptrace: split out SPE related functions.
  powerpc/ptrace: split out ALTIVEC related functions.
  powerpc/ptrace: split out VSX related functions.
  powerpc/ptrace: drop PARAMETER_SAVE_AREA_OFFSET
  powerpc/ptrace: drop unnecessary #ifdefs CONFIG_PPC64
  powerpc/ptrace: remove unused header includes
  ...

14 files changed:
1  2 
MAINTAINERS
arch/powerpc/include/asm/kvm_host.h
arch/powerpc/kernel/pci-common.c
arch/powerpc/kernel/vmlinux.lds.S
arch/powerpc/kvm/book3s_64_mmu_hv.c
arch/powerpc/kvm/book3s_64_mmu_radix.c
arch/powerpc/kvm/book3s_hv.c
arch/powerpc/mm/kasan/kasan_init_32.c
arch/powerpc/platforms/pseries/hotplug-memory.c
fs/sysfs/group.c
include/linux/sysfs.h
tools/testing/selftests/powerpc/mm/.gitignore
tools/testing/selftests/powerpc/signal/.gitignore
tools/testing/selftests/powerpc/tm/.gitignore

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -457,118 -478,4 +479,118 @@@ int compat_only_sysfs_link_entry_to_kob
        kernfs_put(target);
        return PTR_ERR_OR_ZERO(link);
  }
- EXPORT_SYMBOL_GPL(__compat_only_sysfs_link_entry_to_kobj);
+ EXPORT_SYMBOL_GPL(compat_only_sysfs_link_entry_to_kobj);
 +
 +static int sysfs_group_attrs_change_owner(struct kernfs_node *grp_kn,
 +                                        const struct attribute_group *grp,
 +                                        struct iattr *newattrs)
 +{
 +      struct kernfs_node *kn;
 +      int error;
 +
 +      if (grp->attrs) {
 +              struct attribute *const *attr;
 +
 +              for (attr = grp->attrs; *attr; attr++) {
 +                      kn = kernfs_find_and_get(grp_kn, (*attr)->name);
 +                      if (!kn)
 +                              return -ENOENT;
 +
 +                      error = kernfs_setattr(kn, newattrs);
 +                      kernfs_put(kn);
 +                      if (error)
 +                              return error;
 +              }
 +      }
 +
 +      if (grp->bin_attrs) {
 +              struct bin_attribute *const *bin_attr;
 +
 +              for (bin_attr = grp->bin_attrs; *bin_attr; bin_attr++) {
 +                      kn = kernfs_find_and_get(grp_kn, (*bin_attr)->attr.name);
 +                      if (!kn)
 +                              return -ENOENT;
 +
 +                      error = kernfs_setattr(kn, newattrs);
 +                      kernfs_put(kn);
 +                      if (error)
 +                              return error;
 +              }
 +      }
 +
 +      return 0;
 +}
 +
 +/**
 + * sysfs_group_change_owner - change owner of an attribute group.
 + * @kobj:     The kobject containing the group.
 + * @grp:      The attribute group.
 + * @kuid:     new owner's kuid
 + * @kgid:     new owner's kgid
 + *
 + * Returns 0 on success or error code on failure.
 + */
 +int sysfs_group_change_owner(struct kobject *kobj,
 +                           const struct attribute_group *grp, kuid_t kuid,
 +                           kgid_t kgid)
 +{
 +      struct kernfs_node *grp_kn;
 +      int error;
 +      struct iattr newattrs = {
 +              .ia_valid = ATTR_UID | ATTR_GID,
 +              .ia_uid = kuid,
 +              .ia_gid = kgid,
 +      };
 +
 +      if (!kobj->state_in_sysfs)
 +              return -EINVAL;
 +
 +      if (grp->name) {
 +              grp_kn = kernfs_find_and_get(kobj->sd, grp->name);
 +      } else {
 +              kernfs_get(kobj->sd);
 +              grp_kn = kobj->sd;
 +      }
 +      if (!grp_kn)
 +              return -ENOENT;
 +
 +      error = kernfs_setattr(grp_kn, &newattrs);
 +      if (!error)
 +              error = sysfs_group_attrs_change_owner(grp_kn, grp, &newattrs);
 +
 +      kernfs_put(grp_kn);
 +
 +      return error;
 +}
 +EXPORT_SYMBOL_GPL(sysfs_group_change_owner);
 +
 +/**
 + * sysfs_groups_change_owner - change owner of a set of attribute groups.
 + * @kobj:     The kobject containing the groups.
 + * @groups:   The attribute groups.
 + * @kuid:     new owner's kuid
 + * @kgid:     new owner's kgid
 + *
 + * Returns 0 on success or error code on failure.
 + */
 +int sysfs_groups_change_owner(struct kobject *kobj,
 +                            const struct attribute_group **groups,
 +                            kuid_t kuid, kgid_t kgid)
 +{
 +      int error = 0, i;
 +
 +      if (!kobj->state_in_sysfs)
 +              return -EINVAL;
 +
 +      if (!groups)
 +              return 0;
 +
 +      for (i = 0; groups[i]; i++) {
 +              error = sysfs_group_change_owner(kobj, groups[i], kuid, kgid);
 +              if (error)
 +                      break;
 +      }
 +
 +      return error;
 +}
 +EXPORT_SYMBOL_GPL(sysfs_groups_change_owner);
Simple merge