From: Paolo Bonzini Date: Tue, 2 Jan 2024 18:16:29 +0000 (-0500) Subject: Merge tag 'loongarch-kvm-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhu... X-Git-Tag: v6.8-rc1~78^2~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=136292522e43da46bee4c0fef80b2602f79525a2;p=thirdparty%2Flinux.git Merge tag 'loongarch-kvm-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson into HEAD LoongArch KVM changes for v6.8 1. Optimization for memslot hugepage checking. 2. Cleanup and fix some HW/SW timer issues. 3. Add LSX/LASX (128bit/256bit SIMD) support. --- 136292522e43da46bee4c0fef80b2602f79525a2 diff --cc include/linux/pagemap.h index bf2965b01b357,06142ff7f9ce0..2df35e65557d2 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@@ -203,8 -203,9 +203,10 @@@ enum mapping_flags /* writeback related tags are not used */ AS_NO_WRITEBACK_TAGS = 5, AS_LARGE_FOLIO_SUPPORT = 6, - AS_RELEASE_ALWAYS = 7, /* Call ->release_folio(), even if no private data */ - AS_UNMOVABLE = 8, /* The mapping cannot be moved, ever */ + AS_RELEASE_ALWAYS, /* Call ->release_folio(), even if no private data */ + AS_STABLE_WRITES, /* must wait for writeback before modifying + folio contents */ ++ AS_UNMOVABLE, /* The mapping cannot be moved, ever */ }; /** @@@ -290,22 -291,21 +292,37 @@@ static inline void mapping_clear_releas clear_bit(AS_RELEASE_ALWAYS, &mapping->flags); } + static inline bool mapping_stable_writes(const struct address_space *mapping) + { + return test_bit(AS_STABLE_WRITES, &mapping->flags); + } + + static inline void mapping_set_stable_writes(struct address_space *mapping) + { + set_bit(AS_STABLE_WRITES, &mapping->flags); + } + + static inline void mapping_clear_stable_writes(struct address_space *mapping) + { + clear_bit(AS_STABLE_WRITES, &mapping->flags); + } + +static inline void mapping_set_unmovable(struct address_space *mapping) +{ + /* + * It's expected unmovable mappings are also unevictable. Compaction + * migrate scanner (isolate_migratepages_block()) relies on this to + * reduce page locking. + */ + set_bit(AS_UNEVICTABLE, &mapping->flags); + set_bit(AS_UNMOVABLE, &mapping->flags); +} + +static inline bool mapping_unmovable(struct address_space *mapping) +{ + return test_bit(AS_UNMOVABLE, &mapping->flags); +} + static inline gfp_t mapping_gfp_mask(struct address_space * mapping) { return mapping->gfp_mask;