diff -r e62bbcee43c2 -r e1988ccf8001 configs/common/FSConfig.py --- a/configs/common/FSConfig.py Sat Mar 24 15:19:31 2012 -0500 +++ b/configs/common/FSConfig.py Sat Mar 24 15:28:12 2012 -0500 @@ -134,10 +134,8 @@ self.tsunami.attachIO(self.piobus) self.tsunami.ide.pio = self.piobus.master self.tsunami.ide.config = self.piobus.master - self.tsunami.ide.dma = self.piobus.slave self.tsunami.ethernet.pio = self.piobus.master self.tsunami.ethernet.config = self.piobus.master - self.tsunami.ethernet.dma = self.piobus.slave # # Store the dma devices for later connection to dma ruby ports. @@ -408,8 +406,10 @@ # the piobus a direct connection to physical memory # x86_sys.piobus.master = x86_sys.physmem.port - - x86_sys.pc.attachIO(x86_sys.piobus) + # add the ide to the list of dma devices that later need to attach to + # dma controllers + x86_sys._dma_devices = [x86_sys.pc.south_bridge.ide] + x86_sys.pc.attachIO(x86_sys.piobus, x86_sys._dma_devices) def makeX86System(mem_mode, numCPUs = 1, mdesc = None, self = None, Ruby = False): @@ -432,9 +432,6 @@ # Create and connect the busses required by each memory system if Ruby: connectX86RubySystem(self) - # add the ide to the list of dma devices that later need to attach to - # dma controllers - self._dma_devices = [self.pc.south_bridge.ide] else: connectX86ClassicSystem(self, numCPUs) diff -r e62bbcee43c2 -r e1988ccf8001 src/dev/x86/Pc.py --- a/src/dev/x86/Pc.py Sat Mar 24 15:19:31 2012 -0500 +++ b/src/dev/x86/Pc.py Sat Mar 24 15:28:12 2012 -0500 @@ -69,8 +69,8 @@ # A device to catch accesses to the non-existant floppy controller. fake_floppy = IsaFake(pio_addr=x86IOAddress(0x3f2), pio_size=2) - def attachIO(self, bus): - self.south_bridge.attachIO(bus) + def attachIO(self, bus, dma_devices = []): + self.south_bridge.attachIO(bus, dma_devices) self.i_dont_exist.pio = bus.master self.behind_pci.pio = bus.master self.com_1.pio = bus.master diff -r e62bbcee43c2 -r e1988ccf8001 src/dev/x86/SouthBridge.py --- a/src/dev/x86/SouthBridge.py Sat Mar 24 15:19:31 2012 -0500 +++ b/src/dev/x86/SouthBridge.py Sat Mar 24 15:28:12 2012 -0500 @@ -85,7 +85,7 @@ ide.InterruptLine = 14 ide.InterruptPin = 1 - def attachIO(self, bus): + def attachIO(self, bus, dma_devices): # Route interupt signals self.int_lines = \ [X86IntLine(source=self.pic1.output, sink=self.io_apic.pin(0)), @@ -106,7 +106,8 @@ self.dma1.pio = bus.master self.ide.pio = bus.master self.ide.config = bus.master - self.ide.dma = bus.slave + if dma_devices.count(self.ide) == 0: + self.ide.dma = bus.slave self.keyboard.pio = bus.master self.pic1.pio = bus.master self.pic2.pio = bus.master