Skip to content

Commit

Permalink
x86/shadow: drop SH_type_l2h_pae_shadow
Browse files Browse the repository at this point in the history
This is a remnant from 32-bit days, having no place anymore where a
shadow of this type would be created.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Tim Deegan <tim@xen.org>
  • Loading branch information
jbeulich committed Apr 12, 2021
1 parent 5eb6f82 commit 42bbda6
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 33 deletions.
16 changes: 1 addition & 15 deletions xen/arch/x86/mm/shadow/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -792,9 +792,6 @@ sh_validate_guest_entry(struct vcpu *v, mfn_t gmfn, void *entry, u32 size)
if ( page->shadow_flags & SHF_L2_PAE )
result |= SHADOW_INTERNAL_NAME(sh_map_and_validate_gl2e, 3)
(v, gmfn, entry, size);
if ( page->shadow_flags & SHF_L2H_PAE )
result |= SHADOW_INTERNAL_NAME(sh_map_and_validate_gl2he, 3)
(v, gmfn, entry, size);

if ( page->shadow_flags & SHF_L1_64 )
result |= SHADOW_INTERNAL_NAME(sh_map_and_validate_gl1e, 4)
Expand Down Expand Up @@ -859,7 +856,6 @@ const u8 sh_type_to_size[] = {
1, /* SH_type_l1_pae_shadow */
1, /* SH_type_fl1_pae_shadow */
1, /* SH_type_l2_pae_shadow */
1, /* SH_type_l2h_pae_shadow */
1, /* SH_type_l1_64_shadow */
1, /* SH_type_fl1_64_shadow */
1, /* SH_type_l2_64_shadow */
Expand Down Expand Up @@ -900,7 +896,6 @@ void shadow_unhook_mappings(struct domain *d, mfn_t smfn, int user_only)
SHADOW_INTERNAL_NAME(sh_unhook_32b_mappings, 2)(d, smfn, user_only);
break;
case SH_type_l2_pae_shadow:
case SH_type_l2h_pae_shadow:
SHADOW_INTERNAL_NAME(sh_unhook_pae_mappings, 3)(d, smfn, user_only);
break;
case SH_type_l4_64_shadow:
Expand Down Expand Up @@ -1764,7 +1759,6 @@ void sh_destroy_shadow(struct domain *d, mfn_t smfn)
SHADOW_INTERNAL_NAME(sh_destroy_l1_shadow, 3)(d, smfn);
break;
case SH_type_l2_pae_shadow:
case SH_type_l2h_pae_shadow:
SHADOW_INTERNAL_NAME(sh_destroy_l2_shadow, 3)(d, smfn);
break;

Expand Down Expand Up @@ -1823,7 +1817,6 @@ int sh_remove_write_access(struct domain *d, mfn_t gmfn,
SHADOW_INTERNAL_NAME(sh_rm_write_access_from_l1, 3), /* l1_pae */
SHADOW_INTERNAL_NAME(sh_rm_write_access_from_l1, 3), /* fl1_pae */
NULL, /* l2_pae */
NULL, /* l2h_pae */
SHADOW_INTERNAL_NAME(sh_rm_write_access_from_l1, 4), /* l1_64 */
SHADOW_INTERNAL_NAME(sh_rm_write_access_from_l1, 4), /* fl1_64 */
NULL, /* l2_64 */
Expand Down Expand Up @@ -2047,7 +2040,6 @@ int sh_remove_all_mappings(struct domain *d, mfn_t gmfn, gfn_t gfn)
SHADOW_INTERNAL_NAME(sh_rm_mappings_from_l1, 3), /* l1_pae */
SHADOW_INTERNAL_NAME(sh_rm_mappings_from_l1, 3), /* fl1_pae */
NULL, /* l2_pae */
NULL, /* l2h_pae */
SHADOW_INTERNAL_NAME(sh_rm_mappings_from_l1, 4), /* l1_64 */
SHADOW_INTERNAL_NAME(sh_rm_mappings_from_l1, 4), /* fl1_64 */
NULL, /* l2_64 */
Expand Down Expand Up @@ -2145,7 +2137,6 @@ static int sh_remove_shadow_via_pointer(struct domain *d, mfn_t smfn)
break;
case SH_type_l1_pae_shadow:
case SH_type_l2_pae_shadow:
case SH_type_l2h_pae_shadow:
SHADOW_INTERNAL_NAME(sh_clear_shadow_entry, 3)(d, vaddr, pmfn);
break;
case SH_type_l1_64_shadow:
Expand Down Expand Up @@ -2190,7 +2181,6 @@ void sh_remove_shadows(struct domain *d, mfn_t gmfn, int fast, int all)
NULL, /* l1_pae */
NULL, /* fl1_pae */
SHADOW_INTERNAL_NAME(sh_remove_l1_shadow, 3), /* l2_pae */
SHADOW_INTERNAL_NAME(sh_remove_l1_shadow, 3), /* l2h_pae */
NULL, /* l1_64 */
NULL, /* fl1_64 */
SHADOW_INTERNAL_NAME(sh_remove_l1_shadow, 4), /* l2_64 */
Expand All @@ -2207,10 +2197,9 @@ void sh_remove_shadows(struct domain *d, mfn_t gmfn, int fast, int all)
SHF_L2_32, /* l1_32 */
0, /* fl1_32 */
0, /* l2_32 */
SHF_L2H_PAE | SHF_L2_PAE, /* l1_pae */
SHF_L2_PAE, /* l1_pae */
0, /* fl1_pae */
0, /* l2_pae */
0, /* l2h_pae */
SHF_L2H_64 | SHF_L2_64, /* l1_64 */
0, /* fl1_64 */
SHF_L3_64, /* l2_64 */
Expand Down Expand Up @@ -2273,7 +2262,6 @@ void sh_remove_shadows(struct domain *d, mfn_t gmfn, int fast, int all)

DO_UNSHADOW(SH_type_l2_32_shadow);
DO_UNSHADOW(SH_type_l1_32_shadow);
DO_UNSHADOW(SH_type_l2h_pae_shadow);
DO_UNSHADOW(SH_type_l2_pae_shadow);
DO_UNSHADOW(SH_type_l1_pae_shadow);
DO_UNSHADOW(SH_type_l4_64_shadow);
Expand Down Expand Up @@ -2356,7 +2344,6 @@ void sh_reset_l3_up_pointers(struct vcpu *v)
NULL, /* l1_pae */
NULL, /* fl1_pae */
NULL, /* l2_pae */
NULL, /* l2h_pae */
NULL, /* l1_64 */
NULL, /* fl1_64 */
NULL, /* l2_64 */
Expand Down Expand Up @@ -3381,7 +3368,6 @@ void shadow_audit_tables(struct vcpu *v)
SHADOW_INTERNAL_NAME(sh_audit_l1_table, 3), /* l1_pae */
SHADOW_INTERNAL_NAME(sh_audit_fl1_table, 3), /* fl1_pae */
SHADOW_INTERNAL_NAME(sh_audit_l2_table, 3), /* l2_pae */
SHADOW_INTERNAL_NAME(sh_audit_l2_table, 3), /* l2h_pae */
SHADOW_INTERNAL_NAME(sh_audit_l1_table, 4), /* l1_64 */
SHADOW_INTERNAL_NAME(sh_audit_fl1_table, 4), /* fl1_64 */
SHADOW_INTERNAL_NAME(sh_audit_l2_table, 4), /* l2_64 */
Expand Down
2 changes: 1 addition & 1 deletion xen/arch/x86/mm/shadow/hvm.c
Original file line number Diff line number Diff line change
Expand Up @@ -568,7 +568,7 @@ static inline void check_for_early_unshadow(struct vcpu *v, mfn_t gmfn)
&& sh_mfn_is_a_page_table(gmfn)
&& (!d->arch.paging.shadow.pagetable_dying_op ||
!(mfn_to_page(gmfn)->shadow_flags
& (SHF_L2_32|SHF_L2_PAE|SHF_L2H_PAE|SHF_L4_64))) )
& (SHF_L2_32|SHF_L2_PAE|SHF_L4_64))) )
{
perfc_incr(shadow_early_unshadow);
sh_remove_shadows(d, gmfn, 1, 0 /* Fast, can fail to unshadow */ );
Expand Down
3 changes: 1 addition & 2 deletions xen/arch/x86/mm/shadow/multi.c
Original file line number Diff line number Diff line change
Expand Up @@ -838,8 +838,7 @@ do { \
int _i; \
shadow_l2e_t *_sp = map_domain_page((_sl2mfn)); \
ASSERT(shadow_mode_external(_dom)); \
ASSERT(mfn_to_page(_sl2mfn)->u.sh.type == SH_type_l2_pae_shadow \
|| mfn_to_page(_sl2mfn)->u.sh.type == SH_type_l2h_pae_shadow); \
ASSERT(mfn_to_page(_sl2mfn)->u.sh.type == SH_type_l2_pae_shadow); \
for ( _i = 0; _i < SHADOW_L2_PAGETABLE_ENTRIES; _i++ ) \
{ \
(_sl2e) = _sp + _i; \
Expand Down
27 changes: 12 additions & 15 deletions xen/arch/x86/mm/shadow/private.h
Original file line number Diff line number Diff line change
Expand Up @@ -177,18 +177,17 @@ extern void shadow_audit_tables(struct vcpu *v);
#define SH_type_l1_pae_shadow (4U) /* shadowing a pae L1 page */
#define SH_type_fl1_pae_shadow (5U) /* L1 shadow for pae 2M superpg */
#define SH_type_l2_pae_shadow (6U) /* shadowing a pae L2-low page */
#define SH_type_l2h_pae_shadow (7U) /* shadowing a pae L2-high page */
#define SH_type_l1_64_shadow (8U) /* shadowing a 64-bit L1 page */
#define SH_type_fl1_64_shadow (9U) /* L1 shadow for 64-bit 2M superpg */
#define SH_type_l2_64_shadow (10U) /* shadowing a 64-bit L2 page */
#define SH_type_l2h_64_shadow (11U) /* shadowing a compat PAE L2 high page */
#define SH_type_l3_64_shadow (12U) /* shadowing a 64-bit L3 page */
#define SH_type_l4_64_shadow (13U) /* shadowing a 64-bit L4 page */
#define SH_type_max_shadow (13U)
#define SH_type_p2m_table (14U) /* in use as the p2m table */
#define SH_type_monitor_table (15U) /* in use as a monitor table */
#define SH_type_oos_snapshot (16U) /* in use as OOS snapshot */
#define SH_type_unused (17U)
#define SH_type_l1_64_shadow (7U) /* shadowing a 64-bit L1 page */
#define SH_type_fl1_64_shadow (8U) /* L1 shadow for 64-bit 2M superpg */
#define SH_type_l2_64_shadow (9U) /* shadowing a 64-bit L2 page */
#define SH_type_l2h_64_shadow (10U) /* shadowing a compat PAE L2 high page */
#define SH_type_l3_64_shadow (11U) /* shadowing a 64-bit L3 page */
#define SH_type_l4_64_shadow (12U) /* shadowing a 64-bit L4 page */
#define SH_type_max_shadow (12U)
#define SH_type_p2m_table (13U) /* in use as the p2m table */
#define SH_type_monitor_table (14U) /* in use as a monitor table */
#define SH_type_oos_snapshot (15U) /* in use as OOS snapshot */
#define SH_type_unused (16U)

/*
* What counts as a pinnable shadow?
Expand All @@ -200,7 +199,6 @@ static inline int sh_type_is_pinnable(struct domain *d, unsigned int t)
* persist even when not currently in use in a guest CR3 */
if ( t == SH_type_l2_32_shadow
|| t == SH_type_l2_pae_shadow
|| t == SH_type_l2h_pae_shadow
|| t == SH_type_l4_64_shadow )
return 1;

Expand Down Expand Up @@ -256,7 +254,6 @@ static inline void sh_terminate_list(struct page_list_head *tmp_list)
#define SHF_L1_PAE (1u << SH_type_l1_pae_shadow)
#define SHF_FL1_PAE (1u << SH_type_fl1_pae_shadow)
#define SHF_L2_PAE (1u << SH_type_l2_pae_shadow)
#define SHF_L2H_PAE (1u << SH_type_l2h_pae_shadow)
#define SHF_L1_64 (1u << SH_type_l1_64_shadow)
#define SHF_FL1_64 (1u << SH_type_fl1_64_shadow)
#define SHF_L2_64 (1u << SH_type_l2_64_shadow)
Expand All @@ -265,7 +262,7 @@ static inline void sh_terminate_list(struct page_list_head *tmp_list)
#define SHF_L4_64 (1u << SH_type_l4_64_shadow)

#define SHF_32 (SHF_L1_32|SHF_FL1_32|SHF_L2_32)
#define SHF_PAE (SHF_L1_PAE|SHF_FL1_PAE|SHF_L2_PAE|SHF_L2H_PAE)
#define SHF_PAE (SHF_L1_PAE|SHF_FL1_PAE|SHF_L2_PAE)
#define SHF_64 (SHF_L1_64|SHF_FL1_64|SHF_L2_64|SHF_L2H_64|SHF_L3_64|SHF_L4_64)

#define SHF_L1_ANY (SHF_L1_32|SHF_L1_PAE|SHF_L1_64)
Expand Down

0 comments on commit 42bbda6

Please sign in to comment.