mirror of https://github.com/ipxe/ipxe.git
[bios] Allow pcibios_discover() to return an empty range
Allow pcibios_discover() to return an empty range if the INT 1A,B101 PCI BIOS installation check call fails. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/583/merge
parent
be667ba948
commit
9448ac5445
|
@ -42,7 +42,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||||
static void pcibios_discover ( uint32_t busdevfn __unused,
|
static void pcibios_discover ( uint32_t busdevfn __unused,
|
||||||
struct pci_range *range ) {
|
struct pci_range *range ) {
|
||||||
int discard_a, discard_D;
|
int discard_a, discard_D;
|
||||||
uint8_t max_bus;
|
uint16_t num_bus;
|
||||||
|
|
||||||
/* We issue this call using flat real mode, to work around a
|
/* We issue this call using flat real mode, to work around a
|
||||||
* bug in some HP BIOSes.
|
* bug in some HP BIOSes.
|
||||||
|
@ -50,10 +50,12 @@ static void pcibios_discover ( uint32_t busdevfn __unused,
|
||||||
__asm__ __volatile__ ( REAL_CODE ( "call flatten_real_mode\n\t"
|
__asm__ __volatile__ ( REAL_CODE ( "call flatten_real_mode\n\t"
|
||||||
"stc\n\t"
|
"stc\n\t"
|
||||||
"int $0x1a\n\t"
|
"int $0x1a\n\t"
|
||||||
|
"movzbw %%cl, %%cx\n\t"
|
||||||
|
"incw %%cx\n\t"
|
||||||
"jnc 1f\n\t"
|
"jnc 1f\n\t"
|
||||||
"xorw %%cx, %%cx\n\t"
|
"xorw %%cx, %%cx\n\t"
|
||||||
"\n1:\n\t" )
|
"\n1:\n\t" )
|
||||||
: "=c" ( max_bus ), "=a" ( discard_a ),
|
: "=c" ( num_bus ), "=a" ( discard_a ),
|
||||||
"=D" ( discard_D )
|
"=D" ( discard_D )
|
||||||
: "a" ( PCIBIOS_INSTALLATION_CHECK >> 16 ),
|
: "a" ( PCIBIOS_INSTALLATION_CHECK >> 16 ),
|
||||||
"D" ( 0 )
|
"D" ( 0 )
|
||||||
|
@ -61,7 +63,7 @@ static void pcibios_discover ( uint32_t busdevfn __unused,
|
||||||
|
|
||||||
/* Populate range */
|
/* Populate range */
|
||||||
range->start = PCI_BUSDEVFN ( 0, 0, 0, 0 );
|
range->start = PCI_BUSDEVFN ( 0, 0, 0, 0 );
|
||||||
range->count = PCI_BUSDEVFN ( 0, ( max_bus + 1 ), 0, 0 );
|
range->count = PCI_BUSDEVFN ( 0, num_bus, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue