cleanup domain builder declarations and related users

There are several unused function and structure declarations in the
hypervisor related to domain building. Remove them.

Use an enum for elf_dom_parms.pae instead of just hard coding the
values when setting the information and adjust the code to use those
instead of own macros (hypervisor and tools).

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
This commit is contained in:
Juergen Gross authored and Jan Beulich committed 2015-09-28 17:28:35 +02:00
1 parent b3da0f4e9a
commit 5d3bcd64d9
9 files changed
+23 -66

No files matched your search

+1 -1
View File
@@ -238,7 +238,7 @@ static int xc_dom_parse_bin_kernel(struct xc_dom_image *dom)
{
DOMPRINTF("%s: PAE fixup", __FUNCTION__);
dom->guest_type = "xen-3.0-x86_32p";
dom->parms.pae = 2;
dom->parms.pae = XEN_PAE_EXTCR3;
}
break;
}
+4 -4
View File
@@ -61,14 +61,14 @@ static char *xc_dom_guest_type(struct xc_dom_image *dom,
case EM_386:
switch ( dom->parms.pae )
{
case 3 /* PAEKERN_bimodal */:
case XEN_PAE_BIMODAL:
if ( strstr(dom->xen_caps, "xen-3.0-x86_32p") )
return "xen-3.0-x86_32p";
return "xen-3.0-x86_32";
case PAEKERN_extended_cr3:
case PAEKERN_yes:
case XEN_PAE_EXTCR3:
case XEN_PAE_YES:
return "xen-3.0-x86_32p";
case PAEKERN_no:
case XEN_PAE_NO:
default:
return "xen-3.0-x86_32";
}
+3 -3
View File
@@ -249,7 +249,7 @@ static int setup_pgtables_x86_32_pae(struct xc_dom_image *dom)
xen_pfn_t pgpfn;
xen_pfn_t l3mfn = xc_dom_p2m_guest(dom, l3pfn);
if ( dom->parms.pae == 1 )
if ( dom->parms.pae == XEN_PAE_YES )
{
if ( l3mfn >= 0x100000 )
l3mfn = move_l3_below_4G(dom, l3pfn, l3mfn);
@@ -602,8 +602,8 @@ static int vcpu_x86_32(struct xc_dom_image *dom, void *ptr)
ctxt->user_regs.eflags = 1 << 9; /* Interrupt Enable */
ctxt->flags = VGCF_in_kernel_X86_32 | VGCF_online_X86_32;
if ( dom->parms.pae == 2 /* extended_cr3 */ ||
dom->parms.pae == 3 /* bimodal */ )
if ( dom->parms.pae == XEN_PAE_EXTCR3 ||
dom->parms.pae == XEN_PAE_BIMODAL )
ctxt->vm_assist |= (1UL << VMASST_TYPE_pae_extended_cr3);
cr3_pfn = xc_dom_p2m_guest(dom, dom->pgtables_seg.pfn);
-6
View File
@@ -165,12 +165,6 @@ static inline xen_pfn_t xc_pfn_to_mfn(xen_pfn_t pfn, xen_pfn_t *p2m,
#define MFN_MASK_X86 ((1ULL << (MADDR_BITS_X86 - PAGE_SHIFT_X86)) - 1)
#define MADDR_MASK_X86 (MFN_MASK_X86 << PAGE_SHIFT_X86)
#define PAEKERN_no 0
#define PAEKERN_yes 1
#define PAEKERN_extended_cr3 2
#define PAEKERN_bimodal 3
int pin_table(xc_interface *xch, unsigned int type, unsigned long mfn,
domid_t dom);
+3 -3
View File
@@ -953,8 +953,8 @@ int __init construct_dom0(
compat32 = 0;
machine = elf_uval(&elf, elf.ehdr, e_machine);
printk(" Xen kernel: 64-bit, lsb, compat32\n");
if (elf_32bit(&elf) && parms.pae == PAEKERN_bimodal)
parms.pae = PAEKERN_extended_cr3;
if (elf_32bit(&elf) && parms.pae == XEN_PAE_BIMODAL)
parms.pae = XEN_PAE_EXTCR3;
if (elf_32bit(&elf) && parms.pae && machine == EM_386)
{
compat32 = 1;
@@ -1005,7 +1005,7 @@ int __init construct_dom0(
nr_pages = compute_dom0_nr_pages(d, &parms, initrd_len);
if ( parms.pae == PAEKERN_extended_cr3 )
if ( parms.pae == XEN_PAE_EXTCR3 )
set_bit(VMASST_TYPE_pae_extended_cr3, &d->vm_assist);
if ( (parms.virt_hv_start_low != UNSET_ADDR) && elf_32bit(&elf) )
+4 -4
View File
@@ -172,9 +172,9 @@ elf_errorstatus elf_xen_parse_note(struct elf_binary *elf,
break;
case XEN_ELFNOTE_PAE_MODE:
if ( !strcmp(str, "yes") )
parms->pae = 2 /* extended_cr3 */;
parms->pae = XEN_PAE_EXTCR3;
if ( strstr(str, "bimodal") )
parms->pae = 3 /* bimodal */;
parms->pae = XEN_PAE_BIMODAL;
break;
case XEN_ELFNOTE_BSD_SYMTAB:
if ( !strcmp(str, "yes") )
@@ -317,9 +317,9 @@ elf_errorstatus elf_xen_parse_guest_info(struct elf_binary *elf,
if ( !strcmp(name, "PAE") )
{
if ( !strcmp(value, "yes[extended-cr3]") )
parms->pae = 2 /* extended_cr3 */;
parms->pae = XEN_PAE_EXTCR3;
else if ( !strncmp(value, "yes", 3) )
parms->pae = 1 /* yes */;
parms->pae = XEN_PAE_YES;
}
if ( !strcmp(name, "BSD_SYMTAB") )
parms->bsd_symtab = 1;
-21
View File
@@ -34,25 +34,4 @@
#define ELFNOTE_DESC(_n_) (ELFNOTE_NAME(_n_) + ELFNOTE_ALIGN((_n_)->namesz))
#define ELFNOTE_NEXT(_n_) ((Elf_Note *)(ELFNOTE_DESC(_n_) + ELFNOTE_ALIGN((_n_)->descsz)))
struct domain_setup_info;
extern int loadelfimage(struct domain_setup_info *);
extern int parseelfimage(struct domain_setup_info *);
extern unsigned long long xen_elfnote_numeric(struct domain_setup_info *dsi,
int type, int *defined);
extern const char *xen_elfnote_string(struct domain_setup_info *dsi, int type);
#ifdef CONFIG_COMPAT
extern int elf32_sanity_check(const Elf32_Ehdr *ehdr);
extern int loadelf32image(struct domain_setup_info *);
extern int parseelf32image(struct domain_setup_info *);
extern unsigned long long xen_elf32note_numeric(struct domain_setup_info *,
int type, int *defined);
extern const char *xen_elf32note_string(struct domain_setup_info *, int type);
#endif
#ifdef Elf_Ehdr
extern int elf_sanity_check(const Elf_Ehdr *ehdr);
#endif
#endif /* __XEN_ELF_H__ */
+8 -1
View File
@@ -393,6 +393,13 @@ enum xen_elfnote_type {
XEN_ENT_STR = 2
};
enum xen_pae_type {
XEN_PAE_NO = 0,
XEN_PAE_YES = 1,
XEN_PAE_EXTCR3 = 2,
XEN_PAE_BIMODAL = 3
};
struct xen_elfnote {
enum xen_elfnote_type type;
const char *name;
@@ -414,7 +421,7 @@ struct elf_dom_parms {
char guest_ver[16];
char xen_ver[16];
char loader[16];
int pae; /* some kind of enum apparently */
enum xen_pae_type pae;
bool bsd_symtab;
uint64_t virt_base;
uint64_t virt_entry;
-23
View File
@@ -463,29 +463,6 @@ struct domain
struct vnuma_info *vnuma;
};
struct domain_setup_info
{
/* Initialised by caller. */
unsigned long image_addr;
unsigned long image_len;
/* Initialised by loader: Public. */
unsigned long v_start;
unsigned long v_end;
unsigned long v_kernstart;
unsigned long v_kernend;
unsigned long v_kernentry;
#define PAEKERN_no 0
#define PAEKERN_yes 1
#define PAEKERN_extended_cr3 2
#define PAEKERN_bimodal 3
unsigned int pae_kernel;
/* Initialised by loader: Private. */
unsigned long elf_paddr_offset;
unsigned int load_symtab;
unsigned long symtab_addr;
unsigned long symtab_len;
};
/* Protect updates/reads (resp.) of domain_list and domain_hash. */
extern spinlock_t domlist_update_lock;
extern rcu_read_lock_t domlist_read_lock;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.