diff options
author | bz <bz@FreeBSD.org> | 2016-05-13 11:18:27 +0000 |
---|---|---|
committer | bz <bz@FreeBSD.org> | 2016-05-13 11:18:27 +0000 |
commit | 032a8b1655dcd27c8b84b285329262c30a158cbf (patch) | |
tree | 16c7544f5c2dda16192f31ce10f4e372d7521988 /sys/dev/pci | |
parent | d52ef4d2db8cf078bcb3f46a15acd3046bfed078 (diff) | |
download | FreeBSD-src-032a8b1655dcd27c8b84b285329262c30a158cbf.zip FreeBSD-src-032a8b1655dcd27c8b84b285329262c30a158cbf.tar.gz |
When using IOPORT with pci_host_generic we are missing setting the rman_end()
which leads to end being before start and thus a signed extended very large
number of size later on, which kva_alloc() will fail upon and we will panic.
Add the missing call.
Debugged with: andrew
Reviewed by: br, andrew
Sponsored by: DARPA/AFRL
Found: while using virtio with gem5
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D6337
Diffstat (limited to 'sys/dev/pci')
-rw-r--r-- | sys/dev/pci/pci_host_generic.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/dev/pci/pci_host_generic.c b/sys/dev/pci/pci_host_generic.c index 617f2f6..8ecf9c6 100644 --- a/sys/dev/pci/pci_host_generic.c +++ b/sys/dev/pci/pci_host_generic.c @@ -613,6 +613,7 @@ generic_pcie_activate_resource(device_t dev, device_t child, int type, int rid, } if (found) { rman_set_start(r, rman_get_start(r) + phys_base); + rman_set_end(r, rman_get_end(r) + phys_base); BUS_ACTIVATE_RESOURCE(device_get_parent(dev), child, type, rid, r); } else { |