Page MenuHomeFreeBSD

D14484.id39747.diff
No OneTemporary

D14484.id39747.diff

Index: sys/powerpc/aim/locore32.S
===================================================================
--- sys/powerpc/aim/locore32.S
+++ sys/powerpc/aim/locore32.S
@@ -59,6 +59,10 @@
GLOBAL(tmpstk)
.space TMPSTKSZ
+#define TRAPSTKSZ 4096 /* 4k trap stack */
+GLOBAL(trapstk)
+ .space TRAPSTKSZ
+
.text
.globl btext
btext:
Index: sys/powerpc/aim/locore64.S
===================================================================
--- sys/powerpc/aim/locore64.S
+++ sys/powerpc/aim/locore64.S
@@ -61,6 +61,11 @@
TOC_ENTRY(tmpstk)
+#define TRAPSTKSZ 4096
+GLOBAL(trapstk)
+ .space TRAPSTKSZ
+TOC_ENTRY(trapstk)
+
/*
* Entry point for bootloaders that do not fully implement ELF and start
* at the beginning of the image (kexec, notably). In its own section so
Index: sys/powerpc/aim/trap_subr32.S
===================================================================
--- sys/powerpc/aim/trap_subr32.S
+++ sys/powerpc/aim/trap_subr32.S
@@ -864,8 +864,8 @@
mtsprg3 %r1
lwz %r1,TRAP_TOCBASE(0) /* get new SP */
- lwz %r1,tmpstk@got(%r1)
- addi %r1,%r1,TMPSTKSZ-16
+ lwz %r1,trapstk@got(%r1)
+ addi %r1,%r1,TRAPSTKSZ-16
FRAME_SETUP(PC_DBSAVE)
/* Call C trap code: */
Index: sys/powerpc/aim/trap_subr64.S
===================================================================
--- sys/powerpc/aim/trap_subr64.S
+++ sys/powerpc/aim/trap_subr64.S
@@ -805,9 +805,9 @@
andi. %r1,%r1,0xff00
mtsprg3 %r1
- ld %r1,TRAP_TOCBASE(0) /* get new SP */
- ld %r1,TOC_REF(tmpstk)(%r1)
- addi %r1,%r1,(TMPSTKSZ-48)
+ GET_TOCBASE(%r1)
+ ld %r1,TOC_REF(trapstk)(%r1)
+ addi %r1,%r1,(TRAPSTKSZ-48)
FRAME_SETUP(PC_DBSAVE)
/* Call C trap code: */
Index: sys/powerpc/cpufreq/pmufreq.c
===================================================================
--- sys/powerpc/cpufreq/pmufreq.c
+++ sys/powerpc/cpufreq/pmufreq.c
@@ -108,14 +108,12 @@
static int
pmufreq_probe(device_t dev)
{
- struct pmufreq_softc *sc;
phandle_t node;
uint32_t min_freq;
if (resource_disabled("pmufreq", 0))
return (ENXIO);
- sc = device_get_softc(dev);
node = ofw_bus_get_node(device_get_parent(dev));
/*
* A scalable MPC7455 has min-clock-frequency/max-clock-frequency as OFW
Index: sys/powerpc/pseries/mmu_phyp.c
===================================================================
--- sys/powerpc/pseries/mmu_phyp.c
+++ sys/powerpc/pseries/mmu_phyp.c
@@ -113,7 +113,7 @@
char buf[8];
uint32_t prop[2];
uint32_t nptlp, shift = 0, slb_encoding = 0;
- uint32_t lp_size, lp_encoding;
+ uint32_t lp_size = 0, lp_encoding = 0;
struct lpte old;
uint64_t vsid;
phandle_t dev, node, root;
Index: sys/powerpc/pseries/phyp_llan.c
===================================================================
--- sys/powerpc/pseries/phyp_llan.c
+++ sys/powerpc/pseries/phyp_llan.c
@@ -188,19 +188,47 @@
BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL,
LLAN_RX_BUF_LEN, 1, BUS_SPACE_MAXSIZE_32BIT,
0, NULL, NULL, &sc->rx_dma_tag);
+ if (error != 0) {
+ device_printf(dev, "Could not create rx_dma_tag DMA tag\n");
+ mtx_destroy(&sc->io_lock);
+ return (ENXIO);
+ }
+
error = bus_dma_tag_create(bus_get_dma_tag(dev), 4, 0,
BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL,
BUS_SPACE_MAXSIZE, 1, BUS_SPACE_MAXSIZE_32BIT,
0, NULL, NULL, &sc->rxbuf_dma_tag);
+ if (error != 0) {
+ device_printf(dev, "Could not create rxbuf_dma_tag DMA tag\n");
+ mtx_destroy(&sc->io_lock);
+ return (ENXIO);
+ }
+
error = bus_dma_tag_create(bus_get_dma_tag(dev), 1, 0,
BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
BUS_SPACE_MAXSIZE, 6, BUS_SPACE_MAXSIZE_32BIT, 0,
busdma_lock_mutex, &sc->io_lock, &sc->tx_dma_tag);
+ if (error != 0) {
+ device_printf(dev, "Could not create tx_dma_tag DMA tag\n");
+ mtx_destroy(&sc->io_lock);
+ return (ENXIO);
+ }
error = bus_dmamem_alloc(sc->rx_dma_tag, (void **)&sc->rx_buf,
BUS_DMA_WAITOK | BUS_DMA_ZERO, &sc->rx_buf_map);
+ if (error != 0) {
+ device_printf(dev, "Could not allocate rx_buf_map area\n");
+ mtx_destroy(&sc->io_lock);
+ return (ENXIO);
+ }
+
error = bus_dmamap_load(sc->rx_dma_tag, sc->rx_buf_map, sc->rx_buf,
LLAN_RX_BUF_LEN, llan_rx_load_cb, sc, 0);
+ if (error != 0) {
+ device_printf(dev, "Could not DMA map llna_rx_load_cb\n");
+ mtx_destroy(&sc->io_lock);
+ return (ENXIO);
+ }
/* TX DMA maps */
bus_dmamap_create(sc->tx_dma_tag, 0, &sc->tx_dma_map);
@@ -209,6 +237,11 @@
for (i = 0; i < LLAN_MAX_RX_PACKETS; i++) {
error = bus_dmamap_create(sc->rxbuf_dma_tag, 0,
&sc->rx_xfer[i].rx_dmamap);
+ if (error != 0) {
+ device_printf(dev, "Could not allocate DMA map for packet %d\n", i);
+ mtx_destroy(&sc->io_lock);
+ return (ENXIO);
+ }
sc->rx_xfer[i].rx_mbuf = NULL;
}
@@ -296,8 +329,14 @@
rx_buf_desc |= (sc->rx_buf_len << 32);
rx_buf_desc |= sc->rx_buf_phys;
memcpy(&macaddr, sc->mac_address, 8);
+
err = phyp_hcall(H_REGISTER_LOGICAL_LAN, sc->unit, sc->input_buf_phys,
rx_buf_desc, sc->filter_buf_phys, macaddr);
+ if (err != 0){
+ device_printf(sc->dev, "Unable to register llan");
+ mtx_unlock(&sc->io_lock);
+ return;
+ }
for (i = 0; i < LLAN_MAX_RX_PACKETS; i++)
llan_add_rxbuf(sc, &sc->rx_xfer[i]);
@@ -451,12 +490,10 @@
llan_start_locked(struct ifnet *ifp)
{
struct llan_softc *sc = ifp->if_softc;
- bus_addr_t first;
int nsegs;
struct mbuf *mb_head, *m;
mtx_assert(&sc->io_lock, MA_OWNED);
- first = 0;
if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) !=
IFF_DRV_RUNNING)

File Metadata

Mime Type
text/plain
Expires
Mon, Dec 29, 12:01 PM (16 m, 18 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27359152
Default Alt Text
D14484.id39747.diff (5 KB)

Event Timeline