Index: kernel/generic/include/mm/frame.h
===================================================================
--- kernel/generic/include/mm/frame.h	(revision 2a0800506a1ff0ea264a43ef534635ebf6a0734e)
+++ kernel/generic/include/mm/frame.h	(revision 39c4d1fcc4ef3db6fd729c7933a9c29213dab92d)
@@ -63,4 +63,6 @@
 /** Allocate a frame which cannot be identity-mapped. */
 #define FRAME_HIGHMEM	  0x20
+/** Allocate a frame which needs to be from DMA zone. */
+#define FRAME_DMA         0x40
 
 typedef uint8_t zone_flags_t;
@@ -77,4 +79,6 @@
 /** Zone contains memory that cannot be identity-mapped */
 #define ZONE_HIGHMEM	0x10
+/** Zone contains memory suitable for old ISA DMA */
+#define ZONE_DMA        0x20
 
 /** Mask of zone bits that must be matched exactly. */
@@ -82,8 +86,9 @@
 
 #define FRAME_TO_ZONE_FLAGS(ff)	\
-	((((ff) & FRAME_LOWMEM) ? ZONE_LOWMEM : \
+	((((ff) & FRAME_DMA) ? ZONE_DMA : \
+	    (((ff) & FRAME_LOWMEM) ? ZONE_LOWMEM : \
 	    (((ff) & FRAME_HIGHMEM) ? ZONE_HIGHMEM : \
-	    ZONE_LOWMEM /* | ZONE_HIGHMEM */)) | \
-	    ZONE_AVAILABLE) 
+	    ZONE_LOWMEM /* | ZONE_HIGHMEM */))) | \
+	    ZONE_AVAILABLE)
 
 #define ZONE_FLAGS_MATCH(zf, f) \
Index: kernel/generic/include/time/clock.h
===================================================================
--- kernel/generic/include/time/clock.h	(revision 2a0800506a1ff0ea264a43ef534635ebf6a0734e)
+++ kernel/generic/include/time/clock.h	(revision 39c4d1fcc4ef3db6fd729c7933a9c29213dab92d)
@@ -38,5 +38,5 @@
 #include <typedefs.h>
 
-#define HZ  100
+#define HZ  1000
 
 /** Uptime structure */
Index: kernel/generic/src/ddi/ddi.c
===================================================================
--- kernel/generic/src/ddi/ddi.c	(revision 2a0800506a1ff0ea264a43ef534635ebf6a0734e)
+++ kernel/generic/src/ddi/ddi.c	(revision 39c4d1fcc4ef3db6fd729c7933a9c29213dab92d)
@@ -336,5 +336,5 @@
 		order = fnzb(pages - 1) + 1;
 	
-	*phys = frame_alloc_noreserve(order, 0);
+	*phys = frame_alloc_noreserve(order, FRAME_DMA);
 	if (*phys == NULL)
 		return ENOMEM;
Index: kernel/generic/src/mm/frame.c
===================================================================
--- kernel/generic/src/mm/frame.c	(revision 2a0800506a1ff0ea264a43ef534635ebf6a0734e)
+++ kernel/generic/src/mm/frame.c	(revision 39c4d1fcc4ef3db6fd729c7933a9c29213dab92d)
@@ -518,5 +518,7 @@
 NO_TRACE static void zone_mark_unavailable(zone_t *zone, size_t frame_idx)
 {
-	ASSERT(zone->flags & ZONE_AVAILABLE);
+	if (!(zone->flags & ZONE_AVAILABLE))
+		return;
+//	ASSERT(zone->flags & ZONE_AVAILABLE);
 	
 	frame_t *frame = zone_get_frame(zone, frame_idx);
@@ -935,6 +937,9 @@
 			}
 			
-			if (confframe >= start + count)
-				panic("Cannot find configuration data for zone.");
+			if (confframe >= start + count) {
+				flags &= ~ZONE_AVAILABLE;
+				goto nonavail;
+//				panic("Cannot find configuration data for zone.");
+			}
 		}
 		
@@ -960,5 +965,6 @@
 		return znum;
 	}
-	
+nonavail:
+	(void)0; // label trick
 	/* Non-available zone */
 	size_t znum = zones_insert_zone(start, count, flags);
