Re: [kvm-unit-tests PATCH v6 3/4] x86: Add test cases for LAM_{U48,U57}

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 22, 2024, Binbin Wu wrote:
> +static inline bool lam_u48_active(void)
> +{
> +	return (read_cr3() & CR3_LAM_BITS_MASK) == X86_CR3_LAM_U48;
> +}
> +
> +static inline bool lam_u57_active(void)
> +{
> +	return !!(read_cr3() & X86_CR3_LAM_U57);
> +}

Same comments as the supervisor patches.

> +static void test_lam_user_mode(bool has_lam, u64 lam_mask, u64 mem, u64 mmio)
> +{
> +	unsigned r;
> +	bool raised_vector;
> +	unsigned long cr3 = read_cr3() & ~CR3_LAM_BITS_MASK;
> +	u64 flags = 0;
> +
> +	if (is_la57())
> +		flags |= FLAGS_LA57;
> +
> +	if (has_lam) {
> +		if (lam_mask == LAM48_MASK) {
> +			r = write_cr3_safe(cr3 | X86_CR3_LAM_U48);
> +			report((r == 0) && lam_u48_active(), "Set LAM_U48");

!r is the preferred style

> +		} else {
> +			r = write_cr3_safe(cr3 | X86_CR3_LAM_U57);
> +			report((r == 0) && lam_u57_active(), "Set LAM_U57");
> +		}
> +	}
> +	if (lam_u48_active() || lam_u57_active())
> +		flags |= FLAGS_LAM_ACTIVE;
> +
> +	run_in_user((usermode_func)test_ptr, GP_VECTOR, flags, lam_mask, mem,
> +		    false, &raised_vector);

Ah, this is why test_ptr() doesn't recompute things.  Hrm.  Ah, I think we can at
least compute the mask dynamically, e.g. test_ptr() just need to know if LAM48
and/or LAM57 is enabled, right?

> +	run_in_user((usermode_func)test_ptr, GP_VECTOR, flags, lam_mask, mmio,
> +		    true, &raised_vector);
> +}




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux