-
sommerfeld
first step of course is to configure all the relevant ethernet switches to do jumboframes. (one of these days I'll try that at home..)
-
hadfl
don't try this at home xD
-
nomad
Thankfully in this case I only have one relevant switch. :)
-
nomad
but ... but... that's where I tried it!
-
sommerfeld
was part of a successful but very constrained jumbo(ish)frames deployment at a past employer. we ended up picking 4K+headers as the MTU rather than anything larger due to some odd hardware constraints on the rx side..
-
sommerfeld
(let's just say it was an exception to jbk's "cards support this just fine" assertion above)
-
jbk
i meant i40e specifically
-
jbk
(and that it can handle a packet being split across multiple DMA descriptors for both TX and RX)
-
paulf
Does illumos have any system calls like FreeBSD posix_fallocate that do _not_ set the carry flag when there is an error?
-
jclulow
paulf: I don't know that we make any promises one way or the other about that?
-
paulf
I just fixed a bug in Valgrind on FreeBSD where I was using SET_STATUS_Failure() in the posix_fallocate and posix_fadvise syscall wrappers if the fd is invalid.
-
paulf
That was wrong as it will cause the carry bit to be set. The libc wrapper will then return -1 and set errno. These 2 syscalls don't use the carty flag so the retrun value is either 0 for OK or an error code, errno not set.
-
paulf
I'd like to check if there are any similar syscalls on illumos.
-
jclulow
It seems like our posix_fallocate() also returns an errno rather than setting errno
-
jclulow
Which makes sense I guess as it's a POSIX thing
-
paulf
Probably but I don't think that posix_fallocate is a syscall on illumos, and the return code is handled by libc
-
jclulow
Yes
-
jclulow
We don't really make any promises about actual system calls
-
paulf
Sure, but in Valgrind we need to work at the syscall level a lot
-
jclulow
I guess I would look at usr/src/uts/common/os/sysent.c and usr/src/uts/i86pc/ml/syscall_asm_amd64.S in the kernel and usr/src/lib/libc/amd64/sys/syscall.S for the usermode bit
-
jclulow
There is also usr/src/lib/libc/amd64/inc/SYS.h which mentions the carry bit around SYSCERROR
-
jclulow
It does seem like there are some SYSCALL_NOERROR* macros for a handful of system calls
-
jclulow
e.g., lib/libc/common/sys/getuid.S etc
-
jclulow
paulf: Hopefully that helps! I have to get to bed
-
paulf
thanks for the pointers, I'll have a poke around the source
-
jbk
hrm.. it would be helpful to have versions of pci_{put,get}{b,w,l}_func that use MMIO (the pci_cfgacc_acc does, but not those on x86)...
-
jbk
(I'm wondering if it'd make sense to use the ones from oxide -- seems like they might work better than just dereferencing a pointer
-
jbk
maybe with a tunable escape hatch to fallback to io space
-
jbk
since we do use mmio for the pci_cfgacc_acc calls (unless io space is specifially requested), so I'm thinking it's probably low risk since we're already doing it at least some of the time (when supported)
-
rmustacc
jbk: I wouldn't add a new version of them. Just let the impl fallback to it.
-
rmustacc
That's what we did on the Oxide arch, fwiw.
-
rmustacc
I don't think we really need a tunable here.
-
rmustacc
My intent was at some point to basically just change things to prefer it like we do and then when it's not there, use the existing mechanism.
-
jbk
-
rmustacc
We don't fallback on Oxide becuse we don't support anything pre-Zen.
-
jbk
oh you meant, if mcfg is there, just mmio and don't fallback?
-
rmustacc
I just meant that i86pc I imagined we would want to add a new mechanism and not have new top-level functions.
-
rmustacc
But it's been a few years since I wrote that code, so I don't have as clear a picture any more.
-
jbk
yeah, i meant new implemetations to plug into those function pointers