mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
bitkeeper revision 1.396 (3f4d2199UsCzVuRmn-0-L6lh9VGYZg)
Many files: Small cleanups. Faster checksum calculation for console UDP packets.
This commit is contained in:
1 parent
a6505336e3
commit
de0dff07cc
8 files changed
+28
-82
No files matched your search
@@ -13,7 +13,7 @@
|
||||
# the latest Java 2 SDK on your execution path: <http://java.sun.com>
|
||||
# Also, you will need Apache's 'ant' build tool: <http://ant.apache.org>
|
||||
#
|
||||
# If you received this sourec as part of a Xen release, you should find
|
||||
# If you received this source as part of a Xen release, you should find
|
||||
# that appropriate versions of the build tools are already installed in
|
||||
# the initial system setup.
|
||||
|
||||
|
||||
@@ -1,19 +1,15 @@
|
||||
|
||||
This is stuff we probably want to implement in the near future. I
|
||||
think I have them in a sensible priority order -- the first few would
|
||||
be nice to fix before a code release. The later ones can be
|
||||
longer-term goals.
|
||||
This is stuff we probably want to implement in the near future.
|
||||
|
||||
-- Keir (16/3/03)
|
||||
|
||||
|
||||
1. ACCURATE TIMERS AND WALL-CLOCK TIME
|
||||
--------------------------------------
|
||||
Currently our long-term timebase free runs on CPU0, with no external
|
||||
calibration. We should run ntpd on domain 0 and allow this to warp
|
||||
Xen's timebase. Once this is done, we can have a timebase per CPU and
|
||||
not worry about relative drift (since they'll all get sync'ed
|
||||
periodically by ntp).
|
||||
1. DOMAIN-0 MANAGEMENT DAEMON
|
||||
-----------------------------
|
||||
A better control daemon is required for domain 0, which keeps proper
|
||||
track of machine resources and can make sensible policy choices. This
|
||||
may require support in Xen; for example, notifications (eg. DOMn is
|
||||
killed), and requests (eg. can DOMn allocate x frames of memory?).
|
||||
|
||||
2. ASSIGNING DOMAINS TO PROCESSORS
|
||||
----------------------------------
|
||||
@@ -27,42 +23,11 @@ relationships between processors in the system (eg. which ones are
|
||||
siblings in the same package). We then use this to balance domains
|
||||
across packages, and across virtual processors within a package.
|
||||
|
||||
3. DOMAIN 0 MANAGEMENT DAEMON
|
||||
-----------------------------
|
||||
A better control daemon is required for domain 0, which keeps proper
|
||||
track of machine resources and can make sensible policy choices. This
|
||||
may require support in Xen; for example, notifications (eg. DOMn is
|
||||
killed), and requests (eg. can DOMn allocate x frames of memory?).
|
||||
|
||||
4. SANE NETWORK ROUTING
|
||||
3. SANE NETWORK ROUTING
|
||||
-----------------------
|
||||
The current virtual firewall/router is completely broken. Needs a new
|
||||
design and implementation!
|
||||
|
||||
5. NETWORK CHECKSUM OFFLOAD
|
||||
---------------------------
|
||||
All the NICs that we support can checksum packets on behalf of guest
|
||||
OSes. We need to add appropriate flags to and from each domain to
|
||||
indicate, on transmit, which packets need the checksum added and, on
|
||||
receive, which packets have been checked out as okay. We can steal
|
||||
Linux's interface, which is entirely sane given NIC limitations.
|
||||
|
||||
6. MODULE SUPPORT FOR XEN
|
||||
-------------------------
|
||||
Network and blkdev drivers are bloating Xen. At some point we want to
|
||||
build drivers as modules, stick them in a cheesy ramfs, then relocate
|
||||
them one by one at boot time. If a driver duccessfully probes hardware
|
||||
we keep it, otherwise we blow it away. Alternative is to have a
|
||||
central PCI ID to driver name repository. We then use that to decide
|
||||
which drivers to load.
|
||||
|
||||
Most of the hard stuff (relocating and the like) is done for us by
|
||||
Linux's module system.
|
||||
|
||||
7. NEW DESIGN FEATURES
|
||||
----------------------
|
||||
This includes the last-chance page cache, and the unified buffer cache.
|
||||
|
||||
|
||||
|
||||
Graveyard
|
||||
|
||||
+9
-8
@@ -671,12 +671,13 @@ int setup_guestos(struct task_struct *p, dom0_newdomain_t *params,
|
||||
((p->tot_pages - 1) << PAGE_SHIFT);
|
||||
|
||||
virt_startinfo_address->dom_id = p->domain;
|
||||
virt_startinfo_address->flags = IS_PRIV(p) ? SIF_PRIVILEGED : 0;
|
||||
// guest os can have console if:
|
||||
// 1) its privileged (need iopl right now)
|
||||
// 2) its the owner of the console (and therefore will get kbd/mouse events)
|
||||
// 3) xen hasnt tried to touch the console (see console.h)
|
||||
virt_startinfo_address->flags |= (IS_PRIV(p) && CONSOLE_ISOWNER(p) ) ? SIF_CONSOLE : 0;
|
||||
virt_startinfo_address->flags = 0;
|
||||
if ( IS_PRIV(p) )
|
||||
{
|
||||
virt_startinfo_address->flags |= SIF_PRIVILEGED;
|
||||
if ( CONSOLE_ISOWNER(p) )
|
||||
virt_startinfo_address->flags |= SIF_CONSOLE;
|
||||
}
|
||||
|
||||
if ( initrd_len )
|
||||
{
|
||||
@@ -717,10 +718,10 @@ int setup_guestos(struct task_struct *p, dom0_newdomain_t *params,
|
||||
}
|
||||
*dst = '\0';
|
||||
|
||||
/* If this guy's getting the console we'd better let go */
|
||||
/* If this guy's getting the console we'd better let go. */
|
||||
if ( virt_startinfo_address->flags & SIF_CONSOLE )
|
||||
{
|
||||
// should reset the console, but seems to work anyhow...
|
||||
/* NB. Should reset the console here. */
|
||||
opt_console = 0;
|
||||
}
|
||||
|
||||
|
||||
+6
-19
@@ -458,25 +458,12 @@ asmlinkage long sys_ni_syscall(void)
|
||||
|
||||
unsigned short compute_cksum(unsigned short *buf, int count)
|
||||
{
|
||||
/* Function written by ek247
|
||||
* Computes IP and UDP checksum.
|
||||
* To be used for the fake console packets
|
||||
* created in console_export
|
||||
*/
|
||||
|
||||
unsigned long sum=0;
|
||||
|
||||
while (count--)
|
||||
{
|
||||
sum+=*buf++;
|
||||
if (sum & 0xFFFF0000)
|
||||
{
|
||||
//carry occured, so wrap around
|
||||
sum &=0xFFFF;
|
||||
sum++;
|
||||
}
|
||||
}
|
||||
return ~(sum & 0xFFFF);
|
||||
unsigned long sum = 0;
|
||||
while ( count-- )
|
||||
sum += *buf++;
|
||||
sum += sum >> 16;
|
||||
sum += sum >> 16;
|
||||
return (unsigned short)~sum;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -171,7 +171,6 @@ int wake_up(struct task_struct *p)
|
||||
|
||||
p->state = TASK_RUNNING;
|
||||
__add_to_runqueue_head(p);
|
||||
//__add_to_runqueue_tail(p);
|
||||
|
||||
/* set the BVT parameters */
|
||||
if (p->avt < schedule_data[p->processor].svt)
|
||||
|
||||
+1
-7
@@ -280,7 +280,7 @@ static inline void cascade_timers(struct timer_vec *tv)
|
||||
|
||||
tmp = list_entry(curr, struct timer_list, list);
|
||||
next = curr->next;
|
||||
list_del(curr); // not needed
|
||||
list_del(curr); /* not needed */
|
||||
internal_add_timer(tmp);
|
||||
curr = next;
|
||||
}
|
||||
@@ -509,18 +509,12 @@ static void update_wall_time(unsigned long ticks)
|
||||
static inline void do_process_times(struct task_struct *p,
|
||||
unsigned long user, unsigned long system)
|
||||
{
|
||||
//unsigned long psecs;
|
||||
|
||||
// psecs = (p->times.tms_utime += user);
|
||||
//psecs += (p->times.tms_stime += system);
|
||||
}
|
||||
|
||||
|
||||
void update_one_process(struct task_struct *p, unsigned long user,
|
||||
unsigned long system, int cpu)
|
||||
{
|
||||
// p->per_cpu_utime[cpu] += user;
|
||||
// p->per_cpu_stime[cpu] += system;
|
||||
do_process_times(p, user, system);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* Usage: elf-reloc <old base> <new base> <image>
|
||||
*
|
||||
* Relocates <image> from <old base> address to <new base> address by
|
||||
* frobbing the Elf headers. Segment contents are unmodified!
|
||||
* frobbing the Elf headers. Segment contents are unmodified.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
* This is a HACKED figlet source file for Xen.
|
||||
*
|
||||
* Hacked to output C octal strings for inclusion in a header file.
|
||||
* Support for opening zippe files is removed.
|
||||
* Support for opening zipped files is removed.
|
||||
*
|
||||
* Go to www.figlet.org for teh unhacked Figlet sources!
|
||||
* Go to www.figlet.org for the unhacked Figlet sources.
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
|
||||