[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r7569 - in gnuradio/branches/developers/eb/gcell/src/l
From: |
eb |
Subject: |
[Commit-gnuradio] r7569 - in gnuradio/branches/developers/eb/gcell/src/lib: . spu |
Date: |
Tue, 5 Feb 2008 11:39:02 -0700 (MST) |
Author: eb
Date: 2008-02-05 11:39:01 -0700 (Tue, 05 Feb 2008)
New Revision: 7569
Modified:
gnuradio/branches/developers/eb/gcell/src/lib/gc_job_manager_impl.cc
gnuradio/branches/developers/eb/gcell/src/lib/gc_job_manager_impl.h
gnuradio/branches/developers/eb/gcell/src/lib/spu/test_spu.c
Log:
Backed out changesets [7562] and [7567]. Using Cell signals is
''way'' too slow for our purposes.
Modified: gnuradio/branches/developers/eb/gcell/src/lib/gc_job_manager_impl.cc
===================================================================
--- gnuradio/branches/developers/eb/gcell/src/lib/gc_job_manager_impl.cc
2008-02-05 18:34:58 UTC (rev 7568)
+++ gnuradio/branches/developers/eb/gcell/src/lib/gc_job_manager_impl.cc
2008-02-05 18:39:01 UTC (rev 7569)
@@ -24,7 +24,6 @@
#endif
#include "gc_job_manager_impl.h"
#include "gc_mbox.h"
-#include "memory_barrier.h"
#include <stdio.h>
#include <stdexcept>
@@ -220,9 +219,7 @@
int spe_flags = (SPE_EVENTS_ENABLE
| SPE_CFG_SIGNOTIFY1_OR
- | SPE_CFG_SIGNOTIFY2_OR
- | SPE_MAP_PS
- );
+ | SPE_CFG_SIGNOTIFY2_OR);
for (unsigned int i = 0; i < d_options.nspes; i++){
// FIXME affinity stuff goes here
@@ -237,14 +234,6 @@
d_worker[i].spu_args->spu_idx = i;
d_worker[i].state = WS_INIT;
- // get a user-space pointer to the MMIO SIG_NOTIFY_1 register
- void *p = spe_ps_area_get(d_worker[i].spe_ctx, SPE_SIG_NOTIFY_1_AREA);
- if (p == 0){
- perror("spe_ps_area_get");
- throw std::runtime_error("spe_ps_area_get");
- }
- d_worker[i].spu_sig_notify_1 = &((spe_sig_notify_1_area_t
*)p)->SPU_Sig_Notify_1;
-
int r = spe_program_load(d_worker[i].spe_ctx, spe_image);
if (r != 0){
perror("spe_program_load");
@@ -494,10 +483,6 @@
// FIXME keep count of jobs in progress?
gc_jd_queue_enqueue(d_queue, jd);
-
- // broadcast that there's work available
- signal_all_spes(SPE_SIG_NOTIFY_REG_1, 0x1);
-
return true;
}
@@ -603,50 +588,6 @@
////////////////////////////////////////////////////////////////////////
-bool
-gc_job_manager_impl::signal_all_spes(int signal_reg, uint32_t data)
-{
-#if 0
- bool ok = true;
-
- for (unsigned int i = 0; i < d_options.nspes; i++)
- ok &= signal_spe(i, signal_reg, data);
-
- return ok;
-#else
-
- smp_wmb(); // order stores
- for (unsigned int i = 0; i < d_options.nspes; i++)
- *d_worker[i].spu_sig_notify_1 = data;
-
- return true;
-#endif
-}
-
-bool
-gc_job_manager_impl::signal_spe(unsigned int spe, int signal_reg, uint32_t
data)
-{
- if (spe >= d_options.nspes)
- return false;
-
-#if 0
- smp_wmb();
- int r = spe_signal_write(d_worker[spe].spe_ctx, signal_reg, data);
- if (r == -1){
- perror("spe_signal_write");
- return false;
- }
-
- return true;
-#else
- smp_wmb();
- *d_worker[spe].spu_sig_notify_1 = data;
- return true;
-#endif
-}
-
-////////////////////////////////////////////////////////////////////////
-
static void
pthread_create_failure_msg(int r, const char *which)
{
Modified: gnuradio/branches/developers/eb/gcell/src/lib/gc_job_manager_impl.h
===================================================================
--- gnuradio/branches/developers/eb/gcell/src/lib/gc_job_manager_impl.h
2008-02-05 18:34:58 UTC (rev 7568)
+++ gnuradio/branches/developers/eb/gcell/src/lib/gc_job_manager_impl.h
2008-02-05 18:39:01 UTC (rev 7569)
@@ -50,7 +50,6 @@
spe_context_ptr_t spe_ctx;
pthread_t thread;
gc_spu_args_t *spu_args; // pointer to 16-byte aligned
struct
- unsigned int *spu_sig_notify_1; // pointer to MMIO reg
worker_ctx()
: state(WS_FREE), spe_idx(0), spe_ctx(0),
@@ -145,8 +144,6 @@
private:
bool send_all_spes(uint32_t msg);
bool send_spe(unsigned int spe, uint32_t msg);
- bool signal_all_spes(int signal_reg, uint32_t data);
- bool signal_spe(unsigned int spe, int signal_reg, uint32_t data);
void print_event(spe_event_unit_t *evt);
void handle_event(spe_event_unit_t *evt);
Modified: gnuradio/branches/developers/eb/gcell/src/lib/spu/test_spu.c
===================================================================
--- gnuradio/branches/developers/eb/gcell/src/lib/spu/test_spu.c
2008-02-05 18:34:58 UTC (rev 7568)
+++ gnuradio/branches/developers/eb/gcell/src/lib/spu/test_spu.c
2008-02-05 18:39:01 UTC (rev 7569)
@@ -93,8 +93,6 @@
static gc_job_desc_t jd; // static gets us proper alignment
gc_eaddr_t jd_ea;
- // FIXME we could reduce our power consumption by using events
-
while (1){
// any msgs for us?
@@ -106,19 +104,13 @@
return;
}
- // any signal for us?
- cnt = spu_readchcnt(SPU_RdSigNotify1);
- if (unlikely(cnt > 0)){
- int value = spu_readch(SPU_RdSigNotify1);
- // printf("spu[%d] signal: 0x%08x\n", spu_args.spu_idx, value);
-
- if (value & 0x1){
- // try to get a job from the job queue
- if (gc_jd_queue_dequeue(spu_args.queue, &jd_ea, &jd)){
- process_job(jd_ea, &jd);
- }
- }
+ // try to get a job from the job queue
+ if (gc_jd_queue_dequeue(spu_args.queue, &jd_ea, &jd)){
+ process_job(jd_ea, &jd);
+ backoff_reset();
}
+ else
+ backoff_delay();
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r7569 - in gnuradio/branches/developers/eb/gcell/src/lib: . spu,
eb <=