sb0 changed the topic of #m-labs to: ARTIQ, Migen, MiSoC, Mixxeo & other M-Labs projects :: fka #milkymist :: Logs http://irclog.whitequark.org/m-labs
fengling has joined #m-labs
fengling has quit [Ping timeout: 240 seconds]
fengling has joined #m-labs
sandeepkr has quit [Ping timeout: 240 seconds]
sandeepkr has joined #m-labs
<whitequark> sb0: so I just fixed a bug in ld.
<whitequark> and I don't mean or1k ld. the generic ELF code in ld.
<whitequark> and it should have manifested every time a binary has a .got and a .got.plt section at the same time
<whitequark> how does anything work?!!
fengling has quit [Ping timeout: 240 seconds]
<GitHub88> [misoc] whitequark pushed 2 new commits to master: https://git.io/v6rZg
<GitHub88> misoc/master 069a95e whitequark: libbase: implement a tiny GDB stub for OR1K exception handler.
<GitHub88> misoc/master 739e41b whitequark: libcompiler-rt: build several more primitives used by Rust libcore.
<bb-m-labs> build #122 of misoc is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/misoc/builds/122
<sb0> whitequark, haha, great!
<whitequark> going to patch it in conda now...
<sb0> what's the status of the builtin llvm linker?
<sb0> I'm not a huge fan of gnu binutils
<whitequark> it doesn't have or1k
<whitequark> we can port it and that would fix a bunch of problems at once, likely
<bb-m-labs> build #605 of artiq-kc705-nist_clock is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-kc705-nist_clock/builds/605
<bb-m-labs> build #313 of artiq-win64-test is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/313
<bb-m-labs> build #882 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/882
fengling has joined #m-labs
rohitksingh_work has joined #m-labs
<_florent_> sb0: for the others cores, frontend is providing modules that are directly used by the user: DMA, wishbone, crossbar, ...
<_florent_> sb0: but I'm not sure we'll really need it for jesd, the user should be able to directly use the transport layer
<_florent_> sb0: I'm going to remove it for now
fengling has quit [Ping timeout: 240 seconds]
<GitHub34> [conda-recipes] whitequark pushed 1 new commit to master: https://github.com/m-labs/conda-recipes/commit/cebe65ca4088aa714ae9599c51476fcc6d7abcce
<GitHub34> conda-recipes/master cebe65c whitequark: binutils-or1k-linux: add GOT patch, bump.
<whitequark> bb-m-labs: force build --props=package=binutils-or1k-linux conda-lin64
<bb-m-labs> build forced [ETA 27m50s]
<bb-m-labs> I'll give a shout when the build finishes
fengling has joined #m-labs
<bb-m-labs> build #208 of conda-lin64 is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/conda-lin64/builds/208
<GitHub142> [conda-recipes] whitequark pushed 1 new commit to master: https://github.com/m-labs/conda-recipes/commit/70951b708062910bab232b666c70da07ef053f3c
<GitHub142> conda-recipes/master 70951b7 whitequark: binutils-or1k-linux: update to 2.27.
<whitequark> bb-m-labs: force build --props=package=binutils-or1k-linux conda-lin64
<bb-m-labs> build forced [ETA 27m50s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #209 of conda-lin64 is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/conda-lin64/builds/209
<GitHub139> [artiq] whitequark created rust (+1 new commit): https://git.io/v6rue
<GitHub139> artiq/rust 3e2fbac whitequark: Add a Rust component in the runtime.
<whitequark> bb-m-labs: force build --branch=rust artiq
<bb-m-labs> build forced [ETA 26m39s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #883 of artiq is complete: Failure [failed lit_test] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/883
<GitHub135> [conda-recipes] whitequark pushed 1 new commit to master: https://github.com/m-labs/conda-recipes/commit/16c5cfc23755452462aa051fd33e1e6a81939094
<GitHub135> conda-recipes/master 16c5cfc whitequark: binutils-or1k-linux: fix prefix, bump.
<whitequark> bb-m-labs: force build --props=package=binutils-or1k-linux conda-lin64
<bb-m-labs> build forced [ETA 15m48s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #210 of conda-lin64 is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/conda-lin64/builds/210
<whitequark> bb-m-labs: force build --branch=rust artiq
<bb-m-labs> build forced [ETA 26m39s]
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #606 of artiq-kc705-nist_clock is complete: Failure [failed conda_build] Build details are at http://buildbot.m-labs.hk/builders/artiq-kc705-nist_clock/builds/606
<bb-m-labs> build #884 of artiq is complete: Failure [failed] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/884
<GitHub17> [artiq] whitequark force-pushed rust from 3e2fbac to 4c6cad2: https://git.io/v6r2e
<GitHub17> artiq/rust 4c6cad2 whitequark: Add a Rust component in the runtime.
<whitequark> bb-m-labs: force build --branch=rust artiq
<bb-m-labs> build forced [ETA 26m39s]
<bb-m-labs> I'll give a shout when the build finishes
<rjo> whitequark: ha. nice.
<rjo> one thing about rust that i like is the numerics people toying with BLIS and re-thinking those libraries.
<rjo> sb0, whitequark: do we informally agree that we'll try never to force-push to artiq master?
<whitequark> rjo: we can enforce that with github, by the way.
<whitequark> I have force-pushed master in the past when I noticed some stupid mistake right after commit. but I have no strong objection to getting rid of force-pushing.
<sb0> yes
<bb-m-labs> build #607 of artiq-kc705-nist_clock is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-kc705-nist_clock/builds/607
<rjo> whitequark, sb0: yes. i added that protection. let's see how that goes.
rohitksingh_work has quit [Read error: Connection reset by peer]
rohitksingh_work has joined #m-labs
<bb-m-labs> build #885 of artiq is complete: Failure [failed python_unittest_1] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/885
fengling has quit [Ping timeout: 240 seconds]
fengling has joined #m-labs
<GitHub135> [buildbot-config] jordens pushed 1 new commit to master: https://github.com/m-labs/buildbot-config/commit/1bb2df0b7f33f9eb0e35de12262dbc47d4f5e13d
<GitHub135> buildbot-config/master 1bb2df0 Robert Jordens: add github status marker
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
bb-m-labs has joined #m-labs
<whitequark> rjo: cool. does that thing work?
<rjo> whitequark: dunno. let's see.
<rjo> ah. wrong token.
<rjo> hmm. maybe it'll work
<bb-m-labs> build #608 of artiq-kc705-nist_clock is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-kc705-nist_clock/builds/608
<whitequark> ok, that wasn't the *only* linker bug.
<whitequark> binutils make me sad.
<whitequark> the worst part is how annoying it is to debug these. compiler bugs are at least localized, and easily fixable. linker bugs spread bad data all around the binary.
<whitequark> hm, that might have been a single or1k bug after all...
<bb-m-labs> build #886 of artiq is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/886
fengling has quit [Ping timeout: 240 seconds]
<GitHub57> [conda-recipes] whitequark pushed 1 new commit to master: https://github.com/m-labs/conda-recipes/commit/4524fbb83b2141a1a8b469c4b7961cc2d348506c
<GitHub57> conda-recipes/master 4524fbb whitequark: binutils-or1k-linux: use another GOT patch, bump.
<whitequark> bb-m-labs: force build --props=package=binutils-or1k-linux conda-lin64
<bb-m-labs> build #211 forced
<bb-m-labs> I'll give a shout when the build finishes
<bb-m-labs> build #211 of conda-lin64 is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/conda-lin64/builds/211
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
bb-m-labs has joined #m-labs
<whitequark> bb-m-labs: force build --branch=rust artiq
<bb-m-labs> The build has been queued, I'll give a shout when it starts
<bb-m-labs> build #887 of artiq is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/887
<bb-m-labs> build #888 forced
<bb-m-labs> I'll give a shout when the build finishes
key2 has joined #m-labs
<whitequark> uhm
<whitequark> who did just interrupt the build and why? I needed that build.
<whitequark> oh
<whitequark> oh that wasn't my build
<bb-m-labs> build #609 of artiq-kc705-nist_clock is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-kc705-nist_clock/builds/609
<bb-m-labs> build #314 of artiq-win64-test is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/314
<sb0> rjo, any thoughts about integrating artiq_master and artiq_ctlmgr with the OS services mechanisms (e.g. systemd) to get them to run automatically at boot?
<bb-m-labs> build #888 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/888
<GitHub117> [artiq] whitequark deleted rust at 4c6cad2: https://git.io/v6rHj
<GitHub129> [artiq] whitequark pushed 3 new commits to master: https://git.io/v6rQf
<GitHub129> artiq/master 4c6cad2 whitequark: Add a Rust component in the runtime.
<GitHub129> artiq/master 58efaad whitequark: Merge branch 'rust'
<GitHub129> artiq/master f26f446 whitequark: artiq_run: unbreak
<whitequark> rjo: http://homu.io/ is also something else to consider, if we want master to be always green
<whitequark> sb0: I've landed basic rust integration.
fengling has joined #m-labs
fengling has quit [Ping timeout: 240 seconds]
<sb0> hm, why is that into masterß
<sb0> ?
<bb-m-labs> build #610 of artiq-kc705-nist_clock is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-kc705-nist_clock/builds/610
<sb0> i'd merge that into master only after it replaces the C runtime, without regressions.
<sb0> do you expect this to be quick?
<sb0> we can also branch release-2 before your rust commits, and continue rust development in master
<bb-m-labs> build #315 of artiq-win64-test is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/315
<whitequark> sb0: I don't see why it shouldn't be in master. it's self-contained and it works
<whitequark> branching release-2 makes sense
<whitequark> re "replaces": do you mean the entire runtime? that'd require CSR generators for rust
<sb0> well yeah, among many other things
<sb0> DDS code rewrite, asyncio library, etc.
<bb-m-labs> build #889 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/889
<whitequark> I was under impression that you expected rust to supplment C runtime, not replace it, from some earlier discussion
<whitequark> but ok. we can do either. I was going to replace it part-by-part anyway, and not one large rewrite.
<sb0> 15 emails and one phone call later, I have a WAWF account. bureaucracy FTW.
<whitequark> this is a good reason to keep it in master as well, so that it will get more testing.
<sb0> what I mostly want is replace the current buggy/messy TCP/IP code with a cleaner asyncio-style implementation
<sb0> but this is a good opportunity to clean up other parts, such as move dds.c into ARTIQ-Python
<sb0> ditch the bridge, which becomes unnecessary after that; since there will be a low-level DDS API exposed, this can be done from python
<whitequark> ok
<whitequark> although I must say I still don't understand why you insist on asynchronous handling of TCP/IP specifically.
<whitequark> there are just as many (or as few, depending on how helpful tools are) concurrency bugs, and some additional complexity that will never pay off on the core device, where you'll never have ten connections, much less ten thousands
<sb0> with the current code, how do you close a connection with a error reported to the user?
<whitequark> right now, i am going to use libfringe, which is a stackful coroutine library. in essence this is just regular threads, except with context switching that isn't assisted by kernel/CPU, but rather is done fully in usermode
<whitequark> hm
<whitequark> with the current code? not sure. does it do anything special?
<whitequark> need to do*
<sb0> well there's only one TCP output buffer, so you are blocking on the connection with tcp_output() until the receiver acks them
<sb0> and then close.
<whitequark> yes. but only the thread that wants to output will block.
<sb0> there are no threads right now, so this blocks the whole system
<whitequark> yes.
<whitequark> my question is specifically why you insist on asyncio versus... just threads
<whitequark> asyncio uses a very specific model
<sb0> threads are more complicated
<whitequark> really??
<sb0> yes.
<whitequark> citation needed
<sb0> my personal experience
<rjo> sb0: absolutely. that's extremely useful. but also windows. only nasty thing is to juggle different conda envs on the same machine, different package revisions with the service file in /etc ...
<sb0> locking is much simpler with asyncio, since as long as you don't yield, you are not preempted
<whitequark> yes. these userspace threads I'm talking about are not preemptible.
<whitequark> (well, by definition; you need CPU support to preempt)
<sb0> so it's like asyncio, without coroutines?
<sb0> i.e. only i/o functions may preempt
<rjo> whitequark: i think github has something (partially) like homu already.
<whitequark> sb0: the threading library (or generator library, same thing here) itself doesn't care.
<whitequark> you have a thing you can call `yield` on, which will swap you out
<whitequark> in practice, i'll wrap that in some code that adds plumbing to use lwip
<rjo> whitequark: does buildbot handle service buildmaster restart while slaves are running/building?
<whitequark> yielder.yield(WaitForLwipInput(...)), you get the idea
<whitequark> rjo: it kills the builds.
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
<rjo> whitequark: ok.
<sb0> okay, that's fine too.
bb-m-labs has joined #m-labs
<whitequark> sb0: there's a massive benefit, which is you don't have to add an IO monad, like asyncio-style code requires
<sb0> can you cancel a task?
<whitequark> the function signatures stay unmolested, there is no need for complicated FSM generators that will bloat your code size and compile time, etc
<whitequark> yes. you can forcibly unwind a thread.
<sb0> by "unwind" you mean it gets an exception?
<whitequark> a panic.
<bb-m-labs> build #890 of artiq is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/890
<sb0> and it cannot "catch" it?
<whitequark> Rust doesn't have exceptions, only panics. the difference is that you don't need to care about exception safety, because panics can only be caught at thread boundaries.
<whitequark> i.e. you can never observe data in a half-baked state, left there by an exception that broke through some code
<sb0> okay. so when a task gets cancelled by another one, it can still attempt to write some error message to the TCP connection it is managing before closing the connection and dying?
<whitequark> sure. a destructor can take care of that.
<whitequark> but there are other ways to handle that anyway. another task could grab the TCP stream and write there (for example).
<whitequark> we have the unwinder in the core device working anyway, so spending time on it a year ago worked out quite well
<sb0> bah, yes, but then all the error message generating code has to go into that task that deals with broken connections
<sb0> the model "one tasks is responsible for one connection" keeps things better organized
<sb0> also. the moninj code that uses UDP right now should be replaced by something TCP-based
<whitequark> I think in this case doing this via panics is a bad idea, it's much better to return an error code from the "system call"
<whitequark> something like EINTR
<whitequark> and then it would bubble up in the task through IoResult
<sb0> ok.
<whitequark> panics are generally reserved for truly exceptional conditions. broken invariants.
<sb0> things that should be interruptible are TCP/IP operations, waiting on kernel-CPU messages, and maybe timers
<whitequark> any sort of wait would be interruptible. no real problem with that.
<sb0> ok
<whitequark> it's very elegant in Rust. you can do something like
<whitequark> timer.wait(1.0)?;
<whitequark> the ? expands into `match timer.wait(1.0) { Ok(()) => ... continue..., Err(e) => return e }
<sb0> good.
<sb0> rjo, why is the command for registering 7-series FPGAs called "pld device virtex2"?
<bb-m-labs> build #891 of artiq is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/891
<rjo> same for all (s3, s6, k7..) since virtex2. historic, nobody cared to change it, it works.
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
bb-m-labs has joined #m-labs
<bb-m-labs> build #892 of artiq is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/892
bb-m-labs has quit [Client Quit]
fengling has joined #m-labs
bb-m-labs has joined #m-labs
<bb-m-labs> build #893 of artiq is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/893
<bb-m-labs> build #894 of artiq is complete: Exception [exception interrupted] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/894
bb-m-labs has quit [Client Quit]
<GitHub90> [buildbot-config] jordens pushed 1 new commit to master: https://github.com/m-labs/buildbot-config/commit/744385de43a853a3e32e9d09beaa60628821210f
<GitHub90> buildbot-config/master 744385d Robert Jordens: github status: fix interpolation when empty
bb-m-labs has joined #m-labs
fengling has quit [Ping timeout: 240 seconds]
rohitksingh_work has quit [Read error: Connection reset by peer]
<sb0> rjo, if I get "Error: JTAG scan chain interrogation failed: all ones", I suppose it means the ftdi chip settings are wrong?
<sb0> or the hardware is broken
<sb0> but the second option is less likely...
<sb0> I'm using digilent_jtag_smt2.cfg
<sb0> of course, no digilent schematics to confirm whether JTAG-SMT2-NC is connected the same way as the JTAG-SMT2
<sb0> vivado finds the fpga, so the hardware should be ok
<sb0> oooh, debugging ftdi chips. my favorite
<sb0> you can even read out the fpga temperature and voltage from vivado...
fengling has joined #m-labs
fengling has quit [Ping timeout: 240 seconds]
<sb0> bah, there seems to be a single way of connecting a FTDI chip to JTAG, and the GPIOs are NC on the KCU104, so I don't get it
<sb0> probably some deep FTDI fuckery again
<rjo> sb0: kcu105?
<rjo> sb0: is the srst trst stuff wired?
<rjo> i remember that there are gpio pins from the second ftdi port on that smt2 that go to the castellated pins that could do something to the fpga.
<sb0> no, they're not wired
<rjo> irlen 6 looks good as well.
<rjo> oh. jumper settings?
<rjo> that fmc loop?
<rjo> and iirc there is a funny way to have the zynq configure the ku040. maybe that needs disabling.
<sb0> vivado talks with the fpga just fine
<sb0> so no jumpers or fmc loop
<sb0> afaik no zynq either
<rjo> the -NC is just that it doesn't have the connector on the module.
<rjo> ok. then i don't know where to look right now other than to point you at a pair of oscilloscope probes.
<rjo> s/ at / to /
fengling has joined #m-labs
bb-m-labs has quit [Quit: buildmaster reconfigured: bot disconnecting]
bb-m-labs has joined #m-labs
fengling has quit [Ping timeout: 240 seconds]
<bb-m-labs> build #611 of artiq-kc705-nist_clock is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-kc705-nist_clock/builds/611
<bb-m-labs> build #316 of artiq-win64-test is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq-win64-test/builds/316
<bb-m-labs> build #895 of artiq is complete: Success [build successful] Build details are at http://buildbot.m-labs.hk/builders/artiq/builds/895
rohitksingh has joined #m-labs
fengling has joined #m-labs
fengling has quit [Ping timeout: 240 seconds]
kuldeep has quit [Ping timeout: 258 seconds]
kuldeep has joined #m-labs
fengling has joined #m-labs
fengling has quit [Ping timeout: 240 seconds]
rohitksingh has quit [Quit: Leaving.]
rohitksingh has joined #m-labs
fengling has joined #m-labs
fengling has quit [Ping timeout: 240 seconds]
rohitksingh has quit [Quit: Leaving.]
fengling has joined #m-labs
fengling has quit [Ping timeout: 240 seconds]
fengling has joined #m-labs
fengling has quit [Ping timeout: 240 seconds]
fengling has joined #m-labs
fengling has quit [Ping timeout: 240 seconds]
fengling has joined #m-labs
fengling has quit [Ping timeout: 240 seconds]
fengling has joined #m-labs
sb0 has quit [Quit: Leaving]
fengling has quit [Ping timeout: 240 seconds]