[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20200809185543.4dffd5e1@canb.auug.org.au>
Date: Sun, 9 Aug 2020 18:55:43 +1000
From: Stephen Rothwell <sfr@...b.auug.org.au>
To: Christoffer Dall <cdall@...columbia.edu>,
Marc Zyngier <maz@...nel.org>
Cc: Paolo Bonzini <pbonzini@...hat.com>, KVM <kvm@...r.kernel.org>,
Linux Next Mailing List <linux-next@...r.kernel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Sean Christopherson <sean.j.christopherson@...el.com>
Subject: Re: linux-next: manual merge of the kvm-arm tree with the kvm tree
Hi all,
On Mon, 13 Jul 2020 14:40:36 +1000 Stephen Rothwell <sfr@...b.auug.org.au> wrote:
>
> Today's linux-next merge of the kvm-arm tree got a conflict in:
>
> arch/arm64/kvm/mmu.c
>
> between commit:
>
> c1a33aebe91d ("KVM: arm64: Use common KVM implementation of MMU memory caches")
>
> from the kvm tree and commit:
>
> a0e50aa3f4a8 ("KVM: arm64: Factor out stage 2 page table data from struct kvm")
>
> from the kvm-arm tree.
>
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging. You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
>
> diff --cc arch/arm64/kvm/mmu.c
> index 838aad520f1c,cd14c831d56f..000000000000
> --- a/arch/arm64/kvm/mmu.c
> +++ b/arch/arm64/kvm/mmu.c
> @@@ -124,11 -127,44 +127,12 @@@ static void stage2_dissolve_pud(struct
> put_page(virt_to_page(pudp));
> }
>
> - static void clear_stage2_pgd_entry(struct kvm *kvm, pgd_t *pgd, phys_addr_t addr)
> -static int mmu_topup_memory_cache(struct kvm_mmu_memory_cache *cache,
> - int min, int max)
> -{
> - void *page;
> -
> - BUG_ON(max > KVM_NR_MEM_OBJS);
> - if (cache->nobjs >= min)
> - return 0;
> - while (cache->nobjs < max) {
> - page = (void *)__get_free_page(GFP_PGTABLE_USER);
> - if (!page)
> - return -ENOMEM;
> - cache->objects[cache->nobjs++] = page;
> - }
> - return 0;
> -}
> -
> -static void mmu_free_memory_cache(struct kvm_mmu_memory_cache *mc)
> -{
> - while (mc->nobjs)
> - free_page((unsigned long)mc->objects[--mc->nobjs]);
> -}
> -
> -static void *mmu_memory_cache_alloc(struct kvm_mmu_memory_cache *mc)
> -{
> - void *p;
> -
> - BUG_ON(!mc || !mc->nobjs);
> - p = mc->objects[--mc->nobjs];
> - return p;
> -}
> -
> + static void clear_stage2_pgd_entry(struct kvm_s2_mmu *mmu, pgd_t *pgd, phys_addr_t addr)
> {
> + struct kvm *kvm = mmu->kvm;
> p4d_t *p4d_table __maybe_unused = stage2_p4d_offset(kvm, pgd, 0UL);
> stage2_pgd_clear(kvm, pgd);
> - kvm_tlb_flush_vmid_ipa(kvm, addr);
> + kvm_tlb_flush_vmid_ipa(mmu, addr, S2_NO_LEVEL_HINT);
> stage2_p4d_free(kvm, p4d_table);
> put_page(virt_to_page(pgd));
> }
This is now a conflict between the kvm-arm tree and Linus' tree.
--
Cheers,
Stephen Rothwell
Content of type "application/pgp-signature" skipped
Powered by blists - more mailing lists