Skip to content

Instantly share code, notes, and snippets.

View jlevon's full-sized avatar

John Levon jlevon

View GitHub Profile
@jlevon
jlevon / gist:6b5c6e9f19345d1617debd12f928afb4
Last active January 22, 2018 19:44
PCID implementation
We'll have two main PCIDs: 0 (kernel) and 1 (user).
Brief summary of PCID
---------------------
PCID is enabled by %cr4.PCIDE. It's available in at least Sandy Bridge, but INVPCID came later: Haswell I think.
PCID lives is in the MMU_PAGEMASK bits of %cr3. A zero PCID is also used when %cr4.PCIDE is 0.
With a non-zero PCID in %cr3, TLB entries are tagged with the PCID, and only TLB entries matching the current PCID are used.
@jlevon
jlevon / gist:91a7edd640770dd74e6398055ceeddb3
Last active February 22, 2018 15:58
DEBUG unixbench results for KPTI bits

Results from "./Run syscall" from unixbench

DEBUG bits, current PCID gate, !kpti, !pcid

   BYTE UNIX Benchmarks (Version 5.1.3)

   System: lava: SmartOS 20180212T132812Z x86_64
   OS: SunOS -- 5.11 -- joyent_20180212T132812Z
   Machine: i86pc (i86pc)
@jlevon
jlevon / gist:7e4b0a030636739cb1daab7d102d312a
Last active February 22, 2018 16:19
non-DEBUG KPTI results for unixbench ./Run syscall

KPTI, no PCID


   BYTE UNIX Benchmarks (Version 5.1.3)

   System: lava: SmartOS 20180212T132812Z x86_64
   OS: SunOS -- 5.11 -- joyent_20180212T132812Z
   Machine: i86pc (i86pc)
   Language:  (charmap=, collate=)
@jlevon
jlevon / centos-kernel.md
Created March 12, 2018 10:35
Compiling CentOS 7 kernel RPM
yum -y groupinstall "Development Tools" 
yum -y install ncurses-devel  hmaccalc zlib-devel binutils-devel elfutils-libelf-devel  qt-devel
yum -y install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto 
yum -y install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel
yum -y install ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel java-devel bc
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
rpm -i http://vault.centos.org/7.4.1708/updates/Source/SPackages/kernel-3.10.0-693.21.1.el7.src.rpm 2>&1 | grep -v exist
cd ~/rpmbuild/SPECS
# zonecfg -z f0ee0a53-d48a-cad2-f624-c2dfef70c092 info device
device:
	match: /dev/zvol/rdsk/zones/f0ee0a53-d48a-cad2-f624-c2dfef70c092/disk0
	property: (name=boot,value="true")
	property: (name=model,value="virtio")
	property: (name=media,value="disk")
	property: (name=image-size,value="10240")
	property: (name=image-uuid,value="462d1d03-8457-e134-a408-cf9ea2b9be96")
device:
# pptadm list -?
Usage:
pptadm list [ -j ]
pptadm list [-ap] [-o fields]
# pptadm list -a -j
{
        "devices": [
                {"dev":"/dev/ppt0","path":"/pci@0,0/pci8086,6f0a@3,2/pci15d9,1528@0,1","vendor-id":"8086","device-id":"1528","subsystem-vendor-id":"15d9","subsystem-id":"1528","revision-id":"1","label":"Intel Corporation Ethernet Controller 10-Gigabit X540-AT2"},
                {"path":"/pci@0,0/pci8086,7270@1d","vendor-id":"8086","device-id":"8d26","subsystem-vendor-id":"8086","subsystem-id":"7270","revision-id":"5","label":"Intel Corporation C610/X99 series chipset USB Enhanced Host Controller #1"}
diff --git a/manifest b/manifest
index 24dec079c9..d1af0be4b1 100644
--- a/manifest
+++ b/manifest
@@ -10011,7 +10011,11 @@ f usr/lib/smbsrv/dtrace/smbnode.d 0555 root bin
f usr/lib/smbsrv/dtrace/smbsrv.d 0555 root bin
f usr/lib/smbsrv/dtrace/smbvfs.d 0555 root bin
f usr/lib/smbsrv/libmlsvc.so.1 0755 root bin
+s usr/lib/smbsrv/libmlsvc.so=libmlsvc.so.1
+f usr/lib/smbsrv/libsmb.so.1 0755 root bin
@jlevon
jlevon / cpu-pinning.md
Last active May 2, 2018 14:41
CPU pinning results

Basic set up

[root@lava ~]# prtdiag | head
System Configuration: Supermicro SSG-2028R-ACR24L

[root@volcano ~]# prtdiag | head
System Configuraton: Dell Inc. Joyent-Compute-Platform-3302
]] && [[ ${COMP_WORDS[COMP_CWORD-2]} == "vmadm" ]]; then
vms_uuids=$(zoneadm list -cp | grep -v ':global:' | cut -d':' -f5 | \
sort | uniq)
vms_aliases=$(vmadm list -Ho alias | sort -u)
gen=$(compgen -W "${vms_aliases}" -- ${cur})
if [ "$(echo $gen | wc -w)" -eq 1 ]; then
COMPREPLY=$(vmadm list -Ho uuid alias=$gen)
else
COMPREPLY=( $(compgen -W "${vms_uuids} ${vms_aliases}" -- ${cur}) )
[root@lava ~]# zonecfg -z $b2 info rctl name=zone.cpu-shares
rctl:
name: zone.cpu-shares
value: (priv=privileged,limit=200,action=none)
[root@lava ~]# zonecfg -z $b6 info rctl name=zone.cpu-shares
rctl:
name: zone.cpu-shares
value: (priv=privileged,limit=100,action=none)
mpstat -a: