diff --git a/src/lib/Makefile.inc b/src/lib/Makefile.inc
index f4d8c2c..b670782 100644
--- a/src/lib/Makefile.inc
+++ b/src/lib/Makefile.inc
@@ -33,8 +33,6 @@
 bootblock-$(CONFIG_I2C_TPM) += delay.c
 bootblock-y += memchr.c
 bootblock-y += memcmp.c
-bootblock-y += mem_pool.c
-bootblock-y += region.c
 bootblock-y += boot_device.c
 bootblock-y += fmap.c
 
@@ -49,7 +47,6 @@
 verstage-y += libgcc.c
 verstage-y += memcmp.c
 verstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
-verstage-y += region.c
 verstage-y += boot_device.c
 verstage-$(CONFIG_CONSOLE_CBMEM) += cbmem_console.c
 verstage-$(CONFIG_COMMON_CBFS_SPI_WRAPPER) += cbfs_spi.c
@@ -62,7 +59,6 @@
 
 verstage-$(CONFIG_GENERIC_UDELAY) += timer.c
 verstage-$(CONFIG_GENERIC_GPIO_LIB) += gpio.c
-verstage-y += mem_pool.c
 
 romstage-y += assets.c
 romstage-y += prog_loaders.c
@@ -155,15 +151,10 @@
 romstage-$(CONFIG_RELOCATABLE_RAMSTAGE) += cbmem_stage_cache.c
 endif
 
-romstage-y += mem_pool.c
-ramstage-y += mem_pool.c
 
-romstage-y += region.c
-ramstage-y += region.c
 romstage-y += boot_device.c
 ramstage-y += boot_device.c
 
-smm-y += region.c
 smm-y += boot_device.c
 smm-y += fmap.c
 smm-y += cbfs.c memcmp.c
diff --git a/src/lib/cbfs_boot_props.c b/src/lib/cbfs_boot_props.c
index 7a9f7a9..2906d84 100644
--- a/src/lib/cbfs_boot_props.c
+++ b/src/lib/cbfs_boot_props.c
@@ -21,7 +21,7 @@
 #include <cbfs.h>
 #include <console/console.h>
 #include <endian.h>
-#include <region.h>
+#include <commonlib/region.h>
 
 /* This function is marked as weak to allow a particular platform to
  * override the logic. This implementation should work for most devices. */
diff --git a/src/lib/fmap.c b/src/lib/fmap.c
index dea34bc..d9c3048 100644
--- a/src/lib/fmap.c
+++ b/src/lib/fmap.c
@@ -20,7 +20,7 @@
 #include <boot_device.h>
 #include <console/console.h>
 #include <fmap.h>
-#include <fmap_serialized.h>
+#include <commonlib/fmap_serialized.h>
 #include <stddef.h>
 #include <string.h>
 
