Oh, right, so it tries to actually map the last range (which is marked unusable in E820):
(XEN) 0000000228000000 - 000000022c000000 (unusable) ... [ 0.000000] init_memory_mapping: 0000000228000000-000000022c000000 [ 0.000000] 0228000000 - 022c000000 page 4k [ 0.000000] kernel direct mapping tables up to 22c000000 @ 1e97d8000-1e97fa000
Now why would it do that...
Oh, right, so it tries to actually map the last range (which is marked unusable in E820):
(XEN) 0000000228000000 - 000000022c000000 (unusable) mapping: 000000022800000 0-000000022c000 000
...
[ 0.000000] init_memory_
[ 0.000000] 0228000000 - 022c000000 page 4k
[ 0.000000] kernel direct mapping tables up to 22c000000 @ 1e97d8000-1e97fa000
Now why would it do that...