Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Intel 82571GB Gigabit Controller Support #34

Closed
pkazmier opened this issue Jan 11, 2013 · 22 comments
Closed

Intel 82571GB Gigabit Controller Support #34

pkazmier opened this issue Jan 11, 2013 · 22 comments

Comments

@pkazmier
Copy link
Contributor

Support the Intel 82571GB Gigabit Controller.

My new NIC arrives today I believe. It may take me a little time to figure this out as I'm really starting behind the eight-ball, but I'm excited to hack around!

  • No LUA experience
  • No hardware experience
  • No device driver experience
  • Intimidation by 490 page Intel document
  • Still going through snabbswitch code (completed full review of memory, moving on the pci, and then intel).

Here is my development environment (KVM box and home networking setup):

https://www.evernote.com/shard/s167/sh/bf598a18-dd86-46cb-9469-24b893763749/234c1f88e7527253c47f164e00cae259

I guess I'll have to figure out how to expose the new NIC directly to the guest as well.

@pkazmier
Copy link
Contributor Author

I added more detail to my development environment and home network setup in case anyone cares :-)

@lukego
Copy link
Member

lukego commented Jan 12, 2013

Cool :-)

The first step is probably to recognize your card by its PCI vendor/device id numbers (pci.lua). Then if you are really lucky it might just work. Otherwise you will need to find out what significant differences there are between your controller and the supported one. The Intel 'igb' driver in Linux is one place to look for this information and the data sheets should be good for reference. You can also use 'ethtool -d' to get a register dump from the card when the OS driver is controlling it to compare values. And of course feedback from github issues is always at the ready :-)

Driver hacking is interesting. You could be lucky and the card works really quickly. Or you could spend a really long time banging your head against what turns out to be a maddeningly obvious problem. I spent about a month banging my head against making DMA work on the ethernet chip before finally realizing it was turned off at the PCI level :).

@lukego
Copy link
Member

lukego commented Jan 12, 2013