diff --git a/src/lib/mem_pool.c b/src/lib/mem_pool.c
deleted file mode 100644
index 4bd0668..0000000
--- a/src/lib/mem_pool.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright 2015 Google Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc.
- */
-
-#include <mem_pool.h>
-#include <stdlib.h>
-
-void *mem_pool_alloc(struct mem_pool *mp, size_t sz)
-{
-	void *p;
-
-	/* Make all allocations be at least 8 byte aligned. */
-	sz = ALIGN_UP(sz, 8);
-
-	/* Determine if any space available. */
-	if ((mp->size - mp->free_offset) < sz)
-		return NULL;
-
-	p = &mp->buf[mp->free_offset];
-
-	mp->free_offset += sz;
-	mp->last_alloc = p;
-
-	return p;
-}
-
-void mem_pool_free(struct mem_pool *mp, void *p)
-{
-	/* Determine if p was the most recent allocation. */
-	if (p == NULL || mp->last_alloc != p)
-		return;
-
-	mp->free_offset = mp->last_alloc - mp->buf;
-	/* No way to track allocation before this one. */
-	mp->last_alloc = NULL;
-}
diff --git a/src/lib/region.c b/src/lib/region.c
deleted file mode 100644
index d5d3762..0000000
--- a/src/lib/region.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright 2015 Google Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc.
- */
-
-#include <region.h>
-#include <string.h>
-
-static inline size_t region_end(const struct region *r)
-{
-	return region_sz(r) + region_offset(r);
-}
-
-static int is_subregion(const struct region *p, const struct region *c)
-{
-	if (region_offset(c) < region_offset(p))
-		return 0;
-
-	if (region_sz(c) > region_sz(p))
-		return 0;
-
-	if (region_end(c) > region_end(p))
-		return 0;
-
-	return 1;
-}
-
-static int normalize_and_ok(const struct region *outer, struct region *inner)
-{
-	inner->offset += region_offset(outer);
-	return is_subregion(outer, inner);
-}
-
-static const struct region_device *rdev_root(const struct region_device *rdev)
-{
-	if (rdev->root == NULL)
-		return rdev;
-	return rdev->root;
-}
-
-void *rdev_mmap(const struct region_device *rd, size_t offset, size_t size)
-{
-	const struct region_device *rdev;
-	struct region req = {
-		.offset = offset,
-		.size = size,
-	};
-
-	if (!normalize_and_ok(&rd->region, &req))
-		return NULL;
-
-	rdev = rdev_root(rd);
-
-	return rdev->ops->mmap(rdev, req.offset, req.size);
-}
-
-int rdev_munmap(const struct region_device *rd, void *mapping)
-{
-	const struct region_device *rdev;
-
-	rdev = rdev_root(rd);
-
-	return rdev->ops->munmap(rdev, mapping);
-}
-
-ssize_t rdev_readat(const struct region_device *rd, void *b, size_t offset,
-			size_t size)
-{
-	const struct region_device *rdev;
-	struct region req = {
-		.offset = offset,
-		.size = size,
-	};
-
-	if (!normalize_and_ok(&rd->region, &req))
-		return -1;
-
-	rdev = rdev_root(rd);
-
-	return rdev->ops->readat(rdev, b, req.offset, req.size);
-}
-
-int rdev_chain(struct region_device *child, const struct region_device *parent,
-		size_t offset, size_t size)
-{
-	struct region req = {
-		.offset = offset,
-		.size = size,
-	};
-
-	if (!normalize_and_ok(&parent->region, &req))
-		return -1;
-
-	/* Keep track of root region device. Note the offsets are relative
-	 * to the root device. */
-	child->root = rdev_root(parent);
-	child->ops = NULL;
-	child->region.offset = req.offset;
-	child->region.size = req.size;
-
-	return 0;
-}
-
-void mem_region_device_init(struct mem_region_device *mdev, void *base,
-				size_t size)
-{
-	memset(mdev, 0, sizeof(*mdev));
-	mdev->base = base;
-	mdev->rdev.ops = &mem_rdev_ops;
-	mdev->rdev.region.size = size;
-}
-
-static void *mdev_mmap(const struct region_device *rd, size_t offset,
-			size_t size)
-{
-	const struct mem_region_device *mdev;
-
-	mdev = container_of(rd, typeof(*mdev), rdev);
-
-	return &mdev->base[offset];
-}
-
-static int mdev_munmap(const struct region_device *rd, void *mapping)
-{
-	return 0;
-}
-
-static ssize_t mdev_readat(const struct region_device *rd, void *b,
-				size_t offset, size_t size)
-{
-	const struct mem_region_device *mdev;
-
-	mdev = container_of(rd, typeof(*mdev), rdev);
-
-	memcpy(b, &mdev->base[offset], size);
-
-	return size;
-}
-
-const struct region_device_ops mem_rdev_ops = {
-	.mmap = mdev_mmap,
-	.munmap = mdev_munmap,
-	.readat = mdev_readat,
-};
-
-void mmap_helper_device_init(struct mmap_helper_region_device *mdev,
-				void *cache, size_t cache_size)
-{
-	mem_pool_init(&mdev->pool, cache, cache_size);
-}
-
-void *mmap_helper_rdev_mmap(const struct region_device *rd, size_t offset,
-				size_t size)
-{
-	struct mmap_helper_region_device *mdev;
-	void *mapping;
-
-	mdev = container_of((void *)rd, typeof(*mdev), rdev);
-
-	mapping = mem_pool_alloc(&mdev->pool, size);
-
-	if (mapping == NULL)
-		return NULL;
-
-	if (rd->ops->readat(rd, mapping, offset, size) != size) {
-		mem_pool_free(&mdev->pool, mapping);
-		return NULL;
-	}
-
-	return mapping;
-}
-
-int mmap_helper_rdev_munmap(const struct region_device *rd, void *mapping)
-{
-	struct mmap_helper_region_device *mdev;
-
-	mdev = container_of((void *)rd, typeof(*mdev), rdev);
-
-	mem_pool_free(&mdev->pool, mapping);
-
-	return 0;
-}
