Re: 2.6.37-git17 virtual IO boot failure
From: Nishanth Aravamudan <hidden>
Date: 2011-01-19 04:38:05
On 19.01.2011 [15:06:20 +1100], Benjamin Herrenschmidt wrote:
On Tue, 2011-01-18 at 14:47 -0800, Nishanth Aravamudan wrote:quoted
On 18.01.2011 [12:31:52 +1100], Anton Blanchard wrote:quoted
Hi, I was testing 2.6.37-git17 on a POWER7 with virtual IO and hit this: Trying to unpack rootfs image as initramfs... Freeing initrd memory: 7446k freed vio 30000000: Warning: IOMMU dma not supported: mask 0xffffffffffffffff, table unavailable vio 4000: Warning: IOMMU dma not supported: mask 0xffffffffffffffff, table unavailable vio 4001: Warning: IOMMU dma not supported: mask 0xffffffffffffffff, table unavailable vio 4002: Warning: IOMMU dma not supported: mask 0xffffffffffffffff, table unavailable vio 4004: Warning: IOMMU dma not supported: mask 0xffffffffffffffff, table unavailable audit: initializing netlink socket (disabled) Haven't had a chance to look closer yet.Well, this causes messages for vdevices that don't do DMA at all (such as vterm etc...) and don't have the necessary properties. However, it didn't -break- anything for me in my tests so far, just spurrious messages. Not sure what's up with Anton's setup. Anton, can you hack the printk to display the OF path to the device so we see what devices are complaining ? It could be a different issue that prevents booting.
Is this what you were looking for? vio 30000000: Warning: IOMMU dma not supported: mask 0xffffffffffffffff, table unavailable vio 30000000: Path: /vdevice/vty@30000000 vio 4000: Warning: IOMMU dma not supported: mask 0xffffffffffffffff, table unavailable vio 4000: Path: /vdevice/IBM,sp@4000 vio 4001: Warning: IOMMU dma not supported: mask 0xffffffffffffffff, table unavailable vio 4001: Path: /vdevice/rtc@4001 vio 4002: Warning: IOMMU dma not supported: mask 0xffffffffffffffff, table unavailable vio 4002: Path: /vdevice/nvram@4002 vio 4004: Warning: IOMMU dma not supported: mask 0xffffffffffffffff, table unavailable vio 4004: Path: /vdevice/gscsi@4004 FWIW, I looked at Anton's logs, and I don't think the boot failed, per se. I think it may have timed out (but not positive on that). I was able to boot 2.6.27-git17 on the exact same box, albeit it locks up at a later point (the sd abort I e-mailed about in a follow-up).
Cheers, Ben.quoted
After debugging a bit, this would appear to be due to the second hunk of b3c73856ae47d43d0d181f9de1c1c6c0820c4515.diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c index b265405..1b695fd 100644 --- a/arch/powerpc/kernel/vio.c +++ b/arch/powerpc/kernel/vio.c@@ -1257,6 +1257,10 @@ struct vio_dev *vio_register_device_node(struct device_node *of_node) viodev->dev.parent = &vio_bus_device.dev; viodev->dev.bus = &vio_bus_type; viodev->dev.release = vio_dev_release; + /* needed to ensure proper operation of coherent allocations + * later, in case driver doesn't set it explicitly */ + dma_set_mask(&viodev->dev, DMA_BIT_MASK(64)); + dma_set_coherent_mask(&viodev->dev, DMA_BIT_MASK(64)); /* register with generic device framework */ if (device_register(&viodev->dev)) {Milton, Sonny, any thoughts? Thanks, Nish
-- Nishanth Aravamudan [off-list ref] IBM Linux Technology Center