3 ms·
To make things worse, AFAIK the USB chip is connected through PCIe, so unless the RPi has an IOMMU, it could in theory DMA to anywhere in the host memory.
by cesarb 7y ago
To make things worse, AFAIK the USB chip is connected through PCIe, so unless the RPi has an IOMMU, it could in theory DMA to anywhere in the host memory.
- gjsman-1000 7y agoI don't know the details, but the memory controller is twice as fast for the SD card than the old Pi's are, and SOMETHING (I'm not sure for certain what, don't quote me) did change with the memory subsystem. This change is what allowed a workaround which allowed for 4GB of RAM for the first time (whereas before, the 1GB of RAM was a limitation throughout the SoC). So, it _may_ have a lite-IOMMU, but I'd open a forum posting for more info. Edit: This could also be why the SoC uses an EEPROM. The RPF said that booting the Pi4 with this new memory system is _much_ more complicated than booting a Pi3, and that permanently burning the boot code into the SoC (like on the Pi3 and earlier) was not an option for the Pi4. Extremely high risk of backfiring.
- makomk 7y agoAs far as I know, the SoC supported higher SD card speeds all the way back to the first Pi and the original drivers even tried to use them. The trouble is, the older Pis couldn't switch to the lower IO voltages required to actually operate at those speeds. Early adopters actually had to track down older, slower SD cards in order to use their Pis because otherwise SD card access would fail due to the driver erroneously switching speeds.
- gjsman-1000 7y agoYou're talking about the early problems using Class 10 cards which has been solved for a long time now. The Pi 4 upgrades the SD controller system (almost entirely) and is SD50 compliant, which means the SD card bus is roughly twice as fast as older models.
- gjsman-1000 7y agoAccording to the RPF: "The ARM cores are capable of running at up to 1.5 GHz, making the Pi 4 about 50% faster than the Raspberry Pi 3B+. The new VideoCore VI 3D unit now runs at up to 500 MHz. The ARM cores are 64-bit, and while the VideoCore is 32-bit, there is a new Memory Management Unit, which means it can access more memory than previous versions." https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711/README.md https://www.raspberrypi.org/documentation/hardware/raspberry... So, MAYBE?
- paxswill 7y agoAn IOMMU serves a slightly different purpose than a normal MMU. The graphic on Wikipedia [0] sums it up pretty well. The lack of an IOMMU would mean that if the firmware on the USB controller was malicious in some way, it could access memory it would otherwise not have access to. 0: https://en.wikipedia.org/wiki/Input%E2%80%93output_memory_management_unit https://en.wikipedia.org/wiki/Input%E2%80%93output_memory_ma...
- phh 7y agoI'm not seeing any iommu referenced in the device-tree, so I'd say you're right, at least in the current software.