* [PATCH] libxc: Refactor x86 specific code into x86 specific files
@ 2011-11-09 13:12 Christoph Egger
2011-11-24 16:30 ` Ian Jackson
0 siblings, 1 reply; 4+ messages in thread
From: Christoph Egger @ 2011-11-09 13:12 UTC (permalink / raw)
To: Ian Jackson, xen-devel@lists.xensource.com
[-- Attachment #1: Type: text/plain, Size: 446 bytes --]
Move x86 specific code into x86 specific files.
Eliminate arch specific PAGE constants by using common
XC_PAGE_* contants.
Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
--
---to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Einsteinring 24, 85689 Dornach b. Muenchen
Geschaeftsfuehrer: Alberto Bozzo, Andrew Bowd
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632
[-- Attachment #2: xen_tools_libxc_x86.diff --]
[-- Type: text/plain, Size: 33583 bytes --]
diff -r c2a8bde9ad6e tools/libxc/Makefile
--- a/tools/libxc/Makefile Wed Nov 02 14:54:36 2011 +0100
+++ b/tools/libxc/Makefile Wed Nov 09 14:01:30 2011 +0100
@@ -13,6 +13,7 @@ CTRL_SRCS-y += xc_domain.c
CTRL_SRCS-y += xc_evtchn.c
CTRL_SRCS-y += xc_gnttab.c
CTRL_SRCS-y += xc_misc.c
+CTRL_SRCS-$(CONFIG_X86) += xc_misc_x86.c
CTRL_SRCS-y += xc_flask.c
CTRL_SRCS-y += xc_physdev.c
CTRL_SRCS-y += xc_private.c
diff -r c2a8bde9ad6e tools/libxc/xc_dom_ia64.c
--- a/tools/libxc/xc_dom_ia64.c Wed Nov 02 14:54:36 2011 +0100
+++ b/tools/libxc/xc_dom_ia64.c Wed Nov 09 14:01:30 2011 +0100
@@ -83,7 +83,7 @@ int start_info_ia64(struct xc_dom_image
bp->initrd_start = start_info->mod_start;
bp->initrd_size = start_info->mod_len;
}
- bp->command_line = (dom->start_info_pfn << PAGE_SHIFT_IA64)
+ bp->command_line = (dom->start_info_pfn << XC_PAGE_SHIFT)
+ offsetof(start_info_t, cmd_line);
if ( dom->cmdline )
{
@@ -128,7 +128,7 @@ static int vcpu_ia64(struct xc_dom_image
#ifdef __ia64__ /* FIXME */
ctxt->regs.ar.fpsr = xc_ia64_fpsr_default();
#endif
- ctxt->regs.r[28] = (dom->start_info_pfn << PAGE_SHIFT_IA64)
+ ctxt->regs.r[28] = (dom->start_info_pfn << XC_PAGE_SHIFT)
+ sizeof(start_info_ia64_t);
return 0;
}
@@ -138,7 +138,7 @@ static int vcpu_ia64(struct xc_dom_image
static struct xc_dom_arch xc_dom_arch = {
.guest_type = "xen-3.0-ia64",
.native_protocol = XEN_IO_PROTO_ABI_IA64,
- .page_shift = PAGE_SHIFT_IA64,
+ .page_shift = XC_PAGE_SHIFT,
.alloc_magic_pages = alloc_magic_pages,
.start_info = start_info_ia64,
.shared_info = shared_info_ia64,
@@ -148,7 +148,7 @@ static struct xc_dom_arch xc_dom_arch =
static struct xc_dom_arch xc_dom_arch_ia64be = {
.guest_type = "xen-3.0-ia64be",
.native_protocol = XEN_IO_PROTO_ABI_IA64,
- .page_shift = PAGE_SHIFT_IA64,
+ .page_shift = XC_PAGE_SHIFT,
.alloc_magic_pages = alloc_magic_pages,
.start_info = start_info_ia64,
.shared_info = shared_info_ia64,
@@ -173,8 +173,8 @@ int arch_setup_meminit(struct xc_dom_ima
/* setup initial p2m */
if (dom->guest_type && strcmp(dom->guest_type,
"hvm-3.0-ia64-sioemu") == 0) {
- start = FW_MEM_BASE >> PAGE_SHIFT_IA64;
- nbr = FW_MEM_SIZE >> PAGE_SHIFT_IA64;
+ start = FW_MEM_BASE >> XC_PAGE_SHIFT;
+ nbr = FW_MEM_SIZE >> XC_PAGE_SHIFT;
} else {
start = 0;
nbr = dom->total_pages;
diff -r c2a8bde9ad6e tools/libxc/xc_dom_x86.c
--- a/tools/libxc/xc_dom_x86.c Wed Nov 02 14:54:36 2011 +0100
+++ b/tools/libxc/xc_dom_x86.c Wed Nov 09 14:01:30 2011 +0100
@@ -89,7 +89,7 @@ static int count_pgtables(struct xc_dom_
pages = extra_pages;
for ( ; ; )
{
- try_virt_end = round_up(dom->virt_alloc_end + pages * PAGE_SIZE_X86,
+ try_virt_end = round_up(dom->virt_alloc_end + pages * XC_PAGE_SIZE,
bits_to_mask(22)); /* 4MB alignment */
dom->pg_l4 =
nr_page_tables(dom, dom->parms.virt_base, try_virt_end, l4_bits);
@@ -107,7 +107,7 @@ static int count_pgtables(struct xc_dom_
}
dom->pgtables = dom->pg_l4 + dom->pg_l3 + dom->pg_l2 + dom->pg_l1;
pages = dom->pgtables + extra_pages;
- if ( dom->virt_alloc_end + pages * PAGE_SIZE_X86 <= try_virt_end + 1 )
+ if ( dom->virt_alloc_end + pages * XC_PAGE_SIZE <= try_virt_end + 1 )
break;
}
dom->virt_pgtab_end = try_virt_end + 1;
@@ -132,7 +132,7 @@ static int count_pgtables_x86_32_pae(str
L3_PAGETABLE_SHIFT_PAE, L2_PAGETABLE_SHIFT_PAE);
}
-#define pfn_to_paddr(pfn) ((xen_paddr_t)(pfn) << PAGE_SHIFT_X86)
+#define pfn_to_paddr(pfn) ((xen_paddr_t)(pfn) << XC_PAGE_SHIFT)
static int setup_pgtables_x86_32(struct xc_dom_image *dom)
{
@@ -145,7 +145,7 @@ static int setup_pgtables_x86_32(struct
xen_pfn_t pgpfn;
for ( addr = dom->parms.virt_base; addr < dom->virt_pgtab_end;
- addr += PAGE_SIZE_X86 )
+ addr += XC_PAGE_SIZE )
{
if ( l1tab == NULL )
{
@@ -159,7 +159,7 @@ static int setup_pgtables_x86_32(struct
/* make L1 entry */
l1off = l1_table_offset_i386(addr);
- pgpfn = (addr - dom->parms.virt_base) >> PAGE_SHIFT_X86;
+ pgpfn = (addr - dom->parms.virt_base) >> XC_PAGE_SHIFT;
l1tab[l1off] =
pfn_to_paddr(xc_dom_p2m_guest(dom, pgpfn)) | L1_PROT;
if ( (addr >= dom->pgtables_seg.vstart) &&
@@ -264,7 +264,7 @@ static int setup_pgtables_x86_32_pae(str
l3tab = xc_dom_pfn_to_ptr(dom, l3pfn, 1);
for ( addr = dom->parms.virt_base; addr < dom->virt_pgtab_end;
- addr += PAGE_SIZE_X86 )
+ addr += XC_PAGE_SIZE )
{
if ( l2tab == NULL )
{
@@ -290,7 +290,7 @@ static int setup_pgtables_x86_32_pae(str
/* make L1 entry */
l1off = l1_table_offset_pae(addr);
- pgpfn = (addr - dom->parms.virt_base) >> PAGE_SHIFT_X86;
+ pgpfn = (addr - dom->parms.virt_base) >> XC_PAGE_SHIFT;
l1tab[l1off] =
pfn_to_paddr(xc_dom_p2m_guest(dom, pgpfn)) | L1_PROT;
if ( (addr >= dom->pgtables_seg.vstart) &&
@@ -345,7 +345,7 @@ static int setup_pgtables_x86_64(struct
xen_pfn_t pgpfn;
for ( addr = dom->parms.virt_base; addr < dom->virt_pgtab_end;
- addr += PAGE_SIZE_X86 )
+ addr += XC_PAGE_SIZE )
{
if ( l3tab == NULL )
{
@@ -383,7 +383,7 @@ static int setup_pgtables_x86_64(struct
/* make L1 entry */
l1off = l1_table_offset_x86_64(addr);
- pgpfn = (addr - dom->parms.virt_base) >> PAGE_SHIFT_X86;
+ pgpfn = (addr - dom->parms.virt_base) >> XC_PAGE_SHIFT;
l1tab[l1off] =
pfn_to_paddr(xc_dom_p2m_guest(dom, pgpfn)) | L1_PROT;
if ( (addr >= dom->pgtables_seg.vstart) &&
@@ -438,7 +438,7 @@ static int start_info_x86_32(struct xc_d
strncpy(start_info->magic, dom->guest_type, sizeof(start_info->magic));
start_info->magic[sizeof(start_info->magic) - 1] = '\0';
start_info->nr_pages = dom->total_pages;
- start_info->shared_info = shinfo << PAGE_SHIFT_X86;
+ start_info->shared_info = shinfo << XC_PAGE_SHIFT;
start_info->pt_base = dom->pgtables_seg.vstart;
start_info->nr_pt_frames = dom->pgtables;
start_info->mfn_list = dom->p2m_seg.vstart;
@@ -478,7 +478,7 @@ static int start_info_x86_64(struct xc_d
strncpy(start_info->magic, dom->guest_type, sizeof(start_info->magic));
start_info->magic[sizeof(start_info->magic) - 1] = '\0';
start_info->nr_pages = dom->total_pages;
- start_info->shared_info = shinfo << PAGE_SHIFT_X86;
+ start_info->shared_info = shinfo << XC_PAGE_SHIFT;
start_info->pt_base = dom->pgtables_seg.vstart;
start_info->nr_pt_frames = dom->pgtables;
start_info->mfn_list = dom->p2m_seg.vstart;
@@ -550,9 +550,9 @@ static int vcpu_x86_32(struct xc_dom_ima
ctxt->user_regs.cs = FLAT_KERNEL_CS_X86_32;
ctxt->user_regs.eip = dom->parms.virt_entry;
ctxt->user_regs.esp =
- dom->parms.virt_base + (dom->bootstack_pfn + 1) * PAGE_SIZE_X86;
+ dom->parms.virt_base + (dom->bootstack_pfn + 1) * XC_PAGE_SIZE;
ctxt->user_regs.esi =
- dom->parms.virt_base + (dom->start_info_pfn) * PAGE_SIZE_X86;
+ dom->parms.virt_base + (dom->start_info_pfn) * XC_PAGE_SIZE;
ctxt->user_regs.eflags = 1 << 9; /* Interrupt Enable */
ctxt->kernel_ss = ctxt->user_regs.ss;
@@ -589,9 +589,9 @@ static int vcpu_x86_64(struct xc_dom_ima
ctxt->user_regs.cs = FLAT_KERNEL_CS_X86_64;
ctxt->user_regs.rip = dom->parms.virt_entry;
ctxt->user_regs.rsp =
- dom->parms.virt_base + (dom->bootstack_pfn + 1) * PAGE_SIZE_X86;
+ dom->parms.virt_base + (dom->bootstack_pfn + 1) * XC_PAGE_SIZE;
ctxt->user_regs.rsi =
- dom->parms.virt_base + (dom->start_info_pfn) * PAGE_SIZE_X86;
+ dom->parms.virt_base + (dom->start_info_pfn) * XC_PAGE_SIZE;
ctxt->user_regs.rflags = 1 << 9; /* Interrupt Enable */
ctxt->kernel_ss = ctxt->user_regs.ss;
@@ -611,7 +611,7 @@ static int vcpu_x86_64(struct xc_dom_ima
static struct xc_dom_arch xc_dom_32 = {
.guest_type = "xen-3.0-x86_32",
.native_protocol = XEN_IO_PROTO_ABI_X86_32,
- .page_shift = PAGE_SHIFT_X86,
+ .page_shift = XC_PAGE_SHIFT,
.sizeof_pfn = 4,
.alloc_magic_pages = alloc_magic_pages,
.count_pgtables = count_pgtables_x86_32,
@@ -623,7 +623,7 @@ static struct xc_dom_arch xc_dom_32 = {
static struct xc_dom_arch xc_dom_32_pae = {
.guest_type = "xen-3.0-x86_32p",
.native_protocol = XEN_IO_PROTO_ABI_X86_32,
- .page_shift = PAGE_SHIFT_X86,
+ .page_shift = XC_PAGE_SHIFT,
.sizeof_pfn = 4,
.alloc_magic_pages = alloc_magic_pages,
.count_pgtables = count_pgtables_x86_32_pae,
@@ -636,7 +636,7 @@ static struct xc_dom_arch xc_dom_32_pae
static struct xc_dom_arch xc_dom_64 = {
.guest_type = "xen-3.0-x86_64",
.native_protocol = XEN_IO_PROTO_ABI_X86_64,
- .page_shift = PAGE_SHIFT_X86,
+ .page_shift = XC_PAGE_SHIFT,
.sizeof_pfn = 8,
.alloc_magic_pages = alloc_magic_pages,
.count_pgtables = count_pgtables_x86_64,
@@ -855,13 +855,13 @@ int arch_setup_bootlate(struct xc_dom_im
DOMPRINTF("%s: shared_info: pfn 0x%" PRIpfn ", mfn 0x%" PRIpfn "",
__FUNCTION__, dom->shared_info_pfn, dom->shared_info_mfn);
shared_info = xc_map_foreign_range(dom->xch, dom->guest_domid,
- PAGE_SIZE_X86,
+ XC_PAGE_SIZE,
PROT_READ | PROT_WRITE,
shinfo);
if ( shared_info == NULL )
return -1;
dom->arch_hooks->shared_info(dom, shared_info);
- munmap(shared_info, PAGE_SIZE_X86);
+ munmap(shared_info, XC_PAGE_SIZE);
return 0;
}
diff -r c2a8bde9ad6e tools/libxc/xc_misc.c
--- a/tools/libxc/xc_misc.c Wed Nov 02 14:54:36 2011 +0100
+++ b/tools/libxc/xc_misc.c Wed Nov 09 14:01:30 2011 +0100
@@ -177,28 +177,6 @@ int xc_sched_id(xc_interface *xch,
return 0;
}
-#if defined(__i386__) || defined(__x86_64__)
-int xc_mca_op(xc_interface *xch, struct xen_mc *mc)
-{
- int ret = 0;
- DECLARE_HYPERCALL;
- DECLARE_HYPERCALL_BOUNCE(mc, sizeof(*mc), XC_HYPERCALL_BUFFER_BOUNCE_BOTH);
-
- if ( xc_hypercall_bounce_pre(xch, mc) )
- {
- PERROR("Could not bounce xen_mc memory buffer");
- return -1;
- }
- mc->interface_version = XEN_MCA_INTERFACE_VERSION;
-
- hypercall.op = __HYPERVISOR_mca;
- hypercall.arg[0] = HYPERCALL_BUFFER_AS_ARG(mc);
- ret = do_xen_hypercall(xch, &hypercall);
- xc_hypercall_bounce_post(xch, mc);
- return ret;
-}
-#endif
-
int xc_perfc_reset(xc_interface *xch)
{
DECLARE_SYSCTL;
diff -r c2a8bde9ad6e tools/libxc/xc_misc_x86.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/libxc/xc_misc_x86.c Wed Nov 09 14:01:30 2011 +0100
@@ -0,0 +1,51 @@
+/******************************************************************************
+ * xc_misc_x86.c
+ *
+ * Miscellaneous x86 specific control interface functions.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "xc_private.h"
+
+int xc_mca_op(xc_interface *xch, struct xen_mc *mc)
+{
+ int ret = 0;
+ DECLARE_HYPERCALL;
+ DECLARE_HYPERCALL_BOUNCE(mc, sizeof(*mc), XC_HYPERCALL_BUFFER_BOUNCE_BOTH);
+
+ if ( xc_hypercall_bounce_pre(xch, mc) )
+ {
+ PERROR("Could not bounce xen_mc memory buffer");
+ return -1;
+ }
+ mc->interface_version = XEN_MCA_INTERFACE_VERSION;
+
+ hypercall.op = __HYPERVISOR_mca;
+ hypercall.arg[0] = HYPERCALL_BUFFER_AS_ARG(mc);
+ ret = do_xen_hypercall(xch, &hypercall);
+ xc_hypercall_bounce_post(xch, mc);
+ return ret;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r c2a8bde9ad6e tools/libxc/xc_offline_page.c
--- a/tools/libxc/xc_offline_page.c Wed Nov 02 14:54:36 2011 +0100
+++ b/tools/libxc/xc_offline_page.c Wed Nov 09 14:01:30 2011 +0100
@@ -369,7 +369,7 @@ static int __clear_pte(xc_interface *xch
/* XXX Check for PSE bit here */
/* Hit one entry */
- if ( ((pte >> PAGE_SHIFT_X86) & MFN_MASK_X86) == mfn)
+ if ( ((pte >> XC_PAGE_SHIFT) & MFN_MASK_X86) == mfn)
{
*new_pte = pte & ~_PAGE_PRESENT;
if (!backup_ptes(table_mfn, table_offset, backup))
@@ -400,7 +400,7 @@ static int __update_pte(xc_interface *xc
if (pte & _PAGE_PRESENT)
ERROR("Page present while in backup ptes\n");
pte &= ~MFN_MASK_X86;
- pte |= (new_mfn << PAGE_SHIFT_X86) | _PAGE_PRESENT;
+ pte |= (new_mfn << XC_PAGE_SHIFT) | _PAGE_PRESENT;
*new_pte = pte;
return 1;
}
diff -r c2a8bde9ad6e tools/libxc/xenctrl.h
--- a/tools/libxc/xenctrl.h Wed Nov 02 14:54:36 2011 +0100
+++ b/tools/libxc/xenctrl.h Wed Nov 09 14:01:30 2011 +0100
@@ -49,52 +49,6 @@
#include "xentoollog.h"
-#if defined(__i386__) || defined(__x86_64__)
-#include <xen/foreign/x86_32.h>
-#include <xen/foreign/x86_64.h>
-#include <xen/arch-x86/xen-mca.h>
-#endif
-
-#ifdef __ia64__
-#define XC_PAGE_SHIFT 14
-#else
-#define XC_PAGE_SHIFT 12
-#endif
-#define XC_PAGE_SIZE (1UL << XC_PAGE_SHIFT)
-#define XC_PAGE_MASK (~(XC_PAGE_SIZE-1))
-
-#define INVALID_MFN (~0UL)
-
-/*
- * DEFINITIONS FOR CPU BARRIERS
- */
-
-#if defined(__i386__)
-#define xen_mb() asm volatile ( "lock; addl $0,0(%%esp)" : : : "memory" )
-#define xen_rmb() asm volatile ( "lock; addl $0,0(%%esp)" : : : "memory" )
-#define xen_wmb() asm volatile ( "" : : : "memory")
-#elif defined(__x86_64__)
-#define xen_mb() asm volatile ( "mfence" : : : "memory")
-#define xen_rmb() asm volatile ( "lfence" : : : "memory")
-#define xen_wmb() asm volatile ( "" : : : "memory")
-#elif defined(__ia64__)
-#define xen_mb() asm volatile ("mf" ::: "memory")
-#define xen_rmb() asm volatile ("mf" ::: "memory")
-#define xen_wmb() asm volatile ("mf" ::: "memory")
-#else
-#error "Define barriers"
-#endif
-
-
-#define XENCTRL_HAS_XC_INTERFACE 1
-/* In Xen 4.0 and earlier, xc_interface_open and xc_evtchn_open would
- * both return ints being the file descriptor. In 4.1 and later, they
- * return an xc_interface* and xc_evtchn*, respectively - ie, a
- * pointer to an opaque struct. This #define is provided in 4.1 and
- * later, allowing out-of-tree callers to more easily distinguish
- * between, and be compatible with, both versions.
- */
-
/*
* GENERAL
@@ -119,6 +73,43 @@ typedef struct xc_interface_core xc_gnts
typedef enum xc_error_code xc_error_code;
+#if defined(__i386__) || defined(__x86_64__)
+#include "xenctrl_x86.h"
+#endif
+
+#ifdef __ia64__
+#define XC_PAGE_SHIFT 14
+#endif
+#define XC_PAGE_SIZE (1UL << XC_PAGE_SHIFT)
+#define XC_PAGE_MASK (~(XC_PAGE_SIZE-1))
+
+#define INVALID_MFN (~0UL)
+
+#define XENCTRL_HAS_XC_INTERFACE 1
+/* In Xen 4.0 and earlier, xc_interface_open and xc_evtchn_open would
+ * both return ints being the file descriptor. In 4.1 and later, they
+ * return an xc_interface* and xc_evtchn*, respectively - ie, a
+ * pointer to an opaque struct. This #define is provided in 4.1 and
+ * later, allowing out-of-tree callers to more easily distinguish
+ * between, and be compatible with, both versions.
+ */
+
+
+/*
+ * DEFINITIONS FOR CPU BARRIERS
+ */
+
+#ifdef __ia64__
+#define xen_mb() asm volatile ("mf" ::: "memory")
+#define xen_rmb() asm volatile ("mf" ::: "memory")
+#define xen_wmb() asm volatile ("mf" ::: "memory")
+#else
+#ifndef xen_mb
+#error "Define barriers"
+#endif
+#endif
+
+
/*
* INITIALIZATION FUNCTIONS
*/
@@ -364,33 +355,22 @@ typedef struct xc_dominfo {
typedef xen_domctl_getdomaininfo_t xc_domaininfo_t;
+#ifdef __ia64__
typedef union
{
-#if defined(__i386__) || defined(__x86_64__)
- vcpu_guest_context_x86_64_t x64;
- vcpu_guest_context_x86_32_t x32;
-#endif
vcpu_guest_context_t c;
} vcpu_guest_context_any_t;
typedef union
{
-#if defined(__i386__) || defined(__x86_64__)
- shared_info_x86_64_t x64;
- shared_info_x86_32_t x32;
-#endif
shared_info_t s;
} shared_info_any_t;
typedef union
{
-#if defined(__i386__) || defined(__x86_64__)
- start_info_x86_64_t x64;
- start_info_x86_32_t x32;
-#endif
start_info_t s;
} start_info_any_t;
-
+#endif
int xc_domain_create(xc_interface *xch,
uint32_t ssidref,
@@ -968,32 +948,6 @@ int xc_domain_set_memmap_limit(xc_interf
uint32_t domid,
unsigned long map_limitkb);
-#if defined(__i386__) || defined(__x86_64__)
-/*
- * PC BIOS standard E820 types and structure.
- */
-#define E820_RAM 1
-#define E820_RESERVED 2
-#define E820_ACPI 3
-#define E820_NVS 4
-#define E820_UNUSABLE 5
-
-#define E820MAX (128)
-
-struct e820entry {
- uint64_t addr;
- uint64_t size;
- uint32_t type;
-} __attribute__((packed));
-int xc_domain_set_memory_map(xc_interface *xch,
- uint32_t domid,
- struct e820entry entries[],
- uint32_t nr_entries);
-
-int xc_get_machine_memory_map(xc_interface *xch,
- struct e820entry entries[],
- uint32_t max_entries);
-#endif
int xc_domain_set_time_offset(xc_interface *xch,
uint32_t domid,
int32_t time_offset_seconds);
@@ -1691,23 +1645,6 @@ int xc_domain_debug_control(xc_interface
uint32_t sop,
uint32_t vcpu);
-#if defined(__i386__) || defined(__x86_64__)
-int xc_cpuid_check(xc_interface *xch,
- const unsigned int *input,
- const char **config,
- char **config_transformed);
-int xc_cpuid_set(xc_interface *xch,
- domid_t domid,
- const unsigned int *input,
- const char **config,
- char **config_transformed);
-int xc_cpuid_apply_policy(xc_interface *xch,
- domid_t domid);
-void xc_cpuid_to_str(const unsigned int *regs,
- char **strs);
-int xc_mca_op(xc_interface *xch, struct xen_mc *mc);
-#endif
-
struct xc_px_val {
uint64_t freq; /* Px core frequency */
uint64_t residency; /* Px residency time */
diff -r c2a8bde9ad6e tools/libxc/xenctrl_x86.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/libxc/xenctrl_x86.h Wed Nov 09 14:01:30 2011 +0100
@@ -0,0 +1,111 @@
+/******************************************************************************
+ * xenctrl.h
+ *
+ * A library for low-level access to the Xen x86 control interfaces.
+ *
+ * Copyright (c) 2003-2004, K A Fraser.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef XENCTRL_X86_H
+#define XENCTRL_X86_H
+
+#include <xen/foreign/x86_32.h>
+#include <xen/foreign/x86_64.h>
+#include <xen/arch-x86/xen-mca.h>
+
+#define XC_PAGE_SHIFT 12
+
+/*
+ * DEFINITIONS FOR CPU BARRIERS
+ */
+
+#if defined(__i386__)
+#define xen_mb() asm volatile ( "lock; addl $0,0(%%esp)" : : : "memory" )
+#define xen_rmb() asm volatile ( "lock; addl $0,0(%%esp)" : : : "memory" )
+#define xen_wmb() asm volatile ( "" : : : "memory")
+#elif defined(__x86_64__)
+#define xen_mb() asm volatile ( "mfence" : : : "memory")
+#define xen_rmb() asm volatile ( "lfence" : : : "memory")
+#define xen_wmb() asm volatile ( "" : : : "memory")
+#endif
+
+
+typedef union
+{
+ vcpu_guest_context_x86_64_t x64;
+ vcpu_guest_context_x86_32_t x32;
+ vcpu_guest_context_t c;
+} vcpu_guest_context_any_t;
+
+typedef union
+{
+ shared_info_x86_64_t x64;
+ shared_info_x86_32_t x32;
+ shared_info_t s;
+} shared_info_any_t;
+
+typedef union
+{
+ start_info_x86_64_t x64;
+ start_info_x86_32_t x32;
+ start_info_t s;
+} start_info_any_t;
+
+
+/*
+ * PC BIOS standard E820 types and structure.
+ */
+#define E820_RAM 1
+#define E820_RESERVED 2
+#define E820_ACPI 3
+#define E820_NVS 4
+#define E820_UNUSABLE 5
+
+#define E820MAX (128)
+
+struct e820entry {
+ uint64_t addr;
+ uint64_t size;
+ uint32_t type;
+} __attribute__((packed));
+
+int xc_domain_set_memory_map(xc_interface *xch,
+ uint32_t domid,
+ struct e820entry entries[],
+ uint32_t nr_entries);
+
+int xc_get_machine_memory_map(xc_interface *xch,
+ struct e820entry entries[],
+ uint32_t max_entries);
+
+
+int xc_cpuid_check(xc_interface *xch,
+ const unsigned int *input,
+ const char **config,
+ char **config_transformed);
+int xc_cpuid_set(xc_interface *xch,
+ domid_t domid,
+ const unsigned int *input,
+ const char **config,
+ char **config_transformed);
+int xc_cpuid_apply_policy(xc_interface *xch,
+ domid_t domid);
+void xc_cpuid_to_str(const unsigned int *regs,
+ char **strs);
+int xc_mca_op(xc_interface *xch, struct xen_mc *mc);
+
+#endif /* XENCTRL_X86_H */
diff -r c2a8bde9ad6e tools/libxc/xg_private.h
--- a/tools/libxc/xg_private.h Wed Nov 02 14:54:36 2011 +0100
+++ b/tools/libxc/xg_private.h Wed Nov 09 14:01:30 2011 +0100
@@ -34,6 +34,10 @@
#include <xen/memory.h>
#include <xen/elfnote.h>
+#if defined(__i386__) || defined(__x86_64__)
+#include "xg_x86_private.h"
+#endif
+
#ifndef ELFSIZE
#include <limits.h>
#if UINT_MAX == ULONG_MAX
@@ -52,112 +56,8 @@ char *xc_inflate_buffer(xc_interface *xc
unsigned long csum_page (void * page);
-#define _PAGE_PRESENT 0x001
-#define _PAGE_RW 0x002
-#define _PAGE_USER 0x004
-#define _PAGE_PWT 0x008
-#define _PAGE_PCD 0x010
-#define _PAGE_ACCESSED 0x020
-#define _PAGE_DIRTY 0x040
-#define _PAGE_PAT 0x080
-#define _PAGE_PSE 0x080
-#define _PAGE_GLOBAL 0x100
-
-#define L1_PAGETABLE_SHIFT_I386 12
-#define L2_PAGETABLE_SHIFT_I386 22
-#define L1_PAGETABLE_ENTRIES_I386 1024
-#define L2_PAGETABLE_ENTRIES_I386 1024
-
-#define L1_PAGETABLE_SHIFT_PAE 12
-#define L2_PAGETABLE_SHIFT_PAE 21
-#define L3_PAGETABLE_SHIFT_PAE 30
-#define L1_PAGETABLE_ENTRIES_PAE 512
-#define L2_PAGETABLE_ENTRIES_PAE 512
-#define L3_PAGETABLE_ENTRIES_PAE 4
-
-#define L1_PAGETABLE_SHIFT_X86_64 12
-#define L2_PAGETABLE_SHIFT_X86_64 21
-#define L3_PAGETABLE_SHIFT_X86_64 30
-#define L4_PAGETABLE_SHIFT_X86_64 39
-#define L1_PAGETABLE_ENTRIES_X86_64 512
-#define L2_PAGETABLE_ENTRIES_X86_64 512
-#define L3_PAGETABLE_ENTRIES_X86_64 512
-#define L4_PAGETABLE_ENTRIES_X86_64 512
-
-#if defined(__i386__)
-#define L1_PAGETABLE_SHIFT L1_PAGETABLE_SHIFT_I386
-#define L2_PAGETABLE_SHIFT L2_PAGETABLE_SHIFT_I386
-#define L1_PAGETABLE_ENTRIES L1_PAGETABLE_ENTRIES_I386
-#define L2_PAGETABLE_ENTRIES L2_PAGETABLE_ENTRIES_I386
-#elif defined(__x86_64__)
-#define L1_PAGETABLE_SHIFT L1_PAGETABLE_SHIFT_X86_64
-#define L2_PAGETABLE_SHIFT L2_PAGETABLE_SHIFT_X86_64
-#define L3_PAGETABLE_SHIFT L3_PAGETABLE_SHIFT_X86_64
-#define L4_PAGETABLE_SHIFT L4_PAGETABLE_SHIFT_X86_64
-#define L1_PAGETABLE_ENTRIES L1_PAGETABLE_ENTRIES_X86_64
-#define L2_PAGETABLE_ENTRIES L2_PAGETABLE_ENTRIES_X86_64
-#define L3_PAGETABLE_ENTRIES L3_PAGETABLE_ENTRIES_X86_64
-#define L4_PAGETABLE_ENTRIES L4_PAGETABLE_ENTRIES_X86_64
-#endif
-
-typedef uint32_t l1_pgentry_32_t;
-typedef uint32_t l2_pgentry_32_t;
-typedef uint64_t l1_pgentry_64_t;
-typedef uint64_t l2_pgentry_64_t;
-typedef uint64_t l3_pgentry_64_t;
-typedef uint64_t l4_pgentry_64_t;
-
-#if defined(__i386__)
-typedef l1_pgentry_32_t l1_pgentry_t;
-typedef l2_pgentry_32_t l2_pgentry_t;
-#elif defined(__x86_64__)
-typedef l1_pgentry_64_t l1_pgentry_t;
-typedef l2_pgentry_64_t l2_pgentry_t;
-typedef l3_pgentry_64_t l3_pgentry_t;
-typedef l4_pgentry_64_t l4_pgentry_t;
-#endif
-
-#define l1_table_offset_i386(_a) \
- (((_a) >> L1_PAGETABLE_SHIFT_I386) & (L1_PAGETABLE_ENTRIES_I386 - 1))
-#define l2_table_offset_i386(_a) \
- (((_a) >> L2_PAGETABLE_SHIFT_I386) & (L2_PAGETABLE_ENTRIES_I386 - 1))
-
-#define l1_table_offset_pae(_a) \
- (((_a) >> L1_PAGETABLE_SHIFT_PAE) & (L1_PAGETABLE_ENTRIES_PAE - 1))
-#define l2_table_offset_pae(_a) \
- (((_a) >> L2_PAGETABLE_SHIFT_PAE) & (L2_PAGETABLE_ENTRIES_PAE - 1))
-#define l3_table_offset_pae(_a) \
- (((_a) >> L3_PAGETABLE_SHIFT_PAE) & (L3_PAGETABLE_ENTRIES_PAE - 1))
-
-#define l1_table_offset_x86_64(_a) \
- (((_a) >> L1_PAGETABLE_SHIFT_X86_64) & (L1_PAGETABLE_ENTRIES_X86_64 - 1))
-#define l2_table_offset_x86_64(_a) \
- (((_a) >> L2_PAGETABLE_SHIFT_X86_64) & (L2_PAGETABLE_ENTRIES_X86_64 - 1))
-#define l3_table_offset_x86_64(_a) \
- (((_a) >> L3_PAGETABLE_SHIFT_X86_64) & (L3_PAGETABLE_ENTRIES_X86_64 - 1))
-#define l4_table_offset_x86_64(_a) \
- (((_a) >> L4_PAGETABLE_SHIFT_X86_64) & (L4_PAGETABLE_ENTRIES_X86_64 - 1))
-
-#if defined(__i386__)
-#define l1_table_offset(_a) l1_table_offset_i386(_a)
-#define l2_table_offset(_a) l2_table_offset_i386(_a)
-#elif defined(__x86_64__)
-#define l1_table_offset(_a) l1_table_offset_x86_64(_a)
-#define l2_table_offset(_a) l2_table_offset_x86_64(_a)
-#define l3_table_offset(_a) l3_table_offset_x86_64(_a)
-#define l4_table_offset(_a) l4_table_offset_x86_64(_a)
-#endif
-
-#define PAGE_SHIFT_X86 12
-#define PAGE_SIZE_X86 (1UL << PAGE_SHIFT_X86)
-#define PAGE_MASK_X86 (~(PAGE_SIZE_X86-1))
-
-#define PAGE_SHIFT_IA64 14
-#define PAGE_SIZE_IA64 (1UL << PAGE_SHIFT_IA64)
-#define PAGE_MASK_IA64 (~(PAGE_SIZE_IA64-1))
-
#define ROUNDUP(_x,_w) (((unsigned long)(_x)+(1UL<<(_w))-1) & ~((1UL<<(_w))-1))
-#define NRPAGES(x) (ROUNDUP(x, PAGE_SHIFT) >> PAGE_SHIFT)
+#define NRPAGES(x) (ROUNDUP(x, XC_PAGE_SHIFT) >> XC_PAGE_SHIFT)
/* XXX SMH: following skanky macros rely on variable p2m_size being set */
@@ -169,7 +69,7 @@ struct domain_info_context {
};
/* Number of xen_pfn_t in a page */
-#define FPP (PAGE_SIZE/(dinfo->guest_width))
+#define FPP (XC_PAGE_SIZE/(dinfo->guest_width))
/* Number of entries in the pfn_to_mfn_frame_list_list */
#define P2M_FLL_ENTRIES (((dinfo->p2m_size)+(FPP*FPP)-1)/(FPP*FPP))
@@ -182,11 +82,6 @@ struct domain_info_context {
#define P2M_TOOLS_FL_SIZE ((P2M_FL_ENTRIES) * \
MAX((sizeof (xen_pfn_t)), dinfo->guest_width))
-/* Masks for PTE<->PFN conversions */
-#define MADDR_BITS_X86 ((dinfo->guest_width == 8) ? 52 : 44)
-#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
diff -r c2a8bde9ad6e tools/libxc/xg_x86_private.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/libxc/xg_x86_private.h Wed Nov 09 14:01:30 2011 +0100
@@ -0,0 +1,121 @@
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef XG_X86_PRIVATE_H
+#define XG_X86_PRIVATE_H
+
+#define _PAGE_PRESENT 0x001
+#define _PAGE_RW 0x002
+#define _PAGE_USER 0x004
+#define _PAGE_PWT 0x008
+#define _PAGE_PCD 0x010
+#define _PAGE_ACCESSED 0x020
+#define _PAGE_DIRTY 0x040
+#define _PAGE_PAT 0x080
+#define _PAGE_PSE 0x080
+#define _PAGE_GLOBAL 0x100
+
+#define L1_PAGETABLE_SHIFT_I386 12
+#define L2_PAGETABLE_SHIFT_I386 22
+#define L1_PAGETABLE_ENTRIES_I386 1024
+#define L2_PAGETABLE_ENTRIES_I386 1024
+
+#define L1_PAGETABLE_SHIFT_PAE 12
+#define L2_PAGETABLE_SHIFT_PAE 21
+#define L3_PAGETABLE_SHIFT_PAE 30
+#define L1_PAGETABLE_ENTRIES_PAE 512
+#define L2_PAGETABLE_ENTRIES_PAE 512
+#define L3_PAGETABLE_ENTRIES_PAE 4
+
+#define L1_PAGETABLE_SHIFT_X86_64 12
+#define L2_PAGETABLE_SHIFT_X86_64 21
+#define L3_PAGETABLE_SHIFT_X86_64 30
+#define L4_PAGETABLE_SHIFT_X86_64 39
+#define L1_PAGETABLE_ENTRIES_X86_64 512
+#define L2_PAGETABLE_ENTRIES_X86_64 512
+#define L3_PAGETABLE_ENTRIES_X86_64 512
+#define L4_PAGETABLE_ENTRIES_X86_64 512
+
+#if defined(__i386__)
+#define L1_PAGETABLE_SHIFT L1_PAGETABLE_SHIFT_I386
+#define L2_PAGETABLE_SHIFT L2_PAGETABLE_SHIFT_I386
+#define L1_PAGETABLE_ENTRIES L1_PAGETABLE_ENTRIES_I386
+#define L2_PAGETABLE_ENTRIES L2_PAGETABLE_ENTRIES_I386
+#elif defined(__x86_64__)
+#define L1_PAGETABLE_SHIFT L1_PAGETABLE_SHIFT_X86_64
+#define L2_PAGETABLE_SHIFT L2_PAGETABLE_SHIFT_X86_64
+#define L3_PAGETABLE_SHIFT L3_PAGETABLE_SHIFT_X86_64
+#define L4_PAGETABLE_SHIFT L4_PAGETABLE_SHIFT_X86_64
+#define L1_PAGETABLE_ENTRIES L1_PAGETABLE_ENTRIES_X86_64
+#define L2_PAGETABLE_ENTRIES L2_PAGETABLE_ENTRIES_X86_64
+#define L3_PAGETABLE_ENTRIES L3_PAGETABLE_ENTRIES_X86_64
+#define L4_PAGETABLE_ENTRIES L4_PAGETABLE_ENTRIES_X86_64
+#endif
+
+typedef uint32_t l1_pgentry_32_t;
+typedef uint32_t l2_pgentry_32_t;
+typedef uint64_t l1_pgentry_64_t;
+typedef uint64_t l2_pgentry_64_t;
+typedef uint64_t l3_pgentry_64_t;
+typedef uint64_t l4_pgentry_64_t;
+
+#if defined(__i386__)
+typedef l1_pgentry_32_t l1_pgentry_t;
+typedef l2_pgentry_32_t l2_pgentry_t;
+#elif defined(__x86_64__)
+typedef l1_pgentry_64_t l1_pgentry_t;
+typedef l2_pgentry_64_t l2_pgentry_t;
+typedef l3_pgentry_64_t l3_pgentry_t;
+typedef l4_pgentry_64_t l4_pgentry_t;
+#endif
+
+#define l1_table_offset_i386(_a) \
+ (((_a) >> L1_PAGETABLE_SHIFT_I386) & (L1_PAGETABLE_ENTRIES_I386 - 1))
+#define l2_table_offset_i386(_a) \
+ (((_a) >> L2_PAGETABLE_SHIFT_I386) & (L2_PAGETABLE_ENTRIES_I386 - 1))
+
+#define l1_table_offset_pae(_a) \
+ (((_a) >> L1_PAGETABLE_SHIFT_PAE) & (L1_PAGETABLE_ENTRIES_PAE - 1))
+#define l2_table_offset_pae(_a) \
+ (((_a) >> L2_PAGETABLE_SHIFT_PAE) & (L2_PAGETABLE_ENTRIES_PAE - 1))
+#define l3_table_offset_pae(_a) \
+ (((_a) >> L3_PAGETABLE_SHIFT_PAE) & (L3_PAGETABLE_ENTRIES_PAE - 1))
+
+#define l1_table_offset_x86_64(_a) \
+ (((_a) >> L1_PAGETABLE_SHIFT_X86_64) & (L1_PAGETABLE_ENTRIES_X86_64 - 1))
+#define l2_table_offset_x86_64(_a) \
+ (((_a) >> L2_PAGETABLE_SHIFT_X86_64) & (L2_PAGETABLE_ENTRIES_X86_64 - 1))
+#define l3_table_offset_x86_64(_a) \
+ (((_a) >> L3_PAGETABLE_SHIFT_X86_64) & (L3_PAGETABLE_ENTRIES_X86_64 - 1))
+#define l4_table_offset_x86_64(_a) \
+ (((_a) >> L4_PAGETABLE_SHIFT_X86_64) & (L4_PAGETABLE_ENTRIES_X86_64 - 1))
+
+#if defined(__i386__)
+#define l1_table_offset(_a) l1_table_offset_i386(_a)
+#define l2_table_offset(_a) l2_table_offset_i386(_a)
+#elif defined(__x86_64__)
+#define l1_table_offset(_a) l1_table_offset_x86_64(_a)
+#define l2_table_offset(_a) l2_table_offset_x86_64(_a)
+#define l3_table_offset(_a) l3_table_offset_x86_64(_a)
+#define l4_table_offset(_a) l4_table_offset_x86_64(_a)
+#endif
+
+/* Masks for PTE<->PFN conversions */
+#define MADDR_BITS_X86 ((dinfo->guest_width == 8) ? 52 : 44)
+#define MFN_MASK_X86 ((1ULL << (MADDR_BITS_X86 - XC_PAGE_SHIFT)) - 1)
+#define MADDR_MASK_X86 (MFN_MASK_X86 << XC_PAGE_SHIFT)
+
+#endif /* XG_X86_PRIVATE_H */
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] libxc: Refactor x86 specific code into x86 specific files
2011-11-09 13:12 [PATCH] libxc: Refactor x86 specific code into x86 specific files Christoph Egger
@ 2011-11-24 16:30 ` Ian Jackson
2011-11-24 16:56 ` Christoph Egger
0 siblings, 1 reply; 4+ messages in thread
From: Ian Jackson @ 2011-11-24 16:30 UTC (permalink / raw)
To: Christoph Egger; +Cc: xen-devel@lists.xensource.com
Christoph Egger writes ("[Xen-devel] [PATCH] libxc: Refactor x86 specific code into x86 specific files"):
> Move x86 specific code into x86 specific files.
> Eliminate arch specific PAGE constants by using common
> XC_PAGE_* contants.
I'm not sure I understand the motivation for this.
Ian.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] libxc: Refactor x86 specific code into x86 specific files
2011-11-24 16:30 ` Ian Jackson
@ 2011-11-24 16:56 ` Christoph Egger
2011-12-02 8:34 ` Ian Campbell
0 siblings, 1 reply; 4+ messages in thread
From: Christoph Egger @ 2011-11-24 16:56 UTC (permalink / raw)
To: Ian Jackson; +Cc: xen-devel@lists.xensource.com
On 11/24/11 17:30, Ian Jackson wrote:
> Christoph Egger writes ("[Xen-devel] [PATCH] libxc: Refactor x86 specific code into x86 specific files"):
>> Move x86 specific code into x86 specific files.
>> Eliminate arch specific PAGE constants by using common
>> XC_PAGE_* contants.
>
> I'm not sure I understand the motivation for this.
Code cleanup, better readability, better code organization.
Christoph
--
---to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Einsteinring 24, 85689 Dornach b. Muenchen
Geschaeftsfuehrer: Alberto Bozzo, Andrew Bowd
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] libxc: Refactor x86 specific code into x86 specific files
2011-11-24 16:56 ` Christoph Egger
@ 2011-12-02 8:34 ` Ian Campbell
0 siblings, 0 replies; 4+ messages in thread
From: Ian Campbell @ 2011-12-02 8:34 UTC (permalink / raw)
To: Christoph Egger; +Cc: xen-devel@lists.xensource.com, Ian Jackson
On Thu, 2011-11-24 at 16:56 +0000, Christoph Egger wrote:
> On 11/24/11 17:30, Ian Jackson wrote:
> > Christoph Egger writes ("[Xen-devel] [PATCH] libxc: Refactor x86 specific code into x86 specific files"):
> >> Move x86 specific code into x86 specific files.
> >> Eliminate arch specific PAGE constants by using common
> >> XC_PAGE_* contants.
> >
> > I'm not sure I understand the motivation for this.
>
> Code cleanup, better readability, better code organization.
At the very least each cleanup should be presented individually so we
can judge them on their merits.
The switch to a consistent set of XC_PAGE_* constants doesn't seem like
such a bad idea.
Likewise moving the x86 PT constants out of xg_private.h doesn't seem
unreasonable.
I'm less convinced by the more general movement of interface
definitions/implementations out of #ifdef in the .c and .h files into
foo_x86.[ch]. Seems to me that this just obfuscates the interfaces by
requiring one to go and look in multiple places.
I think what you've done to union cpu_guest_context_any_t and friends is
not an improvement.
The first two hunks of change in xenctrl.h seem like pointless code
motion within the same header.
why have you moved the x86 stuff into x86.h but left the ia64 stuff
ifdef'd in the main headers. For any given construct it should be all or
nothing IMHO.
You haven't made any arrangements to install the new headers.
Ian.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-12-02 8:34 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-09 13:12 [PATCH] libxc: Refactor x86 specific code into x86 specific files Christoph Egger
2011-11-24 16:30 ` Ian Jackson
2011-11-24 16:56 ` Christoph Egger
2011-12-02 8:34 ` Ian Campbell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.