linux_dsm_epyc7002/arch/arm
Arnd Bergmann 498a92d425 ARM: cns3xxx: pci: avoid potential stack overflow
The cns3xxx_pcie_hw_init function uses excessive kernel
stack space because of a hack that puts a fake struct
pci_sys_data and struct pci_bus on the stack in order to
call the generic pci_bus_read_config accessors, which causes
a warning in ARM allmodconfig builds:

arch/arm/mach-cns3xxx/pcie.c:266:1: warning: the frame size of 1080 bytes is larger than 1024 bytes

I've spent a few hours trying to find out what exactly this
code is wants to achieve here. The obvious part is setting
up the host_regs using config space accessors, and this can
simply be changed to use direct MMIO accesses, as I do
in this patch.

The second part is how the driver sets up the Max_Read_Request_Size
value for the first device/function on bus 1, i.e. the device
plugged directly into the PCIe root port.
For all I can tell, this is in fact incomplete, as it does not
perform the same setting on devices attached to a PCIe switch,
or multi-function devices.
The solution for this part fortunately is even easier: if we
just set the global pcie_bus_config variable to PCIE_BUS_PEER2PEER,
all PCIe devices in the system are limited to 128 byte MPS, which
in turn limits the MRRS to 128 bytes for all devices, and we
no longer even need to touch any devices.

With those two changes in place, we no longer need the fake
pci_sys_data/pci_bus structures for faking config space writes,
and the stack usage goes down as well.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Krzysztof Halasa <khalasa@piap.pl>
2015-10-08 16:32:48 +02:00
..
boot Fixes for omaps for v4.3-rc cycle: 2015-09-26 22:22:31 -07:00
common genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
configs ARM: omap2plus_defconfig: enable GPIO_PCA953X 2015-09-16 17:01:39 -07:00
crypto
firmware
include Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-09-27 06:48:48 -04:00
kernel ARM: wire up new syscalls 2015-09-22 08:13:42 +01:00
kvm arm/arm64: KVM: Remove 'config KVM_ARM_MAX_VCPUS' 2015-09-17 13:13:27 +01:00
lib Merge branch 'uaccess' into fixes 2015-09-11 19:18:28 +01:00
mach-alpine
mach-asm9260
mach-at91 genalloc: add name arg to gen_pool_get() and devm_gen_pool_create() 2015-09-04 16:54:41 -07:00
mach-axxia
mach-bcm ARM: SoC platform updates for v4.3 2015-09-01 12:18:40 -07:00
mach-berlin
mach-clps711x libnvdimm for 4.3: 2015-09-08 14:35:59 -07:00
mach-cns3xxx ARM: cns3xxx: pci: avoid potential stack overflow 2015-10-08 16:32:48 +02:00
mach-davinci ARM: SoC platform updates for v4.3 2015-09-01 12:18:40 -07:00
mach-digicolor
mach-dove genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
mach-ebsa110
mach-efm32
mach-ep93xx
mach-exynos ARM: SoC: late fixes and dependencies 2015-09-10 17:59:04 -07:00
mach-footbridge genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
mach-gemini genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
mach-highbank
mach-hisi
mach-imx genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
mach-integrator
mach-iop13xx genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
mach-iop32x
mach-iop33x
mach-ixp4xx
mach-keystone
mach-ks8695
mach-lpc18xx
mach-lpc32xx genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
mach-mediatek
mach-meson
mach-mmp ARM: mmp: remove unused RTC register definitions 2015-09-05 19:37:17 +02:00
mach-moxart
mach-mv78xx0
mach-mvebu ARM: SoC driver updates for v4.3 2015-09-01 13:00:04 -07:00
mach-mxs
mach-netx genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
mach-nomadik
mach-nspire
mach-omap1 genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
mach-omap2 ARM: SoC fixes for v4.3-rc 2015-09-27 06:45:18 -04:00
mach-orion5x ARM: DT updates for v4.3 2015-09-01 13:09:20 -07:00
mach-picoxcell
mach-prima2 Merge branches 'cleanup', 'fixes', 'misc', 'omap-barrier' and 'uaccess' into for-linus 2015-09-03 15:28:37 +01:00
mach-pxa ARM: SoC fixes for v4.3-rc 2015-09-27 06:45:18 -04:00
mach-qcom
mach-realview
mach-rockchip ARM: rockchip: pm: Fix PTR_ERR() argument 2015-08-24 12:39:14 +02:00
mach-rpc genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
mach-s3c24xx genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
mach-s3c64xx genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
mach-s5pv210
mach-sa1100 genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
mach-shmobile libnvdimm for 4.3: 2015-09-08 14:35:59 -07:00
mach-socfpga genalloc: add name arg to gen_pool_get() and devm_gen_pool_create() 2015-09-04 16:54:41 -07:00
mach-spear ARM: SoC cleanups for v4.3 2015-09-01 12:10:20 -07:00
mach-sti ARM: SoC platform updates for v4.3 2015-09-01 12:18:40 -07:00
mach-stm32
mach-sunxi
mach-tegra ARM: SoC driver updates for v4.3 2015-09-01 13:00:04 -07:00
mach-u300
mach-uniphier
mach-ux500 Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-09-03 16:27:01 -07:00
mach-versatile
mach-vexpress
mach-vt8500
mach-w90x900
mach-zx ARM: SoC platform updates for v4.3 2015-09-01 12:18:40 -07:00
mach-zynq Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-01 14:33:35 -07:00
mm ARM: alignment: fix alignment handling for uaccess changes 2015-09-24 11:07:00 +01:00
net
nwfpe ARM: swpan: fix nwfpe for uaccess changes 2015-09-09 23:26:11 +01:00
oprofile
plat-iop
plat-omap
plat-orion genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
plat-pxa ARM: pxa: ssp: Fix build error by removing originally incorrect DT binding 2015-09-13 12:55:27 +02:00
plat-samsung
plat-versatile
probes
tools
vdso
vfp
xen Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-09-14 12:24:10 -07:00
Kconfig Merge branch 'uaccess' into fixes 2015-09-11 19:18:28 +01:00
Kconfig-nommu
Kconfig.debug The i.MX SoC changes for 4.3: 2015-08-18 13:10:05 -07:00
Makefile ARM: 8429/1: disable GCC SRA optimization 2015-09-07 13:24:05 +01:00