Just return if the size of the window is 0. This can happen when the

FDT does not define all ranges possible for a particular node (e.g.
PCI).
While here, only update the trgt_mem and trgt_io pointers if there's
no error. This avoids that we knowingly write an invalid target (= -1).
This commit is contained in:
Marcel Moolenaar 2012-05-24 21:07:10 +00:00
parent 05917fee1b
commit e845939dc1
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=235934

View File

@ -88,6 +88,9 @@ law_enable(int trgt, u_long addr, u_long size)
uint32_t bar, sr;
int i, law_max;
if (size == 0)
return (0);
law_max = law_getmax();
bar = _LAW_BAR(addr);
sr = _LAW_SR(trgt, size);
@ -168,7 +171,10 @@ law_pci_target(struct resource *res, int *trgt_mem, int *trgt_io)
default:
rv = ENXIO;
}
*trgt_mem = *trgt_io = trgt;
if (rv == 0) {
*trgt_mem = trgt;
*trgt_io = trgt;
}
return (rv);
}