fs.py revision 2566
15643Sgblack@eecs.umich.edufrom m5 import * 25643Sgblack@eecs.umich.eduimport os 35643Sgblack@eecs.umich.edufrom SysPaths import * 45643Sgblack@eecs.umich.edu 55643Sgblack@eecs.umich.edu# Base for tests is directory containing this file. 65643Sgblack@eecs.umich.edutest_base = os.path.dirname(__file__) 75643Sgblack@eecs.umich.edu 85643Sgblack@eecs.umich.edulinux_image = env.get('LINUX_IMAGE', disk('linux-latest.img')) 95643Sgblack@eecs.umich.edu 105643Sgblack@eecs.umich.educlass IdeControllerPciData(PciConfigData): 115643Sgblack@eecs.umich.edu VendorID = 0x8086 125643Sgblack@eecs.umich.edu DeviceID = 0x7111 135643Sgblack@eecs.umich.edu Command = 0x0 145643Sgblack@eecs.umich.edu Status = 0x280 155643Sgblack@eecs.umich.edu Revision = 0x0 165643Sgblack@eecs.umich.edu ClassCode = 0x01 175643Sgblack@eecs.umich.edu SubClassCode = 0x01 185643Sgblack@eecs.umich.edu ProgIF = 0x85 195643Sgblack@eecs.umich.edu BAR0 = 0x00000001 205643Sgblack@eecs.umich.edu BAR1 = 0x00000001 215643Sgblack@eecs.umich.edu BAR2 = 0x00000001 225643Sgblack@eecs.umich.edu BAR3 = 0x00000001 235643Sgblack@eecs.umich.edu BAR4 = 0x00000001 245643Sgblack@eecs.umich.edu BAR5 = 0x00000001 255643Sgblack@eecs.umich.edu InterruptLine = 0x1f 265643Sgblack@eecs.umich.edu InterruptPin = 0x01 275643Sgblack@eecs.umich.edu BAR0Size = '8B' 285643Sgblack@eecs.umich.edu BAR1Size = '4B' 295643Sgblack@eecs.umich.edu BAR2Size = '8B' 305643Sgblack@eecs.umich.edu BAR3Size = '4B' 3111793Sbrandon.potter@amd.com BAR4Size = '16B' 3211793Sbrandon.potter@amd.com 336138Sgblack@eecs.umich.educlass SinicPciData(PciConfigData): 345651Sgblack@eecs.umich.edu VendorID = 0x1291 358746Sgblack@eecs.umich.edu DeviceID = 0x1293 368232Snate@binkert.org Status = 0x0290 375657Sgblack@eecs.umich.edu SubClassCode = 0x00 385643Sgblack@eecs.umich.edu ClassCode = 0x02 395643Sgblack@eecs.umich.edu ProgIF = 0x00 405643Sgblack@eecs.umich.edu BAR0 = 0x00000000 415643Sgblack@eecs.umich.edu BAR1 = 0x00000000 429805Sstever@gmail.com BAR2 = 0x00000000 439808Sstever@gmail.com BAR3 = 0x00000000 449805Sstever@gmail.com BAR4 = 0x00000000 455643Sgblack@eecs.umich.edu BAR5 = 0x00000000 467913SBrad.Beckmann@amd.com MaximumLatency = 0x34 477913SBrad.Beckmann@amd.com MinimumGrant = 0xb0 487913SBrad.Beckmann@amd.com InterruptLine = 0x1e 497913SBrad.Beckmann@amd.com InterruptPin = 0x01 507913SBrad.Beckmann@amd.com BAR0Size = '64kB' 516136Sgblack@eecs.umich.edu 525643Sgblack@eecs.umich.educlass NSGigEPciData(PciConfigData): 535643Sgblack@eecs.umich.edu VendorID = 0x100B 545653Sgblack@eecs.umich.edu DeviceID = 0x0022 555653Sgblack@eecs.umich.edu Status = 0x0290 565653Sgblack@eecs.umich.edu SubClassCode = 0x00 575653Sgblack@eecs.umich.edu ClassCode = 0x02 585827Sgblack@eecs.umich.edu ProgIF = 0x00 595653Sgblack@eecs.umich.edu BAR0 = 0x00000001 6014290Sgabeblack@google.com BAR1 = 0x00000000 6114290Sgabeblack@google.com BAR2 = 0x00000000 6214291Sgabeblack@google.com BAR3 = 0x00000000 6314290Sgabeblack@google.com BAR4 = 0x00000000 645643Sgblack@eecs.umich.edu BAR5 = 0x00000000 655643Sgblack@eecs.umich.edu MaximumLatency = 0x34 667913SBrad.Beckmann@amd.com MinimumGrant = 0xb0 677913SBrad.Beckmann@amd.com InterruptLine = 0x1e 687913SBrad.Beckmann@amd.com InterruptPin = 0x01 697913SBrad.Beckmann@amd.com BAR0Size = '256B' 707913SBrad.Beckmann@amd.com BAR1Size = '4kB' 719807Sstever@gmail.com 727913SBrad.Beckmann@amd.comclass LinuxRootDisk(IdeDisk): 739805Sstever@gmail.com raw_image = RawDiskImage(image_file=linux_image, read_only=True) 749807Sstever@gmail.com image = CowDiskImage(child=Parent.raw_image, read_only=False) 757913SBrad.Beckmann@amd.com 767913SBrad.Beckmann@amd.comclass LinuxSwapDisk(IdeDisk): 7713784Sgabeblack@google.com raw_image = RawDiskImage(image_file = disk('linux-bigswap2.img'), 7813784Sgabeblack@google.com read_only=True) 799805Sstever@gmail.com image = CowDiskImage(child = Parent.raw_image, read_only=False) 809805Sstever@gmail.com 819805Sstever@gmail.comclass SpecwebFilesetDisk(IdeDisk): 8214290Sgabeblack@google.com raw_image = RawDiskImage(image_file = disk('specweb-fileset.img'), 8314290Sgabeblack@google.com read_only=True) 8414290Sgabeblack@google.com image = CowDiskImage(child = Parent.raw_image, read_only=False) 8514290Sgabeblack@google.com 869805Sstever@gmail.comclass BaseTsunami(Tsunami): 879805Sstever@gmail.com cchip = TsunamiCChip(pio_addr=0x801a0000000) 8814295Sgabeblack@google.com pchip = TsunamiPChip(pio_addr=0x80180000000) 8911144Sjthestness@gmail.com pciconfig = PciConfigAll(pio_addr=0x801fe000000) 9011144Sjthestness@gmail.com fake_sm_chip = IsaFake(pio_addr=0x801fc000370) 9111144Sjthestness@gmail.com 9211144Sjthestness@gmail.com fake_uart1 = IsaFake(pio_addr=0x801fc0002f8) 9314295Sgabeblack@google.com fake_uart2 = IsaFake(pio_addr=0x801fc0003e8) 9411144Sjthestness@gmail.com fake_uart3 = IsaFake(pio_addr=0x801fc0002e8) 9511144Sjthestness@gmail.com fake_uart4 = IsaFake(pio_addr=0x801fc0003f0) 9611144Sjthestness@gmail.com 975643Sgblack@eecs.umich.edu fake_ppc = IsaFake(pio_addr=0x801fc0003bc) 985643Sgblack@eecs.umich.edu 995643Sgblack@eecs.umich.edu fake_OROM = IsaFake(pio_addr=0x800000a0000, pio_size=0x60000) 1005643Sgblack@eecs.umich.edu 1015643Sgblack@eecs.umich.edu fake_pnp_addr = IsaFake(pio_addr=0x801fc000279) 1025643Sgblack@eecs.umich.edu fake_pnp_write = IsaFake(pio_addr=0x801fc000a79) 10313229Sgabeblack@google.com fake_pnp_read0 = IsaFake(pio_addr=0x801fc000203) 1045643Sgblack@eecs.umich.edu fake_pnp_read1 = IsaFake(pio_addr=0x801fc000243) 1055643Sgblack@eecs.umich.edu fake_pnp_read2 = IsaFake(pio_addr=0x801fc000283) 10613229Sgabeblack@google.com fake_pnp_read3 = IsaFake(pio_addr=0x801fc0002c3) 1075643Sgblack@eecs.umich.edu fake_pnp_read4 = IsaFake(pio_addr=0x801fc000303) 1085643Sgblack@eecs.umich.edu fake_pnp_read5 = IsaFake(pio_addr=0x801fc000343) 1095643Sgblack@eecs.umich.edu fake_pnp_read6 = IsaFake(pio_addr=0x801fc000383) 1105643Sgblack@eecs.umich.edu fake_pnp_read7 = IsaFake(pio_addr=0x801fc0003c3) 1115898Sgblack@eecs.umich.edu 1129805Sstever@gmail.com fake_ata0 = IsaFake(pio_addr=0x801fc0001f0) 1135643Sgblack@eecs.umich.edu fake_ata1 = IsaFake(pio_addr=0x801fc000170) 1145643Sgblack@eecs.umich.edu 1155643Sgblack@eecs.umich.edu fb = BadDevice(pio_addr=0x801fc0003d0, devicename='FrameBuffer') 1165643Sgblack@eecs.umich.edu io = TsunamiIO(pio_addr=0x801fc000000) 1175643Sgblack@eecs.umich.edu uart = Uart8250(pio_addr=0x801fc0003f8) 1185643Sgblack@eecs.umich.edu ethernet = NSGigE(configdata=NSGigEPciData(), 1195643Sgblack@eecs.umich.edu pci_bus=0, pci_dev=1, pci_func=0) 1205643Sgblack@eecs.umich.edu etherint = NSGigEInt(device=Parent.ethernet) 1215643Sgblack@eecs.umich.edu# ethernet = Sinic(configdata=SinicPciData(), 12213229Sgabeblack@google.com# pci_bus=0, pci_dev=1, pci_func=0) 1235643Sgblack@eecs.umich.edu# etherint = SinicInt(device=Parent.ethernet) 1245643Sgblack@eecs.umich.edu console = AlphaConsole(pio_addr=0x80200000000, disk=Parent.simple_disk) 12513229Sgabeblack@google.com# bridge = PciFake(configdata=BridgePciData(), pci_bus=0, pci_dev=2, pci_func=0) 1265643Sgblack@eecs.umich.edu 1275643Sgblack@eecs.umich.edu#class FreeBSDTsunami(BaseTsunami): 1285643Sgblack@eecs.umich.edu# disk0 = FreeBSDRootDisk(delay='0us', driveID='master') 1295643Sgblack@eecs.umich.edu# ide = IdeController(disks=[Parent.disk0], 1305898Sgblack@eecs.umich.edu# configdata=IdeControllerPciData(), 1319805Sstever@gmail.com# pci_func=0, pci_dev=0, pci_bus=0) 1325643Sgblack@eecs.umich.edu 1335643Sgblack@eecs.umich.educlass LinuxTsunami(BaseTsunami): 1345643Sgblack@eecs.umich.edu disk0 = LinuxRootDisk(driveID='master') 1355643Sgblack@eecs.umich.edu disk1 = SpecwebFilesetDisk(driveID='slave') 1365643Sgblack@eecs.umich.edu disk2 = LinuxSwapDisk(driveID='master') 1375643Sgblack@eecs.umich.edu ide = IdeController(disks=[Parent.disk0, Parent.disk1, Parent.disk2], 1387913SBrad.Beckmann@amd.com configdata=IdeControllerPciData(), 1395643Sgblack@eecs.umich.edu pci_func=0, pci_dev=0, pci_bus=0) 1405643Sgblack@eecs.umich.edu 1415643Sgblack@eecs.umich.educlass LinuxAlphaSystem(LinuxAlphaSystem): 1427913SBrad.Beckmann@amd.com magicbus = Bus() 1435643Sgblack@eecs.umich.edu physmem = PhysicalMemory(range = AddrRange('128MB')) 1445643Sgblack@eecs.umich.edu c1 = Connector(side_a=Parent.physmem, side_b=Parent.magicbus) 1455643Sgblack@eecs.umich.edu tsunami = LinuxTsunami() 1465643Sgblack@eecs.umich.edu c2 = Connector(side_a=Parent.tsunami.cchip, side_a_name='pio', side_b=Parent.magicbus) 1475643Sgblack@eecs.umich.edu c3 = Connector(side_a=Parent.tsunami.pchip, side_a_name='pio', side_b=Parent.magicbus) 1485643Sgblack@eecs.umich.edu c4 = Connector(side_a=Parent.tsunami.pciconfig, side_a_name='pio', side_b=Parent.magicbus) 1495643Sgblack@eecs.umich.edu c5 = Connector(side_a=Parent.tsunami.fake_sm_chip, side_a_name='pio', side_b=Parent.magicbus) 1505643Sgblack@eecs.umich.edu c6 = Connector(side_a=Parent.tsunami.ethernet, side_a_name='pio', side_b=Parent.magicbus) 1515643Sgblack@eecs.umich.edu c6a = Connector(side_a=Parent.tsunami.ethernet, side_a_name='dma', side_b=Parent.magicbus) 1525643Sgblack@eecs.umich.edu c7 = Connector(side_a=Parent.tsunami.fake_uart1, side_a_name='pio', side_b=Parent.magicbus) 1535643Sgblack@eecs.umich.edu c8 = Connector(side_a=Parent.tsunami.fake_uart2, side_a_name='pio', side_b=Parent.magicbus) 1545643Sgblack@eecs.umich.edu c9 = Connector(side_a=Parent.tsunami.fake_uart3, side_a_name='pio', side_b=Parent.magicbus) 1555643Sgblack@eecs.umich.edu c10 = Connector(side_a=Parent.tsunami.fake_uart4, side_a_name='pio', side_b=Parent.magicbus) 1565643Sgblack@eecs.umich.edu c11 = Connector(side_a=Parent.tsunami.ide, side_a_name='pio', side_b=Parent.magicbus) 1575643Sgblack@eecs.umich.edu c13 = Connector(side_a=Parent.tsunami.ide, side_a_name='dma', side_b=Parent.magicbus) 1585643Sgblack@eecs.umich.edu c12 = Connector(side_a=Parent.tsunami.fake_ppc, side_a_name='pio', side_b=Parent.magicbus) 1595643Sgblack@eecs.umich.edu c14 = Connector(side_a=Parent.tsunami.fake_OROM, side_a_name='pio', side_b=Parent.magicbus) 1605643Sgblack@eecs.umich.edu c16 = Connector(side_a=Parent.tsunami.fake_pnp_addr, side_a_name='pio', side_b=Parent.magicbus) 1615643Sgblack@eecs.umich.edu c17 = Connector(side_a=Parent.tsunami.fake_pnp_write, side_a_name='pio', side_b=Parent.magicbus) 1625643Sgblack@eecs.umich.edu c18 = Connector(side_a=Parent.tsunami.fake_pnp_read0, side_a_name='pio', side_b=Parent.magicbus) 1635643Sgblack@eecs.umich.edu c19 = Connector(side_a=Parent.tsunami.fake_pnp_read1, side_a_name='pio', side_b=Parent.magicbus) 1645643Sgblack@eecs.umich.edu c20 = Connector(side_a=Parent.tsunami.fake_pnp_read2, side_a_name='pio', side_b=Parent.magicbus) 1655643Sgblack@eecs.umich.edu c21 = Connector(side_a=Parent.tsunami.fake_pnp_read3, side_a_name='pio', side_b=Parent.magicbus) 1665643Sgblack@eecs.umich.edu c22 = Connector(side_a=Parent.tsunami.fake_pnp_read4, side_a_name='pio', side_b=Parent.magicbus) 1675643Sgblack@eecs.umich.edu c23 = Connector(side_a=Parent.tsunami.fake_pnp_read5, side_a_name='pio', side_b=Parent.magicbus) 1685643Sgblack@eecs.umich.edu c24 = Connector(side_a=Parent.tsunami.fake_pnp_read6, side_a_name='pio', side_b=Parent.magicbus) 1695643Sgblack@eecs.umich.edu c25 = Connector(side_a=Parent.tsunami.fake_pnp_read7, side_a_name='pio', side_b=Parent.magicbus) 1705643Sgblack@eecs.umich.edu c27 = Connector(side_a=Parent.tsunami.fake_ata0, side_a_name='pio', side_b=Parent.magicbus) 1715643Sgblack@eecs.umich.edu c28 = Connector(side_a=Parent.tsunami.fake_ata1, side_a_name='pio', side_b=Parent.magicbus) 1725643Sgblack@eecs.umich.edu c30 = Connector(side_a=Parent.tsunami.fb, side_a_name='pio', side_b=Parent.magicbus) 1735643Sgblack@eecs.umich.edu c31 = Connector(side_a=Parent.tsunami.io, side_a_name='pio', side_b=Parent.magicbus) 1745643Sgblack@eecs.umich.edu c32 = Connector(side_a=Parent.tsunami.uart, side_a_name='pio', side_b=Parent.magicbus) 1755643Sgblack@eecs.umich.edu c33 = Connector(side_a=Parent.tsunami.console, side_a_name='pio', side_b=Parent.magicbus) 1765643Sgblack@eecs.umich.edu raw_image = RawDiskImage(image_file=disk('linux-latest.img'), 1775643Sgblack@eecs.umich.edu read_only=True) 1785643Sgblack@eecs.umich.edu simple_disk = SimpleDisk(disk=Parent.raw_image) 1795643Sgblack@eecs.umich.edu intrctrl = IntrControl() 1805643Sgblack@eecs.umich.edu cpu = SimpleCPU(mem=Parent.magicbus) 1815643Sgblack@eecs.umich.edu sim_console = SimConsole(listener=ConsoleListener(port=3456)) 1825643Sgblack@eecs.umich.edu kernel = '/z/saidi/work/m5.newmem/build/vmlinux' 1835643Sgblack@eecs.umich.edu pal = binary('ts_osfpal') 1845643Sgblack@eecs.umich.edu console = binary('console') 1855643Sgblack@eecs.umich.edu boot_osflags = 'root=/dev/hda1 console=ttyS0' 1865643Sgblack@eecs.umich.edu# readfile = os.path.join(test_base, 'halt.sh') 1875643Sgblack@eecs.umich.edu 1885643Sgblack@eecs.umich.edu 1895643Sgblack@eecs.umich.eduBaseCPU.itb = AlphaITB() 1905643Sgblack@eecs.umich.eduBaseCPU.dtb = AlphaDTB() 1915643Sgblack@eecs.umich.eduBaseCPU.system = Parent.any 1925643Sgblack@eecs.umich.edu 1935643Sgblack@eecs.umich.educlass TsunamiRoot(System): 1946712Snate@binkert.org pass 1955651Sgblack@eecs.umich.edu 1965657Sgblack@eecs.umich.edu 1975657Sgblack@eecs.umich.edudef DualRoot(ClientSystem, ServerSystem): 1985657Sgblack@eecs.umich.edu self = Root() 1995657Sgblack@eecs.umich.edu self.client = ClientSystem() 2005657Sgblack@eecs.umich.edu self.server = ServerSystem() 2015657Sgblack@eecs.umich.edu 2025651Sgblack@eecs.umich.edu self.etherdump = EtherDump(file='ethertrace') 2035651Sgblack@eecs.umich.edu self.etherlink = EtherLink(int1 = Parent.client.tsunami.etherint[0], 2045654Sgblack@eecs.umich.edu int2 = Parent.server.tsunami.etherint[0], 2055654Sgblack@eecs.umich.edu dump = Parent.etherdump) 2066138Sgblack@eecs.umich.edu self.clock = '5GHz' 2076138Sgblack@eecs.umich.edu return self 2086138Sgblack@eecs.umich.edu 2096138Sgblack@eecs.umich.eduroot = DualRoot(ClientSystem = LinuxAlphaSystem(readfile=script('netperf-stream-nt-client.rcS')), 2106138Sgblack@eecs.umich.edu ServerSystem = LinuxAlphaSystem(readfile=script('netperf-server.rcS'))) 2116138Sgblack@eecs.umich.edu 2126138Sgblack@eecs.umich.edu