btw one thing that strikes me about the output you get from snabbswitch is that it's so much "-" in the table. I had expected it would recognise you have a NIC called e.g. "eth0" even if this isn't usable by the switch. Could be that the code in pci.lua for scanning /sys/bus/pci/devices/* isn't working as expected on your machine. (Have I overestimated how widely supported that sysfs directory is, for example?)

@pkazmier
Copy link
Contributor Author

I thought it was odd as well. It seems the virtio network interface in my guest does not include a net directory in /sys/bus/pci/devices/.../, which means the interface is nil in the table returned by device_info(). Here is some more output from my system:

kaz@monad:/sys/bus/pci/devices/0000:00:03.0$ lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:05.0 RAM memory: Red Hat, Inc Virtio memory balloon

kaz@monad:/sys/bus/pci/devices/0000:00:03.0$ lspci -v -s 00:03.0
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
        Subsystem: Red Hat, Inc Device 0001
        Physical Slot: 3
        Flags: bus master, fast devsel, latency 0, IRQ 10
        I/O ports at c060 [size=32]
        Memory at febf1000 (32-bit, non-prefetchable) [size=4K]
        Expansion ROM at febe0000 [disabled] [size=64K]
        Capabilities: <access denied>
        Kernel driver in use: virtio-pci

kaz@monad:/sys/bus/pci/devices/0000:00:03.0$ ls /sys/bus/pci/devices/0000\:00\:03.0
broken_parity_status      device         firmware_node  modalias   remove     resource1         subsystem_vendor
class                     dma_mask_bits  irq            msi_bus    rescan     rom               uevent
config                    driver         local_cpulist  numa_node  resource   subsystem         vendor
consistent_dma_mask_bits  enable         local_cpus     power      resource0  subsystem_device  virtio0
kaz@monad:/sys/bus/pci/devices/0000:00:03.0$ 

@pkazmier
Copy link
Contributor Author

Moving onwards ... my new NIC arrived and has been installed!

Unfortunately, I'm unable to pass the NIC directly through to my guests because I have a Gigibyte motherboard that does not support VT-d (at least according to what I've gathered from the KVM and Xen pages). Instead, I'll simply run snabbswitch on my KVM host directly. On a side note, I was under the impression that the snabbswitch binary was to be all inclusive based on your firmware blog post, but it would not run by itself as it was missing dependencies, so I just ended up rsync'ing my whole snabbswitch directory to the host (not a big deal).

The Intel ports are eth2 and eth3 on my system. Before running the test, I prepared and validated my capture environment for troubleshooting. With eth2 bound, configured, and up on my KVM host, I connected the port to my Apple Airport (wifi hub), fired up Wireshark on my iMac's wireless NIC, and configured Wireshark with a capture filter for frames from eth2. I confirmed that I was able to see traffic from the NIC.

With the test environment ready, I modified the device ID in pci.lua to 0x105e and let her rip. Here is what I saw (spoiler, not much, but that just means I'll have something to hack around with so that's actually good news!)

root@world:/home/kaz/src/snabbswitch# src/snabbswitch 
selftest: memory
Kernel HugeTLB pages (/proc/sys/vm/nr_hugepages): 0
  Allocating a 2MB HugeTLB: Got 2MB at 0x02000000
  Allocating a 2MB HugeTLB: Got 2MB at 0x02200000
  Allocating a 2MB HugeTLB: Got 2MB at 0x01c00000
  Allocating a 2MB HugeTLB: Got 2MB at 0x36800000
Kernel HugeTLB pages (/proc/sys/vm/nr_hugepages): 4
HugeTLB page allocation OK.
selftest: pci
Scanning PCI devices:
pciaddr         vendor  device  iface   status
0000:00:00.0    0x8086  0x2e30  -       -
0000:00:01.0    0x8086  0x2e31  -       -
0000:00:02.0    0x8086  0x2e32  -       -
0000:00:1b.0    0x8086  0x27d8  -       -
0000:00:1c.0    0x8086  0x27d0  -       -
0000:00:1c.1    0x8086  0x27d2  -       -
0000:00:1d.0    0x8086  0x27c8  -       -
0000:00:1d.1    0x8086  0x27c9  -       -
0000:00:1d.2    0x8086  0x27ca  -       -
0000:00:1d.3    0x8086  0x27cb  -       -
0000:00:1d.7    0x8086  0x27cc  -       -
0000:00:1e.0    0x8086  0x244e  -       -
0000:00:1f.0    0x8086  0x27b8  -       -
0000:00:1f.2    0x8086  0x27c0  -       -
0000:00:1f.3    0x8086  0x27da  -       -
0000:01:00.0    0x8086  0x105e  -       -
0000:01:00.1    0x8086  0x105e  eth3    down
0000:02:00.0    0x10ec  0x8168  eth0    up
0000:03:00.0    0x10ec  0x8168  eth1    up
Suitable devices: 
  0000:01:00.0
  0000:01:00.1
selftest: intel device 0000:01:00.0
NIC transmit test
intel selftest: pciaddr=0000:01:00.0 secs=1
Waiting for linkup.............. ok
Generating traffic for 1 second(s)...
^C
root@world:/home/kaz/src/snabbswitch# 

Nothing was emitted from the card according to my Wireshark captures, which means my next steps are to review intel.lua and the Intel documentation for the 82571 card. Here is a link if anyone is looking for it: http://developer.intel.com/content/dam/www/public/us/en/documents/manuals/pcie-gbe-controllers-open-source-manual.pdf. That documentation is all foreign to me, so this should be interesting!

The wife is calling ... time to go for now ...

@pkazmier
Copy link
Contributor Author

For future reference, here is the output of ethtool for the NIC in question:

# ethtool -d eth2
MAC Registers
-------------
0x00000: CTRL (Device control register)  0x000C0241
      Endian mode (buffers):             little
      Link reset:                        normal
      Set link up:                       1
      Invert Loss-Of-Signal:             no
      Receive flow control:              disabled
      Transmit flow control:             disabled
      VLAN mode:                         disabled
      Auto speed detect:                 disabled
      Speed select:                      1000Mb/s
      Force speed:                       no
      Force duplex:                      no
0x00008: STATUS (Device status register) 0x00080380
      Duplex:                            half
      Link up:                           no link config
      TBI mode:                          disabled
      Link speed:                        1000Mb/s
      Bus type:                          PCI Express
      Port number:                       0
0x00100: RCTL (Receive control register) 0x00000000
      Receiver:                          disabled
      Store bad packets:                 disabled
      Unicast promiscuous:               disabled
      Multicast promiscuous:             disabled
      Long packet:                       disabled
      Descriptor minimum threshold size: 1/2
      Broadcast accept mode:             ignore
      VLAN filter:                       disabled
      Canonical form indicator:          disabled
      Discard pause frames:              filtered
      Pass MAC control frames:           don't pass
      Receive buffer size:               2048
0x02808: RDLEN (Receive desc length)     0x00000000
0x02810: RDH   (Receive desc head)       0x00000000
0x02818: RDT   (Receive desc tail)       0x00000000
0x02820: RDTR  (Receive delay timer)     0x00000000
0x00400: TCTL (Transmit ctrl register)   0x30000008
      Transmitter:                       disabled
      Pad short packets:                 enabled
      Software XOFF Transmission:        disabled
      Re-transmit on late collision:     disabled
0x03808: TDLEN (Transmit desc length)    0x00000000
0x03810: TDH   (Transmit desc head)      0x00000000
0x03818: TDT   (Transmit desc tail)      0x00000000
0x03820: TIDV  (Transmit delay timer)    0x00000000
PHY type:                                unknown
root@world:/home/kaz/src/snabbswitch# 

@pkazmier
Copy link
Contributor Author

Quick question: I noticed phy_lock() and phy_unlock() functions, but they are never used. Are they supposed to be?

@lukego
Copy link
Member

lukego commented Jan 13, 2013

Yes, phy_read() and phy_write() should really be using them.

On 13 January 2013 09:03, pkazmier notifications@github.com wrote:

Quick question: I noticed phy_lock() and phy_unlock() functions, but they
are never used. Are they supposed to be?


Reply to this email directly or view it on GitHubhttps://github.com//issues/34#issuecomment-12190840.

@lukego
Copy link
Member

lukego commented Jan 13, 2013

Pete you have these user accounts now to access the existing test lab for reference:

ssh -p 54322 pkazmier@arbon.snabb.co # development KVM instance
ssh pkazmier@bern.snabb.co # has eth1 cabled to the development instance, can be useful for tcpdump etc
password "snabbswitch" but please change that (not that these machines are sensitive in any way).
also when you run snabbswitch please do it like this:

flock -x /tmp/snabb.lock ./snabbswitch ...

to avoid colliding with me and Rahul on the same machine :)

@pkazmier
Copy link
Contributor Author

Thanks and will do. Password changed. Time for me to go to bed (2:30am here in Dallas, TX).

On Jan 13, 2013, at 2:13 AM, Luke Gorrie notifications@github.com wrote:

Pete you have these user accounts now to access the existing test lab for reference:

ssh -p 54322 pkazmier@arbon.snabb.co # development KVM instance
ssh pkazmier@bern.snabb.co # has eth1 cabled to the development instance, can be useful for tcpdump etc
password "snabbswitch" but please change that (not that these machines are sensitive in any way).
also when you run snabbswitch please do it like this:

flock -x /tmp/snabb.lock ./snabbswitch ...

to avoid colliding with me and Rahul on the same machine :)


Reply to this email directly or view it on GitHub.

@lukego
Copy link
Member

lukego commented Jan 13, 2013

Good stuff!

I created issue #37 for the static linking problem, good catch.

Time to go snowboarding here.. 9:30am in Grindelwald, Switzerland.

@lukego
Copy link
Member

lukego commented Jan 14, 2013

Pete, regarding PCIe setup for DMA, the key thing to check is that "lspci -v" shows 'bus master' in 'Flags'. That's what the PCIe config setup code is there to ensure.

It would sure be handy if ^C would generate a Lua backtrace eh!

@pkazmier pkazmier reopened this Jan 14, 2013
@pkazmier
Copy link
Contributor Author

Sorry ... pressed the wrong button! I'm with rahul ... where was my "are you sure you want to close this issue?" prompt.

@pkazmier
Copy link
Contributor Author

Re: PCIe setup for DMA, I'm all set now. I was confused before. I do see the flag being set correctly for mastering and it is confirmed with lspci -v.

I'm slowly making my way through code and documentation. I discovered that I'll need to use SWSM.SWESMBI to lock PHY instead of using EXTCNF_CTRL.MDIO like you do for the 82574. I also believe the PHY RESET process is also different for my board than yours according to the documentation I have, so I was going to fix that next.

Fun stuff when your driving blind!

lukego added a commit that referenced this issue Jan 16, 2013
DMA memory is now sliced out from a "chunk" of available memory.

Chunks can either be supplied by physical address with:
  memory.install(address, size)
or else they are automatically allocated by mmap()ing HugeTLB pages as needed.

So if you want to do the "old style" way of giving DMA memory to
snabbswitch then you can do this:

  Boot Linux with memmap=16M$0x10000000
  Extend e.g. selftest.lua with: memory.install(0x10000000, 16*1024*1024)

and then the first 16MB of allocations will be sliced out of this
memory without allocating a huge page.

This hopefully helps @pkazmier with issue #34. See also issue #39.
@lukego
Copy link
Member

lukego commented Jan 17, 2013

Howdy Pete!

I need a distraction from fighting the kernel on memory access and HugeTLBs. Is there something useful I can do to assist on the 82571GB? (do you have a dump_status() that I could stare at with you for example?)

@pkazmier
Copy link
Contributor Author

Hi Luke,

Sorry, haven't had much time to do any coding (full-time job, wife, exercise), but tomorrow morning before work I hope to see if I can force link to go down on my card to validate that snabb is talking to the hardware (plus I can visually see the port). As you can see below, after the "Waiting for linkup....." message, I added a print_status and it shows the link is down. Clearly, one of them is incorrect, so that's where I was going to start. During my lunch time tomorrow, I'll also hack around as well (I'm working from home tomorrow so I have Internet access - at work it's blocked). Here is the dump you wanted to see. I added the print_status before the test loop and after it. Plus, I still get that weird stack trace on every run at the end. If you want an account on the box, I can set one up for you, but we just have to keep in mind it's the KVM host unfortunately that feeds my apartment network connectivity.

root@world:/home/kaz# ./snabbswitch 
selftest: memory
Kernel HugeTLB pages (/proc/sys/vm/nr_hugepages): 8
  Allocating a 2MB HugeTLB: Got 2MB at 0x10000000
  Allocating a 2MB HugeTLB: Got 2MB at 0x10200000
  Allocating a 2MB HugeTLB: Got 2MB at 0x10400000
  Allocating a 2MB HugeTLB: Got 2MB at 0x10600000
Kernel HugeTLB pages (/proc/sys/vm/nr_hugepages): 8
HugeTLB page allocation OK.
selftest: pci
Scanning PCI devices:
pciaddr         vendor  device  iface   status
0000:00:00.0    0x8086  0x2e30  -       -
0000:00:01.0    0x8086  0x2e31  -       -
0000:00:02.0    0x8086  0x2e32  -       -
0000:00:1b.0    0x8086  0x27d8  -       -
0000:00:1c.0    0x8086  0x27d0  -       -
0000:00:1c.1    0x8086  0x27d2  -       -
0000:00:1d.0    0x8086  0x27c8  -       -
0000:00:1d.1    0x8086  0x27c9  -       -
0000:00:1d.2    0x8086  0x27ca  -       -
0000:00:1d.3    0x8086  0x27cb  -       -
0000:00:1d.7    0x8086  0x27cc  -       -
0000:00:1e.0    0x8086  0x244e  -       -
0000:00:1f.0    0x8086  0x27b8  -       -
0000:00:1f.2    0x8086  0x27c0  -       -
0000:00:1f.3    0x8086  0x27da  -       -
0000:01:00.0    0x8086  0x105e  -       -
0000:01:00.1    0x8086  0x105e  -       -
0000:02:00.0    0x10ec  0x8168  eth0    up
0000:03:00.0    0x10ec  0x8168  eth1    up
Suitable devices: 
  0000:01:00.0
  0000:01:00.1
selftest: intel device 0000:01:00.0
NIC transmit test
intel selftest: pciaddr=0000:01:00.0 secs=1
Waiting for linkup.............. ok
>>> DEBUG: After linkup wait, before execution of traffic
MAC status
  STATUS      = 00080381
  Full Duplex = yes
  Link Up     = no
  PHYRA       = no
  Speed       = 1000 Mb/s
Transmit status
  TCTL        = 3103f0fa
  TXDCTL      = 01410000
  TX Enable   = yes
  TDH         = 0
  TDT         = 0
  TDBAH       = 00000000
  TDBAL       = 10880000
  TDLEN       = 524288
  TARC        = 00000403
  TIPG        = 00602006
Receive status
  RCTL        = 0603803a
  RXDCTL      = 01010000
  RX Enable   = yes
  RX Loopback = no
  RDH         = 0
  RDT         = 0
  RDBAH       = 00000000
  RDBAL       = 10800000
  RDLEN       = 524288                                                                                                                  [92/1864]
  RADV        = 10
PHY status
  Autonegotiate state    = complete
  Remote fault detection = no remote fault detected
  Copper Link Status     = copper link is down
  Speed and duplex resolved = no
  Speed                  = 1000Mb/s
  Duplex                 = half-duplex
  Advertise 1000 Mb/s FD = yes
  Advertise 1000 Mb/s HD = no
  Advertise  100 Mb/s FD = yes
  Advertise  100 Mb/s HD = yes
  Advertise   10 Mb/s FD = yes
  Advertise   10 Mb/s HD = yes
  Partner   1000 Mb/s FD = yes
  Partner   1000 Mb/s HD = no
  Partner    100 Mb/s FD = yes
  Partner    100 Mb/s HD = yes
  Partner     10 Mb/s FD = yes
  Partner     10 Mb/s HD = yes
Generating traffic for 1 second(s)...
Statistics for PCI device 0000:01:00.0:
>>> DEBUG: After test, leaving selftest
MAC status
  STATUS      = 00080381
  Full Duplex = yes
  Link Up     = no
  PHYRA       = no
  Speed       = 1000 Mb/s
Transmit status
  TCTL        = 3103f0fa
  TXDCTL      = 01410000
  TX Enable   = yes
  TDH         = 214
  TDT         = 213
  TDBAH       = 00000000
  TDBAL       = 10880000
  TDLEN       = 524288
  TARC        = 00000403
  TIPG        = 00602006
Receive status
  RCTL        = 0603803a
  RXDCTL      = 01010000
  RX Enable   = yes
  RX Loopback = no
  RDH         = 0
  RDT         = 0
  RDBAH       = 00000000
  RDBAL       = 10800000
  RDLEN       = 524288
  RADV        = 10
PHY status
  Autonegotiate state    = complete
  Remote fault detection = no remote fault detected
  Copper Link Status     = copper link is down
  Speed and duplex resolved = no
  Speed                  = 1000Mb/s
  Duplex                 = half-duplex
  Advertise 1000 Mb/s FD = yes
  Advertise 1000 Mb/s HD = no
  Advertise  100 Mb/s FD = yes
  Advertise  100 Mb/s HD = yes
  Advertise   10 Mb/s FD = yes
  Advertise   10 Mb/s HD = yes
  Partner   1000 Mb/s FD = yes
  Partner   1000 Mb/s HD = no
  Partner    100 Mb/s FD = yes
  Partner    100 Mb/s HD = yes
  Partner     10 Mb/s FD = yes
  Partner     10 Mb/s HD = yes
NIC transmit+receive loopback test
intel selftest: pciaddr=0000:01:00.0 secs=1 receive=true loopback=true
Waiting for linkup............. ok
>>> DEBUG: After linkup wait, before execution of traffic
MAC status
  STATUS      = 00080381
  Full Duplex = yes
  Link Up     = no
  PHYRA       = no
  Speed       = 1000 Mb/s
Transmit status
  TCTL        = 3103f0fa
  TXDCTL      = 01410000
  TX Enable   = yes
  TDH         = 0
  TDT         = 0
  TDBAH       = 00000000
  TDBAL       = 10b80000
  TDLEN       = 524288
  TARC        = 00000403
  TIPG        = 00602006
Receive status
  RCTL        = 0603807a
  RXDCTL      = 01010000
  RX Enable   = yes
  RX Loopback = yes
  RDH         = 0
  RDT         = 0
  RDBAH       = 00000000
  RDBAL       = 10b00000
  RDLEN       = 524288
  RADV        = 10
PHY status
  Autonegotiate state    = complete
  Remote fault detection = no remote fault detected
  Copper Link Status     = copper link is down
  Speed and duplex resolved = yes
  Speed                  = 1000Mb/s
  Duplex                 = half-duplex
  Advertise 1000 Mb/s FD = yes
  Advertise 1000 Mb/s HD = no
  Advertise  100 Mb/s FD = yes
  Advertise  100 Mb/s HD = yes
  Advertise   10 Mb/s FD = yes
  Advertise   10 Mb/s HD = yes
  Partner   1000 Mb/s FD = yes
  Partner   1000 Mb/s HD = no
  Partner    100 Mb/s FD = yes
  Partner    100 Mb/s HD = yes
  Partner     10 Mb/s FD = yes
  Partner     10 Mb/s HD = yes
Generating traffic for 1 second(s)...
Statistics for PCI device 0000:01:00.0:
>>> DEBUG: After test, leaving selftest
MAC status
  STATUS      = 00080381
  Full Duplex = yes
  Link Up     = no
  PHYRA       = no
  Speed       = 1000 Mb/s
Transmit status
  TCTL        = 3103f0fa
  TXDCTL      = 01410000
  TX Enable   = yes
  TDH         = 214
  TDT         = 213
  TDBAH       = 00000000
  TDBAL       = 10b80000
  TDLEN       = 524288
  TARC        = 00000403
  TIPG        = 00602006
Receive status
  RCTL        = 0603807a
  RXDCTL      = 01010000
  RX Enable   = yes
  RX Loopback = yes
  RDH         = 0
  RDT         = 32761
  RDBAH       = 00000000
  RDBAL       = 10b00000
  RDLEN       = 524288
  RADV        = 10
PHY status
  Autonegotiate state    = complete
  Remote fault detection = no remote fault detected
  Copper Link Status     = copper link is down
  Speed and duplex resolved = yes
  Speed                  = 1000Mb/s
  Duplex                 = half-duplex
  Advertise 1000 Mb/s FD = yes
  Advertise 1000 Mb/s HD = no
  Advertise  100 Mb/s FD = yes
  Advertise  100 Mb/s HD = yes
  Advertise   10 Mb/s FD = yes
  Advertise   10 Mb/s HD = yes
  Partner   1000 Mb/s FD = yes
  Partner   1000 Mb/s HD = no
  Partner    100 Mb/s FD = yes
  Partner    100 Mb/s HD = yes
  Partner     10 Mb/s FD = yes
  Partner     10 Mb/s HD = yes
selftest: intel device 0000:01:00.1
intel.lua:261: attempt to redefine 'rx_desc' at line 2
stack traceback:
        main.lua:17: in function <main.lua:15>
        [C]: in function 'cdef'
        intel.lua:261: in function 'new'
        selftest.lua:20: in main chunk
        [C]: in function 'require'
        main.lua:11: in function <main.lua:3>
        [C]: in function 'xpcall'
        main.lua:22: in main chunk
        [C]: in function 'require'
        [string "require "main""]:1: in main chunk
root@world:/home/kaz# 

@pkazmier
Copy link
Contributor Author

Progress!! Now link up is consistent and I'm now seeing stats for the first time! Running late for work so didn't get a chance to actually look at any of this output, but thought I'd share progress.

root@world:/home/kaz# ./snabbswitch 
selftest: memory
Kernel HugeTLB pages (/proc/sys/vm/nr_hugepages): 8
  Allocating a 2MB HugeTLB: Got 2MB at 0x10000000
  Allocating a 2MB HugeTLB: Got 2MB at 0x10200000
  Allocating a 2MB HugeTLB: Got 2MB at 0x10400000
  Allocating a 2MB HugeTLB: Got 2MB at 0x10600000
Kernel HugeTLB pages (/proc/sys/vm/nr_hugepages): 8
HugeTLB page allocation OK.
selftest: pci
Scanning PCI devices:
pciaddr     vendor  device  iface   status
0000:00:00.0    0x8086  0x2e30  -   -
0000:00:01.0    0x8086  0x2e31  -   -
0000:00:02.0    0x8086  0x2e32  -   -
0000:00:1b.0    0x8086  0x27d8  -   -
0000:00:1c.0    0x8086  0x27d0  -   -
0000:00:1c.1    0x8086  0x27d2  -   -
0000:00:1d.0    0x8086  0x27c8  -   -
0000:00:1d.1    0x8086  0x27c9  -   -
0000:00:1d.2    0x8086  0x27ca  -   -
0000:00:1d.3    0x8086  0x27cb  -   -
0000:00:1d.7    0x8086  0x27cc  -   -
0000:00:1e.0    0x8086  0x244e  -   -
0000:00:1f.0    0x8086  0x27b8  -   -
0000:00:1f.2    0x8086  0x27c0  -   -
0000:00:1f.3    0x8086  0x27da  -   -
0000:01:00.0    0x8086  0x105e  -   -
0000:01:00.1    0x8086  0x105e  -   -
0000:02:00.0    0x10ec  0x8168  eth0    up
0000:03:00.0    0x10ec  0x8168  eth1    up
Suitable devices: 
  0000:01:00.0
  0000:01:00.1
selftest: intel device 0000:01:00.0
NIC transmit test
intel selftest: pciaddr=0000:01:00.0 secs=1
Waiting for linkup.............. ok
>>> DEBUG: After linkup wait, before execution of traffic
MAC status
  STATUS      = 00080383
  Full Duplex = yes
  Link Up     = yes
  PHYRA       = no
  Speed       = 1000 Mb/s
Transmit status
  TCTL        = 3103f0fa
  TXDCTL      = 01410000
  TX Enable   = yes
  TDH         = 0
  TDT         = 0
  TDBAH       = 00000000
  TDBAL       = 10880000
  TDLEN       = 524288
  TARC        = 00000403
  TIPG        = 00602006
Receive status
  RCTL        = 0603803a
  RXDCTL      = 01010000
  RX Enable   = yes
  RX Loopback = no
  RDH         = 0
  RDT         = 0
  RDBAH       = 00000000
  RDBAL       = 10800000
  RDLEN       = 524288
  RADV        = 10
PHY status
  Autonegotiate state    = complete
  Remote fault detection = no remote fault detected
  Copper Link Status     = copper link is down
  Speed and duplex resolved = no
  Speed                  = 1000Mb/s
  Duplex                 = half-duplex
  Advertise 1000 Mb/s FD = yes
  Advertise 1000 Mb/s HD = no
  Advertise  100 Mb/s FD = yes
  Advertise  100 Mb/s HD = yes
  Advertise   10 Mb/s FD = yes
  Advertise   10 Mb/s HD = yes
  Partner   1000 Mb/s FD = yes
  Partner   1000 Mb/s HD = no
  Partner    100 Mb/s FD = yes
  Partner    100 Mb/s HD = yes
  Partner     10 Mb/s FD = yes
  Partner     10 Mb/s HD = yes
Generating traffic for 1 second(s)...
Statistics for PCI device 0000:01:00.0:
                  61 PRC64      Packets Received [64 Bytes] Count
                   1 PRC511     Packets Received [256-511 Bytes] Count
                   1 PRC1023    Packets Received [512-1023 Bytes] Count
                  63 GPRC       Good Packets Received Count
                   2 BPRC       Broadcast Packets Received Count
                  61 MPRC       Multicast Packets Received Count
           1,536,393 GPTC       Good Packets Transmitted Count
               4,881 GORCL      Good Octets Received Count
          98,329,536 GOTCL      Good Octets Transmitted Count
                  63 RNBC       Receive No Buffers Count
               4,881 TORL       Total Octets Received (Low)
          98,330,816 TOTL       Total Octets Transmitted (Low)
                  63 TPR        Total Packets Received
           1,536,423 TPT        Total Packets Transmitted
           1,536,425 PTC64      Packets Transmitted [64 Bytes] Count
>>> DEBUG: After test, leaving selftest
MAC status
  STATUS      = 00080383
  Full Duplex = yes
  Link Up     = yes
  PHYRA       = no
  Speed       = 1000 Mb/s
Transmit status
  TCTL        = 3103f0fa
  TXDCTL      = 01410000
  TX Enable   = yes
  TDH         = 29760
  TDT         = 28797
  TDBAH       = 00000000
  TDBAL       = 10880000
  TDLEN       = 524288
  TARC        = 00000403
  TIPG        = 00602006
Receive status
  RCTL        = 0603803a
  RXDCTL      = 01010000
  RX Enable   = yes
  RX Loopback = no
  RDH         = 0
  RDT         = 0
  RDBAH       = 00000000
  RDBAL       = 10800000
  RDLEN       = 524288
  RADV        = 10
PHY status
  Autonegotiate state    = complete
  Remote fault detection = no remote fault detected
  Copper Link Status     = copper link is down
  Speed and duplex resolved = no
  Speed                  = 1000Mb/s
  Duplex                 = full-duplex
  Advertise 1000 Mb/s FD = yes
  Advertise 1000 Mb/s HD = no
  Advertise  100 Mb/s FD = yes
  Advertise  100 Mb/s HD = yes
  Advertise   10 Mb/s FD = yes
  Advertise   10 Mb/s HD = yes
  Partner   1000 Mb/s FD = yes
  Partner   1000 Mb/s HD = no
  Partner    100 Mb/s FD = yes
  Partner    100 Mb/s HD = yes
  Partner     10 Mb/s FD = yes
  Partner     10 Mb/s HD = yes
NIC transmit+receive loopback test
intel selftest: pciaddr=0000:01:00.0 secs=1 receive=true loopback=true
Waiting for linkup.............. ok
>>> DEBUG: After linkup wait, before execution of traffic
MAC status
  STATUS      = 00080383
  Full Duplex = yes
  Link Up     = yes
  PHYRA       = no
  Speed       = 1000 Mb/s
Transmit status
  TCTL        = 3103f0fa
  TXDCTL      = 01410000
  TX Enable   = yes
  TDH         = 0
  TDT         = 0
  TDBAH       = 00000000
  TDBAL       = 10b80000
  TDLEN       = 524288
  TARC        = 00000403
  TIPG        = 00602006
Receive status
  RCTL        = 0603807a
  RXDCTL      = 01010000
  RX Enable   = yes
  RX Loopback = yes
  RDH         = 0
  RDT         = 0
  RDBAH       = 00000000
  RDBAL       = 10b00000
  RDLEN       = 524288
  RADV        = 10
PHY status
  Autonegotiate state    = complete
  Remote fault detection = no remote fault detected
  Copper Link Status     = copper link is down
  Speed and duplex resolved = no
  Speed                  = 1000Mb/s
  Duplex                 = half-duplex
  Advertise 1000 Mb/s FD = yes
  Advertise 1000 Mb/s HD = no
  Advertise  100 Mb/s FD = yes
  Advertise  100 Mb/s HD = yes
  Advertise   10 Mb/s FD = yes
  Advertise   10 Mb/s HD = yes
  Partner   1000 Mb/s FD = yes
  Partner   1000 Mb/s HD = no
  Partner    100 Mb/s FD = yes
  Partner    100 Mb/s HD = yes
  Partner     10 Mb/s FD = yes
  Partner     10 Mb/s HD = yes
Generating traffic for 1 second(s)...
Statistics for PCI device 0000:01:00.0:
             727,122 MPC        Missed Packets Count
             799,605 PRC64      Packets Received [64 Bytes] Count
             799,613 GPRC       Good Packets Received Count
           1,526,740 GPTC       Good Packets Transmitted Count
          51,175,616 GORCL      Good Octets Received Count
          97,711,616 GOTCL      Good Octets Transmitted Count
              22,967 RNBC       Receive No Buffers Count
          97,712,640 TORL       Total Octets Received (Low)
          97,712,832 TOTL       Total Octets Transmitted (Low)
           1,526,765 TPR        Total Packets Received
           1,526,766 TPT        Total Packets Transmitted
           1,526,767 PTC64      Packets Transmitted [64 Bytes] Count
>>> DEBUG: After test, leaving selftest
MAC status
  STATUS      = 00080383
  Full Duplex = yes
  Link Up     = yes
  PHYRA       = no
  Speed       = 1000 Mb/s
Transmit status
  TCTL        = 3103f0fa
  TXDCTL      = 01410000
  TX Enable   = yes
  TDH         = 20430
  TDT         = 19283
  TDBAH       = 00000000
  TDBAL       = 10b80000
  TDLEN       = 524288
  TARC        = 00000403
  TIPG        = 00602006
Receive status
  RCTL        = 0603807a
  RXDCTL      = 01010000
  RX Enable   = yes
  RX Loopback = yes
  RDH         = 13060
  RDT         = 13060
  RDBAH       = 00000000
  RDBAL       = 10b00000
  RDLEN       = 524288
  RADV        = 10
PHY status
  Autonegotiate state    = complete
  Remote fault detection = no remote fault detected
  Copper Link Status     = copper link is down
  Speed and duplex resolved = no
  Speed                  = 1000Mb/s
  Duplex                 = half-duplex
  Advertise 1000 Mb/s FD = yes
  Advertise 1000 Mb/s HD = no
  Advertise  100 Mb/s FD = yes
  Advertise  100 Mb/s HD = yes
  Advertise   10 Mb/s FD = yes
  Advertise   10 Mb/s HD = yes
  Partner   1000 Mb/s FD = yes
  Partner   1000 Mb/s HD = no
  Partner    100 Mb/s FD = yes
  Partner    100 Mb/s HD = yes
  Partner     10 Mb/s FD = yes
  Partner     10 Mb/s HD = yes
selftest: intel device 0000:01:00.1
intel.lua:265: attempt to redefine 'rx_desc' at line 2
stack traceback:
    main.lua:17: in function <main.lua:15>
    [C]: in function 'cdef'
    intel.lua:265: in function 'new'
    selftest.lua:20: in main chunk
    [C]: in function 'require'
    main.lua:11: in function <main.lua:3>
    [C]: in function 'xpcall'
    main.lua:22: in main chunk
    [C]: in function 'require'
    [string "require "main""]:1: in main chunk

@pkazmier
Copy link
Contributor Author

Here are the changes I made thus far in case you are interested: pkazmier@19091e6

@pkazmier
Copy link
Contributor Author

Fixed the printing of duplex settings for the 82571 card. The PHY port status (17) is different on the 82571, which would result in apparently random duplex settings in the PHY section of print_status: pkazmier@c1863ff

Here is the output now (and I confirmed that I see the frames being sent on the wire via tshark)

kaz@world:~$ sudo ./snabbswitch 
selftest: memory
Kernel HugeTLB pages (/proc/sys/vm/nr_hugepages): 8
  Allocating a 2MB HugeTLB: Got 2MB at 0x10000000
  Allocating a 2MB HugeTLB: Got 2MB at 0x10200000
  Allocating a 2MB HugeTLB: Got 2MB at 0x10400000
  Allocating a 2MB HugeTLB: Got 2MB at 0x10600000
Kernel HugeTLB pages (/proc/sys/vm/nr_hugepages): 8
HugeTLB page allocation OK.
selftest: pci
Scanning PCI devices:
pciaddr     vendor  device  iface   status
0000:00:00.0    0x8086  0x2e30  -   -
0000:00:01.0    0x8086  0x2e31  -   -
0000:00:02.0    0x8086  0x2e32  -   -
0000:00:1b.0    0x8086  0x27d8  -   -
0000:00:1c.0    0x8086  0x27d0  -   -
0000:00:1c.1    0x8086  0x27d2  -   -
0000:00:1d.0    0x8086  0x27c8  -   -
0000:00:1d.1    0x8086  0x27c9  -   -
0000:00:1d.2    0x8086  0x27ca  -   -
0000:00:1d.3    0x8086  0x27cb  -   -
0000:00:1d.7    0x8086  0x27cc  -   -
0000:00:1e.0    0x8086  0x244e  -   -
0000:00:1f.0    0x8086  0x27b8  -   -
0000:00:1f.2    0x8086  0x27c0  -   -
0000:00:1f.3    0x8086  0x27da  -   -
0000:01:00.0    0x8086  0x105e  -   -
0000:01:00.1    0x8086  0x105e  eth3    up
0000:02:00.0    0x10ec  0x8168  eth0    up
0000:03:00.0    0x10ec  0x8168  eth1    up
Suitable devices: 
  0000:01:00.0
selftest: intel device 0000:01:00.0
NIC transmit test
intel selftest: pciaddr=0000:01:00.0 secs=1
Waiting for linkup............ ok
Generating traffic for 1 second(s)...
Statistics for PCI device 0000:01:00.0:
           1,531,838 GPTC       Good Packets Transmitted Count
          98,037,952 GOTCL      Good Octets Transmitted Count
          98,039,872 TOTL       Total Octets Transmitted (Low)
           1,531,877 TPT        Total Packets Transmitted
           1,531,879 PTC64      Packets Transmitted [64 Bytes] Count
>>> DEBUG: After test, leaving selftest
MAC status
  STATUS      = 00080383
  Full Duplex = yes
  Link Up     = yes
  PHYRA       = no
  Speed       = 1000 Mb/s
Transmit status
  TCTL        = 3103f0fa
  TXDCTL      = 01410000
  TX Enable   = yes
  TDH         = 25577
  TDT         = 24374
  TDBAH       = 00000000
  TDBAL       = 10880000
  TDLEN       = 524288
  TARC        = 00000403
  TIPG        = 00602006
Receive status
  RCTL        = 0603803a
  RXDCTL      = 01010000
  RX Enable   = yes
  RX Loopback = no
  RDH         = 0
  RDT         = 0
  RDBAH       = 00000000
  RDBAL       = 10800000
  RDLEN       = 524288
  RADV        = 10
PHY status
  Autonegotiate state    = complete
  Remote fault detection = no remote fault detected
  Copper Link Status     = copper link is up
  Speed                  = 1000Mb/s
  Duplex                 = full-duplex
  Advertise 1000 Mb/s FD = yes
  Advertise 1000 Mb/s HD = no
  Advertise  100 Mb/s FD = yes
  Advertise  100 Mb/s HD = yes
  Advertise   10 Mb/s FD = yes
  Advertise   10 Mb/s HD = yes
  Partner   1000 Mb/s FD = yes
  Partner   1000 Mb/s HD = no
  Partner    100 Mb/s FD = yes
  Partner    100 Mb/s HD = yes
  Partner     10 Mb/s FD = yes
  Partner     10 Mb/s HD = yes
NIC transmit+receive loopback test
intel selftest: pciaddr=0000:01:00.0 secs=1 receive=true loopback=true
Waiting for linkup............ ok
Generating traffic for 1 second(s)...
Statistics for PCI device 0000:01:00.0:
             727,161 MPC        Missed Packets Count
             799,960 PRC64      Packets Received [64 Bytes] Count
             799,969 GPRC       Good Packets Received Count
           1,527,136 GPTC       Good Packets Transmitted Count
          51,198,400 GORCL      Good Octets Received Count
          97,736,896 GOTCL      Good Octets Transmitted Count
              22,838 RNBC       Receive No Buffers Count
          97,737,920 TORL       Total Octets Received (Low)
          97,738,176 TOTL       Total Octets Transmitted (Low)
           1,527,160 TPR        Total Packets Received
           1,527,162 TPT        Total Packets Transmitted
           1,527,164 PTC64      Packets Transmitted [64 Bytes] Count
>>> DEBUG: After test, leaving selftest
MAC status
  STATUS      = 00080383
  Full Duplex = yes
  Link Up     = yes
  PHYRA       = no
  Speed       = 1000 Mb/s
Transmit status
  TCTL        = 3103f0fa
  TXDCTL      = 01410000
  TX Enable   = yes
  TDH         = 20741
  TDT         = 19671
  TDBAH       = 00000000
  TDBAL       = 10b80000
  TDLEN       = 524288
  TARC        = 00000403
  TIPG        = 00602006
Receive status
  RCTL        = 0603807a
  RXDCTL      = 01010000
  RX Enable   = yes
  RX Loopback = yes
  RDH         = 14471
  RDT         = 12709
  RDBAH       = 00000000
  RDBAL       = 10b00000
  RDLEN       = 524288
  RADV        = 10
PHY status
  Autonegotiate state    = complete
  Remote fault detection = no remote fault detected
  Copper Link Status     = copper link is up
  Speed                  = 1000Mb/s
  Duplex                 = full-duplex
  Advertise 1000 Mb/s FD = yes
  Advertise 1000 Mb/s HD = no
  Advertise  100 Mb/s FD = yes
  Advertise  100 Mb/s HD = yes
  Advertise   10 Mb/s FD = yes
  Advertise   10 Mb/s HD = yes
  Partner   1000 Mb/s FD = yes
  Partner   1000 Mb/s HD = no
  Partner    100 Mb/s FD = yes
  Partner    100 Mb/s HD = yes
  Partner     10 Mb/s FD = yes
  Partner     10 Mb/s HD = yes

@pkazmier
Copy link
Contributor Author

Figured out why I was getting that stack trace before ... it occurred when I had the other side of my NIC connected to my wifi hub. Now that I've connected the other side of the NIC to the other port on the 82571, I no longer get the crash.

Update: the stack trace was resolved with de334f3

@pkazmier
Copy link
Contributor Author

Hi Luke,

I'm looking for your guidance in terms of how you'd like me to integrate the 82571 code. If you look at the previous 6 commits on the http://github.com/pkazmier/snabbswitch/commits/iss34-intel-82571 branch, you'll find the changes I made to get the 82571 working. In summary, the changes consisted of the following:

  • PCI device ID: I had to change so a suitable device would be found.
  • PHY reads/writes: PHY reads and writes are synchronized with the PHY locking code.
  • PHY reset procedure: The procedure to reset the 82571 card is vastly different than the 82574 due to the synchronization issues associated with the multi-port card.
  • PHY status differences: The 82571 PHY status register varies slightly from the 82574. For example, the copper link status is not available in bit 3 like it is on the 82574. This resulted in a couple of changes in the way stats are printed.
  • PHY locking code: The 82571 uses different registers to obtain a PHY lock from firmware. In addition, I had to implement software locking (SWSM.SMBI) to synchronize access between drivers. Recall that this is a multi-port card, so it is possible that one port could be bound to snabbswitch and the other bound to the OS. The locking methods take an options parameter that allows one to request the type of lock desired (software, firmware, or both). By default, both locks are acquired and released. However, during the PHY reset process, there were steps that had to be executed in between the acquisition of software and firmware locks, which is why I refactored the code in this manner.

Based on the above, do you have any thoughts on how you'd like me to move forward? Did you want to create a subclass that overrides the specific methods based on PCI device ID? Did you want low tech and a bunch of if statements? Did you want a different module for the specific cards (probably not based on your prior comments)?

Any suggestions would be appreciated (no rush as work will be grueling this week).

Thanks,
Pete

ps. Here is the output from the a latest run:

root@world:/home/kaz# ./snabbswitch 
selftest: memory
Kernel HugeTLB pages (/proc/sys/vm/nr_hugepages): 12
  Allocating a 2MB HugeTLB: Got 2MB at 0x66800000
  Allocating a 2MB HugeTLB: Got 2MB at 0x63200000
  Allocating a 2MB HugeTLB: Got 2MB at 0x69e00000
  Allocating a 2MB HugeTLB: Got 2MB at 0x6d800000
Kernel HugeTLB pages (/proc/sys/vm/nr_hugepages): 12
HugeTLB page allocation OK.
selftest: pci
Scanning PCI devices:
pciaddr         vendor  device  iface   status
0000:00:00.0    0x8086  0x2e30  -       -
0000:00:01.0    0x8086  0x2e31  -       -
0000:00:02.0    0x8086  0x2e32  -       -
0000:00:1b.0    0x8086  0x27d8  -       -
0000:00:1c.0    0x8086  0x27d0  -       -
0000:00:1c.1    0x8086  0x27d2  -       -
0000:00:1d.0    0x8086  0x27c8  -       -
0000:00:1d.1    0x8086  0x27c9  -       -
0000:00:1d.2    0x8086  0x27ca  -       -
0000:00:1d.3    0x8086  0x27cb  -       -
0000:00:1d.7    0x8086  0x27cc  -       -
0000:00:1e.0    0x8086  0x244e  -       -
0000:00:1f.0    0x8086  0x27b8  -       -
0000:00:1f.2    0x8086  0x27c0  -       -
0000:00:1f.3    0x8086  0x27da  -       -
0000:01:00.0    0x8086  0x105e  -       -
0000:01:00.1    0x8086  0x105e  -       -
0000:02:00.0    0x10ec  0x8168  eth0    up
0000:03:00.0    0x10ec  0x8168  eth1    up
Suitable devices: 
  0000:01:00.0
  0000:01:00.1
selftest: intel device 0000:01:00.0
NIC transmit test
intel selftest: pciaddr=0000:01:00.0 secs=1
Waiting for linkup............ ok
Generating traffic for 1 second(s)...
Statistics for PCI device 0000:01:00.0:
           1,530,090 GPTC       Good Packets Transmitted Count
          97,926,080 GOTCL      Good Octets Transmitted Count
          97,927,168 TOTL       Total Octets Transmitted (Low)
           1,530,115 TPT        Total Packets Transmitted
           1,530,117 PTC64      Packets Transmitted [64 Bytes] Count
NIC transmit+receive loopback test
intel selftest: pciaddr=0000:01:00.0 secs=1 receive=true loopback=true
Waiting for linkup............ ok
Generating traffic for 1 second(s)...
Statistics for PCI device 0000:01:00.0:
             726,052 MPC        Missed Packets Count
             800,553 PRC64      Packets Received [64 Bytes] Count
             800,562 GPRC       Good Packets Received Count
           1,526,619 GPTC       Good Packets Transmitted Count
          51,236,416 GORCL      Good Octets Received Count
          97,703,936 GOTCL      Good Octets Transmitted Count
              22,840 RNBC       Receive No Buffers Count
          97,704,960 TORL       Total Octets Received (Low)
          97,705,216 TOTL       Total Octets Transmitted (Low)
           1,526,646 TPR        Total Packets Received
           1,526,648 TPT        Total Packets Transmitted
           1,526,649 PTC64      Packets Transmitted [64 Bytes] Count
selftest: intel device 0000:01:00.1
NIC transmit test
intel selftest: pciaddr=0000:01:00.1 secs=1
Waiting for linkup............ ok
Generating traffic for 1 second(s)...
Statistics for PCI device 0000:01:00.1:
           1,530,169 GPTC       Good Packets Transmitted Count
          97,931,136 GOTCL      Good Octets Transmitted Count
          97,932,352 TOTL       Total Octets Transmitted (Low)
           1,530,196 TPT        Total Packets Transmitted
           1,530,198 PTC64      Packets Transmitted [64 Bytes] Count
NIC transmit+receive loopback test
intel selftest: pciaddr=0000:01:00.1 secs=1 receive=true loopback=true
Waiting for linkup.......... ok
Generating traffic for 1 second(s)...
Statistics for PCI device 0000:01:00.1:
             725,515 MPC        Missed Packets Count
             800,522 PRC64      Packets Received [64 Bytes] Count
             800,531 GPRC       Good Packets Received Count
           1,526,051 GPTC       Good Packets Transmitted Count
          51,234,368 GORCL      Good Octets Received Count
          97,667,584 GOTCL      Good Octets Transmitted Count
              22,840 RNBC       Receive No Buffers Count
          97,668,608 TORL       Total Octets Received (Low)
          97,668,800 TOTL       Total Octets Transmitted (Low)
           1,526,076 TPR        Total Packets Received
           1,526,078 TPT        Total Packets Transmitted
           1,526,080 PTC64      Packets Transmitted [64 Bytes] Count

@lukego
Copy link
Member

lukego commented Jan 22, 2013

Hey awesome work! That code looks great. Cool also that Github makes it so easy to browse branches and their changes!

The best for me would be initially a single commit that adds support using low-tech if statements and then we can have a separate ongoing process of trying to find the best way to factor the code. I think there is a lot of room to experiment there e.g. PHY register array could be an object, each register could have its own C type laying out its bits as an anonymous struct, etc. I have not been fully satisfied with any of my experiments in this direction yet but I'm sure we'll find some really nice solutions over time :). (Think what a luxury of high-level tools we have compared with e.g. Thompson and Ritchie!)

@lukego lukego closed this as completed May 5, 2013
dpino pushed a commit to dpino/snabb that referenced this issue Sep 29, 2015
Added documentation on the lwaftr
lukego added a commit to lukego/snabb that referenced this issue Jul 6, 2017
Remove '*.bat' console build batchfiles
eugeneia added a commit to eugeneia/snabb that referenced this issue Jun 5, 2018
eugeneia added a commit to eugeneia/snabb that referenced this issue Jun 5, 2018
eugeneia added a commit to eugeneia/snabb that referenced this issue Sep 6, 2023
54cc2a1b4 Merge PR snabbco#260 (clear hotcounts every second) into next
4cbeb1e39 lj_trace.c: amend prev. commit, do not clear SNAPCOUNT_DONE
8f36d5183 lj_trace.c: amend prev. commit, also clear trace exit hotcounts
77df770fb lj_trace.c: clear all hotcounts every second
73323b7c6 Merge pull request snabbco#246 from lukego/fix-unsinking
59fc1b06d lj_snap.c: Fix unsinking of 64-bit pointers
65ef4f455 testsuite: Add (segfaulting) test for allocation unsinking
32b08479a Merge pull request snabbco#243 from ZirconiumX/force_gc64
7954fd345 Remove LJ_LE #define
ae45cbe4e Remove LJ_BE #define
4f3dc17e9 Re-bootstrap the VM
190356e92 Prune dead code
dcd87f025 Remove LJ_HASFFI #define
2a343ef9f Remove LJ_32 #define
41b290d44 Remove LJ_64 #define
de0c96014 Remove LJ_GC64 #define
ff23fc588 Merge pull request snabbco#241 from ZirconiumX/use_sysmalloc
b060b48c6 Remove built-in dlmalloc
7a6b899f4 Merge pull request snabbco#226 from lukego/compare_hash
c5a7d2318 Merge LuaJIT/LuaJIT#243 branch 'funny-falcon/compare_hash'
bfc3b47d4 Merge pull request snabbco#221 from lukego/basic-install-test
8a80855c4 etc/raptorjit.pc: Replace s/LuaJIT/RaptorJIT/
e96e0ecdb Merge snabbco#220 branch 'lazara5/pkgconfig' into basic-install-test
72decefa5 raptorjit.nix: Check for installation of lib/pkgconfig/raptorjit.pc
33d88ea39 raptorjit.nix: Check installation of bin/raptorjit and lib/raptorjit-5.1.so
9b13bd3c3 Added back pkg-config file
f2e3705e6 Merge pull request snabbco#218 from lukego/test-libraptorjit
78d168f95 Merge pull request snabbco#217 from lukego/dwarf-not-so
5c72a3cf9 Merge snabbco#217 branch 'dwarf-not-so' into test-libraptorjit
fcdc3c61f fixup! test-libraptorjit.nix: Added test for dynamic linking libraptorjit
2a5d6fb3f .travis.yml: Add test-libraptorjit
5be341e2c test-libraptorjit.nix: Added test for dynamic linking libraptorjit
b9d801b15 src/Makefile: Fix unwanted dynamic linkage of dwarf debug info
16930c36c Merge pull request snabbco#212 from lukego/test-capi
ae0525c0d Merge pull request snabbco#209 from lukego/c-api-linkage
5af79e149 Merge branch 'c-api-linkage' into test-capi
4e9162ff3 .travis.yml: Add test-capi
bd959e359 test-capi.nix: Add basic of C-API linkage
63d415811 src/Makefile: Add -Wl,-E to make Lua API symbols visible to linked objects
572090d8d Merge pull request snabbco#200 from lukego/commercial-support
7f812f9e2 Added PROFESSIONAL-SUPPORT.md list of service providers
61c3a36b1 Merge snabbco#195 branch 'bonidjukic/update-docs'
2d386f69c Merge pull request snabbco#197 from 0xflotus/patch-1
2528860b3 fixed Quantitative
723210655 Fix README typos
31d41be Merge pull request snabbco#193 from lukego/prepare-release-1.0
56a88b2 Prepare for RaptorJIT 1.0 with installation fixes
d44450e Merge pull request snabbco#192 from lukego/log-ctype-assert
fc0c107 Merge pull request snabbco#191 from lukego/memory-leak-protection
55e7656 lj_ctype.c: Detect bad ctypeid without failing lua_assert
3b80633 lj_state.c: Restore assertion that all memory is deallocated
a667ead Fix deallocation of T->szirmcode
2a7990a Merge pull request snabbco#189 from lukego/nix-build-options
d3c149d default.nix: Test with -DLUA_USE_ASSERT and -Werror
52e2977 Merge pull request snabbco#186 from lukego/fix-jit-traces-alloc
d09927b lj_trace.c: Fix and simplify allocation of J->trace
5d235e6 Merge pull request snabbco#184 from lukego/ctype-no-loop
3f9db9e lj_ctype.c: Detect loops in ctype_repr()
9fac632 Merge pull request snabbco#183 from lukego/szirmcode-alloc-free
9959cb1 lj_asm.c: Added comment about szirmcode moving to final GCtrace
66f9234 lj_trace_alloc: Copy T->szirmcode to new trace
4782265 Fix allocation/deallocation of T->szirmcode
9056918 Merge pull request snabbco#182 from lukego/readme-vmprofile-filename
fcf138f README.md: Correct profile names to *.vmprofile (expected by studio)
5171334 Merge pull request snabbco#179 from lukego/readme-studio
4e1405d README.md: Add quick Studio getting started intro
f29bc2a Merge pull request snabbco#178 from lukego/readme-update
4891901 README.md: revised ahead of first release
5d7d873 Merge pull request snabbco#50 from lukego/Werror
0494515 Merge pull request snabbco#177 from lukego/rebrand-printouts
d4a392a Merge branch 'master' into Werror
420fa75 Minimal rebranding from LuaJIT -> RaptorJIT
48b2be9 Merge pull request snabbco#63 from lukego/auditlog
7e74425 Merge branch 'raptorjit/master' into auditlog
53eb6ae Merge branch 'master' into auditlog
a4f36d3 Merge pull request snabbco#176 from lukego/switch-sigprof-to-sigvtalrm
d38be0e Merge pull request snabbco#175 from lukego/vmprofile-exit-exclude-function-trace
ca0abe3 reusevm: Update generated code
6b72001 Use virtual instead of profile time for vmprofile
2c5faa8 Exclude function-rooted traces from global_State->lasttrace
cd172fc lj_parse.c: Set declname for file-level code to <toplevel>
473cb19 lj_ctype.c: Avoid crash when printing unprintable ctype IDs
90a15f7 lj_ctype.c, lj_trace.c: Poll for ctypes to log on trace stop/abort
9abd48a Merge pull request snabbco#168 from lukego/declname
0a588b4 Merge branch 'declname' into auditlog
96e00a6 lj_bcwrite.c: Remove unused variable
c552236 Restore older debug info fields to their original positions
d60c595 lj_prase.c: Remove old debug noise
c8b1388 Merge branch 'declname' into auditlog
8f55c03 src/reusevm: Update generated code
01f8b4c lj_bcread.c: Remove suspicious loop
73b96a4 src/reusevm: Update generated code
74b52e6 lj_bcread.c: Remove suspicious loop
4166e7a lj_bcdump.h: Bump bytecode version number (2 -> 3)
6395811 Merge branch 'declname' into auditlog
8d9d959 Extend GCproto debug with declared function name (declname)
f58daf9 Merge pull request snabbco#163 from lukego/readme-linux
9a798d7 luajit.c: Fix argument parsing bug that made "-a" fall into "-p"
92955dc src/Makefile: Add dependency from DWARF info to generated headers
a5222e7 lj_state.c: Partial fix of assertion on shutdown
1646db3 lj_audit.log.c: Fix iteration through trace constants
fe5f37d Merge branch 'master' into auditlog
e51eaa1 lj_debuginfo.h: Add missing file declaring dwarf data
229fc15 lj_auditlog.c: Log raptorjit VM DWARF debug information to audit.log
02062e9 src/Makefile: Embed DWARF debug info as binary blob
9b5ab0a lj_dwarf.c: Add lj_ircall.h and lj_ff.h for more debug information
f62c246 fixup! lj_asm.c: Fix szirmcode values
8c8731e lj_asm.c: Fix szirmcode values
d64a769 fixup! lj_auditlog.c: Log GCtrace->irmcodesz (IR-mcode mapping)
44fbf8e lj_auditlog.c: Log GCtrace->irmcodesz (IR-mcode mapping)
1d1dc9f README.md: State more clearly that Linux is required
9fb87d1 Merge pull request snabbco#162 from lukego/nix-shell
db4b5e7 Merge pull request snabbco#160 from Igalia/remove-profiler
b93738f shell.nix: Make 'nix-shell' command work as documented
486f720 lj_auditlog.c: Log GCfunc objects referenced by IR constants
1c81d51 fixup! lj_auditlog.c, lj_ctype.c: Log named ctypes to the audit log
d0191fe lj_auditlog.c, lj_ctype.c: Log named ctypes to the audit log
10764c4 lj_auditlog.c: Log strings referenced as IR constants
b0cbca7 lj_auditlog.c: Add "nanotime" timestamp to events
d0dcc75 lj_audit.log.c: Add file size limit (default 100MB)
0158240 luajit.c: Make -a and -p argument handling more consistent
8119e5d Remove references to the profiler, -jv, -jdump, and the like
cad220d lj_trace.c, lj_auditlog.c: Log auditlog event "trace_flushall"
c6347dc lj_trace.c: Clear profiler lasttrace state on flushall()
7b57a23 lj_trace.c: Allow reuse of trace numbers after jit.flush()
9be90a3 lj_jit.h: Increase default maxtrace from 1000 to 10000
389cc39 Merge remote-tracking branch 'raptorjit/master' into auditlog
8b04cd7 Merge pull request snabbco#154 from darius/master
559113a correct spelling
7484d99 Merge pull request snabbco#153 from lukego/pull-luajit-jan2018
42bb70b lj_ir.h: Fix typo made when resolving merge conflict
a8f76e5 Merge commit '4660dbf' into pull-luajit-jan2018
1a0be2e Merge commit '58d0dde' into pull-luajit-jan2018
2ff6099 Merge commit 'ea7071d' into pull-luajit-jan2018
e3e3c80 Merge commit 'd417ded' into pull-luajit-jan2018
836ba21 Merge commit '734a3fa' into pull-luajit-jan2018
653d48a Merge commit '33082a6' into pull-luajit-jan2018
7f812ff Merge commit '99cdfbf' into pull-luajit-jan2018
1753d8b Merge commit '06cd9fc' into pull-luajit-jan2018
5a6457d Merge commit '4b17a6a' into pull-luajit-jan2018
e525ef9 Merge commit '850f8c5' into pull-luajit-jan2018
0dbdc24 Merge commit 'b4ed321' into pull-luajit-jan2018
98027c8 Merge commit '6a2d8b0' into pull-luajit-jan2018
45b5028 Merge commit 'bf12f1d' into pull-luajit-jan2018
f4fbf81 Merge commit '05fbdf5' into pull-luajit-jan2018
8afd558 Merge commit '71b7bc8' into pull-luajit-jan2018
7f41f14 Merge commit '6b08248' into pull-luajit-jan2018
844ab86 Merge commit '9634fa9' into pull-luajit-jan2018
d98e699 Merge commit 'f3d7507' into pull-luajit-jan2018
91dbe23 Merge branch 'master' into v2.1
f6c52a3 Merge branch 'master' into v2.1
97356f9 Use https for freelists.org links.
e74afb9 Merge remote-tracking branch 'raptorjit/master' into auditlog
9175f10 Merge pull request snabbco#152 from lukego/gcc
4189da6 Just use the default gcc instead of clang 4.0.0.
b8204d9 Merge pull request snabbco#144 from lukego/simplify-lineinfo
eabe1de Merge branch 'raptorjit/master' into auditlog
6999d05 Merge pull request snabbco#147 from lukego/vmprofile-oneliner
e92c500 lj_vmprofile.c: Fix bug where restarting the timer would not work
44bd7a5 Merge branch 'raptorjit/master' into auditlog
9de778c Merge pull request snabbco#150 from lukego/reoptimize-string-intern
4660dbf Merge branch 'master' into v2.1
430d9f8 Fix string.format("%c", 0).
58d0dde Fix IR_BUFPUT assembly.
fcf86b8 lj_str.c: Remove special-case string interning fastpath
b53a438 Merge pull request snabbco#149 from lukego/benchmarks-fix-awk
f66fc04 testsuite/bench: Fix awk parsing of perf output
ed21034 auditlog: Log source (lex events) as msgpack binary
9dac90f auditlog: Log source code (in chunks via lexer events)
8406438 Merge branch 'vmprofile-oneliner' into auditlog
c3b59a7 Merge branch 'raptorjit/master' into auditlog
fd0e49d Support "one-liner" usage of jit.vmprofile.open()
02d596c Merge pull request snabbco#146 from lukego/vmprofile-cmdline
7844c5f Add '-p file' command line syntax for VMProfile
b2be223 Merge pull request snabbco#145 from lukego/fix-warning-and-reusevm
1fa5375 Fix compiler warning & reusevm generated code
de0f442 fixup! auditlog: Can only be opened once now (error on second open)
541d60d auditlog: Can only be opened once now (error on second open)
864a100 Merge branch 'simplify-lineinfo' into auditlog
b5056fa lj_parse.c, lj_debug.c: Remove clever tricks in lineinfo encoding
3a5aa7d lj_trace.c: Do not reuse trace numbers after flush
0b940c5 lj_auditlog.c: Glibc memory stream workaround...
623d45f lj_auditlog.c: Remove fflush() that seems problematic
2276cd8 lj_trace.c: Fix compiler warnings
588e9c3 lj_auditlog.c: Fix compiler warning
3e2d4e4 lj_auditlog.c: Use open_memstream() instead of fmemopen()
a63b5d9 Merge branch 'master' into auditlog
8f94abb Merge pull request snabbco#142 from lukego/integrate-dec2017
b83e78d Merge snabbco#141 branch 'replace-gcref-mref' into integrate
9df1238 Merge snabbco#133 branch 'fix-alloc' into integrate
6d9b473 Merge snabbco#140 branch 'vmprofile-v4' into integrate
5cf2076 Merge snabbco#120 branch 'record-blacklisted-functions' into integrate
0a33b43 Merge snabbco#101 branch 'long-running-stable' into integrate
4fafb32 Merge snabbco#98 branch 'lukego/szirmcode' into integrate
520c6d3 Merge snabbco#86 branch 'ffi-pointer-difference-div' into integrate
5454da8 Merge snabbco#79 branch 'unused-bench-param' into integrate
34f24ae Merge snabbco#81 branch 'gctrace-origin' into integrate
7e34e72 reusevm: Update generated code
07fef11 luajit.c: Add 'raptorjit -a <path> ...' command line auditlog syntax
671d770 lib_jit.c: Add 'jit.auditlog(filename)' Lua API function
857073c lj_auditlog.c: Add lj_auditlog_open(path) API function
7b9840d Merge branch 'replace-gcref-mref' into auditlog
1587377 lj_obj.h: Redefine MRef as simple void* pointer
2f5a9a3 lj_obj.h: Redefine GCRef as simple GCobj* pointer
88cc35c reusevm: update generated code
5843c53 lj_auditlog.c: Log prototype names (GCstr)
4d8b3eb auditlog: Log all loaded bytecode (GCproto objects)
b46e33a Merge branch 'fix-alloc' (incl. master) into auditlog
43691e0 reusevm: Update generated code
ad02215 Merge branch 'raptorjit/master' into fix-alloc
14120c1 Merge pull request snabbco#127 from lukego/lineinfo-no-compress
77dabca Merge pull request snabbco#132 from lukego/jit-log-bytecodes
964585e Merge pull request snabbco#134 from lukego/flush-clear-blacklist
796597d lj_trace.c: unpatch blacklisted bytecodes when flushing traces
06b9f32 lj_state.c: Fix allocation and free of IR buffer
d371db6 lj_state.c: Fix dealloc to match
bc57ceb lj_state.c: Fix bug in allocation of IR buffer
b29101e fixup! lj_auditlog: Improve logging of trace stop/abort
238c698 lj_auditlog: Improve logging of trace stop/abort
fdf39d8 Merge branch 'jit-log-bytecodes' into auditlog
9b2b467 Minor update to jit_State bytecode log
7a4e25b Add log of recorded bytecodes (BCLogRec) to jit_State
783cf2d Merge pull request snabbco#131 from lukego/jit-state-static-tmp-buffers
16121f2 Statically allocate JIT temp buffers
862727f Merge branch 'vmprofile-interp' into auditlog
a8b0f32 lj_vmprofile.c: Add assertions with lua_assert
0823d96 lj_vmprofile.c: Fix trace number overflow (into bucket 0)
ae5c6aa vm_x64.dasc: Fixes to ensure g.lasttrace is a trace number
ef08db2 Merge VMProfile 4.0 from branch 'vmprofile-interp' into auditlog
c1659d9 VMProfile 4.0: File format revision
17b3c9c lj_bcread.c: Fix warning
7f4787a Fix bug in lj_bcread_proto()
5e673ea lj_obj.h: Fix comment about lineinfo (non)compression
c734910 Remove feature to compress GCproto.lineinfo
5a3a889 Merge branch 'vmprofile-interp' into auditlog
5cac382 lj_vmprofile.c: Fix file header initialization
ea7071d MIPS64: Fix xpcall() error case.
d417ded ARM64: Fix xpcall() error case (really).
2b89796 vmprofile 3.0 with more information
bd7266d Track last exited trace (lasttrace) in global_State
089c55a lj_obj.h: Explicitly define implicit VM states
734a3fa Merge branch 'master' into v2.1
7dbf0b0 Fix saved bytecode encapsulated in ELF objects.
33082a6 ARM64: Fix xpcall() error case.
39680ca Merge pull request snabbco#123 from lukego/no-exitstate-pcreg
b6902f8 Remove EXITSTATE_PCREG
99cdfbf MIPS64: Fix register allocation in assembly of HREF.
06cd9fc ARM64: Fix assembly of HREFK.
4b17a6a Merge branch 'master' into v2.1
9f0caad Fix FOLD rule for strength reduction of widening.
f5d810e lj_record.c: Record IFUNC/IFUNCV the same as FUNC/FUNCV
c83fd4c Merge pull request snabbco#116 from lukego/jit-tracebarrier
0be85c6 src/reusevm: update generated files
e182ae8 Add jit.tracebarrier() primitive
850f8c5 LJ_GC64: Make ASMREF_L references 64 bit.
b4ed321 LJ_GC64: Fix ir_khash for non-string GCobj.
6a2d8b0 Merge branch 'master' into v2.1
0c0e7b1 DynASM/x86: Fix potential REL_A overflow.
bf12f1d MIPS64: Hide internal function.
05fbdf5 x64/LJ_GC64: Fix type-check-only variant of SLOAD.
ce6fbb4 lj_record.c: Relax heuristic for root trace meeting JIT loop
a720595 lj_trace.c: Reset hotcount table after flush
01dc844 lj_jit.h: Increase HOTCOUNT_MAX and expand HotPenalty.val
f7212cc lj_trace.c: Clear penalty slot after successful trace
c5923d8 lj_auditlog.c: Log VM definition information
71b7bc8 PPC: Add soft-float support to JIT compiler backend.
e4a76f8 Merge snabbco#98 branch 'szirmcode' into auditlog
ad14f45 GCtrace: Make it possible to map between IR and mcode insns
d400946 Merge pull request snabbco#94 from CapsAdmin/master
fabab00 x64/LJ_GC64: Fix asm_fuseloadk64()
6b08248 x64/LJ_GC64: Fix fallback case of asm_fuseloadk64().
59a3e9f Merge pull request snabbco#90 from lukego/reusevm-toplevel
53e93f1 Merge pull request snabbco#89 from lukego/readme-redux
86f23d6 README: Re-introduce goal of minimizing non-deterministic performance
1b5c2f2 fixup! README: Added note about future platform support
cc5668b README: Added note about future platform support
bebdbac Makefile: Added reusevm target at top-level
7c2a11e fixup! README: shorten intro, move Optimization Resources down
9ab33a8 README: shorten intro, move Optimization Resources down
2bc2d95 README: Make less fuss about Intel Core
88bcf00 README.md: New introduction
9634fa9 Merge branch 'master' into v2.1
f3d7507 Use https for freelists.org links.
46f00a4 Merge pull request snabbco#88 from lukego/pull-luajit
00e983c src/reusevm: update generated files
4cd536f testsuite: Enable Lua 5.2 compat
4e945d2 lj_api.c: Fix breakage in cherry-pick of ffd2610
340f702 Merge *history only* from branch 'luajit/v2.1' commit fd37da0 into pull-luajit
c0165a6 x64/LJ_GC64: Fix emit_rma().
e2cabaf Remove unused define.
07918dc Merge branch 'master' into v2.1
a0a1983 Merge branch 'master' into v2.1
a698e89 FFI: Update docs on compiler limitations.
e091baf Add FOLD rules for mixed BAND/BOR with constants.
2f7f0a2 FFI: Compile bitfield loads/stores.
bddc781 Document added C API extensions from Lua 5.2/5.3.
ffd2610 From Lua 5.2: Add lua_tonumberx() and lua_tointegerx().
9fabcf9 From Lua 5.2: Add luaL_setmetatable().
4a307c1 From Lua 5.2: Add luaL_testudata().
9a520cb From Lua 5.3: Add lua_isyieldable().
f1264bf From Lua 5.2: Add lua_copy().
eaf262d From Lua 5.2: Add lua_version().
b28c891 Refactor with LUA_OK.
d6db005 Add some more changes and extensions from Lua 5.2.
dbe5619 Remove old Lua 5.0 compatibility defines.
e834e9c Merge branch 'master' into v2.1
de9a886 x64/LJ_GC64: Fix emit_loadk64().
5126a06 LJ_GC64: Fix BC_CALLM snapshot handling.
07f976a Remove Lua 5.0 compatibility defines.
cf655d9 lj_crecord.c: JIT pointer difference for all element sizes
48be218 Merge branch 'unique-trace-numbers' into auditlog
4b4dcb0 lj_trace.c: Make trace numbers unique (stop reusing them)
a292144 Merge branch 'vmprofile' into auditlog
4a06d4a lj_vmprofile.c: Fixed to set file magic number with C API calls
8fc672c Merge branch 'gctrace-origin' into auditlog
fcf7053 check-generated-code.nix: Add more verbosity
4aaa844 lj_jit.h: Save 'parent' and 'exitno' fields in GCtrace
5708b06 Merge pull request snabbco#80 from lukego/fix-build
300d14e reusevm: Updated generated code
d27d4d4 check-generated-code.nix: Tweak order of diff args
076d161 check-generated-code.nix: Fixed
8ec77f9 .travis.yml: Update Travis-CI config (was not testing)
d095eae raptorjit.nix: Fix executable name / broken build
f8d1c9e Merge branch 'raptorjit/master' into auditlog
eaf418c Merge pull request snabbco#77 from lukego/vmprofile
d7fd44e testsuite/bench: Remove PARAM_* for unsupported platforms
8cd8f7e vmprofile: Extend Lua API and add test cases
fd37da0 PPC: Add soft-float support to interpreter.
7e662e4 x64/LJ_GC64: Fix emit_rma().
89407be Merge snabbco#64 branch 'lukego/dwarf' into auditlog
a68c8d2 Merge pull request snabbco#37 from lukego/cleanup
8ca5612 Merge pull request snabbco#66 from lukego/vmprofile
f8bd4d8 Merge pull request snabbco#59 from lukego/nix-benchmarks
66fab90 Merge branch 'master' into nix-benchmarks
67864a9 Merge pull request snabbco#70 from lukego/split-build
c297923 Makefile: New 'reusevm' target & bootstrap-skipping method
9fe3967 .travis.yml: Include check-generated-code test
2cf9924 check-generated-code.nix: Check if in-tree VM code is stale
726cc9c raptorjit.nix: preBuild = 'make bootstrapclean'
964cbe4 Makefile: New target 'bootstrapclean' removes in-tree generated code
3ca3df8 README: Update build procedure description
196a9e2 Makefile: s/LuaJIT 2.1.0-beta2/RaptorJIT 1.0.0-alpha1/
086b4c9 Exclude generated code from .gitignore
6d7a8d2 Add VM generated code to the repository
45c2d44 Merge pull request snabbco#69 from lukego/simplify-makefile
f9d7cdd src/Makefile: Shrink by removing obsolete platform logic
65675f5 lj_vmprofile: Port & adapt revisions
24f82aa Merge branch 'lukego-luajit/vmprofile' into vmprofile
0acc230 lj_auditlog: Log the memory containing IR instructions
cf2dfaf Merge branch 'master' into v2.1
82151a4 Modify fix for warning from 'ar'.
6a71e71 Remove unused define.
b0ecc6d FreeBSD/x64: Avoid changing resource limits, if not needed.
a057a07 MIPS64: Add soft-float support to JIT compiler backend.
0e4a551 Merge branch 'master' into v2.1
c7c3c4d MIPS: Fix handling of spare long-range jump slots.
79fe578 Merge branch 'master' into v2.1
7381b62 MIPS: Use precise search for exit jump patching.
0a55469 Generate separate DWARF debug info
376fb58 lj_trace: Log trace aborts to auditlog
2dfdb73 lj_auditlog: Implement logging of trace_abort
b302c6e lj_auditlog: Add "event" object
76be283 lj_auditlog: remove redundant "size" field
5ea4b74 lj_auditlog: use msgpack format for audit log
cb132d1 Add lj_auditlog (very preliminary)
6259c0b Merge branch 'master' into v2.1
630ff31 Add missing LJ_MAX_JSLOTS check.
31afda3 Merge branch 'master' into v2.1
1c89933 Fix LJ_MAX_JSLOTS assertion in rec_check_slots().
8271c64 RELEASE LuaJIT-2.1.0-beta3
e9f8abf Update changelog.
16dc7fb Merge branch 'master' into v2.1
0bf80b0 RELEASE LuaJIT-2.0.5
ae0d438 Update changelog.
b608891 FFI: Update docs on compiler limitations.
cf8a5be Add FOLD rules for mixed BAND/BOR with constants.
fbfbd7b FFI: Compile bitfield loads/stores.
dc5eb65 Merge branch 'master' into v2.1
02b4b1e Add workaround for MSVC 2015 stdio changes.
ed54eac MIPS64: Fix stores of MULTRES.
58aaac3 MIPS64: Fix write barrier in BC_USETV.
18efb33 ARM64: Fix stores to vmstate.
cced178 Document added C API extensions from Lua 5.2/5.3.
de26f76 From Lua 5.2: Add lua_tonumberx() and lua_tointegerx().
2b8de8c From Lua 5.2: Add luaL_setmetatable().
cde968f From Lua 5.2: Add luaL_testudata().
f2e2a3f From Lua 5.3: Add lua_isyieldable().
ef23b70 From Lua 5.2: Add lua_copy().
c67a098 From Lua 5.2: Add lua_version().
9c685f7 Refactor with LUA_OK.
22dfa63 Allow building on Haiku OS.
7c7843e Merge branch 'master' into v2.1
247b362 OSX: Fix build with recent XCode.
ca49220 Merge pull request snabbco#60 from lukego/logo
7bf26e6 Add new "uplifting" RaptorJIT logo
de97b9d Add some more changes and extensions from Lua 5.2.
dc320ca Remove old Lua 5.0 compatibility defines.
c29afcb Merge branch 'master' into v2.1
e205ad0 FFI: Fix FOLD rules for int64_t comparisons.
3143b21 ARM64: Add big-endian support.
4318163 testsuite/bench: Tweaked tests to run longer
f5aa329 README.md: Add note about where benchmark visualizations go
b1b52db Fix markdown goof in README.md
7a35839 Import revamped nix benchmark framework
742104f Merge pull request snabbco#55 from lukego/slow-lea
7356708 md5 benchmark 15% speed by removing "slow LEA"
78f5f1c x64/LJ_GC64: Fix emit_loadk64().
024ade7 LJ_GC64: Fix BC_CALLM snapshot handling.
fa126c5 x64/LJ_GC64: Fix assembly of CNEWI with 64 bit constant pointer.
779a1eb ARM64: Fix Nintendo Switch build.
0cf7885 ARM64: Fix XLOAD/XSTORE with FP operand.
d54947d Merge pull request snabbco#52 from lukego/nix-update
398bd28 Cleaned up nix expressions
82487c7 Travis-CI: Update now that nix runs the test suite
c025664 nix: pin nixpkgs, pin clang 4.0, run test suite
010a99b Add 'testsuite/' from commit '96f816c5e5acbaf33af723e28fba6f4a45e05b6b'
0659092 Remove submodule for testsuite
3ec0f9c Merge pull request snabbco#49 from lukego/fix-kkptr
b1bc13b Compile with -Werror (treat warnings as errors)
fb32f91 Fix IR_KKPTR case of b1cfd27
693909f Merge pull request snabbco#47 from lukego/travis-jit-options
b1cfd27 lj_asm_x86.h: Fix CNEWI for constant pointers
9fcb036 Merge pull request snabbco#44 from lukego/rm-vm-ifdef
d286c95 Fixed typo in jit=-O1
03ad911 Travis CI: Test -O3/-O2/-O1/-joff separately
96f816c Merge branch 'lukego/branchmarks'
c8b2b1c vm_x64.dasc: Resolve +JIT +FFI -X64WIN
684f0f7 Merge pull request snabbco#43 from lukego/rm-dualnum
170c3ac vm_x64.dasc: Fix FORL type coercion
f458d9e Fix mistakes in DUALNUM removal
de5568e Remove Lua 5.0 compatibility defines.
fa02289 Remove DUALNUM mode
0632142 Merge pull request snabbco#40 from lukego/readme-optimize
5f263f2 README.md: Add software optimization links
7a75b53 Merge pull request snabbco#39 from lukego/readme8
f7122f1 README: Declared CPU & Optimization policy
85df062 Merge pull request snabbco#38 from lukego/no-unwind
d0cb401 Merge pull request snabbco#36 from lukego/rm-introspect
5660da3 README.md: Note +NO_UNWIND
8f2744a ifdef-defile: Correct spelling of LJ_NO_UNWIND
f7dc94a Define NO_UNWIND
e2e5689 Remove unused lj_vm_profhook() prototype
972fc1e lib_jit.c: Remove introspection and jit.attach()
521a874 Merge pull request snabbco#35 from lukego/rm-vmevent
df45ff5 Remove PROFILE and VMEVENT features
c40e6bf Merge pull request snabbco#33 from lukego/rm-amalg
0b4a0d2 Merge pull request snabbco#34 from lukego/rm-dotbat
eb052df Remove '*.bat' console build batchfiles
84379d3 Remove "amalg" amalgamated build"
aa188bc Merge pull request snabbco#32 from lukego/nix-comments
cd0e416 README.md: Add link to default.nix
3a523de default.nix: Commented
937375e Merge pull request snabbco#30 from lukego/readme7
a4a5720 README.md: Updated build instructions
631e214 Merge pull request snabbco#27 from lukego/testsuite-plusslow
1c74123 Merge branch 'master' into testsuite-plusslow
03875be Merge pull request snabbco#29 from lukego/nix
1124340 Travis-CI update for nix-based build.
60aa095 Specify build dependencies with nix
78f9acf Makefile: Replace minilua with luajit dependency
5726c88 Switch from gcc to clang
9fedd59 Travis-CI: Added '+slow' argument to test suite
a717eb1 Merge pull request snabbco#21 from lukego/raptorjit-testsuite
bfe7ddc Update Travis-CI to use raptorjit-testsuite
d5b9354 Add raptorjit-testsuite submodule
66b4822 Removed luajit-test-cleanup submodule
e094845 Merge pull request #1 from lukego/fix366
5ccbcfe Make test 366 pass by adding "move:" to expectation
235e82b Merge pull request snabbco#20 from lukego/readme6
28f0f6b README.md: Indulge in more pithy quotations
5af7ae7 Merge pull request snabbco#19 from lukego/dce-fastcall
ac6311d Remove definition of LJ_FASTCALL (a NOP)
ac49377 Remove all uses of LJ_FASTCALL (a NOP)
ad950cc Merge pull request #17 from lukego/readme5
0e8e997 Revised README.md
3523a63 Merge pull request #16 from lukego/copyright
d32cb90 Merge pull request #15 from lukego/contributing
43e53c7 COPYRIGHT: Update the COPYRIGHT file inherited from LuaJIT
9359d14 Added CONTRIBUTING.md
e2eb703 Merge pull request #14 from lukego/testsuite
09b2f3e Add LuaJIT test suite to Travis-CI
8796648 Add LuaJIT/LuaJIT-test-cleanup to submodules/
3ec733f Merge pull request #12 from lukego/readme4
a168dc6 README.md: Add quotes, fix benchmarks link
7aab422 Merge pull request #10 from lukego/rm-dynasm
7237ba5 Merge pull request #9 from lukego/rm-jit
e2968cc Removed dynasm modules for unsupported architectures
b270bf0 Remove jit.p, jit.v, jit.dump, disassemblers
7446725 Merge pull request #8 from lukego/readme3
7fe552f Revised README.md
33e308e Merge pull request #7 from lukego/perftest
f4c8ca6 README.md: Performance regression tests link
18225a6 Merge pull request #6 from lukego/travis
1842bc3 README.md: Added Travis-CI status badge.
0213af2 Added absolute minimum .travis.yml
2fcc0a4 Merge pull request #5 from lukego/bigbang
c2d3d70 Merge pull request #4 from lukego/conduct
4daf440 Merge pull request #3 from lukego/apache2
78a072c Merge pull request #2 from lukego/readme2
40381fa Remove unused code.
58b063b CONDUCT.md: Add simple code of conduct
3127cb0 COPYING: Switch to Apache License 2.0 for new code
827e3d6 Add ifdef-defile config for 'unifdef'
7beb3b2 Remove all architectures except x86-64.
d1c0e13 Remove LUAJIT_USE_PERFTOOLS
006018f Change wording of README
dcda227 Merge pull request #1 from lukego/luajit-v2.1
50ed432 Merge remote-tracking branch 'luajit/v2.1'
5c74044 Added initial README.md
6a66f5d Added LUAJIT_VMPROFILE: new profiler backend
fe8abc881 strings: compare hash as well
014708b Add test for BC_VARG slot revival
63a6f7e Add test for BC_KNIL slot revival under LJ_GC64
14c132e Add tests for table indexing (inspired by snabbco#221)
73139f8 Disable some tests under 5.2 compatibility
f333908 Added bench/PARAM_x86_CI.txt (CI params)
bcf938b Extend cdata_var test slightly
071f050 Exercise string concat some more
e7b029b issue #8 removing tests
7897e7f Add tests for allocation of variable-sized cdata
6fe6fbe add coroutine.lua
ad494d6 issue #8 add strings.lua and literals.lua to the execution
2faff35 issue #8 add strings.lua and literals.lua to the execution
8e20d26 Update README.md
318dedd Update README.md
9b1b6bc Merge branch 'roulette' into maintainer
a71cd6d roulette: Stop seeding the random number generator
96cfbb3 Merge branch 'roulette' into maintainer
b0a75b4 Added bench/roulette.lua
cd42900 issue #8 add dummy file to ensure directory is saved in git
3e73138 issue #8 add dummy file to ensure directory is saved in git
a1dccdb issue #8
6e2030f issue #8 add 5.2.2 tests
ef23b70 issue #8 add 5.2.2 tests
7b022d4 Merge branch 'lua-51-testsuite' of https://github.com/LuaJIT/LuaJIT-test-cleanup into lua-51-testsuite
ea00add issue #8 add 5.2.2 tests
b116313 Update README.md
45b2258 issue #8 initial attempt to get the tests running
0497c7b issue #8 initial attempt to get the tests running
a6bb93e Merge branch 'lua-51-testsuite' of https://github.com/LuaJIT/LuaJIT-test-cleanup into lua-51-testsuite
1cb6161 issue #8 initial attempt to get the tests running
e832e54 Update README.md
e6fc702 Create README.md
0dda7b2 issue #8 baseline checkin of Lua 5.1 test suite
c3224bb Exercise TSETR and TSETM slow paths.
703e9cf Skip some tests under LuaJIT 2.0
d7985d1 Modernise more ffi tests.
a82c499 Modernise some FFI tests.
9c27a59 Fix batch modifier application.
9f1451d Normalise line endings.
3e5cca7 Modernise some tests.
bcd286b Modernise more tests.
1bee68f PUC-Rio Lua compatibility.
6a7e342 Modernise misc/meta_* tests.
e002a08 Improve reporting of failing tests in --quiet mode.
f40304d Modernise string_op test.
b8bbda3 Modernise goto test.
74d256f Remove some already-modernised tests from misc.
c2da6d8 Merge pull request #7 from corsix/shakeup
488e3fb Shake things up.
634b212 Merge pull request #6 from ladc/master
581a474 Put subtests in 'test' dir
1d7aaed Moved proposed test runner and examples into 'experimental' directory.
82586b1 Improve filenames of extracted tests and error reporting in test runner
91cb29b Add workdir argument to extract() in tester module
a6e5102 Capture stderr when tests are run externally in run_single()
14bfa87 Add --runcmd='x' option to test runner
765714f Put @key: value pairs in separate attributes table in parse()
16b3293 Don't print an empty description in build_codestring() in tester module
8859058 Implement @key: value matching in parse() function of tester module
0d975fa Clean up test script (args, tag patterns)
5f331e7 Avoid string.rep in test.lua
24d2b97 Move some tests into new structure and adapt comments to test runner.
b0b3a20 Add test.lua for running and filtering tests.
af54fa1 Add verbose option to run() and run_single()
639480b Add filter() to tester module for filtering tags
a4dd1e0 Add run_single() and run() to tester module.
a4ec002 Add index() and extract() to tester module.
46e1fea Add first part of test framework: parse tests.
a273241 Initial commit

git-subtree-dir: lib/luajit
git-subtree-split: 54cc2a1b4c8ccf6e0c227e9c789947250944b322
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants