PERFORCE change 130395 for review
Kip Macy
kmacy at FreeBSD.org
Thu Dec 6 23:07:26 PST 2007
http://perforce.freebsd.org/chv.cgi?CH=130395
Change 130395 by kmacy at entropy_kmacy_xen31 on 2007/12/07 07:07:20
final bits to get domU kernel to link
Affected files ...
.. //depot/projects/xen31/sys/conf/files#8 edit
.. //depot/projects/xen31/sys/conf/files.i386#7 edit
.. //depot/projects/xen31/sys/i386/include/trap.h#2 edit
.. //depot/projects/xen31/sys/i386/pci/pci_cfgreg.c#3 edit
.. //depot/projects/xen31/sys/i386/pci/pci_pir.c#2 edit
.. //depot/projects/xen31/sys/i386/xen/clock.c#1 add
.. //depot/projects/xen31/sys/xen/evtchn/evtchn_dev.c#1 add
Differences ...
==== //depot/projects/xen31/sys/conf/files#8 (text+ko) ====
@@ -2108,7 +2108,8 @@
vm/vm_zeroidle.c standard
vm/vnode_pager.c standard
xen/gnttab.c optional xen
-xen/evtchn.c optional xen
+xen/evtchn/evtchn.c optional xen
+xen/evtchn/evtchn_dev.c optional xen
#
gnu/fs/xfs/xfs_alloc.c optional xfs \
compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" \
==== //depot/projects/xen31/sys/conf/files.i386#7 (text+ko) ====
@@ -347,7 +347,8 @@
i386/ibcs2/imgact_coff.c optional ibcs2
i386/isa/atpic.c standard
#i386/isa/atpic_vector.s standard
-i386/isa/clock.c standard
+i386/isa/clock.c optional native
+i386/xen/clock.c optional xen
i386/isa/elcr.c standard
i386/isa/elink.c optional ep | ie
i386/isa/isa.c optional isa
==== //depot/projects/xen31/sys/i386/include/trap.h#2 (text+ko) ====
@@ -49,6 +49,9 @@
#define T_PAGEFLT 12 /* page fault */
#define T_ALIGNFLT 14 /* alignment fault */
+#ifdef XEN
+#define T_HYPCALLBACK 17 /* hypervisor upcall */
+#endif
#define T_DIVIDE 18 /* integer divide fault */
#define T_NMI 19 /* non-maskable trap */
#define T_OFLOW 20 /* overflow trap */
==== //depot/projects/xen31/sys/i386/pci/pci_cfgreg.c#3 (text+ko) ====
@@ -82,9 +82,10 @@
static int pcireg_cfgread(int bus, int slot, int func, int reg, int bytes);
static void pcireg_cfgwrite(int bus, int slot, int func, int reg, int data, int bytes);
+#ifndef XEN
static int pcireg_cfgopen(void);
-
static int pciereg_cfgopen(void);
+#endif
static int pciereg_cfgread(int bus, int slot, int func, int reg,
int bytes);
static void pciereg_cfgwrite(int bus, int slot, int func, int reg,
@@ -105,6 +106,7 @@
return (line);
}
+#ifndef XEN
static u_int16_t
pcibios_get_version(void)
{
@@ -125,6 +127,7 @@
}
return (args.ebx & 0xffff);
}
+#endif
/*
* Initialise access to PCI configuration space
@@ -132,6 +135,7 @@
int
pci_cfgregopen(void)
{
+#ifndef XEN
static int opened = 0;
u_int16_t vid, did;
u_int16_t v;
@@ -173,7 +177,7 @@
pciereg_cfgopen();
}
}
-
+#endif
return(1);
}
@@ -353,6 +357,7 @@
mtx_unlock_spin(&pcicfg_mtx);
}
+#ifndef XEN
/* check whether the configuration mechanism has been correctly identified */
static int
pci_cfgcheck(int maxdev)
@@ -530,6 +535,7 @@
devmax = 32;
return (1);
}
+#endif
#define PCIE_PADDR(bar, reg, bus, slot, func) \
((bar) | \
==== //depot/projects/xen31/sys/i386/pci/pci_pir.c#2 (text+ko) ====
@@ -80,8 +80,10 @@
struct PIR_intpin* intpin, void *arg);
static void pci_print_irqmask(u_int16_t irqs);
+#ifndef XEN
static int pci_pir_biosroute(int bus, int device, int func, int pin,
int irq);
+#endif
static int pci_pir_choose_irq(struct pci_link *pci_link, int irqmask);
static void pci_pir_create_links(struct PIR_entry *entry,
struct PIR_intpin *intpin, void *arg);
@@ -133,6 +135,9 @@
void
pci_pir_open(void)
{
+#if defined(XEN) && !defined(XEN_DOM0)
+ return;
+#else
struct PIR_table *pt;
uint32_t sigaddr;
int i;
@@ -165,6 +170,8 @@
pci_route_count = (pt->pt_header.ph_length -
sizeof(struct PIR_header)) /
sizeof(struct PIR_entry);
+#
+#endif
}
/*
@@ -466,7 +473,7 @@
printf(" ]\n");
}
}
-
+#ifndef XEN
/*
* Use the PCI BIOS to route an interrupt for a given device.
*
@@ -487,7 +494,7 @@
args.ecx = (irq << 8) | (0xa + pin);
return (bios32(&args, PCIbios.ventry, GSEL(GCODE_SEL, SEL_KPL)));
}
-
+#endif
/*
* Route a PCI interrupt using a link device from the $PIR.
@@ -497,7 +504,7 @@
{
struct pci_link_lookup lookup;
struct pci_link *pci_link;
- int error, irq;
+ int irq;
if (pci_route_table == NULL)
return (PCI_INVALID_IRQ);
@@ -539,9 +546,11 @@
}
pci_link->pl_irq = irq;
}
-
+#ifndef XEN
/* Ask the BIOS to route this IRQ if we haven't done so already. */
if (!pci_link->pl_routed) {
+ int error;
+
error = pci_pir_biosroute(bus, device, func, pin - 1,
pci_link->pl_irq);
@@ -557,6 +566,7 @@
BUS_CONFIG_INTR(pir_device, pci_link->pl_irq,
INTR_TRIGGER_LEVEL, INTR_POLARITY_LOW);
}
+#endif
if (bootverbose)
printf("$PIR: %d:%d INT%c routed to irq %d\n", bus, device,
pin - 1 + 'A', pci_link->pl_irq);
@@ -677,6 +687,7 @@
return (0);
}
+#ifndef XEN
static void
pir_resume_find_device(struct PIR_entry *entry, struct PIR_intpin *intpin,
void *arg)
@@ -690,10 +701,12 @@
pd->device = entry->pe_device;
pd->pin = intpin - entry->pe_intpin;
}
+#endif
static int
pir_resume(device_t dev)
{
+#ifndef XEN
struct pci_dev_lookup pd;
struct pci_link *pci_link;
int error;
@@ -726,6 +739,7 @@
pci_link->pl_id);
}
}
+#endif
return (0);
}
More information about the p4-projects
mailing list