--- Log opened Mon Nov 02 00:00:52 2015 | ||
andrzejr | I had a look at entry.S and traps.c and it looks like linux "handles" misaligned memory accesses by SIGSEGV or OOPS - I was expecting a workaround issuing two aligned reads and optionally two aligned writes. | 02:04 |
---|---|---|
andrzejr | not sure why pinging another host produces such unaligned access - It may likely be triggered by an error in my code but the kernel should be able to handle it more gracefully. Kernel from https://github.com/openrisc/linux.git | 02:08 |
andrzejr | an alternative (and rather elaborate) implementation of the exception handler is commented out. Why? | 02:09 |
wbx | olofk: the strange thing is, i get the same issues in or1k-sim and qemu. need to write a mail about it. may be my kernel config is plain wrong | 05:24 |
stekern | andrzejr: if you got unaligned accesses, you've hit a bug | 06:50 |
stekern | wbx: what is the issue you are seeing? | 06:52 |
jeremybennett | GeneralStupid: Is this what you were after: http://www.embecosm.com/resources/hardware/#EHW7 | 08:07 |
andrzejr | stekern, "c00335dc: 84 65 00 c0 l.lwz r3,192(r5)" in account_system_time accessed 0x3efff8be when pinging remote host | 08:28 |
stekern | so, r5 is 0x3efff8be-192 | 08:31 |
stekern | is it suppose to be? | 08:31 |
GeneralStupid | jeremybennett: no, it was just the result of a discussion... Somebody told me that openrisc is not energy efficient... | 09:54 |
GeneralStupid | jeremybennett: i think the use of a fpga is already waste of energy... | 09:55 |
GeneralStupid | because an absolute equal asic will have better energy efficient | 09:55 |
olofk | GeneralStupid: There are hardly any power management features in the openrisc spec, but you can do a lot by clock gating the peripheral cores | 10:01 |
GeneralStupid | olofk: but thats commercial use... What i heard they better pay for tensilica and thats it :) | 10:03 |
GeneralStupid | bad english: what i meant is | 10:03 |
GeneralStupid | They like to pay for tensilica then using an open cofre | 10:03 |
stekern | olofk: are you behind this? http://linux.slashdot.org/story/15/11/02/0125246/botnet-takes-over-twitch-install-and-partially-installs-gentoo | 10:15 |
GeneralStupid | oh | 10:15 |
olofk | stekern: Haha :) I read about that. I LOVE the internet | 10:16 |
GeneralStupid | do you know these "twich installs archlinux" stuff? | 10:16 |
GeneralStupid | olofk: i start to hate the internet ... every day a little more :) | 10:21 |
stekern | for me it's mostly a love-hate relationship... | 10:22 |
GeneralStupid | i agree with stekern :) | 10:22 |
GeneralStupid | its ok to use it for entertainment. But some things are really ... Hm | 10:23 |
GeneralStupid | We are able to communicate by voice and picture around the world... And we are able to send informations within a few ms... Technically Internet is an amazing thing... | 10:24 |
GeneralStupid | and we start to using it installing a linux distribution over twitch comments... | 10:24 |
jeremybennett | GeneralStupid: You are correct about FPGAs and energy, although it has got a lot better in the last decade. But if your project will sustain an ASIC, it will be much lower power. | 13:03 |
jeremybennett | There was an interesting talk on this at ORCONF from the team making a multicore OpenRISC/RISC-V lower power design (ST, Bolona University and I think ETH Zurich) | 13:04 |
andrzejr_ | stekern, I'll check that at home. This function is in kernel scheduler, so if even that cannot guarantee aligned accesses we should have a safer fallback. At least in the default configuration. | 13:32 |
stekern | andrzejr_: on what are you seeing this? | 13:55 |
stekern | I highly doubt that that function would do unaligned accesses | 13:56 |
stekern | I have never seen an unaligned access in the kernel that wasn't caused by an (external) bug | 13:57 |
andrzejr_ | well, my ETH Mac | 13:57 |
andrzejr_ | may have hw bugs | 13:58 |
stekern | have you tried to reproduce on or1ksim? | 13:59 |
andrzejr_ | the error occurs immediately after I start ping | 13:59 |
stekern | something being overwritten by the DMA? | 13:59 |
andrzejr_ | no, I've never used that before | 13:59 |
andrzejr_ | can I disable DMA for test? | 14:00 |
andrzejr_ | BTW, which kernel version do you use? | 14:01 |
stekern | v4.2 | 14:02 |
andrzejr_ | same here | 14:02 |
stekern | if you are using the standard ethmac, I don't think you can use it without dma | 14:03 |
-!- Netsplit *.net <-> *.split quits: Pimster, robtaylor, aburgess, Shentino, GeneralStupid, mboehnert, wallento, jn__ | 15:35 | |
-!- mboehnert1 is now known as mboehnert | 15:35 | |
-!- Netsplit over, joins: wallento | 15:36 | |
hesham | olofk: The riscv core is now working along with the UART, GPIO, ROM cores, on Icarus, | 16:23 |
hesham | And Atlys | 16:23 |
hesham | I am afraid to begin with ddr2 actually :/ | 16:23 |
ysionneau | if you are searching for some ddr2 controller for spartan6 maybe ask _florent_ if he had misoc running (with DDR) on the Atlys board | 16:43 |
ysionneau | anyway you have litedram which seems to work for S6+DDR2 https://github.com/enjoy-digital/litedram/blob/master/litedram/phy/s6ddrphy.py | 16:44 |
homeless_ | olofk: I sent an e-mail to the group about atlys board. Please take a look... Have a good day. | 16:55 |
_florent_ | ysionneau: litedram is a work in progress not yet validated (I wanted to test an architecture that is bit different than MiSoC's SDRAM controller) | 16:59 |
_florent_ | I'm still using MiSoC's SDRAM controller | 16:59 |
hesham | ysionneau: There's already one for Atlys, but I suspect it will need some more effort to get it working with this new experimental riscv core. And ddr2/memory cores is always a problem | 16:59 |
hesham | I'll have to give it a try | 17:00 |
_florent_ | the implementation we have that is running on the Atlys and the Numato Opsis is mithro's HDMI2USB | 17:01 |
_florent_ | https://github.com/timvideos/HDMI2USB-misoc-firmware/blob/master/targets/atlys_base.py | 17:01 |
ysionneau | _florent_: oh ok :) | 17:02 |
ysionneau | good news! | 17:02 |
ysionneau | ah, I was looking in your own repos for atlys, it's in mithro's one, ok | 17:02 |
ysionneau | ah no it's just the halfrateddrphy | 17:03 |
_florent_ | but that's maybe not the proper solution for hesham (require to have a part of the design using Migen) | 17:04 |
_florent_ | doing good simulations with the micron model can probably help for that | 17:04 |
ysionneau | yep or generate the verilog code and use that | 17:05 |
ysionneau | a bit unclean but could at least help for a starter | 17:05 |
hesham | The Atlys orpsoc is already using the generated MIG/micron core I think. | 17:06 |
hesham | https://github.com/openrisc/orpsoc-cores/tree/master/systems/atlys/rtl/verilog/xilinx_ddr2 | 17:06 |
_florent_ | OK, that's probably better to stay with that | 17:07 |
salman_ | heelo? If I uncomment //`define OR1200_FPU_IMPLEMENTED in the de0_nano FuseSOC model, will that implement a hw fpu? | 17:08 |
salman_ | rather from this file : systems/de0_nano/rtl/verilog/include/or1200_defines.v:424://`define OR1200_FPU_IMPLEMENTED | 17:08 |
hesham | Good news, a simple store/load from riscv/bootrom to ddr2 on Atlys seems to work fine. | 17:53 |
olofk | salman_: We generally recommend using mor1kx rather than or1200 nowadays. It has a better FPU than or1200 too | 18:04 |
olofk | hesham: Great to hear | 18:05 |
olofk | wow.. it's been a while since anyone regenerated the intercon files for atlys | 18:18 |
GeneralS1upid | olofk: i think they should be generated at build... ?! | 18:26 |
-!- GeneralS1upid is now known as GeneralStupid | 18:26 | |
salman__ | is the mor1kx fpu enabled by default? | 18:35 |
GeneralStupid | salman__: look at your mor1kx.v file | 18:38 |
GeneralStupid | salman__: FEATURE_FPU - in my de2 port its disabled | 18:39 |
salman__ | I think its mor1kx_cfgrs.v and its set to NONE..I will change it to ENABLED. | 18:43 |
salman__ | On the DE0_Nano, that is.. | 18:43 |
GeneralStupid | salman__: but change it in the openrisc toplevel file... | 18:44 |
salman__ | not in the /build/de0_nano/src/mor1kx-3.1/rtl/verilog? | 18:45 |
GeneralStupid | salman__: no, i would never change the default values in the module itself | 18:46 |
salman__ | This the build directory...I don't see it anywhere in the top level of the build except in the modules...even the de0_nano.map.rpt in the bld_quartus has it as NONE. | 18:48 |
salman__ | So you are saying I need to change it in the orpsoc_cores/system/de0_nano? | 18:49 |
salman__ | I did this and it didn't turn up : ssheikh@gs66-msaglnx1:~/orpsoc-cores$ !gre grep "FEATURE_FPU" -irn * | 18:49 |
salman__ | Should It be in orpsoc-defines.v? So a `define FEATURE_FPU on a line? | 18:52 |
GeneralStupid | salman__: no, you should have an orpsoc_top.v | 18:56 |
GeneralStupid | salman__: ~/projects/fusesoc/build/de2/src/de2/rtl/verilog/orpsoc_top.v tahts my path | 18:56 |
GeneralStupid | there is a mor1kx instance where you should add the FEATURE_FPU line, that would overwrite the defaults | 18:57 |
salman__ | okay, I will try that... | 18:57 |
salman__ | this is done after I run fusesoc right? So, I am adding it after I've generated all the build src files? | 19:01 |
GeneralStupid | yes | 19:01 |
GeneralStupid | you could use the quartus project and then rebuild with the quartus GUI | 19:02 |
olofk | salman_: mor1kx uses parameters instead of defines for most of its configuration | 19:23 |
salman_ | I tried a FEATURE_FPU in the orpsoc_top.v under mor1kx but quartus says it can't find it..then I realized that its not brought up to that level. | 19:34 |
olofk | salman_: Are you using de0 nano? | 19:35 |
salman_ | whereas FEATURE_DMMU which is at that level is defined in many other lower level files. | 19:35 |
salman_ | yes | 19:35 |
olofk | aha. I think I know now | 19:36 |
olofk | de0 nano is set to use mor1kx-3.1 by default. The FPU was added after that | 19:37 |
olofk | In orpsoc-cores/systems/de0_nano/de0_nano.core, change mor1kx-3.1 to mor1kx and try again | 19:38 |
olofk | In the list of dependencies there | 19:38 |
olofk | stekern: Want to smack on a tag on mor1kx and call it 4.0 or something? | 19:39 |
olofk | or 3.2, or PI | 19:39 |
olofk | I feel sometimes like the release managment of mor1kx is driven by me whining about wanting a new version :) | 19:40 |
olofk | Hopefully not PI | 19:47 |
stekern | oh, really, I haven't made a release with the FPU? | 20:16 |
stekern | that's an oversight | 20:16 |
stekern | I'm busy and tired tonight, so it'll have to wait until tomorrow. | 20:17 |
stekern | bug me again if you haven't seen one by 11 pm tomorrow night ;) | 20:17 |
salman_ | it compiled...now to try it out..is there a way to turn it on/compare performance w/wo it...use a or1k-elf-gcc switch | 20:33 |
olofk | salman_: Great. bandvig (who isn't here right now) made the FPU implementation for mor1kx, so he's probably the guy to ask for performance stuff | 20:35 |
olofk | I'm actually not even sure how to enable the FPU in gcc | 20:35 |
olofk | -hard-float? | 20:35 |
GeneralStupid | -mfloat-abi (i own an old beagleboard with ARM and FP unit ;)) | 20:36 |
GeneralStupid | =hard | 20:36 |
salman_ | or1k-elf-gcc -mfloat-abi=hard sincos.c -mboard=de0_nano -o sinhard.exe or1k-elf-gcc: error: unrecognized command line option ‘-mfloat-abi=hard’ | 20:42 |
GeneralStupid | salman__: looks like it just works for arm :/ | 20:43 |
GeneralStupid | salman__: try -mhard-float | 20:44 |
salman_ | yeah that compiles.. | 20:45 |
olofk | I tried -mhard-float. It compiles, but I don't see any fp instructions when doing an objdump | 20:47 |
olofk | Oh well. There are most likely other people in here who knows what to do | 20:48 |
GeneralStupid | salman__: do you want to use linux on your soc? | 20:50 |
salman_ | not really (for my personal interest yeah) but we are specing using this in an Actel for a cubesat... | 20:51 |
salman_ | first getting the toolchain and fusesoc understood with the de0_nano for starters.. | 20:51 |
salman_ | we are thinking a ProASIC 3 eventually | 20:51 |
salman_ | FPU would be good so we can do some onboard number crunching... | 20:52 |
dalias | does the or1k l.j instruction really take an absolute address and not a relative one?? | 20:52 |
GeneralStupid | fixedpoint ;) | 20:52 |
dalias | the doc i'm looking at claims so | 20:52 |
dalias | but that makes no sense because the address field is only 26 bits | 20:53 |
dalias | looks like nonsense to me | 20:53 |
dalias | e.g. | 20:54 |
dalias | 4: 10 00 00 00 l.bf 4 <__sigsetjmp+0x4> | 20:54 |
dalias | 4: R_OR1K_INSN_REL_26 ___setjmp | 20:54 |
dalias | oh that's bf | 20:54 |
dalias | this is what i meant to look at: | 20:54 |
dalias | 24: 00 00 00 00 l.j 24 <__sigsetjmp+0x24> | 20:54 |
dalias | 24: R_OR1K_INSN_REL_26 __sigsetjmp_tail | 20:54 |
olofk | salman_: There was an OpenRISC running on a ProASIC3 in a Cubesat about four years ago actually | 20:54 |
dalias | still looks relative to me | 20:54 |
olofk | NASA TechEdSat I think | 20:54 |
dalias | guess this is all wrong: https://sourceware.org/cgen/gen-doc/openrisc-insn.html | 20:55 |
olofk | What the hell is or1300? | 20:56 |
dalias | :-p | 20:56 |
olofk | dalias: l.j is relative | 20:56 |
dalias | no idea | 20:56 |
dalias | thanks for confirming :) | 20:56 |
olofk | Or my bootloader contains a bug :) https://github.com/olofk/or1k_bootloaders/blob/master/boot_loop.S | 20:57 |
dalias | :) | 20:57 |
dalias | and am i remembering right that or1k always has a delay slot? | 20:59 |
olofk | A bit scary that the cgen info is wrong. Is that autogenerated from binutils? | 20:59 |
dalias | no idea where it comes from | 20:59 |
olofk | dalias: Yes. Although since ~2012 there is also a nd (no delay-slot) version as well, but that isn't well supported | 21:00 |
dalias | it looks like cgen is unrelated to binutils | 21:00 |
dalias | ok | 21:00 |
dalias | i'm just trying to confirm that this patch to musl is going to be ok: http://sprunge.us/DibD | 21:00 |
dalias | adding a __cp_cancel label to all archs' cancellable syscall code | 21:01 |
olofk | I have absolutely no idea :) | 21:01 |
dalias | because providing a default def of the label as a C function had problems on some archs | 21:01 |
dalias | :) | 21:01 |
dalias | well it looks ok to me | 21:02 |
olofk | Is it possible to make a testcase for it? | 21:02 |
dalias | it will get caught in regression testing before next release if it breaks anything | 21:02 |
olofk | That answered my question :) | 21:02 |
dalias | :) | 21:02 |
dalias | fighting awful gcc bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68178 | 21:03 |
dalias | or binutils bugs as it likely is, but they want to fight over whose fault it is :-p | 21:04 |
olofk | I'm sure it's Microsoft who planted a bug to undermine the credibility of open source software | 21:09 |
dalias | it seems to be Alan Modra's fault: https://sourceware.org/git/?p=binutils-gdb.git;a=blame;f=gas/symbols.c;hb=f0abc2a11f47c3ecdfe0b54421092d17c70fc5f2#l1817 | 21:11 |
dalias | erm wrong link | 21:12 |
dalias | i don't understand how gitweb's git blame links work | 21:12 |
dalias | https://sourceware.org/git/?p=binutils-gdb.git;a=blame;f=gas/symbols.c;h=07362bbe1c13e051003299e16aeec3b967ccb31b;hb=HEAD#l2081 | 21:12 |
andrzejr | dalias, openrisc_arch.pdf says: PC < - exts(Immediate < < 2) + JumpInsnAddr | 21:13 |
dalias | :) | 21:13 |
dalias | "< <" | 21:13 |
dalias | < 3 pfd | 21:13 |
dalias | pdf* | 21:13 |
olofk | dalias: Yeah, we should really convert that spec to markdown or asciidoc or docbook or whatever is most appropriate | 21:19 |
olofk | Someone did that for the or1200 spec IIRC a while ago | 21:19 |
salman_ | is there a way to run an executable with an input argument via openocd or telnet session? | 21:27 |
olofk | salman_: Don't think so | 21:32 |
olofk | You need to compile that into your program | 21:32 |
olofk | Unless you run it under linux of course | 21:32 |
olofk | Hmm.. who was it that was working on a netBSD port for OpenRISC a while ago | 21:35 |
olofk | Anyone around with an Atlys board? | 22:05 |
olofk | I've moved the bootloader base address and increased the address space, but I don't have any hw to test it with | 22:05 |
hesham | olofk: Do you have a .bit file? I've the board right now. | 23:37 |
--- Log closed Tue Nov 03 00:00:53 2015 |
Generated by irclog2html.py 2.15.2 by Marius Gedminas - find it at mg.pov.lt!