merge with tip
authorpravin@inf.ethz.ch <pravin@inf.ethz.ch>
Wed, 16 Jan 2013 13:52:09 +0000 (14:52 +0100)
committerpravin@inf.ethz.ch <pravin@inf.ethz.ch>
Wed, 16 Jan 2013 13:52:09 +0000 (14:52 +0100)
21 files changed:
1  2 
errors/errno.fugu
hake/Main.hs
hake/RuleDefs.hs
hake/symbolic_targets.mk
if/Hakefile
if/pci.if
include/barrelfish/spawn_client.h
include/pci/pci.h
kernel/arch/x86_64/irq.c
lib/barrelfish/spawn_client.c
lib/barrelfish/terminal.c
lib/bench/Hakefile
lib/lwip/src/barrelfish/idc_net_control.c
lib/lwip/src/barrelfish/mem_barrelfish.c
lib/lwip/src/core/init.c
lib/lwip/src/sys_arch.c
lib/net_device_manager/soft_filt_cl_impl.c
lib/pci/pci_client.c
lib/procon/procon.c
usr/drivers/e1000/e1000n.c
usr/pci/pci_service.c

index 4692f49,fbbaa3b..fbbaa3b
mode 100755,100644..100755
diff --cc hake/Main.hs
index 57344aa,25e52d3..25e52d3
mode 100755,100644..100755
@@@ -938,25 -954,29 +954,29 @@@ data LibDepTree = LibDep String | LibDe
  -- manually add dependencies for now (it would be better if each library
  -- defined each own dependencies locally, but that does not seem to be an
  -- easy thing to do currently
- libposixcompat_deps = LibDeps $ [ LibDep x | x <- deps ]
-     where deps = ["vfsfd", "posixcompat"]
+ libposixcompat_deps = LibDeps [ LibDep "posixcompat", liblwip_deps,
+                                 libvfs_deps_all ]
  liblwip_deps        = LibDeps $ [ LibDep x | x <- deps ]
 -    where deps = ["lwip" ,"contmng" ,"procon" ,"timer" ,"hashtable"]
 +    where deps = ["lwip" ,"contmng" ,"net_if_raw" ,"timer" ,"hashtable"]
  libnetQmng_deps        = LibDeps $ [ LibDep x | x <- deps ]
 -    where deps = ["net_queue_manager", "contmng" ,"procon" , "bfdmuxvm"]
 +    where deps = ["net_queue_manager", "contmng" ,"procon" , "net_if_raw", "bfdmuxvm"]
- libnet_deps         = LibDeps $ [liblwip_deps, libposixcompat_deps]
- libnfs_deps         = LibDeps $ [ LibDep "nfs", libnet_deps]
+ libnfs_deps         = LibDeps $ [ LibDep "nfs", liblwip_deps ]
  
  -- we need to make vfs more modular to make this actually useful
- data VFSModules = VFS_RamFS | VFS_NFS
+ data VFSModules = VFS_RamFS | VFS_NFS | VFS_BlockdevFS | VFS_FAT
  vfsdeps :: [VFSModules] -> [LibDepTree]
- vfsdeps [] = [LibDep "vfs"]
- vfsdeps (VFS_RamFS:xs) = [] ++ vfsdeps xs
- vfsdeps (VFS_NFS:xs) =   [libnfs_deps] ++ vfsdeps xs
- libvfs_deps_all   = LibDeps $ vfsdeps [VFS_NFS, VFS_RamFS]
- libvfs_deps_nfs   = LibDeps $ vfsdeps [VFS_NFS]
- libvfs_deps_ramfs = LibDeps $ vfsdeps [VFS_RamFS]
+ vfsdeps []                  = [LibDep "vfs"]
+ vfsdeps (VFS_RamFS:xs)      = [] ++ vfsdeps xs
+ vfsdeps (VFS_NFS:xs)        = [libnfs_deps] ++ vfsdeps xs
+ vfsdeps (VFS_BlockdevFS:xs) = [LibDep "ahci" ] ++ vfsdeps xs
+ vfsdeps (VFS_FAT:xs)        = [] ++ vfsdeps xs
+ libvfs_deps_all        = LibDeps $ vfsdeps [VFS_NFS, VFS_RamFS, VFS_BlockdevFS,
+                                             VFS_FAT]
+ libvfs_deps_nfs        = LibDeps $ vfsdeps [VFS_NFS]
+ libvfs_deps_ramfs      = LibDeps $ vfsdeps [VFS_RamFS]
+ libvfs_deps_blockdevfs = LibDeps $ vfsdeps [VFS_BlockdevFS]
+ libvfs_deps_fat        = LibDeps $ vfsdeps [VFS_FAT, VFS_BlockdevFS]
  
  -- flatten the dependency tree
  flat :: [LibDepTree] -> [LibDepTree]
@@@ -107,10 -110,9 +112,12 @@@ MODULES_x86_64= 
        sbin/mem_serv_dist \
        sbin/net-test \
        sbin/netthroughput \
 +      sbin/elb_app \
 +      sbin/elb_app_tcp \
 +      sbin/lo_queue \
        sbin/pci \
+         sbin/acpi \
+         sbin/kaluga \
        sbin/placement_bench \
        sbin/phases_bench \
        sbin/phases_scale_bench \
diff --cc if/Hakefile
Simple merge
diff --cc if/pci.if
+++ b/if/pci.if
@@@ -38,16 -38,8 +38,14 @@@ interface pci "The PCI Interface" 
      rpc get_cap(in uint32 idx, in uint32 cap_nr,
                  out errval err, out cap cap, out uint8 type);
  
-     /* Kludge: retrieve frame cap to VBE BIOS */
+     /* Kludge: retrieve frame cap to VBE BIOS
      rpc get_vbe_bios_cap(out errval err, out cap cap, out uint32 size);
-     /* reset or sleep / power off machine */
      rpc reset(out errval err);
-     rpc sleep(in int state, out errval err);
+     rpc sleep(in int state, out errval err);  */
 +
 +    /* read PCI conf header */
 +    rpc read_conf_header(in uint32 dword, out errval err, out uint32 val);
 +
 +    /* write PCI conf header */
 +    rpc write_conf_header(in uint32 dword, in uint32 val, out errval err);
  };
