diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/alpha/backdoor.cc --- a/src/dev/alpha/backdoor.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/alpha/backdoor.cc Mon Nov 17 06:21:00 2014 +0000 @@ -111,7 +111,6 @@ Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); pkt->makeAtomicResponse(); switch (pkt->getSize()) diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/alpha/tsunami_cchip.cc --- a/src/dev/alpha/tsunami_cchip.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/alpha/tsunami_cchip.cc Mon Nov 17 06:21:00 2014 +0000 @@ -83,7 +83,6 @@ Addr regnum = (pkt->getAddr() - pioAddr) >> 6; Addr daddr = (pkt->getAddr() - pioAddr); - pkt->allocate(); switch (pkt->getSize()) { case sizeof(uint64_t): diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/alpha/tsunami_io.cc --- a/src/dev/alpha/tsunami_io.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/alpha/tsunami_io.cc Mon Nov 17 06:21:00 2014 +0000 @@ -96,8 +96,6 @@ DPRINTF(Tsunami, "io read va=%#x size=%d IOPorrt=%#x\n", pkt->getAddr(), pkt->getSize(), daddr); - pkt->allocate(); - if (pkt->getSize() == sizeof(uint8_t)) { switch(daddr) { // PIC1 mask read diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/alpha/tsunami_pchip.cc --- a/src/dev/alpha/tsunami_pchip.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/alpha/tsunami_pchip.cc Mon Nov 17 06:21:00 2014 +0000 @@ -72,7 +72,6 @@ { assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); - pkt->allocate(); Addr daddr = (pkt->getAddr() - pioAddr) >> 6;; assert(pkt->getSize() == sizeof(uint64_t)); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/a9scu.cc --- a/src/dev/arm/a9scu.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/a9scu.cc Mon Nov 17 06:21:00 2014 +0000 @@ -55,7 +55,6 @@ assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); assert(pkt->getSize() == 4); Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); switch(daddr) { case Control: diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/amba_device.cc --- a/src/dev/arm/amba_device.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/amba_device.cc Mon Nov 17 06:21:00 2014 +0000 @@ -76,8 +76,6 @@ if (daddr < AMBA_PER_ID0 || daddr > AMBA_CEL_ID3) return false; - pkt->allocate(); - int byte = (daddr - AMBA_PER_ID0) << 1; // Too noisy right now DPRINTF(AMBA, "Returning %#x for offset %#x(%d)\n", diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/amba_fake.cc --- a/src/dev/arm/amba_fake.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/amba_fake.cc Mon Nov 17 06:21:00 2014 +0000 @@ -57,7 +57,6 @@ assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); DPRINTF(AMBA, " read register %#x\n", daddr); @@ -74,7 +73,6 @@ { Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); if (!params()->ignore_access) panic("Tried to write AmbaFake at offset %#x that doesn't exist\n", daddr); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/energy_ctrl.cc --- a/src/dev/arm/energy_ctrl.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/energy_ctrl.cc Mon Nov 17 06:21:00 2014 +0000 @@ -64,7 +64,6 @@ { assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); assert(pkt->getSize() == 4); - pkt->allocate(); Addr daddr = pkt->getAddr() - pioAddr; assert((daddr & 3) == 0); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/gic_pl390.cc --- a/src/dev/arm/gic_pl390.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/gic_pl390.cc Mon Nov 17 06:21:00 2014 +0000 @@ -150,7 +150,6 @@ Pl390::readDistributor(PacketPtr pkt) { Addr daddr = pkt->getAddr() - distAddr; - pkt->allocate(); int ctx_id = pkt->req->contextId(); @@ -284,7 +283,6 @@ Pl390::readCpu(PacketPtr pkt) { Addr daddr = pkt->getAddr() - cpuAddr; - pkt->allocate(); assert(pkt->req->hasContextId()); int ctx_id = pkt->req->contextId(); @@ -369,7 +367,6 @@ Pl390::readMsix(PacketPtr pkt) { Addr daddr = pkt->getAddr() - msixRegAddr; - pkt->allocate(); DPRINTF(GIC, "Gic MSIX read register %#x\n", daddr); @@ -390,7 +387,6 @@ Pl390::writeDistributor(PacketPtr pkt) { Addr daddr = pkt->getAddr() - distAddr; - pkt->allocate(); assert(pkt->req->hasContextId()); int ctx_id = pkt->req->contextId(); @@ -531,7 +527,6 @@ Pl390::writeCpu(PacketPtr pkt) { Addr daddr = pkt->getAddr() - cpuAddr; - pkt->allocate(); assert(pkt->req->hasContextId()); int ctx_id = pkt->req->contextId(); @@ -586,7 +581,6 @@ Pl390::writeMsix(PacketPtr pkt) { Addr daddr = pkt->getAddr() - msixRegAddr; - pkt->allocate(); DPRINTF(GIC, "Gic MSI-X write register %#x data %d\n", daddr, pkt->get()); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/hdlcd.cc --- a/src/dev/arm/hdlcd.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/hdlcd.cc Mon Nov 17 06:21:00 2014 +0000 @@ -104,8 +104,6 @@ pkt->getAddr() < pioAddr + pioSize && pkt->getSize() == 4); - pkt->allocate(); - switch (daddr) { case Version: data = version; diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/kmi.cc --- a/src/dev/arm/kmi.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/kmi.cc Mon Nov 17 06:21:00 2014 +0000 @@ -69,8 +69,6 @@ assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); - uint32_t data = 0; diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/pl011.cc --- a/src/dev/arm/pl011.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/pl011.cc Mon Nov 17 06:21:00 2014 +0000 @@ -64,7 +64,6 @@ assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); DPRINTF(Uart, " read register %#x size=%d\n", daddr, pkt->getSize()); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/pl111.cc --- a/src/dev/arm/pl111.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/pl111.cc Mon Nov 17 06:21:00 2014 +0000 @@ -104,7 +104,6 @@ pkt->getAddr() < pioAddr + pioSize); Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); DPRINTF(PL111, " read register %#x size=%d\n", daddr, pkt->getSize()); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/rtc_pl031.cc --- a/src/dev/arm/rtc_pl031.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/rtc_pl031.cc Mon Nov 17 06:21:00 2014 +0000 @@ -62,7 +62,6 @@ assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); assert(pkt->getSize() == 4); Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); uint32_t data; DPRINTF(Timer, "Reading from RTC at offset: %#x\n", daddr); @@ -125,7 +124,6 @@ assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); assert(pkt->getSize() == 4); Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); DPRINTF(Timer, "Writing to RTC at offset: %#x\n", daddr); switch (daddr) { diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/rv_ctrl.cc --- a/src/dev/arm/rv_ctrl.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/rv_ctrl.cc Mon Nov 17 06:21:00 2014 +0000 @@ -54,7 +54,6 @@ assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); assert(pkt->getSize() == 4); Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); switch(daddr) { case ProcId0: diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/timer_cpulocal.cc --- a/src/dev/arm/timer_cpulocal.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/timer_cpulocal.cc Mon Nov 17 06:21:00 2014 +0000 @@ -75,7 +75,6 @@ assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); assert(pkt->getSize() == 4); Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); int cpu_id = pkt->req->contextId(); DPRINTF(Timer, "Reading from CpuLocalTimer at offset: %#x\n", daddr); assert(cpu_id >= 0); @@ -154,7 +153,6 @@ assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); assert(pkt->getSize() == 4); Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); int cpu_id = pkt->req->contextId(); DPRINTF(Timer, "Writing to CpuLocalTimer at offset: %#x\n", daddr); assert(cpu_id >= 0); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/timer_sp804.cc --- a/src/dev/arm/timer_sp804.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/timer_sp804.cc Mon Nov 17 06:21:00 2014 +0000 @@ -66,7 +66,6 @@ assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); assert(pkt->getSize() == 4); Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); DPRINTF(Timer, "Reading from DualTimer at offset: %#x\n", daddr); if (daddr < Timer::Size) @@ -121,7 +120,6 @@ assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); assert(pkt->getSize() == 4); Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); DPRINTF(Timer, "Writing to DualTimer at offset: %#x\n", daddr); if (daddr < Timer::Size) diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/arm/vgic.cc --- a/src/dev/arm/vgic.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/arm/vgic.cc Mon Nov 17 06:21:00 2014 +0000 @@ -92,7 +92,6 @@ VGic::readVCpu(PacketPtr pkt) { Addr daddr = pkt->getAddr() - vcpuAddr; - pkt->allocate(); int ctx_id = pkt->req->contextId(); assert(ctx_id < VGIC_CPU_MAX); @@ -137,7 +136,6 @@ VGic::readCtrl(PacketPtr pkt) { Addr daddr = pkt->getAddr() - hvAddr; - pkt->allocate(); int ctx_id = pkt->req->contextId(); @@ -232,7 +230,6 @@ VGic::writeVCpu(PacketPtr pkt) { Addr daddr = pkt->getAddr() - vcpuAddr; - pkt->allocate(); int ctx_id = pkt->req->contextId(); assert(ctx_id < VGIC_CPU_MAX); @@ -280,7 +277,6 @@ VGic::writeCtrl(PacketPtr pkt) { Addr daddr = pkt->getAddr() - hvAddr; - pkt->allocate(); int ctx_id = pkt->req->contextId(); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/copy_engine.cc --- a/src/dev/copy_engine.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/copy_engine.cc Mon Nov 17 06:21:00 2014 +0000 @@ -182,8 +182,6 @@ DPRINTF(DMACopyEngine, "Read device register %#X size: %d\n", daddr, size); - pkt->allocate(); - /// /// Handle read of register here /// diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/i8254xGBe.cc --- a/src/dev/i8254xGBe.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/i8254xGBe.cc Mon Nov 17 06:21:00 2014 +0000 @@ -183,8 +183,6 @@ DPRINTF(Ethernet, "Read device register %#X\n", daddr); - pkt->allocate(); - // // Handle read of register here // diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/ide_ctrl.cc --- a/src/dev/ide_ctrl.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/ide_ctrl.cc Mon Nov 17 06:21:00 2014 +0000 @@ -172,8 +172,6 @@ return PciDevice::readConfig(pkt); } - pkt->allocate(); - switch (pkt->getSize()) { case sizeof(uint8_t): switch (offset) { @@ -462,7 +460,6 @@ void IdeController::dispatchAccess(PacketPtr pkt, bool read) { - pkt->allocate(); if (pkt->getSize() != 1 && pkt->getSize() != 2 && pkt->getSize() !=4) panic("Bad IDE read size: %d\n", pkt->getSize()); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/isa_fake.cc --- a/src/dev/isa_fake.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/isa_fake.cc Mon Nov 17 06:21:00 2014 +0000 @@ -53,7 +53,6 @@ Tick IsaFake::read(PacketPtr pkt) { - pkt->allocate(); pkt->makeAtomicResponse(); if (params()->warn_access != "") diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/mips/malta_cchip.cc --- a/src/dev/mips/malta_cchip.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/mips/malta_cchip.cc Mon Nov 17 06:21:00 2014 +0000 @@ -78,7 +78,6 @@ Addr regnum = (pkt->getAddr() - pioAddr) >> 6; Addr daddr = (pkt->getAddr() - pioAddr); - pkt->allocate(); switch (pkt->getSize()) { case sizeof(uint64_t): diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/mips/malta_pchip.cc --- a/src/dev/mips/malta_pchip.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/mips/malta_pchip.cc Mon Nov 17 06:21:00 2014 +0000 @@ -71,7 +71,6 @@ { assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); - pkt->allocate(); Addr daddr = (pkt->getAddr() - pioAddr) >> 6;; assert(pkt->getSize() == sizeof(uint64_t)); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/ns_gige.cc --- a/src/dev/ns_gige.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/ns_gige.cc Mon Nov 17 06:21:00 2014 +0000 @@ -186,8 +186,6 @@ { assert(ioEnable); - pkt->allocate(); - //The mask is to give you only the offset into the device register file Addr daddr = pkt->getAddr() & 0xfff; DPRINTF(EthernetPIO, "read da=%#x pa=%#x size=%d\n", diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/pciconfigall.cc --- a/src/dev/pciconfigall.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/pciconfigall.cc Mon Nov 17 06:21:00 2014 +0000 @@ -55,9 +55,6 @@ Tick PciConfigAll::read(PacketPtr pkt) { - - pkt->allocate(); - DPRINTF(PciConfigAll, "read va=%#x size=%d\n", pkt->getAddr(), pkt->getSize()); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/pcidev.cc --- a/src/dev/pcidev.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/pcidev.cc Mon Nov 17 06:21:00 2014 +0000 @@ -294,10 +294,6 @@ panic("Out-of-range access to PCI config space!\n"); } - - - pkt->allocate(); - switch (pkt->getSize()) { case sizeof(uint8_t): pkt->set(config.data[offset]); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/sinic.cc --- a/src/dev/sinic.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/sinic.cc Mon Nov 17 06:21:00 2014 +0000 @@ -225,8 +225,6 @@ Addr index = daddr >> Regs::VirtualShift; Addr raddr = daddr & Regs::VirtualMask; - pkt->allocate(); - if (!regValid(raddr)) panic("invalid register: cpu=%d vnic=%d da=%#x pa=%#x size=%d", cpu, index, daddr, pkt->getAddr(), pkt->getSize()); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/sparc/dtod.cc --- a/src/dev/sparc/dtod.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/sparc/dtod.cc Mon Nov 17 06:21:00 2014 +0000 @@ -65,7 +65,6 @@ assert(pkt->getAddr() >= pioAddr && pkt->getAddr() < pioAddr + pioSize); assert(pkt->getSize() == 8); - pkt->allocate(); pkt->set(todTime); todTime += 1000; diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/uart8250.cc --- a/src/dev/uart8250.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/uart8250.cc Mon Nov 17 06:21:00 2014 +0000 @@ -113,7 +113,6 @@ assert(pkt->getSize() == 1); Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); DPRINTF(Uart, " read register %#x\n", daddr); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/virtio/base.cc --- a/src/dev/virtio/base.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/virtio/base.cc Mon Nov 17 06:21:00 2014 +0000 @@ -421,7 +421,6 @@ VirtIODeviceBase::readConfigBlob(PacketPtr pkt, Addr cfgOffset, const uint8_t *cfg) { const unsigned size(pkt->getSize()); - pkt->allocate(); if (cfgOffset + size > configSize) panic("Config read out of bounds.\n"); @@ -433,7 +432,6 @@ VirtIODeviceBase::writeConfigBlob(PacketPtr pkt, Addr cfgOffset, uint8_t *cfg) { const unsigned size(pkt->getSize()); - pkt->allocate(); if (cfgOffset + size > configSize) panic("Config write out of bounds.\n"); diff -r 6cbdd036f4b9 -r 6666406b414c src/dev/virtio/pci.cc --- a/src/dev/virtio/pci.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/dev/virtio/pci.cc Mon Nov 17 06:21:00 2014 +0000 @@ -75,8 +75,6 @@ return 0; } - pkt->allocate(); - switch(offset) { case OFF_DEVICE_FEATURES: DPRINTF(VIOPci, " DEVICE_FEATURES request\n"); @@ -153,8 +151,6 @@ return 0; } - pkt->allocate(); - switch(offset) { case OFF_DEVICE_FEATURES: warn("Guest tried to write device features."); diff -r 6cbdd036f4b9 -r 6666406b414c src/mem/cache/cache_impl.hh --- a/src/mem/cache/cache_impl.hh Mon Nov 17 06:20:48 2014 +0000 +++ b/src/mem/cache/cache_impl.hh Mon Nov 17 06:21:00 2014 +0000 @@ -1566,7 +1566,6 @@ // already made a copy... PacketPtr pkt = already_copied ? req_pkt : new Packet(req_pkt); assert(req_pkt->isInvalidate() || pkt->sharedAsserted()); - pkt->allocate(); pkt->makeTimingResponse(); // @todo Make someone pay for this pkt->firstWordDelay = pkt->lastWordDelay = 0; @@ -2018,7 +2017,6 @@ // make copy of current packet to forward, keep current // copy for response handling pkt = new Packet(tgt_pkt); - pkt->allocate(); if (pkt->isWrite()) { pkt->setData(tgt_pkt->getConstPtr()); } diff -r 6cbdd036f4b9 -r 6666406b414c src/mem/packet.hh --- a/src/mem/packet.hh Mon Nov 17 06:20:48 2014 +0000 +++ b/src/mem/packet.hh Mon Nov 17 06:21:00 2014 +0000 @@ -659,6 +659,11 @@ flags.set(pkt->flags & (VALID_ADDR|VALID_SIZE)); flags.set(pkt->flags & STATIC_DATA); + + // if we did not copy the static data pointer, allocate data + // dynamically instead + if (!data) + allocate(); } /** @@ -942,15 +947,10 @@ data = NULL; } - /** If there isn't data in the packet, allocate some. */ + /** Allocate memory for the packet. */ void allocate() { - if (data) { - assert(flags.isSet(STATIC_DATA|DYNAMIC_DATA)); - return; - } - assert(flags.noneSet(STATIC_DATA|DYNAMIC_DATA)); flags.set(DYNAMIC_DATA|ARRAY_DATA); data = new uint8_t[getSize()]; diff -r 6cbdd036f4b9 -r 6666406b414c src/mem/packet.cc --- a/src/mem/packet.cc Mon Nov 17 06:20:48 2014 +0000 +++ b/src/mem/packet.cc Mon Nov 17 06:21:00 2014 +0000 @@ -204,7 +204,6 @@ if (isRead()) { if (func_start >= val_start && func_end <= val_end) { - allocate(); memcpy(getPtr(), data + offset, getSize()); return true; } else {