dev: Align BAR0 size to power of 2 for VirtIO devices
authorSascha Bischoff <sascha.bischoff@arm.com>
Fri, 24 Mar 2017 16:02:30 +0000 (16:02 +0000)
committerAndreas Sandberg <andreas.sandberg@arm.com>
Mon, 3 Apr 2017 16:36:15 +0000 (16:36 +0000)
commitd7aef8be964b5f7eee2dace0cfc347fb23fa7ab2
tree7d75cd25df5e346e35e8b5aa52c1cdd5150a462f
parentba00d7449df87c99bf8aca97a877b493c14f4866
dev: Align BAR0 size to power of 2 for VirtIO devices

When setting the size of a PCI BAR, the kernel only supports powers of
two (as per the PCI spec). Previously, the size was incorrectly read
by the kernel, and the address ranges assigned to the PCI devices
could overlap, resulting in gem5 crashes.  We now round up to the next
power of two.

Kudos to Sergei Trofimov who helped to debug this issue!

Change-Id: I54ca399b62ea07c09d4cd989b17dfa670e841bbe
Reviewed-by: Anouk Van Laer <anouk.vanlaer@arm.com>
Reviewed-by: Sergei Trofimov <sergei.trofimov@arm.com>
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2580
Reviewed-by: Paul Rosenfeld <prosenfeld@micron.com>
src/base/bitfield.hh
src/dev/virtio/pci.cc