Message ID | 20220120201958.2649-1-semen.protsenko@linaro.org (mailing list archive) |
---|---|
Headers | show |
Series | iommu/samsung: Introduce Exynos sysmmu-v8 driver | expand |
On 20/01/2022 21:19, Sam Protsenko wrote: > This is a draft of a new IOMMU driver used in modern Exynos SoCs (like > Exynos850) and Google's GS101 SoC (used in Pixel 6 phone). Most of its > code were taken from GS101 downstream kernel [1], with some extra > patches on top (fixes from Exynos850 downstream kernel and some porting > changes to adapt it to the mainline kernel). All development history can > be found at [2]. > > Similarities with existing exynos-iommu.c is minimal. I did some > analysis using similarity-tester tool: > > 8<-------------------------------------------------------------------->8 > $ sim_c -peu -S exynos-iommu.c "|" samsung-* > > exynos-iommu.c consists for 15 % of samsung-iommu.c material > exynos-iommu.c consists for 1 % of samsung-iommu-fault.c material > exynos-iommu.c consists for 3 % of samsung-iommu.h material > 8<-------------------------------------------------------------------->8 > > So the similarity is very low, most of that code is some boilerplate > that shouldn't be extracted to common code (like allocating the memory > and requesting clocks/interrupts in probe function). This is not a prove of lack of similarities. The vendor drivers have proven track of poor quality and a lot of code not compatible with Linux kernel style. Therefore comparing mainline driver, reviewed and well tested, with a vendor out-of-tree driver is wrong. You will almost always have 0% of similarities, because vendor kernel drivers are mostly developed from scratch instead of re-using existing drivers. Recently Samsung admitted it - if I extend existing driver, I will have to test old and new platform, so it is easier for me to write a new driver. No, this is not that approach we use it in mainline. Linaro should know it much better. > > It was tested on v5.4 Android kernel on Exynos850 (E850-96 board) with > DPU use-case (displaying some graphics to the screen). Also it > apparently works fine on v5.10 GS101 kernel (on Pixel 6). On mainline > kernel I managed to build, match and bind the driver. No real world test > was done, but the changes from v5.10 (where it works fine) are minimal > (see [2] for details). So I'm pretty sure the driver is functional. No, we do not take untested code or code for different out-of-tree kernels, not for mainline. I am pretty sure drivers is poor or not working. > > For this patch series I'd like to receive some high-level review for > driver's design and architecture. Coding style and API issues I can fix > later, when sending real (not RFC) series. Particularly I'd like to hear > some opinions about: > - namings: Kconfig option, file names, module name, compatible, etc > - modularity: should this driver be a different platform driver (like > in this series), or should it be integrated into existing > exynos-iommu.c driver somehow > - dt-bindings: does it look ok as it is, or some interface changes are > needed You sent bindings in TXT with dead code inside, and you ask if it is ok. I consider this approach that you sent whatever junk to us hoping that we will point all the issues instead of finding them by yourself. I am pretty sure you have several folks in Linaro who can perform first review and bring the code closer to mainline style. Best regards, Krzysztof