|
@@ -245,7 +245,7 @@ static void __init print_ebda_hpc (void)
|
|
|
|
|
|
int __init ibmphp_access_ebda (void)
|
|
|
{
|
|
|
- u8 format, num_ctlrs, rio_complete, hs_complete;
|
|
|
+ u8 format, num_ctlrs, rio_complete, hs_complete, ebda_sz;
|
|
|
u16 ebda_seg, num_entries, next_offset, offset, blk_id, sub_addr, re, rc_id, re_id, base;
|
|
|
int rc = 0;
|
|
|
|
|
@@ -260,7 +260,14 @@ int __init ibmphp_access_ebda (void)
|
|
|
iounmap (io_mem);
|
|
|
debug ("returned ebda segment: %x\n", ebda_seg);
|
|
|
|
|
|
- io_mem = ioremap(ebda_seg<<4, 1024);
|
|
|
+ io_mem = ioremap(ebda_seg<<4, 1);
|
|
|
+ ebda_sz = readb(io_mem);
|
|
|
+ iounmap(io_mem);
|
|
|
+ debug("ebda size: %d(KiB)\n", ebda_sz);
|
|
|
+ if (ebda_sz == 0)
|
|
|
+ return -ENOMEM;
|
|
|
+
|
|
|
+ io_mem = ioremap(ebda_seg<<4, (ebda_sz * 1024));
|
|
|
if (!io_mem )
|
|
|
return -ENOMEM;
|
|
|
next_offset = 0x180;
|