profile
viewpoint
Shawn Anastasio shawnanastasio Chicago, IL https://anastas.io FOSS developer with an interest in system level programming and information security

NaegleLab/OpenEnsembles 64

Code for ensemble clustering

shawnanastasio/Clover-Ryzen 8

A Fork of the Clover EFI bootloader featuring AMD Ryzen support

shawnanastasio/BasilC 6

An interpreter for the BasilC esoteric programming language

shawnanastasio/chromium_power 5

Patches that allow Chromium to build and run on ppc64le

shawnanastasio/arpspoof-detect 3

Detects change in Linux ARP tables for common ARP Spoofing/Poisoning techniques.

jpaximadas/YeeNet 2

Short range radio network using SX127x modules and the LoRa modulation

KingRandomGuy/Robit-GCode-Interpreter-Python 2

A GCode interpreter for Robit 3D Systems 3d Printer.

KingRandomGuy/RobitGCodeInterpreter 2

GCodeInterpreter for Robit3D Systems

NickelLiang/xilinx_project_utils 2

Helper files and scripts for Xilinx FPGA based projects

shawnanastasio/3ds-helloworld-multilingual 2

Simplified Hello World program for 3DS that supports multiple languages

pull request commentziglang/zig

Implement support for powerpc64{,le}

Pushed an update that implements all basic functionality! Now all that needs to be done is some further testing (parts of the test suite fail, haven't tried any non-trivial Zig project).

I think the patchset is now at the point where I think it's ready for review by maintainers for merging. As such, I'll unmark it as a draft.

shawnanastasio

comment created time in 3 days

push eventshawnanastasio/zig

Shawn Anastasio

commit sha ec0d775524e0b8b8f0bc41baa3e6d4e11c50557d

Implement std.os for powerpc64{,le}

view details

Shawn Anastasio

commit sha 15371775d18e6425d1528643cedb70d6f0b7e6ea

Implement clone() for powerpc64{,le} Implementation borrowed from musl, as most (all?) of the other ones seem to be.

view details

Shawn Anastasio

commit sha 8574861ca0bc5e8103c27e3c78866e3a4eb56f98

Implement required ABI bits for powerpc{,64,64le}

view details

Shawn Anastasio

commit sha 51fcf949f97d068e917c0c3301ba63a4a305ab6e

Implement std.start for powerpc64le This is a bit hacky since we end up doing more than just grabbing the stack pointer in the inline assembly block. Ideally _start would be implemented in pure asm for powerpc64le, but this will do for now. Still to be implemented is powerpc, powerpc64, and powerpc64 (ELFv2) support. The latter will just require correctly determing target ABI for powerpc64 and enabling the existing powerpc64le implementation for it.

view details

push time in 3 days

issue commentziglang/zig

Compiler build fails on ppc64le

Finally got time to work on this again. I've got a hello world zig program running on ppc64le! There's still a lot of testing/validation to do but this is great progress. I'll rebase and update the PR with my new changes shortly.

shawnanastasio

comment created time in 4 days

startedopenpower-cores/a2i

started time in 5 days

startedhigan-emu/libco

started time in 9 days

startedgoogle/skywater-pdk

started time in 20 days

starteddrsn0w/zfs-backup

started time in 21 days

startedgyakovlev/gentoo-overlay

started time in 23 days

startedmsoulier/tftpy

started time in 23 days

push eventshawnanastasio/libkvmchan

Shawn Anastasio

commit sha 02c5d198c7088bc32be0549048cd44f8cf47d4d8

daemon: Close remaining vchans on domain close Destroy any lingering vchans when either the server or client dom is shut down. This is accomplished by libvirt sending a message to main whenever a domain is shut down. Also fix an issue with leaked cleanup_actions in libvirt on a domain close.

view details

push time in 25 days

push eventshawnanastasio/libkvmchan

Shawn Anastasio

commit sha 4a93de6c25ad2617c0eb6ded540de13df33667c8

README: remove typo

view details

push time in 25 days

push eventshawnanastasio/libkvmchan

Shawn Anastasio

commit sha 8ea1b0fcbcab1dbcf134ba204d28fbffa998a455

Reformat daemon table in README

view details

push time in 25 days

startedim-tomu/valentyusb

started time in a month

issue commentziglang/zig

Compiler build fails on ppc64le

Yeah, on ppc64le only r12 and a few other registers will be filled in by the kernel at program entrypoint. The TOC pointer (r2) and stack backchain initialization are generally done by libc, so it makes sense that we'd have to do it ourselves here.

shawnanastasio

comment created time in a month

Pull request review commentziglang/zig

Implement support for powerpc64{,le}

+const std = @import("../../../std.zig");+const linux = std.os.linux;+const socklen_t = linux.socklen_t;+const iovec = linux.iovec;+const iovec_const = linux.iovec_const;+const uid_t = linux.uid_t;+const gid_t = linux.gid_t;+const pid_t = linux.pid_t;+const stack_t = linux.stack_t;+const sigset_t = linux.sigset_t;+pub const SYS = extern enum(usize) {+    restart_syscall = 0,+    exit = 1,+    fork = 2,+    read = 3,+    write = 4,+    open = 5,+    close = 6,+    waitpid = 7,+    creat = 8,+    link = 9,+    unlink = 10,+    execve = 11,+    chdir = 12,+    time = 13,+    mknod = 14,+    chmod = 15,+    lchown = 16,+    sys_break = 17, // sys_ prepended to avoid clashing with keyword+    oldstat = 18,+    lseek = 19,+    getpid = 20,+    mount = 21,+    umount = 22,+    setuid = 23,+    getuid = 24,+    stime = 25,+    ptrace = 26,+    alarm = 27,+    oldfstat = 28,+    pause = 29,+    utime = 30,+    stty = 31,+    gtty = 32,+    access = 33,+    nice = 34,+    ftime = 35,+    sync = 36,+    kill = 37,+    rename = 38,+    mkdir = 39,+    rmdir = 40,+    dup = 41,+    pipe = 42,+    times = 43,+    prof = 44,+    brk = 45,+    setgid = 46,+    getgid = 47,+    signal = 48,+    geteuid = 49,+    getegid = 50,+    acct = 51,+    umount2 = 52,+    lock = 53,+    ioctl = 54,+    fcntl = 55,+    mpx = 56,+    setpgid = 57,+    ulimit = 58,+    oldolduname = 59,+    umask = 60,+    chroot = 61,+    ustat = 62,+    dup2 = 63,+    getppid = 64,+    getpgrp = 65,+    setsid = 66,+    sigaction = 67,+    sgetmask = 68,+    ssetmask = 69,+    setreuid = 70,+    setregid = 71,+    sigsuspend = 72,+    sigpending = 73,+    sethostname = 74,+    setrlimit = 75,+    getrlimit = 76,+    getrusage = 77,+    gettimeofday = 78,+    settimeofday = 79,+    getgroups = 80,+    setgroups = 81,+    select = 82,+    symlink = 83,+    oldlstat = 84,+    readlink = 85,+    uselib = 86,+    swapon = 87,+    reboot = 88,+    readdir = 89,+    mmap = 90,+    munmap = 91,+    truncate = 92,+    ftruncate = 93,+    fchmod = 94,+    fchown = 95,+    getpriority = 96,+    setpriority = 97,+    profil = 98,+    statfs = 99,+    fstatfs = 100,+    ioperm = 101,+    socketcall = 102,+    syslog = 103,+    setitimer = 104,+    getitimer = 105,+    stat = 106,+    lstat = 107,+    fstat = 108,+    olduname = 109,+    iopl = 110,+    vhangup = 111,+    idle = 112,+    vm86 = 113,+    wait4 = 114,+    swapoff = 115,+    sysinfo = 116,+    ipc = 117,+    fsync = 118,+    sigreturn = 119,+    clone = 120,+    setdomainname = 121,+    uname = 122,+    modify_ldt = 123,+    adjtimex = 124,+    mprotect = 125,+    sigprocmask = 126,+    create_module = 127,+    init_module = 128,+    delete_module = 129,+    get_kernel_syms = 130,+    quotactl = 131,+    getpgid = 132,+    fchdir = 133,+    bdflush = 134,+    sysfs = 135,+    personality = 136,+    afs_syscall = 137,+    setfsuid = 138,+    setfsgid = 139,+    _llseek = 140,+    getdents = 141,+    _newselect = 142,+    flock = 143,+    msync = 144,+    readv = 145,+    writev = 146,+    getsid = 147,+    fdatasync = 148,+    _sysctl = 149,+    mlock = 150,+    munlock = 151,+    mlockall = 152,+    munlockall = 153,+    sched_setparam = 154,+    sched_getparam = 155,+    sched_setscheduler = 156,+    sched_getscheduler = 157,+    sched_yield = 158,+    sched_get_priority_max = 159,+    sched_get_priority_min = 160,+    sched_rr_get_interval = 161,+    nanosleep = 162,+    mremap = 163,+    setresuid = 164,+    getresuid = 165,+    query_module = 166,+    poll = 167,+    nfsservctl = 168,+    setresgid = 169,+    getresgid = 170,+    prctl = 171,+    rt_sigreturn = 172,+    rt_sigaction = 173,+    rt_sigprocmask = 174,+    rt_sigpending = 175,+    rt_sigtimedwait = 176,+    rt_sigqueueinfo = 177,+    rt_sigsuspend = 178,+    pread64 = 179,+    pwrite64 = 180,+    chown = 181,+    getcwd = 182,+    capget = 183,+    capset = 184,+    sigaltstack = 185,+    sendfile = 186,+    getpmsg = 187,+    putpmsg = 188,+    vfork = 189,+    ugetrlimit = 190,+    readahead = 191,+    pciconfig_read = 198,+    pciconfig_write = 199,+    pciconfig_iobase = 200,+    multiplexer = 201,+    getdents64 = 202,+    pivot_root = 203,+    madvise = 205,+    mincore = 206,+    gettid = 207,+    tkill = 208,+    setxattr = 209,+    lsetxattr = 210,+    fsetxattr = 211,+    getxattr = 212,+    lgetxattr = 213,+    fgetxattr = 214,+    listxattr = 215,+    llistxattr = 216,+    flistxattr = 217,+    removexattr = 218,+    lremovexattr = 219,+    fremovexattr = 220,+    futex = 221,+    sched_setaffinity = 222,+    sched_getaffinity = 223,+    tuxcall = 225,+    io_setup = 227,+    io_destroy = 228,+    io_getevents = 229,+    io_submit = 230,+    io_cancel = 231,+    set_tid_address = 232,+    fadvise64 = 233,+    exit_group = 234,+    lookup_dcookie = 235,+    epoll_create = 236,+    epoll_ctl = 237,+    epoll_wait = 238,+    remap_file_pages = 239,+    timer_create = 240,+    timer_settime = 241,+    timer_gettime = 242,+    timer_getoverrun = 243,+    timer_delete = 244,+    clock_settime = 245,+    clock_gettime = 246,+    clock_getres = 247,+    clock_nanosleep = 248,+    swapcontext = 249,+    tgkill = 250,+    utimes = 251,+    statfs64 = 252,+    fstatfs64 = 253,+    rtas = 255,+    sys_debug_setcontext = 256,+    migrate_pages = 258,+    mbind = 259,+    get_mempolicy = 260,+    set_mempolicy = 261,+    mq_open = 262,+    mq_unlink = 263,+    mq_timedsend = 264,+    mq_timedreceive = 265,+    mq_notify = 266,+    mq_getsetattr = 267,+    kexec_load = 268,+    add_key = 269,+    request_key = 270,+    keyctl = 271,+    waitid = 272,+    ioprio_set = 273,+    ioprio_get = 274,+    inotify_init = 275,+    inotify_add_watch = 276,+    inotify_rm_watch = 277,+    spu_run = 278,+    spu_create = 279,+    pselect6 = 280,+    ppoll = 281,+    unshare = 282,+    splice = 283,+    tee = 284,+    vmsplice = 285,+    openat = 286,+    mkdirat = 287,+    mknodat = 288,+    fchownat = 289,+    futimesat = 290,+    newfstatat = 291,+    unlinkat = 292,+    renameat = 293,+    linkat = 294,+    symlinkat = 295,+    readlinkat = 296,+    fchmodat = 297,+    faccessat = 298,+    get_robust_list = 299,+    set_robust_list = 300,+    move_pages = 301,+    getcpu = 302,+    epoll_pwait = 303,+    utimensat = 304,+    signalfd = 305,+    timerfd_create = 306,+    eventfd = 307,+    sync_file_range2 = 308,+    fallocate = 309,+    subpage_prot = 310,+    timerfd_settime = 311,+    timerfd_gettime = 312,+    signalfd4 = 313,+    eventfd2 = 314,+    epoll_create1 = 315,+    dup3 = 316,+    pipe2 = 317,+    inotify_init1 = 318,+    perf_event_open = 319,+    preadv = 320,+    pwritev = 321,+    rt_tgsigqueueinfo = 322,+    fanotify_init = 323,+    fanotify_mark = 324,+    prlimit64 = 325,+    socket = 326,+    bind = 327,+    connect = 328,+    listen = 329,+    accept = 330,+    getsockname = 331,+    getpeername = 332,+    socketpair = 333,+    send = 334,+    sendto = 335,+    recv = 336,+    recvfrom = 337,+    shutdown = 338,+    setsockopt = 339,+    getsockopt = 340,+    sendmsg = 341,+    recvmsg = 342,+    recvmmsg = 343,+    accept4 = 344,+    name_to_handle_at = 345,+    open_by_handle_at = 346,+    clock_adjtime = 347,+    syncfs = 348,+    sendmmsg = 349,+    setns = 350,+    process_vm_readv = 351,+    process_vm_writev = 352,+    finit_module = 353,+    kcmp = 354,+    sched_setattr = 355,+    sched_getattr = 356,+    renameat2 = 357,+    seccomp = 358,+    getrandom = 359,+    memfd_create = 360,+    bpf = 361,+    execveat = 362,+    switch_endian = 363,+    userfaultfd = 364,+    membarrier = 365,+    mlock2 = 378,+    copy_file_range = 379,+    preadv2 = 380,+    pwritev2 = 381,+    kexec_file_load = 382,+    statx = 383,+    pkey_alloc = 384,+    pkey_free = 385,+    pkey_mprotect = 386,+    rseq = 387,+    io_pgetevents = 388,+    semtimedop = 392,+    semget = 393,+    semctl = 394,+    shmget = 395,+    shmctl = 396,+    shmat = 397,+    shmdt = 398,+    msgget = 399,+    msgsnd = 400,+    msgrcv = 401,+    msgctl = 402,+    pidfd_send_signal = 424,+    io_uring_setup = 425,+    io_uring_enter = 426,+    io_uring_register = 427,+    open_tree = 428,+    move_mount = 429,+    fsopen = 430,+    fsconfig = 431,+    fsmount = 432,+    fspick = 433,+    pidfd_open = 434,+    clone3 = 435,+    openat2 = 437,+    pidfd_getfd = 438,++    _,+};++pub const O_CREAT = 0o100;+pub const O_EXCL = 0o200;+pub const O_NOCTTY = 0o400;+pub const O_TRUNC = 0o1000;+pub const O_APPEND = 0o2000;+pub const O_NONBLOCK = 0o4000;+pub const O_DSYNC = 0o10000;+pub const O_SYNC = 0o4010000;+pub const O_RSYNC = 0o4010000;+pub const O_DIRECTORY = 0o40000;+pub const O_NOFOLLOW = 0o100000;+pub const O_CLOEXEC = 0o2000000;++pub const O_ASYNC = 0o20000;+pub const O_DIRECT = 0o400000;+pub const O_LARGEFILE = 0o200000;+pub const O_NOATIME = 0o1000000;+pub const O_PATH = 0o10000000;+pub const O_TMPFILE = 0o20200000;+pub const O_NDELAY = O_NONBLOCK;++pub const F_DUPFD = 0;+pub const F_GETFD = 1;+pub const F_SETFD = 2;+pub const F_GETFL = 3;+pub const F_SETFL = 4;++pub const F_SETOWN = 8;+pub const F_GETOWN = 9;+pub const F_SETSIG = 10;+pub const F_GETSIG = 11;++pub const F_GETLK = 5;+pub const F_SETLK = 6;+pub const F_SETLKW = 7;++pub const F_RDLCK = 0;+pub const F_WRLCK = 1;+pub const F_UNLCK = 2;++pub const LOCK_SH = 1;+pub const LOCK_EX = 2;+pub const LOCK_UN = 8;+pub const LOCK_NB = 4;++pub const F_SETOWN_EX = 15;+pub const F_GETOWN_EX = 16;++pub const F_GETOWNER_UIDS = 17;++/// stack-like segment+pub const MAP_GROWSDOWN = 0x0100;++/// ETXTBSY+pub const MAP_DENYWRITE = 0x0800;++/// mark it as an executable+pub const MAP_EXECUTABLE = 0x1000;++/// pages are locked+pub const MAP_LOCKED = 0x0080;++/// don't check for reservations+pub const MAP_NORESERVE = 0x0040;++pub const VDSO_CGT_SYM = "__kernel_clock_gettime";+pub const VDSO_CGT_VER = "LINUX_2.6.15";++pub const Flock = extern struct {+    l_type: i16,+    l_whence: i16,+    l_start: off_t,+    l_len: off_t,+    l_pid: pid_t,+    __unused: [4]u8,+};++pub const msghdr = extern struct {+    msg_name: ?*sockaddr,+    msg_namelen: socklen_t,+    msg_iov: [*]iovec,+    msg_iovlen: usize,+    msg_control: ?*c_void,+    msg_controllen: usize,+    msg_flags: i32,+};++pub const msghdr_const = extern struct {+    msg_name: ?*const sockaddr,+    msg_namelen: socklen_t,+    msg_iov: [*]iovec_const,+    msg_iovlen: usize,+    msg_control: ?*c_void,+    msg_controllen: usize,+    msg_flags: i32,+};++pub const blksize_t = i64;+pub const nlink_t = u32;+pub const time_t = i64;+pub const mode_t = u32;+pub const off_t = i64;+pub const ino_t = u64;+pub const dev_t = u64;+pub const blkcnt_t = i64;++/// Renamed to Stat to not conflict with the stat function.

That comment was a direct copy from x86_64.zig, and it seems like every other architecture has it as well. For consistency, I'd like to keep it the same as all of them.

shawnanastasio

comment created time in a month

issue commentziglang/zig

Compiler build fails on ppc64le

Added musl's clone implementation and pushed to my PR branch. Will tackle compiler_rt next.

shawnanastasio

comment created time in a month

push eventshawnanastasio/zig

Shawn Anastasio

commit sha 8c6776ff2af078b6cc52de035efd2c7fc1116b54

Implement clone() for powerpc64{,le} Implementation borrowed from musl, as most (all?) of the other ones seem to be.

view details

push time in a month

PR opened ziglang/zig

Implement std.os for powerpc64{,le}

This patch implements support for std.os's architecture-specific bits for powerpc64 and powerpc64le. This still isn't enough to run Zig (missing ABI support), but it's a start.

+731 -0

0 comment

4 changed files

pr created time in a month

issue commentziglang/zig

Compiler build fails on ppc64le

How did you come to those definitions?

Cross referenced from musl, glibc, and other ppc64le ports I've done.

(and please do open a PR; just click "draft" if its not ready yet)

Sure, will do.

shawnanastasio

comment created time in a month

issue commentziglang/zig

Compiler build fails on ppc64le

Implemented std.os https://github.com/shawnanastasio/zig/commit/a91058200816db67e980430f5410cb4b622c484b.

Next I'll look into the ABI stuff @shawnl mentioned.

shawnanastasio

comment created time in a month

create barnchshawnanastasio/zig

branch : ppc64le

created branch time in a month

fork shawnanastasio/zig

General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.

https://ziglang.org

fork in a month

push eventshawnanastasio/nmigen

Shawn Anastasio

commit sha 72a80fcada09325d766dd43a401782096afe0c66

hdl.rec: don't save casted shapes in Layout constructor Don't save the result of Shape.cast in the Layout constructor. This allows the original user-provided shape to be preserved, while still checking its validity. This fixes Enum decoder inference for Signals (#393).

view details

push time in a month

pull request commentnmigen/nmigen

hdl.rec: don't save casted shapes in Layout constructor

Added a test for the enum decoder in RecordTestCase

shawnanastasio

comment created time in a month

push eventshawnanastasio/nmigen

Shawn Anastasio

commit sha 7d7833ee80a9f834b74bd6cbda6f74f0d81cceaf

hdl.rec: don't save casted shapes in Layout constructor Don't save the result of Shape.cast in the Layout constructor. This allows the original user-provided shape to be preserved, while still checking its validity. This fixes Enum decoder inference for Signals (#393).

view details

push time in a month

issue openedziglang/zig

Compiler build fails on ppc64le

When compiling zig 14d235dd6e79dba8d34e05f1912a1bcf9a3ef68c on a ppc64le machine, the following errors are encountered:

./lib/std/time.zig:188:24: error: container 'std.os' has no member called 'timespec'
            var res: os.timespec = undefined;
                       ^
./lib/std/fs/file.zig:30:25: error: container 'std.os' has no member called 'ino_t'
    pub const INode = os.ino_t;
                        ^
./lib/std/fs/file.zig:226:16: note: referenced here
        inode: INode,
               ^
./lib/std/fs/file.zig:241:38: note: referenced here
    pub fn stat(self: File) StatError!Stat {
                                     ^
./lib/std/fs/file.zig:204:25: note: referenced here
        return (try self.stat()).size;
                        ^
./lib/std/fs/file.zig:29:24: error: container 'std.os' has no member called 'mode_t'
    pub const Mode = os.mode_t;
                       ^
./lib/std/fs.zig:1548:19: note: referenced here
        mode: File.Mode = File.default_mode,
                  ^
./src-self-hosted/main.zig:718:46: note: referenced here
        const baf = try io.BufferedAtomicFile.create(fmt.gpa, fs.cwd(), real_path, .{});
                                             ^
./lib/std/event/loop.zig:1212:25: error: container 'std.os' has no member called 'mode_t'
                mode: os.mode_t,
                        ^
./lib/std/event/loop.zig:1142:13: note: while checking this field
            open: Open,
            ^
./lib/std/event/loop.zig:1124:9: note: while checking this field
        msg: Msg,
        ^
./lib/std/linked_list.zig:172:13: note: while checking this field
            data: T,
            ^
./lib/std/atomic/queue.zig:12:9: note: while checking this field
        head: ?*Node,
        ^
./lib/std/event/loop.zig:25:5: note: while checking this field
    fs_queue: std.atomic.Queue(Request),
    ^
./lib/std/event/loop.zig:104:25: note: referenced here
    pub const instance: ?*Loop = if (@hasDecl(root, "event_loop")) root.event_loop else default_instance;
                        ^
./lib/std/os.zig:717:41: note: referenced here
            EAGAIN => if (std.event.Loop.instance) |loop| {
                                        ^
./lib/std/fs.zig:709:54: error: container 'std.os' has no member called 'O_CLOEXEC'
        const os_flags = lock_flag | O_LARGEFILE | os.O_CLOEXEC | if (flags.write and flags.read)
                                                     ^
./lib/std/fs.zig:1029:53: error: container 'std.os' has no member called 'O_DIRECTORY'
            return self.openDirFlagsZ(sub_path_c, os.O_DIRECTORY | os.O_RDONLY | os.O_CLOEXEC | O_PATH);
                                                    ^
./lib/std/reset_event.zig:252:26: error: container 'std.os.linux' has no member called 'timespec'
            var ts: linux.timespec = undefined;
                         ^
./lib/std/time.zig:230:19: error: container 'std.os' has no member called 'timespec'
        var ts: os.timespec = undefined;
                  ^
./lib/std/os.zig:1127:74: error: use of undeclared identifier 'mode_t'
pub fn openatZ(dir_fd: fd_t, file_path: [*:0]const u8, flags: u32, mode: mode_t) OpenError!fd_t {
                                                                         ^
./lib/std/fs.zig:1051:15: note: referenced here
            os.openatZ(self.fd, sub_path_c, flags, 0);
              ^
./lib/std/os/linux.zig:138:12: error: use of undeclared identifier 'syscall3'
    return syscall3(
           ^
make[2]: *** [CMakeFiles/zig_build_libstage2.dir/build.make:77: CMakeFiles/zig_build_libstage2] Error 1
make[1]: *** [CMakeFiles/Makefile2:108: CMakeFiles/zig_build_libstage2.dir/all] Error 2
make: *** [Makefile:150: all] Error 2

I assume some architecture-specific bits for ppc64le are missing. If you could point out where support would need to be added, I can try to contribute it.

created time in a month

startedwhitequark/libfx2

started time in a month

pull request commentnmigen/nmigen

hdl.rec: don't save casted shapes in Layout constructor

Updated to address review comments

shawnanastasio

comment created time in a month

push eventshawnanastasio/shawnanastasio.github.io

dependabot[bot]

commit sha 130ab42e9d8878cb558e8a39d1468f2e06db2751

Bump jekyll from 3.2.1 to 3.6.3 in /_site Bumps [jekyll](https://github.com/jekyll/jekyll) from 3.2.1 to 3.6.3. - [Release notes](https://github.com/jekyll/jekyll/releases) - [Changelog](https://github.com/jekyll/jekyll/blob/master/History.markdown) - [Commits](https://github.com/jekyll/jekyll/compare/v3.2.1...v3.6.3) Signed-off-by: dependabot[bot] <support@github.com>

view details

Shawn Anastasio

commit sha 96c69481a0c9532f9b1a8afae419f4f134766bc3

Merge pull request #1 from shawnanastasio/dependabot/bundler/_site/jekyll-3.6.3 Bump jekyll from 3.2.1 to 3.6.3 in /_site

view details

push time in a month

PR merged shawnanastasio/shawnanastasio.github.io

Bump jekyll from 3.2.1 to 3.6.3 in /_site dependencies

Bumps jekyll from 3.2.1 to 3.6.3. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/jekyll/jekyll/releases">jekyll's releases</a>.</em></p> <blockquote> <h2>v3.6.2</h2> <h3>Development Fixes</h3> <ul> <li>Update Rubocop to 0.51.0 (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6444">#6444</a>)</li> <li>Add test for layout as string (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6445">#6445</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li>Problematic UTF+bom files (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6322">#6322</a>)</li> <li>Always treat <code>data.layout</code> as a string (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6442">#6442</a>)</li> </ul> <h2>v3.6.1</h2> <h3>Documentation</h3> <ul> <li>Doc y_day in docs/permalinks (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6244">#6244</a>)</li> <li>Update frontmatter.md (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6371">#6371</a>)</li> <li>Elaborate on excluding items from processing (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6136">#6136</a>)</li> <li>Style lists in tables (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6379">#6379</a>)</li> <li>Remove duplicate &<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/34">#34</a>;available&<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/34">#34</a>; (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6380">#6380</a>)</li> </ul> <h3>Development Fixes</h3> <ul> <li>Bump rubocop to use <code>v0.50.x</code> (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6368">#6368</a>)</li> </ul> <h2>v3.6.0</h2> <h3>Minor Enhancements</h3> <ul> <li>Ignore final newline in folded YAML string (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6054">#6054</a>)</li> <li>Add URL checks to Doctor (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/5760">#5760</a>)</li> <li>Fix serving files that clash with directories (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6222">#6222</a>) (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6231">#6231</a>)</li> <li>Bump supported Ruby version to <code>>= 2.1.0</code> (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6220">#6220</a>)</li> <li>set <code>LiquidError#template_name</code> for errors in included file (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6206">#6206</a>)</li> <li>Access custom config array throughout session (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6200">#6200</a>)</li> <li>Add support for Rouge 2, in addition to Rouge 1 (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/5919">#5919</a>)</li> <li>Allow <code>yield</code> to logger methods & bail early on no-op messages (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6315">#6315</a>)</li> <li>Update mime-types. (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6336">#6336</a>)</li> <li>Use a Schwartzian transform with custom sorting (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6342">#6342</a>)</li> <li>Alias <code>Drop#invoke_drop</code> to <code>Drop#[]</code> (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6338">#6338</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li><code>Deprecator</code>: fix typo for <code>--serve</code> command (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6229">#6229</a>)</li> <li><code>Reader#read_directories</code>: guard against an entry not being a directory (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6226">#6226</a>)</li> <li>kramdown: symbolize keys in-place (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6247">#6247</a>)</li> <li>Call <code>to_s</code> on site.url before attempting to concatenate strings (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6253">#6253</a>)</li> <li>Enforce Style/FrozenStringLiteralComment (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6265">#6265</a>)</li> <li>Update theme-template README to note &<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/39">#39</a>;assets&<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/39">#39</a>; directory (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6257">#6257</a>)</li> <li>Memoize the return value of <code>Document#url</code> (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6266">#6266</a>)</li> <li>delegate <code>StaticFile#to_json</code> to <code>StaticFile#to_liquid</code> (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6273">#6273</a>)</li> <li>Fix <code>Drop#key?</code> so it can handle a nil argument (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6281">#6281</a>)</li> </ul> </tr></table> ... (truncated) </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/jekyll/jekyll/blob/master/History.markdown">jekyll's changelog</a>.</em></p> <blockquote> <h2>3.6.3 / 2018-09-18</h2> <h3>Bug Fixes</h3> <ul> <li>3.6.x: security: fix <code>include</code> bypass of <code>EntryFilter#filter</code> symlink check (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/7229">#7229</a>)</li> </ul> <h2>3.6.2 / 2017-10-21</h2> <h3>Development Fixes</h3> <ul> <li>Update Rubocop to 0.51.0 (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6444">#6444</a>)</li> <li>Add test for layout as string (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6445">#6445</a>)</li> </ul> <h3>Bug Fixes</h3> <ul> <li>Problematic UTF+bom files (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6322">#6322</a>)</li> <li>Always treat <code>data.layout</code> as a string (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6442">#6442</a>)</li> </ul> <h2>3.6.1 / 2017-10-20</h2> <h3>Documentation</h3> <ul> <li>Doc y_day in docs/permalinks (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6244">#6244</a>)</li> <li>Update frontmatter.md (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6371">#6371</a>)</li> <li>Elaborate on excluding items from processing (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6136">#6136</a>)</li> <li>Style lists in tables (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6379">#6379</a>)</li> <li>Remove duplicate &<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/34">#34</a>;available&<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/34">#34</a>; (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6380">#6380</a>)</li> </ul> <h3>Development Fixes</h3> <ul> <li>Bump rubocop to use <code>v0.50.x</code> (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6368">#6368</a>)</li> </ul> <h2>3.6.0 / 2017-09-21</h2> <h3>Minor Enhancements</h3> <ul> <li>Ignore final newline in folded YAML string (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6054">#6054</a>)</li> <li>Add URL checks to Doctor (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/5760">#5760</a>)</li> <li>Fix serving files that clash with directories (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6222">#6222</a>) (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6231">#6231</a>)</li> <li>Bump supported Ruby version to <code>>= 2.1.0</code> (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6220">#6220</a>)</li> <li>set <code>LiquidError#template_name</code> for errors in included file (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6206">#6206</a>)</li> <li>Access custom config array throughout session (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6200">#6200</a>)</li> <li>Add support for Rouge 2, in addition to Rouge 1 (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/5919">#5919</a>)</li> <li>Allow <code>yield</code> to logger methods & bail early on no-op messages (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6315">#6315</a>)</li> <li>Update mime-types. (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6336">#6336</a>)</li> <li>Use a Schwartzian transform with custom sorting (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6342">#6342</a>)</li> <li>Alias <code>Drop#invoke_drop</code> to <code>Drop#[]</code> (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6338">#6338</a>)</li> </ul> <h3>Bug Fixes</h3> </tr></table> ... (truncated) </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/jekyll/jekyll/commit/901223038f5d503dcea84de4fe00c98043a23740"><code>9012230</code></a> Release :gem: 3.6.3</li> <li><a href="https://github.com/jekyll/jekyll/commit/3ffee1d601eaf68d1e76a95039d93308c3c91a1b"><code>3ffee1d</code></a> Release :gem: 3.6.3</li> <li><a href="https://github.com/jekyll/jekyll/commit/caddaebf50cdadc5164902b9a57619af8110942d"><code>caddaeb</code></a> 3.6.x: security: fix <code>include</code> bypass of <code>EntryFilter#filter</code> symlink check (...</li> <li><a href="https://github.com/jekyll/jekyll/commit/0b83d760c4820eaada991cf5904ce3d580e80d9f"><code>0b83d76</code></a> Update site History</li> <li><a href="https://github.com/jekyll/jekyll/commit/0d555a7361ad4d07fad7381a0118f94512b83231"><code>0d555a7</code></a> Release 💎 3.6.2</li> <li><a href="https://github.com/jekyll/jekyll/commit/1cda1842d26897d92ac4e6ac1344777da960e23a"><code>1cda184</code></a> Update history to reflect merge of <a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6451">#6451</a> <a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6452">#6452</a> <a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6453">#6453</a> [ci skip]</li> <li><a href="https://github.com/jekyll/jekyll/commit/5a0582aad63824b125c603ede44d1d6343284b16"><code>5a0582a</code></a> Backport add-test-for-layout-as-string from <a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6445">#6445</a> to 3.6-stable</li> <li><a href="https://github.com/jekyll/jekyll/commit/035c6e0337415a440ef1611ec348093ce7da680e"><code>035c6e0</code></a> Backport patch-1 from <a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6442">#6442</a> to 3.6-stable</li> <li><a href="https://github.com/jekyll/jekyll/commit/1377cf2f70f1bec5273e0e647105dcbc27bafc65"><code>1377cf2</code></a> Backport utf8-bom from <a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6322">#6322</a> to 3.6-stable (<a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6451">#6451</a>)</li> <li><a href="https://github.com/jekyll/jekyll/commit/de4007c2cd68d8ecf2e778b0b456d73a0597ca26"><code>de4007c</code></a> Update history to reflect merge of <a href="https://github-redirect.dependabot.com/jekyll/jekyll/issues/6450">#6450</a> [ci skip]</li> <li>Additional commits viewable in <a href="https://github.com/jekyll/jekyll/compare/v3.2.1...v3.6.3">compare view</a></li> </ul> </details> <br />

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


<details> <summary>Dependabot commands and options</summary> <br />

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

You can disable automated security fix PRs for this repo from the Security Alerts page.

</details>

+30 -22

0 comment

2 changed files

dependabot[bot]

pr closed time in a month

push eventshawnanastasio/shawnanastasio.github.io

Shawn Anastasio

commit sha c1c5d7db55e12f0fe54207b406b9c1c8b143bf6b

update about

view details

Shawn Anastasio

commit sha b4a74cc17dc3201023a31a7d0169f70949487b70

xavier post

view details

push time in a month

push eventshawnanastasio/nmigen

Shawn Anastasio

commit sha 7243fe2d35445a02093e95bf6f96f777350ae2ed

hdl.rec: don't save casted shapes in Layout constructor Don't save the result of Shape.cast in the Layout constructor. This allows the original user-provided shape to be preserved, while still checking its validity. This fixes Enum decoder inference for Signals (#393).

view details

push time in a month

push eventshawnanastasio/nmigen

Shawn Anastasio

commit sha f432fe4e852ae2300d30a564253d658e406a0f29

hdl.rec: don't save casted shapes in Layout constructor Don't save the result of Shape.cast in the Layout constructor. This allows the original user-provided shape to be preserved, while still checking its validity. This fixes Enum decoder inference for Signals (#393).

view details

push time in a month

pull request commentnmigen/nmigen

hdl.rec: don't save casted shapes in Layout constructor

Looks like I missed some tests, let me fix those up

shawnanastasio

comment created time in a month

PR opened nmigen/nmigen

hdl.rec: don't save casted shapes in Layout constructor

Don't save the result of Shape.cast in the Layout constructor. This allows the original user-provided shape to be preserved, while still checking its validity.

This fixes Enum decoder inference for Signals (#393).

+21 -15

0 comment

2 changed files

pr created time in a month

create barnchshawnanastasio/nmigen

branch : layout_shape_fix

created branch time in a month

fork shawnanastasio/nmigen

A refreshed Python toolbox for building complex digital hardware

fork in a month

issue commentnmigen/nmigen

Signal decoder inference for Enums doesn't work for Layout members

Though it seems to fix the original issue, removing the shape cast assignment causes a few test cases to fail:

======================================================================
FAIL: test_slice_tuple (nmigen.test.test_hdl_rec.RecordTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/shawnanastasio/opt/fpga/nmigen/nmigen/test/test_hdl_rec.py", line 199, in test_slice_tuple
    r2 = r1["a", "c"]
  File "/home/shawnanastasio/opt/fpga/nmigen/nmigen/hdl/rec.py", line 164, in __getitem__
    for field_name, field_value in self.fields.items()
  File "/home/shawnanastasio/opt/fpga/nmigen/nmigen/hdl/rec.py", line 137, in __init__
    assert isinstance(field, Signal) and field_shape == field.shape()
AssertionError

Should these tests be changed to check if the field's shape matches the Signal's shape after calling Shape.cast, rather than a direct comparison?

shawnanastasio

comment created time in a month

startednmigen/nmigen

started time in a month

issue openednmigen/nmigen

Signal decoder inference for Enums doesn't work for Layout members

This is a duplicate of https://github.com/m-labs/nmigen/issues/333 that I've moved here since this seems to be the correct upstream repository.

When creating a signal with shape set to an Enum-derived type, the decoder function is automatically inferred to a built-in function that turns the Enum value and name into a nice human-readable string.

When defining a layout with an field's shape set to an Enum-derived type though, the decoder inference doesn't happen. As far as I can see, this is because the Layout constructor will cast all fields' shapes with Shape.cast, resulting in the original Enum type being lost.

https://github.com/nmigen/nmigen/blob/26a15b31f7fc278783cf9286d5af1877edc8290f/nmigen/hdl/rec.py#L48-L50

This results in an actual Shape object being passed to the Signal constructor instead of an Enum, and thus the built in Enum decoder can't be used.

I can think of a few ways to fix this, but wanted to hear the maintainers' thoughts to see if they have a preferred way of going about it.

My first idea is to not cast shapes in the Layout constructor, but instead check whether the user-provided type is a valid shape, probably by calling Shape.cast, discarding the value, and checking for an exception.

The other idea is to add a field to Shape which stores the original type that a given object was casted from. This would also require some extra logic in the Signal constructor to not only check the shape's type when checking for default decoders, but also checking the original type of casted Shape objects.

Curious to hear any thoughts on this.

Update: To test out the first idea, I simply removed the shape = from line 50 of the above code and it seems to behave as expected. If this is deemed an acceptable solution I can create a PR.

created time in a month

startedZipCPU/wb2axip

started time in a month

issue openedm-labs/nmigen

Signal decoder inference for Enums doesn't work for Layout members

When creating a signal with shape set to an Enum-derived type, the decoder function is automatically inferred to a built-in function that turns the Enum value and name into a nice human-readable string.

When defining a layout with an field's shape set to an Enum-derived type though, the decoder inference doesn't happen. As far as I can see, this is because the Layout constructor will cast all fields' shapes with Shape.cast, resulting in the original Enum type being lost.

https://github.com/m-labs/nmigen/blob/8f5a253b22cd4ebcd56304a3662f4c70e3b34ed5/nmigen/hdl/rec.py#L48-L50

This results in an actual Shape object being passed to the Signal constructor, and thus the built in Enum decoder can't be used.

I can think of a few ways to fix this, but wanted to hear the maintainers' thoughts to see if they have a preferred way of going about it.

My first idea is to not cast shapes in the Layout constructor, but instead check whether the user-provided type is a valid shape, probably by calling Shape.cast, discarding the value, and checking for an exception.

The other idea is to add a field to Shape which stores the original type that a given object was casted from. This would also require some extra logic in the Signal constructor to not only check the shape's type when checking for default decoders, but also checking the original type of casted Shape objects.

Curious to hear any thoughts on this.

created time in a month

push eventshawnanastasio/microwatt

Shawn Anastasio

commit sha 8b161c6dc6070f186cfe6ccd23466ff448d03c5b

Add a new misc test suite with addpcis tests The two tests obtain NIA with bl+mflr+addi and then compare it against addpcis with the minimum and maximum immediate operand values. They were also tested on a real POWER9 system (in userspace) for good measure. Signed-off-by: Shawn Anastasio <shawn@anastas.io>

view details

push time in a month

push eventshawnanastasio/microwatt

Shawn Anastasio

commit sha e606772aeb177c67d4c08b42ba79ef196906e1d7

Implement the addpcis instruction This commit adds support for the addpcis instruction from ISA 3.0. A new input_reg_b_t type, CONST_DX_HI, was added to support the shifted immediate value used in DX-Form instructions. Signed-off-by: Shawn Anastasio <shawn@anastas.io>

view details

Shawn Anastasio

commit sha 0ac5172315077dd4aa37a86ee71c5653619b1486

Add a new misc test suite with addpcis tests The two tests obtain NIA with bl+mflr+addi and then compare it against addpcis with the minimum and maximum immediate operand values. They were also tested on a real POWER9 system (in userspace) for good measure. Signed-off-by: Shawn Anastasio <shawn@anastas.io>

view details

push time in a month

PR opened antonblanchard/microwatt

Add support for the addpcis instruction

This set introduces support for the addpcis instruction from ISA 3.0, as well as a couple of tests for it.

+179 -4

0 comment

12 changed files

pr created time in a month

create barnchshawnanastasio/microwatt

branch : addpcis

created branch time in a month

fork shawnanastasio/microwatt

A tiny Open POWER ISA softcore written in VHDL 2008

fork in a month

startedskordal/potato

started time in a month

issue closedm-labs/nmigen

Can't generate verilog for blinky example: Only signals may be added as ports

Hello,

When attempting to generate verilog for this blinky example using nmigen 8f5a253b22cd4ebcd56304a3662f4c70e3b34ed5, the following error is generated:

$ python3 blinky.py generate
Traceback (most recent call last):
  File "blinky.py", line 17, in <module>
    main(top, ports=(top.led))
  File "/home/shawnanastasio/opt/fpga/nmigen/nmigen/cli.py", line 74, in main
    main_runner(parser, parser.parse_args(), *args, **kwargs)
  File "/home/shawnanastasio/opt/fpga/nmigen/nmigen/cli.py", line 58, in main_runner
    output = verilog.convert(fragment, name=name, ports=ports)
  File "/home/shawnanastasio/opt/fpga/nmigen/nmigen/back/verilog.py", line 76, in convert
    rtlil_text = rtlil.convert(*args, **kwargs)
  File "/home/shawnanastasio/opt/fpga/nmigen/nmigen/back/rtlil.py", line 1017, in convert
    fragment = ir.Fragment.get(elaboratable, platform).prepare(**kwargs)
  File "/home/shawnanastasio/opt/fpga/nmigen/nmigen/hdl/ir.py", line 541, in prepare
    .format(port))
TypeError: Only signals may be added as ports, not (slice (sig led) 0:1)

The same error seems to occur when attempting to simulate the design as well.

For reference, here are the versions of the relevant components:

$ python3 --version
Python 3.6.10
$ yosys -V
Yosys 0.9 (git sha1 1979e0b1, gcc 9.3.0 -fPIC -Os)

I'm also on a ppc64le machine, though I'm not sure if that's relevant here.

closed time in a month

shawnanastasio

issue commentm-labs/nmigen

Can't generate verilog for blinky example: Only signals may be added as ports

Nevermind, it looks like using a list in place of a tuple for the ports parameter fixed it. It looks like that documentation needs to be updated. Sorry for the noise.

shawnanastasio

comment created time in a month

issue openedm-labs/nmigen

Can't generate verilog for blinky example: Only signals may be added as ports

Hello,

When attempting to generate verilog for this blinky example using nmigen 8f5a253b22cd4ebcd56304a3662f4c70e3b34ed5, the following error is generated:

$ python3 blinky.py generate
Traceback (most recent call last):
  File "blinky.py", line 17, in <module>
    main(top, ports=(top.led))
  File "/home/shawnanastasio/opt/fpga/nmigen/nmigen/cli.py", line 74, in main
    main_runner(parser, parser.parse_args(), *args, **kwargs)
  File "/home/shawnanastasio/opt/fpga/nmigen/nmigen/cli.py", line 58, in main_runner
    output = verilog.convert(fragment, name=name, ports=ports)
  File "/home/shawnanastasio/opt/fpga/nmigen/nmigen/back/verilog.py", line 76, in convert
    rtlil_text = rtlil.convert(*args, **kwargs)
  File "/home/shawnanastasio/opt/fpga/nmigen/nmigen/back/rtlil.py", line 1017, in convert
    fragment = ir.Fragment.get(elaboratable, platform).prepare(**kwargs)
  File "/home/shawnanastasio/opt/fpga/nmigen/nmigen/hdl/ir.py", line 541, in prepare
    .format(port))
TypeError: Only signals may be added as ports, not (slice (sig led) 0:1)

The same error seems to occur when attempting to simulate the design as well.

For reference, here are the versions of the relevant components:

$ python3 --version
Python 3.6.10
$ yosys -V
Yosys 0.9 (git sha1 1979e0b1, gcc 9.3.0 -fPIC -Os)

I'm also on a ppc64le machine, though I'm not sure if that's relevant here.

created time in a month

startedgoogle/gvisor

started time in 2 months

issue commentQubesOS/qubes-issues

Port Qubes to ppc64 [2 bitcoin bounty]

Just confirmed that I received 0.2BTC of the bounty from @leo-lb. Thanks!

Rspigler

comment created time in 2 months

issue commentQubesOS/qubes-issues

Port Qubes to ppc64 [2 bitcoin bounty]

A major update!

With the latest libkvmchan and the new qubes-core-vchan-kvm, qrexec now runs (mostly*) unmodified on ppc64le!

Still to be implemented is support for determining whether a vchan was closed, but in its current state everything seems sufficient for usage with qrexec. Below is a screenshot of qrexec executing a remote shell on a Fedora VM (left) from a Gentoo host (right). (Excuse the debug printfs :stuck_out_tongue_winking_eye:)

Screenshot_2020-05-19_02-18-42

*A bodge in qrexec was add to sleep for a little bit before vchan client connection, since libkvmchan takes a little longer than libxenvchan to initialize new vchans. I'm still pondering the best way to solve this.

Rspigler

comment created time in 2 months

create barnchshawnanastasio/qubes-core-vchan-kvm

branch : master

created branch time in 2 months

created repositoryshawnanastasio/qubes-core-vchan-kvm

A thin wrapper over libkvmchan that implements the QubesOS vchan API

created time in 2 months

push eventshawnanastasio/libkvmchan

Shawn Anastasio

commit sha bcf52202c9437d0ffb987dba08990282d1fa5a83

daemon/vfio: Fix a couple of minor leaks

view details

Shawn Anastasio

commit sha 32a9d8a232c249981026539a10befb780394363d

library: Add _data_ready and _buffer_space, and start _wait Implement _data_ready and _buffer_space as simple wrappers for internal ringbuf functions. In addition to those, this commit adds initial support for vchan state management. When a client vchan is connected, it will send a dummy byte to indicate to the server that a connection has been established. The server will check for this bit and set an internal flag to indicate that the client has connected. Before the client has connected, all server vchan operations will block. Once a way to determine vchan close has been implemented, libvchan_wait can be implemented.

view details

Shawn Anastasio

commit sha 933758067ceb38ad78b1f59df82d8ad613a1993b

Makefile: add install target and pkg-config file

view details

Shawn Anastasio

commit sha 536a9f51d9c8af7d83b6f95defa36d30d8efbfa5

ringbuf: Clear out eventfd on block_{read,write} success This prevents a situation in which a read/write operation succeeds but the corresponding eventfd is still on.

view details

push time in 2 months

startedrandy408/libspng

started time in 2 months

push eventshawnanastasio/libkvmchan

Shawn Anastasio

commit sha 6eb522e5f12fa81b94608dfa6b33ceca6f2c7935

daemon: fix typo in vchan_close Causes wrong ivpositions and client dom to be passed to ivshmem cleanup routine.

view details

Shawn Anastasio

commit sha a7d93b53cf069e6d018d549ea21b7b1366e77cd3

daemon: cleanup various build warnings

view details

Shawn Anastasio

commit sha c48d5476a7fee3d26e2b6af9730808cf9ef05337

library: Prevent erroneous daemon connections Previously the connect_to_daemon function did not set the STATE_FLAG_CONNECTED flag, which resulted in most library calls re-connecting to the daemon erroneously.

view details

Shawn Anastasio

commit sha cd382fddf5857a85af450bcd0ba664ecd646f3b8

daemon: Remove unplugged ivshmem devices from ivshmem_devices vec

view details

Shawn Anastasio

commit sha 6510ec4e31d04d2a47d30a0d5407fd0a112f034b

daemon: Connect interrupt eventfds between guests. This commit adds support for connecting the same pair of eventfds between VMs, which allows interrupts to work between guests. Previous behavior only allowed host<->guest vchans to use interrupts.

view details

push time in 2 months

starteddaveshah1/nextpnr-xilinx

started time in 2 months

startednicman23/dkms-hid-nintendo

started time in 2 months

push eventshawnanastasio/libkvmchan

Shawn Anastasio

commit sha 7acb107a63b9201fd10d5891667e35f43b1baf0f

WIP: Update README to reflect current project architecture

view details

push time in 2 months

issue commentQubesOS/qubes-issues

Port Qubes to ppc64 [2 bitcoin bounty]

A quick update.

With https://github.com/shawnanastasio/libkvmchan/commit/dd4917c3eb1babce633a4b07f18581838b0312a3, the libvchan API is fully implemented in libkvmchan! I have tested open, close, packet read/write, and stream read/write in a small demo program and everything seems good so far.

Next, I'll write a qubes-core-vchan-kvm wrapper and attempt to use it with qubes utilities.

Rspigler

comment created time in 2 months

push eventshawnanastasio/libkvmchan

Shawn Anastasio

commit sha dd4917c3eb1babce633a4b07f18581838b0312a3

Add support for closing vchans This commit introduces support for closing previously created vchans. When a client exits or calls libkvmchan_close(), a message will be sent to the host daemon to remove the ivshmem devices from both ends of the vchan, and all vchan-specific resources will be deallocated.

view details

push time in 2 months

push eventshawnanastasio/libkvmchan

Shawn Anastasio

commit sha 2263231fe52e5134c43c79e924bcef0adb45745a

Fix fd leak in ivshmem epoll loop, fixes #10

view details

push time in 3 months

issue closedshawnanastasio/libkvmchan

fd leak in ivshmem epoll loop error path

https://github.com/shawnanastasio/libkvmchan/blob/fdeeebdb653c403a2aee3234863b9c9da903eda9/daemon/ivshmem.c#L780

closed time in 3 months

shawnanastasio

issue closedshawnanastasio/libkvmchan

Implement stream-based communication

A requirement for full Qubes API compatibility. This will involve creation of public interfaces for determining ringbuf size and available space, as well as POSIX read/write-like semantics wherein operations can partially succeed and return the number of bytes that succeeded.

closed time in 3 months

shawnanastasio

issue commentshawnanastasio/libkvmchan

Implement stream-based communication

Implemented by ed68cc2da5a16de92ffc509c155b0a4099d51608

shawnanastasio

comment created time in 3 months

push eventshawnanastasio/libkvmchan

Shawn Anastasio

commit sha ed68cc2da5a16de92ffc509c155b0a4099d51608

Implement library wrappers for open/read/write operations The libkvmchan.so library now implements wrappers for all of kvmchand's supported client operations, which includes most of the libvchan API. The ringbuf implementation was amended to support both streaming and packet-based modes of communication, as required by libvchan. A simple demo, test_library.c, was introduced to demonstrate all functionality currently exposed by libkvmchan.so. Notably missing is the ability to close vchans. This will require changes to kvmchand to allow detaching ivshmem devices and deallocating their resources.

view details

push time in 3 months

startedm-labs/nmigen

started time in 3 months

startedRobertBaruch/nmigen-tutorial

started time in 3 months

issue commentQubesOS/qubes-issues

Port Qubes to ppc64 [2 bitcoin bounty]

I agree. While I applaud efforts to take on a Xen port, I think that KVM is the most viable option at this point.

On that note, I will continue to work on libkvmchan, though development has slowed greatly recently due to a lack of time on my part. I'll provide updates here when I am able to make more progress.

Rspigler

comment created time in 3 months

startedZubairLK/ci20_other_files

started time in 3 months

startedlitex-hub/linux-on-litex-vexriscv

started time in 3 months

startedolofk/serv

started time in 3 months

push eventshawnanastasio/chromium_power

Shawn Anastasio

commit sha 146c60db1ac158ccb6397e3e74f7381b21a638c4

Rebase on chromium ea898299255555de2883e41fe92885c902354833 Some additional patches to hack around build system madness were required.

view details

push time in 3 months

startedlibopencm3/libopencm3

started time in 3 months

startedenjoy-digital/litedram

started time in 3 months

more