Page MenuHomeFreeBSD

D6203.id15891.diff
No OneTemporary

D6203.id15891.diff

Index: sys/arm/arm/generic_timer.c
===================================================================
--- sys/arm/arm/generic_timer.c
+++ sys/arm/arm/generic_timer.c
@@ -96,7 +96,7 @@
static struct resource_spec timer_spec[] = {
{ SYS_RES_IRQ, 0, RF_ACTIVE }, /* Secure */
{ SYS_RES_IRQ, 1, RF_ACTIVE }, /* Non-secure */
- { SYS_RES_IRQ, 2, RF_ACTIVE }, /* Virt */
+ { SYS_RES_IRQ, 2, RF_ACTIVE | RF_OPTIONAL }, /* Virt */
{ SYS_RES_IRQ, 3, RF_ACTIVE | RF_OPTIONAL }, /* Hyp */
{ -1, 0 }
};
@@ -386,7 +386,7 @@
#ifdef __arm__
sc->physical = true;
#else /* __aarch64__ */
- sc->physical = false;
+ sc->physical = (sc->res[2] == NULL) ? true: false;
#endif
arm_tmr_sc = sc;
@@ -393,6 +393,9 @@
/* Setup secure, non-secure and virtual IRQs handler */
for (i = 0; i < 3; i++) {
+ /* If we do not have the interrupt, skip it. */
+ if (sc->res[i] == NULL)
+ continue;
error = bus_setup_intr(dev, sc->res[i], INTR_TYPE_CLK,
arm_tmr_intr, NULL, sc, &sc->ihl[i]);
if (error) {

File Metadata

Mime Type
text/plain
Expires
Tue, Mar 17, 9:06 PM (3 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29850441
Default Alt Text
D6203.id15891.diff (1 KB)

Event Timeline