Overhaul for 3.x kernel

Change-Id: Iabd8dc622de820f9d721f76efc1c609c2daf0661