On 08/24/2012 04:55 PM, Jacob Shin wrote:
+
+       for (i = 0; i < e820.nr_map; i++) {
+               struct e820entry *ei = &e820.map[i];
+               u64 start = ei->addr;
+               u64 end = ei->addr + ei->size;
+
+               /* we only map E820_RAM */
+               if (ei->type != E820_RAM)
+                       continue;
+
+               if (end <= ISA_END_ADDRESS)
+                       continue;
+
+               if (start <= ISA_END_ADDRESS)
+                       start = 0;
+#ifdef CONFIG_X86_32
+               /* on 32 bit, we only map up to max_low_pfn */
+               if ((start >> PAGE_SHIFT) >= max_low_pfn)
+                       continue;
+
+               if ((end >> PAGE_SHIFT) > max_low_pfn)
+                       end = max_low_pfn << PAGE_SHIFT;
+#endif
+               /* the ISA range is always mapped regardless of holes */
+               if (!pfn_range_is_mapped(0, ISA_END_ADDRESS << PAGE_SHIFT) &&
+                   start != 0)
+                       init_memory_mapping(0, ISA_END_ADDRESS);
+
+               init_memory_mapping(start, end);
+       }
+

The ISA range mapping doesn't really make sense *inside* the loop, no? It seems you could do that before you enter the loop and then simply have:

+               if (end <= ISA_END_ADDRESS)
+                       continue;
+
+               if (start <= ISA_END_ADDRESS)
+                       start = ISA_END_ADDRESS;

... no?

        -hpa

--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel.  I don't speak on their behalf.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to