Simple merge
@@@ -42,15 -42,7 +42,11 @@@ errval_t pci_register_legacy_driver_irq
  errval_t pci_setup_inthandler(interrupt_handler_fn handler, void *handler_arg,
                                int *ret_vector);
  
- errval_t pci_reset(void);
- errval_t pci_sleep(int state);
- errval_t pci_get_vbe_bios_cap(struct capref *retcap, size_t *retsize);
  
 +errval_t pci_read_conf_header(uint32_t dword, uint32_t *val);
 +
 +errval_t pci_write_conf_header(uint32_t dword, uint32_t val);
 +
  errval_t pci_client_connect(void);
  
  #endif
Simple merge
Simple merge
Simple merge
  --------------------------------------------------------------------------
  
  [(let
 -     common_srcs = [ "bench.c" ]
 +     common_srcs = [ "bench.c", "bench_ctl.c" ]
  
-      arch_srcs "x86_32"  = [ "arch/x86/bench_arch.c" ]
-      arch_srcs "x86_64"  = [ "arch/x86/bench_arch.c" ]
-      arch_srcs "arm"     = [ "arch/arm/bench_arch.c" ]
-      arch_srcs _         = []
+      arch_srcs "x86_32"       = [ "arch/x86/bench_arch.c" ]
+      arch_srcs "x86_64"       = [ "arch/x86/bench_arch.c" ]
+      arch_srcs "arm"          = [ "arch/arm/bench_arch.c" ]
+      arch_srcs _              = []
    in
      build library { target = "bench",
                      architectures = [arch],
Simple merge
@@@ -89,66 -90,9 +90,11 @@@ void sys_arch_unprotect(sys_prot_t pval
  /* sys_init() must be called before anthing else. */
  void sys_init(void)
  {
-     /* assert(!"NYI"); */
+     // Nothing to do
  }
  
- /*
-  * sys_timeout():
-  *
-  * Schedule a timeout a specified amount of milliseconds in the
-  * future. When the timeout occurs, the specified timeout handler will
-  * be called. The handler will be passed the "arg" argument when
-  * called.
-  *
-  */
- /*
- void sys_timeout(u32_t msecs, sys_timeout_handler h, void *arg)
- {
-     // add a timeout struct to the current thread's list
-     struct sys_timeouts *timeouts = sys_arch_timeouts();
-     struct sys_timeo *timeo;
-     if (timeouts == NULL) {
-         return;
-     }
-     
-     timeo = (struct sys_timeo*) malloc(sizeof(struct sys_timeo));
-     if (timeo == NULL) {
-         return;
-     }
-     timeo->time = msecs;
-     timeo->h = h;
-     timeo->arg = arg;
-     timeo->next = timeouts->next;
-     timeouts->next = timeo;
- }*/
- /*
- void sys_untimeout(sys_timeout_handler h, void *arg)
- {
-     // search the current thread's list and remove the entry
-     struct sys_timeouts *timeouts = sys_arch_timeouts();
-     struct sys_timeo *timeo, **prev;
-     if (timeouts == NULL) {
-         return;
-     }
-     prev = &timeouts->next;
-     timeo = timeouts->next;
-     while (timeo != NULL) {
-         if (timeo->h == h && timeo->arg == arg) {
-             *prev = timeo->next;
-             break;
-         }
-         prev = &timeo->next;
-     }
- } */
 +
 +
  // from example in http://lwip.wikia.com/wiki/Porting_for_an_OS
  struct sys_timeouts *sys_arch_timeouts(void) {
      struct thread_wrapper *thread = lwip_system_threads;
@@@ -203,26 -147,6 +149,10 @@@ void sys_sem_free(sys_sem_t sem
      free(sem);
  }
  
- /*
- void sys_sem_wait(sys_sem_t sem)
- {
-     sys_arch_sem_wait(sem, 0);
- } */
 +
- /*
- int sys_sem_wait_timeout(sys_sem_t sem, u32_t timeout)
- {
-     return sys_arch_sem_wait(sem, timeout);
- } */
 +
- /* Time functions. */
- /*
- void sys_msleep(u32_t ms)
- {
-     assert(!"NYI");
- }
- */
++
 +
  u32_t sys_jiffies(void)
  {
      /* since power up. */
@@@ -169,46 -169,6 +169,20 @@@ errval_t pci_register_legacy_driver_irq
      return msgerr;
  }
  
- errval_t pci_reset(void)
- {
-     errval_t err, msgerr;
-     err = pci_client->vtbl.reset(pci_client, &msgerr);
-     return err_is_fail(err) ? err : msgerr;
- }
- errval_t pci_sleep(int state)
- {
-     errval_t err, msgerr;
-     err = pci_client->vtbl.sleep(pci_client, state, &msgerr);
-     return err_is_fail(err) ? err : msgerr;
- }
- // Kludge for VBE driver
- errval_t pci_get_vbe_bios_cap(struct capref *retcap, size_t *retsize)
- {
-     errval_t err, msgerr;
-     assert(retcap != NULL);
-     assert(retsize != NULL);
-     uint32_t s;
-     err = pci_client->vtbl.get_vbe_bios_cap(pci_client, &msgerr, retcap, &s);
-     *retsize = s;
 +    return err_is_fail(err) ? err : msgerr;
 +}
 +
 +errval_t pci_read_conf_header(uint32_t dword, uint32_t *val)
 +{
 +    errval_t err, msgerr;
 +    err = pci_client->vtbl.read_conf_header(pci_client, dword, &msgerr, val);
 +    return err_is_fail(err) ? err : msgerr;
 +}
 +
 +errval_t pci_write_conf_header(uint32_t dword, uint32_t val)
 +{
 +    errval_t err, msgerr;
 +    err = pci_client->vtbl.write_conf_header(pci_client, dword, val, &msgerr);
-     return err_is_fail(err) ? err : msgerr;
- }
  static void bind_cont(void *st, errval_t err, struct pci_binding *b)
  {
      errval_t *reterr = st;
Simple merge
Simple merge
  #include <barrelfish/barrelfish.h>
  #include <barrelfish/nameservice_client.h>
  #include <barrelfish/sys_debug.h>
- #include <stdio.h>
- #include <stdlib.h>
  
- #include "pci.h"
  #include <if/pci_defs.h>
+ #include <acpi_client/acpi_client.h>
  #include <mm/mm.h>
 +#include "pci_confspace.h"
  
+ #include "pci.h"
  #include "pci_debug.h"
  
  /*****************************************************************
   * Data types:
   *****************************************************************/
@@@ -238,50 -210,13 +211,48 @@@ static void get_vbe_bios_cap(struct pci
      err = b->tx_vtbl.get_vbe_bios_cap_response(b, NOP_CONT, SYS_ERR_OK, biosmem,
                                                 1UL << BIOS_BITS);
      assert(err_is_ok(err));
- }
+ }*/
  
 +static void read_conf_header_handler(struct pci_binding *b, uint32_t dword)
 +{
 +    
 +    struct client_state *cc = (struct client_state *) b->st;
 +    struct pci_address addr = {
 +        .bus= cc->bus,
 +        .device=cc->dev,
 +        .function=cc->fun,
 +    };
 +    PCI_DEBUG("Read config header from %u:%u:%u\n",addr.bus, addr.device, addr.function);
 +    uint32_t val = pci_read_conf_header(&addr, dword);
 +    
 +    errval_t err;
 +    err = b->tx_vtbl.read_conf_header_response(b, NOP_CONT, SYS_ERR_OK, val);
 +    assert(err_is_ok(err));
 +}
 +
 +static void write_conf_header_handler(struct pci_binding *b, uint32_t dword, uint32_t val)
 +{
 +    struct client_state *cc = (struct client_state *) b->st;
 +    struct pci_address addr = {
 +        .bus= cc->bus,
 +        .device=cc->dev,
 +        .function=cc->fun,
 +    };
 +    PCI_DEBUG("Write config header from %u:%u:%u\n",addr.bus, addr.device, addr.function);
 +    pci_write_conf_header(&addr, dword, val);
 +    
 +    errval_t err;
 +    err = b->tx_vtbl.write_conf_header_response(b, NOP_CONT, SYS_ERR_OK);
 +    assert(err_is_ok(err));
 +}
 +
  struct pci_rx_vtbl pci_rx_vtbl = {
      .init_pci_device_call = init_pci_device_handler,
      .init_legacy_device_call = init_legacy_device_handler,
      .get_cap_call = get_cap_handler,
-     .reset_call = reset_handler,
-     .sleep_call = sleep_handler,
-     .get_vbe_bios_cap_call = get_vbe_bios_cap,
+     //.get_vbe_bios_cap_call = get_vbe_bios_cap,
 +    .read_conf_header_call = read_conf_header_handler,
 +    .write_conf_header_call = write_conf_header_handler,
  };
  
  static void export_callback(void *st, errval_t err, iref_t iref)