Thread (30 messages) flat view 30 messages, 5 authors, 2021-03-22

Re: arm64 syzbot instances

From: Peter Maydell <hidden>
Date: 2021-03-22 16:51:02
Also in: lkml

On Mon, 22 Mar 2021 at 16:36, John Garry [off-list ref] wrote:
quoted
quoted
There's apparently a bit in the PCI spec that reads:
         The host bus bridge, in PC compatible systems, must return all
         1's on a read transaction and discard data on a write transaction
         when terminated with Master-Abort.

which obviously applies only to "PC compatible systems".
Right. As far as I can tell, all ARMv8 and most ARMv7 based SoCs
do this to be more compatible with PC style operating systems like
Linux, but you are right that the specification here does not
mandate that, and the older ARMv5 SoCs seem to be compliant
as well based on this.
quoted
quoted
TBH I'm having difficulty seeing why the kernel should be doing
this at all, though. The device tree tells you you have a PCI
controller; PCI supports enumeration of devices; you know exactly
where everything is mapped because the BARs tell you that.
I don't see anything that justifies the kernel in randomly
dereferencing areas of the IO or memory windows where it hasn't
mapped anything.
BIOS has described a CPU-addressable PIO region in the PCI hostbridge,
and the kernel has mapped it:

[    3.974309][    T1] pci-host-generic 4010000000.pcie:       IO
0x003eff0000..0x003effffff -> 0x0000000000

So I don't see why any accesses there should fault.
As requested above, do you have the PCI spec reference for
why the PIO region is supposed to do -1/discard for parts of
the PIO region where the kernel hasn't mapped any devices ?
For classic PCI, at least, the spec does not seem to mandate it.

thanks
-- PMM

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help