|
@@ -214,13 +214,12 @@ EXPORT_SYMBOL_GPL(kvm_mmu_set_mmio_spte_mask);
|
|
#define MMIO_GEN_LOW_SHIFT 10
|
|
#define MMIO_GEN_LOW_SHIFT 10
|
|
#define MMIO_GEN_LOW_MASK ((1 << MMIO_GEN_LOW_SHIFT) - 2)
|
|
#define MMIO_GEN_LOW_MASK ((1 << MMIO_GEN_LOW_SHIFT) - 2)
|
|
#define MMIO_GEN_MASK ((1 << MMIO_GEN_SHIFT) - 1)
|
|
#define MMIO_GEN_MASK ((1 << MMIO_GEN_SHIFT) - 1)
|
|
-#define MMIO_MAX_GEN ((1 << MMIO_GEN_SHIFT) - 1)
|
|
|
|
|
|
|
|
static u64 generation_mmio_spte_mask(unsigned int gen)
|
|
static u64 generation_mmio_spte_mask(unsigned int gen)
|
|
{
|
|
{
|
|
u64 mask;
|
|
u64 mask;
|
|
|
|
|
|
- WARN_ON(gen > MMIO_MAX_GEN);
|
|
|
|
|
|
+ WARN_ON(gen & ~MMIO_GEN_MASK);
|
|
|
|
|
|
mask = (gen & MMIO_GEN_LOW_MASK) << MMIO_SPTE_GEN_LOW_SHIFT;
|
|
mask = (gen & MMIO_GEN_LOW_MASK) << MMIO_SPTE_GEN_LOW_SHIFT;
|
|
mask |= ((u64)gen >> MMIO_GEN_LOW_SHIFT) << MMIO_SPTE_GEN_HIGH_SHIFT;
|
|
mask |= ((u64)gen >> MMIO_GEN_LOW_SHIFT) << MMIO_SPTE_GEN_HIGH_SHIFT;
|
|
@@ -263,13 +262,13 @@ static bool is_mmio_spte(u64 spte)
|
|
|
|
|
|
static gfn_t get_mmio_spte_gfn(u64 spte)
|
|
static gfn_t get_mmio_spte_gfn(u64 spte)
|
|
{
|
|
{
|
|
- u64 mask = generation_mmio_spte_mask(MMIO_MAX_GEN) | shadow_mmio_mask;
|
|
|
|
|
|
+ u64 mask = generation_mmio_spte_mask(MMIO_GEN_MASK) | shadow_mmio_mask;
|
|
return (spte & ~mask) >> PAGE_SHIFT;
|
|
return (spte & ~mask) >> PAGE_SHIFT;
|
|
}
|
|
}
|
|
|
|
|
|
static unsigned get_mmio_spte_access(u64 spte)
|
|
static unsigned get_mmio_spte_access(u64 spte)
|
|
{
|
|
{
|
|
- u64 mask = generation_mmio_spte_mask(MMIO_MAX_GEN) | shadow_mmio_mask;
|
|
|
|
|
|
+ u64 mask = generation_mmio_spte_mask(MMIO_GEN_MASK) | shadow_mmio_mask;
|
|
return (spte & ~mask) & ~PAGE_MASK;
|
|
return (spte & ~mask) & ~PAGE_MASK;
|
|
}
|
|
}
|
|
|
|
|