On Wed, 22 Jan 2025 17:13:49 +0100 "Christoph Schlameuss" <schlameuss@xxxxxxxxxxxxx> wrote: > On Fri Jan 17, 2025 at 8:09 PM CET, Claudio Imbrenda wrote: > > Until now, every dat table allocated to map a guest was put in a > > linked list. The page->lru field of struct page was used to keep track > > of which pages were being used, and when the gmap is torn down, the > > list was walked and all pages freed. > > > > This patch gets rid of the usage of page->lru. Page tables are now > > freed by recursively walking the dat table tree. > > > > Since s390_unlist_old_asce() becomes useless now, remove it. > > > > Signed-off-by: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx> > > With comment fixes done: > > Reviewed-by: Christoph Schlameuss <schlameuss@xxxxxxxxxxxxx> > > > --- > > arch/s390/include/asm/gmap.h | 3 -- > > arch/s390/mm/gmap.c | 102 ++++++++--------------------------- > > 2 files changed, 23 insertions(+), 82 deletions(-) > > > > diff --git a/arch/s390/include/asm/gmap.h b/arch/s390/include/asm/gmap.h > > index dbf2329281d2..904d97f0bc5e 100644 > > --- a/arch/s390/include/asm/gmap.h > > +++ b/arch/s390/include/asm/gmap.h > > @@ -45,7 +45,6 @@ > > */ > > struct gmap { > > struct list_head list; > > - struct list_head crst_list; > > nit: Please also remove @crst_list and @pt_list from the struct gmap comment. ouch yes, definitely > > > struct mm_struct *mm; > > struct radix_tree_root guest_to_host; > > struct radix_tree_root host_to_guest; > > @@ -61,7 +60,6 @@ struct gmap { > > /* Additional data for shadow guest address spaces */ > > struct radix_tree_root host_to_rmap; > > struct list_head children; > > - struct list_head pt_list; > > spinlock_t shadow_lock; > > struct gmap *parent; > > unsigned long orig_asce; > > @@ -141,7 +139,6 @@ int gmap_protect_one(struct gmap *gmap, unsigned long gaddr, int prot, unsigned > > void gmap_sync_dirty_log_pmd(struct gmap *gmap, unsigned long dirty_bitmap[4], > > unsigned long gaddr, unsigned long vmaddr); > > int s390_disable_cow_sharing(void); > > -void s390_unlist_old_asce(struct gmap *gmap); > > int s390_replace_asce(struct gmap *gmap); > > void s390_uv_destroy_pfns(unsigned long count, unsigned long *pfns); > > int __s390_uv_destroy_range(struct mm_struct *mm, unsigned long start, > > [...] >