* Linux 5.15-rc2
@ 2021-09-20 0:40 Linus Torvalds
2021-09-20 13:44 ` Guenter Roeck
0 siblings, 1 reply; 7+ messages in thread
From: Linus Torvalds @ 2021-09-20 0:40 UTC (permalink / raw)
To: Linux Kernel Mailing List
So I've spent a fair amount of this week trying to sort out all the
odd warnings, and I want to particularly thank Guenter Roeck for his
work on tracking where the build failures due to -Werror come from.
Is it done? No. But on the whole I'm feeling fairly good about this
all, even if it has meant that I've been looking at some really odd
and grotty code. Who knew I'd still worry about some odd EISA driver
on alpha, after all these years? A slight change of pace ;)
The most annoying thing is probably the "fix one odd corner case,
three others rear their ugly heads". But I remain convinced that it's
all for a good cause, and that we really do want to have a clean build
even for the crazy odd cases.
We'll get there.
Anyway, I hope this release will turn more normal soon - but the rc2
week tends to be fairly quiet for me, so the fact that I then ended up
looking at reports of odd warnings-turned-errors this week wasn't too
bad.
There's obviously other fixes in here too, only a small subset of the
shortlog below is due to the warning fixes, even if that's what I've
personally been most involved with.
Go test, and keep the reports coming,
Linus
---
Adam Borowski (1):
net: wan: wanxl: define CROSS_COMPILE_M68K
Adrian Bunk (1):
bnx2x: Fix enabling network interfaces without VFs
Adrian Hunter (1):
perf script: Fix ip display when type != attr->type
Aleksander Jan Bajkowski (1):
net: dsa: lantiq_gswip: Add 200ms assert delay
Alex Deucher (1):
drm/amdgpu/display: add a proper license to dc_link_dp.c
Alex Elder (1):
net: ipa: initialize all filter table slots
Alexander Egorenkov (1):
s390/sclp: fix Secure-IPL facility detection
Alim Akhtar (1):
dt-bindings: ufs: Add bindings for Samsung ufs host
Andrea Claudi (1):
selftest: net: fix typo in altname test
Andreas Larsson (1):
sparc32: page align size in arch_dma_alloc
Andrii Nakryiko (1):
perf bpf: Ignore deprecation warning when using libbpf's
btf__get_from_id()
Andy Shevchenko (1):
x86/platform: Increase maximum GPIO number for X86_64
Anson Jacob (1):
drm/amd/display: dc_assert_fp_enabled assert only if FPU is not enabled
Ansuel Smith (1):
net: dsa: qca8k: fix kernel panic with legacy mdio mapping
Anton Eidelman (1):
nvme-multipath: fix ANA state updates when a namespace is not present
Ariel Marcovitch (2):
checkkconfigsymbols.py: Forbid passing 'HEAD' to --commit
checkkconfigsymbols.py: Remove skipping of help lines in
parse_kconfig_file
Arnd Bergmann (2):
ne2000: fix unused function warning
drm/rockchip: cdn-dp-core: Make cdn_dp_core_resume __maybe_unused
Aya Levin (3):
net/mlx5e: Fix mutual exclusion between CQE compression and HW TS
net/mlx5e: Fix condition when retrieving PTP-rqn
udp_tunnel: Fix udp_tunnel_nic work-queue type
Baptiste Lepers (1):
events: Reuse value read using READ_ONCE instead of re-reading it
Baruch Siach (1):
net/packet: clarify source of pr_*() messages
Bixuan Cui (1):
bpf: Add oversize check before call kvcalloc()
Bjorn Helgaas (1):
PCI/VPD: Defer VPD sizing until first access
Boqun Feng (1):
locking/rwbase: Take care of ordering guarantee for fastpath reader
Chris Wilson (1):
rtc: cmos: Disable irq around direct invocation of cmos_interrupt()
Christian König (1):
drm/amdgpu: fix use after free during BO move
Christoph Hellwig (3):
dma-mapping: fix the kerneldoc for dma_map_sg_attrs
block: check if a profile is actually registered in
blk_integrity_unregister
nvme: remove the call to nvme_update_disk_info in nvme_ns_remove
Colin Ian King (1):
qlcnic: Remove redundant initialization of variable ret
Cédric Le Goater (1):
powerpc/xics: Set the IRQ chip data for the ICS native backend
Dan Carpenter (1):
nvmet: fix a width vs precision bug in nvmet_subsys_attr_serial_show()
Dan Li (1):
arm64: Mark __stack_chk_guard as __ro_after_init
Daniel Borkmann (4):
bpf: Relicense disassembler as GPL-2.0-only OR BSD-2-Clause
bpf, cgroups: Fix cgroup v2 fallback on v1/v2 mixed mode
bpf, selftests: Add cgroup v1 net_cls classid helpers
bpf, selftests: Add test case for mixed cgroup v1/v2
Daniel Vetter (1):
drm/i915: Release ctx->syncobj on final put, not on ctx close
Daniel Wagner (1):
nvme: avoid race in shutdown namespace removal
Daniele Ceraolo Spurio (1):
drm/i915/guc: drop guc_communication_enabled
Dave Ertman (1):
ice: Correctly deal with PFs that do not support RDMA
David Brazdil (1):
of: restricted dma: Fix condition for rmem init
David Heidelberg (1):
dt-bindings: arm: Fix Toradex compatible typo
David Hildenbrand (1):
s390/pci_mmio: fully validate the VMA before calling follow_pte()
David Thompson (1):
mlxbf_gige: clear valid_polarity upon open
Doug Smythies (1):
cpufreq: intel_pstate: Override parameters if HWP forced by BIOS
Edwin Peer (1):
bnxt_en: make bnxt_free_skbs() safe to call after bnxt_free_mem()
Eli Cohen (1):
net/{mlx5|nfp|bnxt}: Remove unnecessary RTNL lock assert
Eric Dumazet (3):
net/af_unix: fix a data-race in unix_dgram_poll
net-caif: avoid user-triggerable WARN_ON(1)
Revert "Revert "ipv4: fix memory leaks in ip_cmsg_send() callers""
Ernst Sjöstrand (1):
drm/amd/amdgpu: Increase HWIP_MAX_INSTANCE to 10
Eugene Syromiatnikov (1):
io-wq: provide IO_WQ_* constants for
IORING_REGISTER_IOWQ_MAX_WORKERS arg items
Evan Quan (2):
PCI: Add AMD GPU multi-function power dependencies
drm/amd/pm: fix runpm hang when amdgpu loaded prior to sound driver
Felix Kuehling (1):
drm/amdkfd: make needs_pcie_atomics FW-version dependent
Florian Fainelli (1):
r6040: Restore MDIO clock frequency after MAC reset
Ganesh Goudar (1):
powerpc/mce: Fix access error in mce handler
Geert Uytterhoeven (2):
m68k: mvme: Remove overdue #warnings in RTC handling
sh: Add missing FORCE prerequisites in Makefile
Guenter Roeck (9):
net: ni65: Avoid typecast of pointer to u32
m68k: Double cast io functions to unsigned long
compiler.h: Introduce absolute_pointer macro
net: i825xx: Use absolute_pointer for memcpy from fixed memory location
alpha: Move setup.h out of uapi
alpha: Use absolute_pointer to define COMMAND_LINE
alpha: Declare virt_to_phys and virt_to_bus parameter as pointer
to volatile
cpufreq: vexpress: Drop unused variable
net: 6pack: Fix tx timeout and slot time
Hamza Mahfooz (1):
dma-debug: prevent an error message from causing runtime problems
Hao Xu (2):
io-wq: code clean of io_wqe_create_worker()
io-wq: fix potential race of acct->nr_workers
Harry Wentland (1):
drm/amd/display: Get backlight from PWM if DMCU is not initialized
Heiko Carstens (3):
s390: update defconfigs
s390/ap: fix kernel doc comments
s390: remove WARN_DYNAMIC_STACK
Helge Deller (2):
parisc: Use absolute_pointer() to define PAGE0
parisc: Declare pci_iounmap() parisc version only when CONFIG_PCI enabled
Hersen Wu (1):
drm/amd/display: dsc mst 2 4K displays go dark with 2 lane HBR3
Hoang Le (1):
tipc: increase timeout in tipc_sk_enqueue()
Huang Rui (1):
drm/ttm: fix type mismatch error on sparc64
Ian Rogers (1):
libperf evsel: Make use of FD robust.
James Morse (1):
cpufreq: schedutil: Destroy mutex before kobject_put() frees the memory
James Zhu (3):
drm/amdkfd: separate kfd_iommu_resume from kfd_resume
drm/amdgpu: add amdgpu_amdkfd_resume_iommu
drm/amdgpu: move iommu_resume before ip init/resume
Jan Beulich (9):
xen/pvcalls: backend can be a module
swiotlb-xen: avoid double free
swiotlb-xen: fix late init retry
swiotlb-xen: maintain slab count properly
swiotlb-xen: suppress certain init retries
swiotlb-xen: limit init retries
swiotlb-xen: drop leftover __ref
swiotlb-xen: arrange to have buffer info logged
swiotlb-xen: drop DEFAULT_NSLABS
Jean-Philippe Brucker (2):
selftests/bpf: Fix build of task_pt_regs test for arm64
PCI/ACPI: Don't reset a fwnode set by OF
Jeff Moyer (1):
x86/pat: Pass valid address to sanitize_phys()
Jens Axboe (6):
io_uring: ensure symmetry in handling iter types in loop_rw_iter()
io_uring: pin SQPOLL data before unlocking ring lock
iov_iter: add helper to save iov_iter state
io_uring: allow retry for O_NONBLOCK if async is supported
io_uring: use iov_iter state save/restore helpers
Revert "iov_iter: track truncated size"
Jeremy Kerr (1):
mctp: perform route destruction under RCU read lock
Jesper Nilsson (1):
net: stmmac: allow CSR clock of 300MHz
Jiaran Zhang (2):
net: hns3: fix the exception when query imp info
net: hns3: fix the timing issue of VF clearing interrupt sources
Joakim Zhang (2):
net: stmmac: fix system hang caused by eee_ctrl_timer during
suspend/resume
net: stmmac: platform: fix build warning when with !CONFIG_PM_SLEEP
Jon Derrick (1):
MAINTAINERS: Add Nirmal Patel as VMD maintainer
Juergen Gross (4):
xen/balloon: use a kernel thread instead a workqueue
PM: base: power: don't try to use non-existing RTC for storing data
xen: reset legacy rtc flag for PV domU
xen: fix usage of pmd_populate in mremap for pv guests
Kai-Heng Feng (1):
drm/i915/dp: Use max params for panels < eDP 1.4
Keith Busch (1):
nvme-tcp: fix io_work priority inversion
Kenneth Feng (1):
drm/amd/pm: fix the issue of uploading powerplay table
Kortan (1):
gen_compile_commands: fix missing 'sys' package
Lang Yu (5):
drm/amdgpu: fix sysfs_emit/sysfs_emit_at warnings(v2)
drm/amdgpu: update SMU PPSMC for cyan skilfish
drm/amdgpu: update SMU driver interface for cyan skilfish(v3)
drm/amdgpu: add some pptable funcs for cyan skilfish(v3)
drm/amdgpu: add manual sclk/vddc setting support for cyan skilfish(v3)
Lee Shawn C (1):
drm/i915/dp: return proper DPRX link training result
Len Baker (1):
net: mana: Prefer struct_size over open coded arithmetic
Li Jinlin (1):
blk-cgroup: fix UAF by grabbing blkcg lock before destroying blkg pd
Lihong Kou (1):
block: flush the integrity workqueue in blk_integrity_unregister
Lin, Zhenpeng (1):
dccp: don't duplicate ccid when cloning dccp sock
Linus Torvalds (17):
compiler_attributes.h: drop __has_attribute() support for gcc4
Drop some straggling mentions of gcc-4.9 as being stale
memblock: introduce saner 'memblock_free_ptr()' interface
sparc: avoid stringop-overread errors
qnx4: avoid stringop-overread errors
3com 3c515: make it compile on 64-bit architectures
spi: Fix tegra20 build with CONFIG_PM=n
alpha: make 'Jensen' IO functions build again
tgafb: clarify dependencies
alpha: mark 'Jensen' platform as no longer broken
alpha: move __udiv_qrnnd library function to arch/alpha/lib/
Revert drm/vc4 hdmi runtime PM changes
Revert "drm/vc4: hdmi: Remove drm_encoder->crtc usage"
alpha: enable GENERIC_PCI_IOMAP unconditionally
dmascc: use proper 'virt_to_bus()' rather than casting to 'int'
pci_iounmap'2: Electric Boogaloo: try to make sense of it all
Linux 5.15-rc2
Lucas Stach (8):
drm/etnaviv: return context from etnaviv_iommu_context_get
drm/etnaviv: put submit prev MMU context when it exists
drm/etnaviv: stop abusing mmu_context as FE running marker
drm/etnaviv: keep MMU context across runtime suspend/resume
drm/etnaviv: exec and MMU state is lost when resetting the GPU
drm/etnaviv: fix MMU context leak on GPU reset
drm/etnaviv: reference MMU context when setting up hardware state
drm/etnaviv: add missing MMU context put when reaping MMU mapping
Lv Ruyi (1):
arm64/kernel: remove duplicate include in process.c
Maor Gottlieb (1):
net/mlx5: Fix potential sleeping in atomic context
Mark Bloch (1):
net/mlx5: Lag, don't update lag if lag isn't supported
Mark Brown (1):
arm64/sve: Use correct size when reinitialising SVE state
Masami Hiramatsu (1):
tools/bootconfig: Define memblock_free_ptr() to fix build error
Mauro Carvalho Chehab (2):
dt-bindings: net: dsa: sja1105: update nxp,sja1105.yaml reference
dt-bindings: arm: mediatek: mmsys: update mediatek,mmsys.yaml reference
Meenakshikumar Somasundaram (1):
drm/amd/display: Link training retry fix for abort case
Michael Chan (2):
bnxt_en: Fix error recovery regression
bnxt_en: Clean up completion ring page arrays completely
Michael Ellerman (1):
powerpc/boot: Fix build failure since GCC 4.9 removal
Michael Petlan (1):
perf machine: Initialize srcline string member in add_location struct
Michel Dänzer (1):
drm/amdgpu: Drop inline from amdgpu_ras_eeprom_max_record_count
Mike Rapoport (1):
x86/mm: Fix kern_addr_valid() to cope with existing but not
present entries
Ming Lei (1):
blk-mq: avoid to iterate over stale request
Nathan Chancellor (6):
tools: compiler-gcc.h: Guard error attribute use with __has_attribute
drm/i915/selftests: Do not use import_obj uninitialized
drm/i915/selftests: Always initialize err in
igt_dmabuf_import_same_driver_lmem()
drm/i915: Enable -Wsometimes-uninitialized
x86/build: Do not add -falign flags unconditionally for clang
kbuild: Add -Werror=ignored-optimization-argument to CLANG_FLAGS
Nathan Rossi (1):
net: phylink: Update SFP selected interface on advertising changes
Nicholas Kazlauskas (2):
drm/amd/display: Add NULL checks for vblank workqueue
drm/amd/display: Fix white screen page fault for gpuvm
Nicholas Piggin (4):
powerpc/64s: system call scv tabort fix for corrupt irq soft-mask state
selftests/powerpc: Add scv versions of the basic TM syscall tests
powerpc/64s: system call rfscv workaround for TM bugs
KVM: PPC: Book3S HV: Tolerate treclaim. in fake-suspend mode
changing registers
Nick Desaulniers (10):
Documentation: raise minimum supported version of GCC to 5.1
compiler.h: drop fallback overflow checkers
mm/ksm: remove old GCC 4.9+ check
Kconfig.debug: drop GCC 5+ version check for DWARF5
riscv: remove Kconfig check for GCC version for ARCH_RV64I
powerpc: remove GCC version check for UPD_CONSTR
arm64: remove GCC version check for ARCH_SUPPORTS_INT128
Makefile: drop GCC < 5 -fno-var-tracking-assignments workaround
compiler-gcc.h: drop checks for older GCC versions
vmlinux.lds.h: remove old check for GCC 4.9
Nirmoy Das (2):
drm/amdgpu: use IS_ERR for debugfs APIs
drm/radeon: pass drm dev radeon_agp_head_init directly
Paolo Abeni (2):
vhost_net: fix OoB on sendmsg() failure.
igc: fix tunnel offloading
Parav Pandit (1):
net/mlx5: Fix rdma aux device on devlink reload
Paul Menzel (1):
drm/amdgpu: Demote TMZ unsupported log message from warning to info
Pavel Begunkov (2):
io_uring: auto-removal for direct open/accept
io_uring: move iopoll reissue into regular IO path
Peter Zijlstra (2):
locking/rwbase: Properly match set_and_save_state() to restore_state()
locking/rwbase: Extract __rwbase_write_trylock()
Qingqing Zhuo (1):
drm/amd/display: Fix unstable HPCP compliance on Chrome Barcelo
Ramji Jiyani (1):
kbuild: Fix comment typo in scripts/Makefile.modpost
Randy Dunlap (1):
ptp: dp83640: don't define PAGE0
Ravi Bangoria (1):
perf annotate: Fix fused instr logic for assembly functions
Ruozhu Li (1):
nvme-rdma: destroy cm id before destroy qp to avoid use after free
Saeed Mahameed (1):
net/mlx5: FWTrace, cancel work on alloc pd error flow
Samuel Holland (1):
dt-bindings: net: sun8i-emac: Add compatible for D1
Saravana Kannan (1):
Revert "of: property: fw_devlink: Add support for "phy-handle" property"
Shai Malin (1):
qed: Handle management FW error
Simon Ser (2):
amd/display: downgrade validation failure log level
amd/display: enable panel orientation quirks
Sukadev Bhattiprolu (2):
ibmvnic: check failover_pending in login response
ibmvnic: check failover_pending in login response
Thomas Hellström (1):
drm/i915/gem: Fix the mman selftest
Tong Zhang (1):
net: macb: fix use after free on rmmod
Tony Luck (1):
x86/mce: Avoid infinite loop for copy from user recovery
Vasily Averin (1):
ipc: remove memcg accounting for sops objects in do_semtimedop()
Vinay Belgaumkar (1):
drm/i915: Get PM ref before accessing HW register
Vitaly Kuznetsov (1):
Drivers: hv: vmbus: Fix kernel crash upon unbinding a device
from uio_hv_generic driver
Vlad Buslov (1):
net/mlx5: Bridge, fix uninitialized variable usage
Vladimir Oltean (3):
net: dsa: destroy the phylink instance on any error in dsa_slave_phy_setup
Revert "net: phy: Uniform PHY driver access"
net: dsa: flush switchdev workqueue before tearing down CPU/DSA ports
Wei Liu (2):
asm-generic/hyperv: provide cpumask_to_vpset_noself
x86/hyperv: remove on-stack cpumask from hv_send_ipi_mask_allbutself
Will Deacon (1):
x86/uaccess: Fix 32-bit __get_user_asm_u64() when CC_HAS_ASM_GOTO_OUTPUT=y
Xiang wangx (1):
selftests: nci: replace unsigned int with int
Xiaoguang Wang (1):
io_uring: fix missing sigmask restore in io_cqring_wait()
Xiyu Yang (1):
net/l2tp: Fix reference count leak in l2tp_udp_recv_core
Yajun Deng (1):
Revert "ipv4: fix memory leaks in ip_cmsg_send() callers"
Yanfei Xu (1):
blkcg: fix memory leak in blk_iolatency_init
Yonghong Song (1):
bpf, mm: Fix lockdep warning triggered by stack_map_get_build_id_offset()
Yufeng Mo (3):
net: hns3: pad the short tunnel frame before sending to hardware
net: hns3: change affinity_mask to numa node range
net: hns3: disable mac in flr process
Yunsheng Lin (1):
net: hns3: add option to turn off page pool feature
zhang kai (1):
ipv6: delay fib6_sernum increase in fib6_add
zhenggy (1):
tcp: fix tp->undo_retrans accounting in tcp_sacktag_one()
Íñigo Huguet (2):
sfc: fallback for lack of xdp tx queues
sfc: last resort fallback for lack of xdp tx queues
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Linux 5.15-rc2
2021-09-20 0:40 Linux 5.15-rc2 Linus Torvalds
@ 2021-09-20 13:44 ` Guenter Roeck
2021-09-20 16:18 ` Linus Torvalds
0 siblings, 1 reply; 7+ messages in thread
From: Guenter Roeck @ 2021-09-20 13:44 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Linux Kernel Mailing List
On Sun, Sep 19, 2021 at 05:40:42PM -0700, Linus Torvalds wrote:
[ ... ]
>
> Go test, and keep the reports coming,
>
Build results:
total: 153 pass: 148 fail: 5
Failed builds:
mips:allmodconfig
parisc:allmodconfig
sparc64:allnoconfig
sparc64:tinyconfig
xtensa:allmodconfig
Qemu test results:
total: 480 pass: 479 fail: 1
Failed tests:
sparc64:sun4u:nodebug:smp:virtio-pci:net,i82559er:hd
Details for build failures below. Several improvements since last week,
but it looks like the alpha related pci_iounmap patches still need some
tweaking (see error log at the very end).
Guenter
---
In file included from arch/mips/include/asm/sibyte/sb1250.h:28,
from drivers/watchdog/sb_wdog.c:58:
arch/mips/include/asm/sibyte/bcm1480_scd.h:261: error: "M_SPC_CFG_CLEAR" redefined
In file included from arch/mips/include/asm/sibyte/sb1250.h:28,
from drivers/watchdog/sb_wdog.c:58:
arch/mips/include/asm/sibyte/bcm1480_scd.h:262: error: "M_SPC_CFG_ENABLE" redefined
Affected builds:
mips:allmodconfig
Patch:
https://lore.kernel.org/r/20210913073220.1159520-1-liu.yun@linux.dev
Status:
Waiting for pull request from Wim
---
drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.c: In function 'nvkm_control_mthd_pstate_info':
drivers/gpu/drm/nouveau/nvkm/engine/device/ctrl.c:60:35: error: overflow in conversion from 'int' to '__s8' {aka 'signed char'} changes value from '-251' to '5' [-Werror=overflow]
60 | args->v0.pwrsrc = -ENOSYS;
Affected builds:
parisc:allmodconfig
Background:
args->v0.pwrsrc is s8, -ENOSYS is -251 on parisc
Patch:
https://lore.kernel.org/lkml/20210908190817.1213486-1-linux@roeck-us.net/
Status:
No response as of 9/20
---
drivers/scsi/ncr53c8xx.c:8000:26: error: 'retrieve_from_waiting_list' defined but not used
Affected builds:
parisc:allmodconfig
Patch:
https://lore.kernel.org/r/YTfS/LH5vCN6afDW@ls3530
Status:
Applied to 5.15/scsi-fixes
---
drivers/video/fbdev/omap2/omapfb/dss/dsi.c: In function 'dsi_dump_dsidev_irqs':
drivers/video/fbdev/omap2/omapfb/dss/dsi.c:1623:1: error: the frame size of 1104 bytes is larger than 1024 bytes
and many similar errors. Seen in xtensa:allmodconfig.
Background:
xtensa:allmodconfig enables KASAN which in turn increases stack size
requirements significantly.
Patch:
https://lore.kernel.org/lkml/20210912025235.3514761-1-linux@roeck-us.net/
Status:
Queued in https://www.ozlabs.org/~akpm/mmotm/
---
arch/sparc/lib/iomap.c:22:6: error: redefinition of 'pci_iounmap'
22 | void pci_iounmap(struct pci_dev *dev, void __iomem * addr)
| ^~~~~~~~~~~
In file included from arch/sparc/include/asm/io_64.h:11,
from arch/sparc/include/asm/io.h:5,
from include/linux/io.h:13,
from include/linux/pci.h:39,
from arch/sparc/lib/iomap.c:5:
include/asm-generic/pci_iomap.h:54:20: note: previous definition of 'pci_iounmap' was here
54 | static inline void pci_iounmap(struct pci_dev *dev, void __iomem *addr)
Affected builds:
sparc64:allnoconfig, sparc64:tinyconfig
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Linux 5.15-rc2
2021-09-20 13:44 ` Guenter Roeck
@ 2021-09-20 16:18 ` Linus Torvalds
2021-09-20 17:04 ` Linus Torvalds
0 siblings, 1 reply; 7+ messages in thread
From: Linus Torvalds @ 2021-09-20 16:18 UTC (permalink / raw)
To: Guenter Roeck
Cc: Linux Kernel Mailing List, linux-sparc, David S. Miller, linux-arch
On Mon, Sep 20, 2021 at 6:44 AM Guenter Roeck <linux@roeck-us.net> wrote:
>
> Details for build failures below. Several improvements since last week,
> but it looks like the alpha related pci_iounmap patches still need some
> tweaking (see error log at the very end).
Bah.
I thought I had tested sparc64, but I was wrong.
Silly me, I had only tested the 32-bit case.
That sparc64 thing is being particularly stupid: sparc64 uses
GENERIC_PCI_IOMAP, but declares its own empty pci_iounmap() because it
didn't use GENERIC_IOMAP that does this all right.
And because it didn't use the generic iomap code, it's all actually
entirely buggy, in that it seems to think that pci_iounmap() is about
unmapping ports (like ioport_unmap) and thus a no-op. But no,
pci_iounmap() is supposed to unmap anything that pci_iomap() mapped,
which includes the actual MMIO range too.
Basically, the whole idea of "pci_iomap()" is that you give it a PCI
device and the index to the BAR in that device, and it maps that BAR -
whether it is MMIO or PIO. And then you can use that __iomem pointer
for ioread*() and friends (or you can use readl()/writel() if you know
it was MMIO).
You can give it a maximum length if you want, but by default it just
maps the whole PCI BAR, so the default usage would just be
void __iomem *map = pci_iomap(pdev, bar, 0);
And then you do whatever IO using that 'map' base pointer, and once
you're done you do "pci_iounmap()" on it all.
And then the trick most cases use is that they know that the PIO case
is just always a fixed map, so for PIO that "map/unmap" part os a
no-op. But generally ONLY for the PIO case.
And the sparc64 code seems to think it's only used for PIO, and makes
pci_iounmap() a no-op in general. Which is all kinds of completely
broken.
This is the same bug that the broken inline function in
<asm-generic/io.h> had, and that I added a big comment about in commit
316e8d79a095 ("pci_iounmap'2: Electric Boogaloo: try to make sense of
it all"):
+ * This code is odd, and the ARCH_HAS/ARCH_WANTS #define logic comes
+ * from legacy <asm-generic/io.h> header file behavior. In particular,
+ * it would seem to make sense to do the iounmap(p) for the non-IO-space
+ * case here regardless, but that's not what the old header file code
+ * did. Probably incorrectly, but this is meant to be bug-for-bug
+ * compatible.
but I intentionally didn't fix the bug in that commit, because I
wanted to just try to keep the odd old logic as closely as possible.
It looks like a big part of the "people do their own pci_iounmap()"
thing is that they do it badly and with bugs.
This was all meant to uncover and fix warnings, but it seems to be
uncovering bigger issues.
Of course, most of the time the "pci_iounmap()" only happens at driver
unload time, so it's basically only a kernel virtual memory mapping
leak, which may be why people didn't realize how buggy their own
implementations were.
What the normal GENERIC_IOMAP code does is:
- it "fake maps" the PIO space at an invalid fixed virtual address
Since we know that a PIO address on PCI is just a 16-bit number,
this fake virtual window is small and easy to do:
/*
* We encode the physical PIO addresses (0-0xffff) into the
* pointer by offsetting them with a constant (0x10000) and
* assuming that all the low addresses are always PIO. That means
* we can do some sanity checks on the low bits, and don't
* need to just take things for granted.
*/
#define PIO_OFFSET 0x10000UL
#define PIO_MASK 0x0ffffUL
#define PIO_RESERVED 0x40000UL
so the logic is basically that we can trivially test whether a
"void __iomem *" pointer is a PIO pointer or not: if the pointer value
is in that range of PIO_OFFSET..PIO_OFFSET+PIO_MASK range, it's PIO,
otherwise it's mmio.
- the MMIO space acts using all the normal ioremap() logic, and we
can tell the end result apart from PIO with the above trivial thing.
- the GENERIC_IOMAP code internally just has a IO_COND(adds, is_pio,
is_mmio) helper macro, which sets "port" for the is_pio case, and
"addr" for the is_mmio case, so you can do trivial things like this:
unsigned int ioread8(const void __iomem *addr)
{
IO_COND(addr, return inb(port), return readb(addr));
return 0xff;
}
which does the "inb(port)" for the PIO case, and the "readb(addr)"
for the MMIO case.
- and lookie here what the GENERIC_IOMAP code for pci_iounmap() is:
void pci_iounmap(struct pci_dev *dev, void __iomem * addr)
{
IO_COND(addr, /* nothing */, iounmap(addr));
}
IOW, for the "is_pio" case it does nothing, and for the "is_mmio"
case it does "iounmap()".
So the GENERIC_IOMAP code is actually really simple and should just
work for pretty much everybody. All it requires is that fake kernel
virtual address range at PIO_OFFSET (you can override the default
values if you want - maybe your architecture really wants to put MMIO
in those virtual addresses, but I don't think there's a lot of reason
to generally want to do it)
But despite that, people think they should implement their own code,
and then they clearly get it HORRIBLY WRONG.
Anyway, this email ended up being a long explanation of what the code
_should_ do, in the hope that some enterprising kernel developer
decides "Oh, this sounds like an easy thing to fix". But you do need
to be able to test the end result at least a tiny bit.
Because I suspect that the real fix for sparc64 is to just get rid of
its broken non-GENERIC_IOMAP code, and just do "select GENERIC_IOMAP"
And I don't think sparc64 is the only architecture that should go "Oh,
I should just use GENERIC_IOMAP instead of implementing it badly by
hand".
Anyone?
Linus
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Linux 5.15-rc2
2021-09-20 16:18 ` Linus Torvalds
@ 2021-09-20 17:04 ` Linus Torvalds
2021-09-20 18:03 ` Linus Torvalds
2021-09-20 19:14 ` John Paul Adrian Glaubitz
0 siblings, 2 replies; 7+ messages in thread
From: Linus Torvalds @ 2021-09-20 17:04 UTC (permalink / raw)
To: Guenter Roeck
Cc: Linux Kernel Mailing List, linux-sparc, David S. Miller, linux-arch
On Mon, Sep 20, 2021 at 9:18 AM Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> Anyway, this email ended up being a long explanation of what the code
> _should_ do, in the hope that some enterprising kernel developer
> decides "Oh, this sounds like an easy thing to fix". But you do need
> to be able to test the end result at least a tiny bit.
In the meantime, the build fix is trivial: make that broken sparc
pci_iounmap() definition depend on CONFIG_PCI being set.
But let me build a few more sparc configs (and this time do it
properly for both 32-bit and 64-bit) before I actually commit it and
push it out.
Linus
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Linux 5.15-rc2
2021-09-20 17:04 ` Linus Torvalds
@ 2021-09-20 18:03 ` Linus Torvalds
2021-09-20 19:14 ` John Paul Adrian Glaubitz
1 sibling, 0 replies; 7+ messages in thread
From: Linus Torvalds @ 2021-09-20 18:03 UTC (permalink / raw)
To: Guenter Roeck
Cc: Linux Kernel Mailing List, linux-sparc, David S. Miller, linux-arch
On Mon, Sep 20, 2021 at 10:04 AM Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> But let me build a few more sparc configs (and this time do it
> properly for both 32-bit and 64-bit) before I actually commit it and
> push it out.
Actually, I think I _had_ tested sparc64 properly before, it's just
that I had only done the bigger configurations that had CONFIG_PCI
enabled and that didn't show the failure due to that.
But I have now done the allnoconfig and tinyconfig builds that showed
the problem, and verified that the trivial "depend on CONFIG_PCI"
fixes things for me.
Looks like the only remaining problem in your build configuration list
that isn't queued up somewhere is that odd nouveau use of pwrsrc and
the errno range thing. I'll apply it directly.
I'm sure that other configs will have a lot of other cases, but it is
good to see at least your set shrinking.
Linus
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Linux 5.15-rc2
2021-09-20 17:04 ` Linus Torvalds
2021-09-20 18:03 ` Linus Torvalds
@ 2021-09-20 19:14 ` John Paul Adrian Glaubitz
2021-09-20 20:11 ` Linus Torvalds
1 sibling, 1 reply; 7+ messages in thread
From: John Paul Adrian Glaubitz @ 2021-09-20 19:14 UTC (permalink / raw)
To: Linus Torvalds, Guenter Roeck
Cc: Linux Kernel Mailing List, linux-sparc, David S. Miller, linux-arch
Hi Linus!
On 9/20/21 19:04, Linus Torvalds wrote:
> On Mon, Sep 20, 2021 at 9:18 AM Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
>>
>> Anyway, this email ended up being a long explanation of what the code
>> _should_ do, in the hope that some enterprising kernel developer
>> decides "Oh, this sounds like an easy thing to fix". But you do need
>> to be able to test the end result at least a tiny bit.
>
> In the meantime, the build fix is trivial: make that broken sparc
> pci_iounmap() definition depend on CONFIG_PCI being set.
>
> But let me build a few more sparc configs (and this time do it
> properly for both 32-bit and 64-bit) before I actually commit it and
> push it out.
If you want to get feedback whether the kernel actually boots, let me know.
I could test boot on a SPARC T5 LDOM (SPARC VM logical domain).
Adrian
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer - glaubitz@debian.org
`. `' Freie Universitaet Berlin - glaubitz@physik.fu-berlin.de
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Linux 5.15-rc2
2021-09-20 19:14 ` John Paul Adrian Glaubitz
@ 2021-09-20 20:11 ` Linus Torvalds
0 siblings, 0 replies; 7+ messages in thread
From: Linus Torvalds @ 2021-09-20 20:11 UTC (permalink / raw)
To: John Paul Adrian Glaubitz
Cc: Guenter Roeck, Linux Kernel Mailing List, linux-sparc,
David S. Miller, linux-arch
On Mon, Sep 20, 2021 at 12:14 PM John Paul Adrian Glaubitz
<glaubitz@physik.fu-berlin.de> wrote:
>
> If you want to get feedback whether the kernel actually boots, let me know.
So having looked around more sparc64 actually looks to be ok as-is,
because it doesn't do any ioremap at all, and the PIO accesses are
done at physical address zero.
Sparc uses a special IO memory address space and can basically map all
of PCI that way, and it looks like the hardware does all the required
special things for the PIO range at address 0-0xffff.
So it turns out that the "missing iounmap()" is actually ok on sparc,
because it's a no-op anyway - because the ioremap() was just a pointer
cast with no actual remapping necessary.
And the generic IOMAP thing does assume that PIO is special, in ways
that sparc doesn't need. On x86, PIO is not remapped, but also uses
different instructions, so it's not just pointer games that could be
done at iomap/unmap case.
(And on many other architectures you need to do different
synchronization, even if you could perhaps otherwise make the
PIO-vs-MMIO be only about the pointer mapping - so "writeb()" and
"outb()" aren't just different in the addressing).
End result: the only downside of sparc not using the generic iomap is
likely that sparc will happily use a NULL __iomap pointer (error) and
basically use it as a PIO access. But since other architectures like
x86-64 would warn for that case (see 'bad_io_access()' in
lib/iomap.c), even that isn't actually a big deal - any such bugs
would have been found elsewhere.
And having looked at this, I'm starting to suspect that sparc oddity
is _why_ the fallback version in <asm-generic/io.h> was so broken. It
did the right thing on sparc, but leaks iomap remappings almost
anywhere else. But maybe sparc ended up being the only user of it?
Linus
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-09-21 2:53 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-20 0:40 Linux 5.15-rc2 Linus Torvalds
2021-09-20 13:44 ` Guenter Roeck
2021-09-20 16:18 ` Linus Torvalds
2021-09-20 17:04 ` Linus Torvalds
2021-09-20 18:03 ` Linus Torvalds
2021-09-20 19:14 ` John Paul Adrian Glaubitz
2021-09-20 20:11 ` Linus Torvalds
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).