Re: [RFC PATCH v3 2/2] KVM: x86/mmu: replace BUG() with KVM_BUG() in shadow mmu

From: Mingwei Zhang
Date: Mon Nov 28 2022 - 14:27:04 EST


> Something like this?
>
> ---
> arch/x86/kvm/mmu/mmu.c | 20 ++++++++++----------
> 1 file changed, 10 insertions(+), 10 deletions(-)
>
> diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
> index b5a44b8f5f7b..12790ccb8731 100644
> --- a/arch/x86/kvm/mmu/mmu.c
> +++ b/arch/x86/kvm/mmu/mmu.c
> @@ -954,15 +954,16 @@ static void pte_list_remove(struct kvm *kvm, u64 *spte,
> struct pte_list_desc *prev_desc;
> int i;
>
> - if (!rmap_head->val) {
> - pr_err("%s: %p 0->BUG\n", __func__, spte);
> - BUG();
> - } else if (!(rmap_head->val & 1)) {
> + if (KVM_BUG(!rmap_head->val, kvm, "rmap for %p is empty", spte))
> + return;
> +
> + if (!(rmap_head->val & 1)) {
> rmap_printk("%p 1->0\n", spte);
> - if ((u64 *)rmap_head->val != spte) {
> - pr_err("%s: %p 1->BUG\n", __func__, spte);
> - BUG();
> - }
> +
> + if (KVM_BUG((u64 *)rmap_head->val != spte, kvm,
> + "single rmap for %p doesn't match", spte))
> + return;
> +
> rmap_head->val = 0;
> } else {
> rmap_printk("%p many->many\n", spte);
> @@ -979,8 +980,7 @@ static void pte_list_remove(struct kvm *kvm, u64 *spte,
> prev_desc = desc;
> desc = desc->more;
> }
> - pr_err("%s: %p many->many\n", __func__, spte);
> - BUG();
> + KVM_BUG(true, kvm, "no rmap for %p (many->many)", spte);
> }
> }
>
>
> base-commit: d74237e747db7f9f27e821e6683d58185e846378
> --
>

make sense, will update that in the next version.