Re: [PATCH 3/5] x86: Only direct map addresses that are marked asE820_RAM

From: H. Peter Anvin
Date: Fri Aug 24 2012 - 20:31:09 EST


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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/