ChanServ changed the topic of #armlinux to: ARM kernel talk [Upstream kernel, find your vendor forums for questions about their kernels] | https://libera.irclog.whitequark.org/armlinux
Tokamak has quit [Ping timeout: 240 seconds]
djrscally has quit [Ping timeout: 256 seconds]
Tokamak has joined #armlinux
Tokamak has quit [Read error: Connection reset by peer]
Tokamak has joined #armlinux
System_Error has quit [Remote host closed the connection]
Tokamak_ has joined #armlinux
Tokamak has quit [Ping timeout: 256 seconds]
leoy_ has joined #armlinux
apritzel has quit [Ping timeout: 256 seconds]
leoy_ has quit [Quit: Leaving]
Pali has quit [Ping timeout: 268 seconds]
ravan has joined #armlinux
bps has joined #armlinux
bps has joined #armlinux
bps has quit [Changing host]
djrscally has joined #armlinux
guillaume_g has joined #armlinux
headless has joined #armlinux
apritzel has joined #armlinux
apritzel has quit [Ping timeout: 268 seconds]
Pali has joined #armlinux
Pali has quit [Ping timeout: 260 seconds]
bps has quit [Ping timeout: 240 seconds]
apritzel_ has joined #armlinux
audgirka has joined #armlinux
elroo has joined #armlinux
elroo has quit [Client Quit]
elroo has joined #armlinux
elroo has quit [Client Quit]
prabhakarlad has joined #armlinux
bps has joined #armlinux
bps has quit [Ping timeout: 256 seconds]
ravan has quit [Remote host closed the connection]
ravan has joined #armlinux
headless has quit [Quit: Konversation terminated!]
djrscally has quit [Quit: Konversation terminated!]
audgirka has quit [Quit: Leaving]
Tokamak_ has quit [Ping timeout: 240 seconds]
Tokamak has joined #armlinux
<ardb> marex: any idea whether the exynos emulation in QEMU works?
torez has joined #armlinux
shailangsa has quit [Ping timeout: 240 seconds]
apritzel_ is now known as apritzel
Tokamak has quit [Ping timeout: 268 seconds]
Tokamak has joined #armlinux
shailangsa_ has joined #armlinux
headless has joined #armlinux
<marex> ardb: um ... me ? wrong person I think
<marex> ardb: I don't know whether armbru is here
<ardb> marex: oops sorry
<marex> ardb: who were you looking for anyway ?
<marex> the 4210 looks like it has been unmaintained for a bit
<ardb> marek :-)
<ardb> but not you
<marex> there are many
<ardb> so it appears
<marex> heh
<Xogium> there must be a clone() function somewhere that clones marex all over the place
<marex> ardb: ah, szyprowski, look a bit further north
<marex> and I recall seeing him on irc I think
<marex> ardb: try mszyprow
<geertu> Xogium: Yeah, they cloned marex for Mission Impossible ;-)
<headless> geertu: Mission Impossible as staying at home for a year? :-)
<ardb> marex: thanks
<marex> ardb: you're welcome
<headless> marex: howdy?
Pali has joined #armlinux
guillaume_g has quit [Ping timeout: 240 seconds]
apritzel has quit [Ping timeout: 268 seconds]
<ndesaulniers> ardb + arnd : do either you have thoughts on this proposed style of change (before I finish it for the remaining functions)? https://github.com/ClangBuiltLinux/linux/issues/496#issuecomment-995253880. arnd mentioning splitting the interface in half for when the pointers were equivalent, but I don't quite follow the recommendation.
Tokamak has quit [Ping timeout: 240 seconds]
Tokamak has joined #armlinux
torez has quit [Remote host closed the connection]
Tokamak has quit [Ping timeout: 256 seconds]
Tokamak has joined #armlinux
Tokamak has quit [Client Quit]
<arnd> ndesaulniers: I'd say we don't need to worry about the two-input case of both inputs being the same ;-)
<arnd> What I was thinking is that we'd change the exported interface to actually use __restrict
<ndesaulniers> arnd: ack, I have the full patch ready, just triple checking the before+after disassembly. Worst case will just send to the patch as an RFC
<ndesaulniers> the exported interface?
<ndesaulniers> then it's on those callers to ensure there's no overlaps
<arnd> I mean the interface that drivers would use
<ndesaulniers> yeah
<arnd> looking at include/asm-generic/xor.h, it seems that this one already uses __restrict...
<ndesaulniers> arnd: huh? __restrict does not appear in include/asm-generic/xor.h
Tokamak has joined #armlinux
Tokamak has quit [Read error: Connection reset by peer]
Tokamak has joined #armlinux
apritzel has joined #armlinux
<ndesaulniers> arnd: sent you a patch, please let me know your thoughts on it
<ndesaulniers> sigh, at least GCC can let you know if you're doing something obviously stupid with __restrict https://github.com/llvm/llvm-project/issues/52824
<ndesaulniers> I'm curious about the case of partial overlap though, since **I think** __restrict means that the pointed to objects don't overlap at all, while the NEON code only requires that they don't overlap by 8 * 4B regs
<ndesaulniers> ah, `-Wrestrict` wont warn about that, so nvm my concern.
Tokamak has quit [Ping timeout: 240 seconds]
headless has quit [Quit: Konversation terminated!]
<arnd> ndesaulniers: hah, I had a patch in my tree labeled as [REVISIT] ;-)
<ndesaulniers> arnd: right, didn't you have a thread discussing such change with Linus?
<arnd> ndesaulniers: no, I think we discussed that in person the last time we had a conference in early 2020
Tokamak has joined #armlinux
<arnd> ndesaulniers: I'm trying to find all the callers at the moment, to see which ones actually overlap. These are the only files I found ^
<arnd> Unfortunately, the xor_blocks/async_xor interfaces are not easily annotated with __restrict
<ndesaulniers> arnd: well there's probably obvious overlap where the same parameter is passed twice (that `-Wrestrict` w/ gcc should report, not sure if the kernel is `-Wrestrict` clean already or not), but then non-obvious cases where at runtime two different variables slightly overlap by 32B; that's the case I'm worried about. It might not ever actually happen. Also, ardb suggested using arch/arm64/lib/xor-neon.c which uses intrinsics.
<arnd> ndesaulniers: I'm fairly sure the partial overlap never happens, it's either in-place or non-overlapping
<arnd> what I'd like to do though is to have separate driver interfaces for those two cases and annotate them in a way that makes it impossible to confuse
XV8 has joined #armlinux
<arnd> ndesaulniers: I only now saw your patch, I don't see what it does yet: where do you actually add the __restrict to make it work?
<ndesaulniers> arnd: arch/arm/lib/xor-neon.c.
<arnd> ah, so you just duplicate (some of) the code to make it work for arm
<arnd> ndesaulniers: since you are just checking the overlap within a few bytes, would it make more sense to use __attribute__((aligned())) instead of __restrict?
<arnd> as far as I can tell, the input and output is always aligned to a large enough power of two to make that true, and this might allow additional optimizations
<ndesaulniers> can you use that on a pointer to specify that it must be a multiple of 32B?
<arnd> I don't see why not
<arnd> there is also an __attribute__((warn_if_not_aligned (ALIGNMENT)), though I don't think it would help here, since the drivers don't mark their pointers as aligned
<arnd> hmm, the async code has an alignment check in it, but it falls back to xor_blocks() if the pointers are misaligned, so maybe we can't rely on the alignment after all
Tokamak has quit [Read error: Connection reset by peer]
Tokamak has joined #armlinux
Tokamak has quit [Ping timeout: 268 seconds]
Tokamak has joined #armlinux
Tokamak_ has joined #armlinux
Tokamak has quit [Ping timeout: 256 seconds]
prabhakarlad has quit [Quit: Client closed]
ardb has quit [Quit: Leaving.]
wolfshappen has quit [Ping timeout: 240 seconds]
Tokamak_ has quit [Ping timeout: 268 seconds]
Tokamak has joined #armlinux
wolfshappen has joined #armlinux
Tokamak has quit [Read error: Connection reset by peer]
Tokamak has joined #armlinux