# SPDX-License-Identifier: GPL-2.0
  
  obj-y                         += mmu_context.o tlb.o tlb_low.o kup.o
- obj-$(CONFIG_PPC_BOOK3E_64)   += tlb_low_64e.o book3e_pgtable.o
+ obj-$(CONFIG_PPC_BOOK3E_64)   += tlb_64e.o tlb_low_64e.o book3e_pgtable.o
 -obj-$(CONFIG_40x)             += 40x.o
  obj-$(CONFIG_44x)             += 44x.o
  obj-$(CONFIG_PPC_8xx)         += 8xx.o
  obj-$(CONFIG_PPC_E500)                += e500.o
 
        return NOTIFY_OK;
  }
  
--static int hmat_set_default_dram_perf(void)
++static int __init hmat_set_default_dram_perf(void)
  {
        int rc;
        int nid, pxm;
 
        struct folio *sink = NULL;
        int ret;
  
 -      _enter("%lx", folio->index);
 +      kenter("%lx", folio->index);
  
        rreq = netfs_alloc_request(mapping, file,
-                                  folio_file_pos(folio), folio_size(folio),
+                                  folio_pos(folio), folio_size(folio),
                                   NETFS_READPAGE);
        if (IS_ERR(rreq)) {
                ret = PTR_ERR(rreq);
 
  {
        struct netfs_folio *finfo = netfs_folio_info(folio);
        struct netfs_group *group = netfs_folio_group(folio);
-       loff_t pos = folio_file_pos(folio);
+       loff_t pos = folio_pos(folio);
  
 -      _enter("");
 +      kenter("");
  
        if (group != netfs_group && group != NETFS_FOLIO_COPY_TO_CACHE)
                return NETFS_FLUSH_CONTENT;
 
        spin_lock(&inode->i_lock);
        i_size = i_size_read(inode);
        end_index = ((i_size - 1) >> folio_shift(folio)) << folio_order(folio);
 -      if (i_size > 0 && folio_index(folio) < end_index)
 +      if (i_size > 0 && folio->index < end_index)
                goto out;
-       end = folio_file_pos(folio) + (loff_t)offset + (loff_t)count;
+       end = folio_pos(folio) + (loff_t)offset + (loff_t)count;
        if (i_size >= end)
                goto out;
        trace_nfs_size_grow(inode, end);
 
  static inline int hid_bpf_connect_device(struct hid_device *hdev) { return 0; }
  static inline void hid_bpf_disconnect_device(struct hid_device *hdev) {}
  static inline void hid_bpf_destroy_device(struct hid_device *hid) {}
 -static inline void hid_bpf_device_init(struct hid_device *hid) {}
 +static inline int hid_bpf_device_init(struct hid_device *hid) { return 0; }
+ /*
+  * This specialized allocator has to be a macro for its allocations to be
+  * accounted separately (to have a separate alloc_tag). The typecast is
+  * intentional to enforce typesafety.
+  */
  #define call_hid_bpf_rdesc_fixup(_hdev, _rdesc, _size)        \
                ((u8 *)kmemdup(_rdesc, *(_size), GFP_KERNEL))
  
 
  /* per-IO negation of O_APPEND */
  #define RWF_NOAPPEND  ((__force __kernel_rwf_t)0x00000020)
  
 +/* Atomic Write */
 +#define RWF_ATOMIC    ((__force __kernel_rwf_t)0x00000040)
 +
  /* mask of flags supported by the kernel */
  #define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT |\
 -                       RWF_APPEND | RWF_NOAPPEND)
 +                       RWF_APPEND | RWF_NOAPPEND | RWF_ATOMIC)
  
+ #define PROCFS_IOCTL_MAGIC 'f'
+ 
  /* Pagemap ioctl */
- #define PAGEMAP_SCAN  _IOWR('f', 16, struct pm_scan_arg)
+ #define PAGEMAP_SCAN  _IOWR(PROCFS_IOCTL_MAGIC, 16, struct pm_scan_arg)
  
  /* Bitmasks provided in pm_scan_args masks and reported in page_region.categories. */
  #define PAGE_IS_WPALLOWED     (1 << 0)
 
  {
  }
  
 -#endif /* CONFIG_SLAB_OBJ_EXT */
 +#endif /* CONFIG_MEM_ALLOC_PROFILING */
 +
  
- #ifdef CONFIG_MEMCG_KMEM
+ #ifdef CONFIG_MEMCG
  
  static void memcg_alloc_abort_single(struct kmem_cache *s, void *object);
  
 
  # SPDX-License-Identifier: GPL-2.0
  CFLAGS = -Wall
  CFLAGS += -Wno-nonnull
- CFLAGS += -D_GNU_SOURCE
  
 +ALIGNS := 0x1000 0x200000 0x1000000
 +ALIGN_PIES        := $(patsubst %,load_address.%,$(ALIGNS))
 +ALIGN_STATIC_PIES := $(patsubst %,load_address.static.%,$(ALIGNS))
 +ALIGNMENT_TESTS   := $(ALIGN_PIES) $(ALIGN_STATIC_PIES)
 +
  TEST_PROGS := binfmt_script.py
 -TEST_GEN_PROGS := execveat load_address_4096 load_address_2097152 load_address_16777216 non-regular
 +TEST_GEN_PROGS := execveat non-regular $(ALIGNMENT_TESTS)
  TEST_GEN_FILES := execveat.symlink execveat.denatured script subdir
  # Makefile is a run-time dependency, since it's accessed by the execveat test
  TEST_FILES := Makefile