Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F140823012
D14484.id39747.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D14484.id39747.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D14484: powerpc64: Add a trap stack area
Attached
Detach File
Event Timeline
Log In to Comment